Как заставить медиа-ключи работать с i3?

8

Я перешел с Gnome на i3 на Manjaro, и я почти закончил с настройкой оконного менеджера, а также цветов терминала и еще много чего. Через некоторое время я просто решил послушать музыку, и через пару минут понял, что клавиши регулировки громкости и воспроизведения не работают.

У меня есть клавиатура Razer Blackwidow Stealth 2014, так что эти мультимедийные клавиши на самом деле вместе с функциональными клавишами. Например: Play / Pause включен F6, и он действует как мультимедийная клавиша, когда я нажимаю Fnклавишу, как в Fn + F6.

Ренато Оливейра
источник
Я пытался очистить этот вопрос, потому что, честно говоря, около 90% его было просто неправильно . Теперь все в порядке, и ваш ответ проясняет ситуацию. Две из тех вещей, которые вы получили в предыдущем / следующем ответе, были именно в вашем ответе. Единственным реальным улучшением было перемещение игры к игре / паузе (без разницы, работает ли она вообще). Более того, xevкоманда была полностью двухъярусной. Если это был вывод xev, когда вы нажмете эти клавиши, ваш ответ сработает. Попробуйте снова. Ваше государство должно что-то сказать XF86AudioNextи тому подобное.
Эван Кэрролл

Ответы:

9

Поиск ответа

После некоторого времени возиться с элементами управления, я нашел сообщение на старой доске часто задаваемых вопросов i3: https://faq.i3wm.org/question/3747/enabling-multimedia-keys.1.html

В нем говорится вставить следующее в файл .config i3 (ниже приведена слегка измененная версия с удалением некоторых строк, которые не имеют отношения к данному конкретному вопросу):

# Pulse Audio controls
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 0 +5% #increase sound volume
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 0 -5% #decrease sound volume
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle # mute sound

# Sreen brightness controls
bindsym XF86MonBrightnessUp exec xbacklight -inc 20 # increase screen brightness
bindsym XF86MonBrightnessDown exec xbacklight -dec 20 # decrease screen brightness

# Media player controls
bindsym XF86AudioPlay exec playerctl play-pause
bindsym XF86AudioPause exec playerctl play-pause
bindsym XF86AudioNext exec playerctl next
bindsym XF86AudioPrev exec playerctl previous

И это тоже не сработало, однако процесс поиска ответа правильный.

Реальный ответ

Для меня, по крайней мере, проблема заключалась в том, что после копирования этих строк ключи не будут работать. После еще одного исследования я обнаружил, что команды громкости могут немного отличаться, используя amixerвместо PulseAudio pactl.

В конце концов, так и осталось:

# Media volume controls
bindsym XF86AudioMute exec amixer sset 'Master' toggle
bindsym XF86AudioLowerVolume exec amixer sset 'Master' 5%-
bindsym XF86AudioRaiseVolume exec amixer sset 'Master' 5%+

и они начали работать.

Клавиши воспроизведения были немного хитрее. Я пришел к выводу, что .config сообщает, какая команда выполняется для выполнения действия. Затем я продолжил примерять playerctl play-pauseмой терминал. Конечно, это не сработало, потому что playerctl не был установлен . После его установки (использования sudo pacman -S playerctl) эти команды на клавиатуре тоже сработали.

Ренато Оливейра
источник
Для регулятора громкости у меня сработал первый способ, изменив приемники на 1 вместо 0. Вы можете увидеть свои приемники, выполнив список pactl | grep раковина
Рамзи С.
2

Я обнаружил, что мне нужно, --чтобы отделить pactlот set-sink-...и что он был более последовательным, @DEFAULT_SINK@если вы используете наушники.

# Pulse Audio controls
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl -- set-sink-volume @DEFAULT_SINK@ +5% #increase sound volume
bindsym XF86AudioLowerVolume exec --no-startup-id pactl -- set-sink-volume @DEFAULT_SINK@ -5% #decrease sound volume
bindsym XF86AudioMute exec --no-startup-id pactl -- set-sink-mute @DEFAULT_SINK@ toggle # mute sound
Люк Мюррей
источник
+1 за @ DEFAULT_SINK @. Для меня две черты не требовались, они даже мешают этому работать (здесь mxLinux).
Саймон
1

я просто заменил 0 одним примером:

Пульс Аудио управления

bindsym XF86AudioRaiseVolume exec - идентификатор пакета запуска-set-sink-volume 1 + 5% # увеличение громкости звука bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-громкость 1 -5% # уменьшить громкость звука bindsym XF86Audioute exec --no-startup-id pactl set-sink-mute 1 переключатель # mute sound

чтобы увидеть, какое число для вашего аудиоустройства, откройте pavucontrol и нажмите «Устройства вывода», верхний - 0, под ним - один и т.д.

помогите чуваку
источник