Como posso fazer com que as chaves de mídia funcionem com o i3?

8

Mudei do Gnome para o i3 no Manjaro e estou quase terminando de configurar o gerenciador de janelas, as cores dos terminais e outros enfeites. Depois de algum tempo, decidi ouvir algumas músicas e, depois de alguns minutos, percebi que as teclas de volume e as teclas de reprodução não funcionam.

Eu tenho um teclado Razer Blackwidow Stealth 2014, portanto, essas teclas de mídia estão realmente juntas com as teclas de função. Por exemplo: Reproduzir / Pausar está ativado F6e atua como uma tecla de mídia quando pressiono a Fntecla, como em Fn + F6.

Renato Oliveira
fonte
Tentei limpar essa questão porque, francamente, cerca de 90% dela estava errada . Agora está tudo bem, e sua resposta esclarece. Duas das coisas que você teve sua resposta anterior / seguinte estavam exatamente na sua resposta. A única melhoria real foi mover o jogo para reproduzir / pausar (o que não faz diferença se funciona ou não). Além disso, o xevcomando era totalmente inútil. Se essa foi a saída do xev quando você pressionou essas teclas, sua resposta funcionaria. Tente de novo. Seu estado deve dizer algo XF86AudioNextassim.
Evan Carroll

Respostas:

9

A busca pela resposta

Depois de algum tempo brincando com os controles, encontrei uma postagem no antigo quadro de perguntas frequentes do i3: https://faq.i3wm.org/question/3747/enabled-multimedia-keys.1.html

Ele diz para colar o seguinte no arquivo .config do i3 (abaixo é uma versão levemente modificada, com algumas linhas removidas, que não são relevantes para essa pergunta em particular):

# 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

E também não funcionou, no entanto, o processo de encontrar a resposta está correto.

A verdadeira resposta

Para mim, pelo menos, o problema era que, depois de copiar essas linhas, as chaves não funcionavam. Depois de mais algumas pesquisas, descobri que os comandos de volume poderiam ser um pouco diferentes, usando os amixerdo PulseAudio pactl.

No final, esses foram deixados assim:

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

e eles começaram a trabalhar.

As teclas de reprodução eram um pouco mais complicadas. Deduzi que o .config informa qual comando é executado para executar a ação. Então eu tentei playerctl play-pauseno meu terminal. Claro que não funcionou, porque o playerctl não estava instalado . Depois de instalá-lo (usando sudo pacman -S playerctl) esses comandos do teclado também funcionaram muito bem.

Renato Oliveira
fonte
Para o controle de volume, a primeira maneira funcionou para mim, alterando as pias para 1 em vez de 0. Você pode ver suas pias fazendo a lista pactl | grep pia
Ramzi C.
2

Descobri que precisava --separar o pactldo set-sink-...que era mais consistente @DEFAULT_SINK@se você usasse fones de ouvido.

# 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
Luke Murray
fonte
+1 para @ DEFAULT_SINK @. Para mim, os dois traços não eram necessários, eles até impediam que isso funcionasse (mxLinux aqui).
Simon
1

Acabei de substituir 0 com um exemplo:

Controles de áudio de pulso

bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 1 + 5% # aumentar volume de som bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 1 -5% #decrease volume de som exec --no-startup-id pactl set-sink-mute 1 alternar # mudo som

para ver qual é o número do seu dispositivo de áudio, abra o pavucontrol e clique nos dispositivos de saída.

ajuda cara
fonte