Como altero as ligações de teclas com base em qual janela está focada?

6

Eu tenho essas linhas na minha configuração do i3 agora:

# Play/pause, prev, next
bindcode 172 exec "/opt/playerctl/bin/playerctl play-pause"
bindcode 173 exec "/opt/playerctl/bin/playerctl previous"
bindcode 171 exec "/opt/playerctl/bin/playerctl next"

Isso faz com que os botões de mídia do meu teclado reproduzam / pausem tocadores de áudio suportados pelo playerctl, como o Spotify.

A questão é que o botão reproduzir / pausar mídia agora não funciona mais no meu player de vídeo (SMPlayer).

É possível fazer com que as combinações de teclas só tenham efeito quando a janela focada não é SMPlayer?

Para resumir o que estou tentando fazer: Eu quero que os atalhos de teclado acima estejam sempre em vigor, exceto para quando a janela do SMPlayer (class: "Smplayer") estiver focada .

Isso é possível?

    
por Hubro 21.04.2015 / 18:01

1 resposta

1

Você poderia tentar isso. Lembre-se de substituir username por seu nome de usuário real no Linux a seguir. Por algum motivo, usar ~ em vez de home/username não funcionou para mim.

Use essas linhas na configuração do i3:

# Play/pause, prev, next
bindcode 172 exec /home/username/.i3/play.sh play-pause
bindcode 173 exec /home/username/.i3/play.sh previous
bindcode 171 exec /home/username/.i3/play.sh next

Cole o seguinte em um arquivo chamado /home/username/.i3/play.sh

cmd="$1"
id=$(xprop -root | awk '/_NET_ACTIVE_WINDOW\(WINDOW\)/{print $NF}')
curr_title=$(xprop -id $id | awk '/_NET_WM_NAME/{$1=$2="";print}' | cut -d'"' -f2)
if [[ "$curr_title" != "SMPlayer"* ]]; then
    /opt/playerctl/bin/playerctl "$cmd"
fi

Você pode ter que ajustar a parte "SMPlayer" * dependendo do título exato da janela - não tenho experiência com esse programa. Você pode adicionar uma cláusula else para executar outro programa quando o SMPlayer estiver em execução, se desejar.

Espero que isso ajude.

    
por 21.12.2016 / 17:37

Tags