
Então comprei este teclado para o meu laptop que não possui teclas de mídia e estou muito acostumado a pressionar o botão reproduzir/pausar no meu laptop para pausar qualquer mídia reproduzida em segundo plano. Com este teclado, entretanto, tenho que criar meus próprios atalhos de teclado para fazer isso devido à ausência de teclas de mídia. Até agora consegui criar atalhos de teclado para controle de volume.
Pesquisa e minhas tentativas:
Encontrei esta página que mostra um comando para simular chaves de mídia do terminal. https://askubuntu.com/questions/235126/simulate-media-keys-in-terminal/235181#235181. O comando é
xdotool key XF86AudioPlay
mas quando eu faço um atalho de teclado indo paraConfigurações > Teclado > Atalhos de aplicativos. Parece não funcionar.Quando pressiono o atalho de teclado que defini paraSuper+F11meu uso de CPU aumenta um pouco, o que significa que o atalho está funcionando. Confirmei isso alterando o comando que os atalhos executam, para
exo-open --launch WebBrowser
o qual, como você deve ter pensado, abre meu navegador quando pressionoSuper+F11.Agora, porque eu conhecia um pouco de C/C++, criei este programa wrapper que faz exatamente a mesma coisa
#include <stdlib.h>
int main() {
system("xdotool key XF86AudioPlay");
}
e mapeei o atalho para executar este programa, mas infelizmente!! ainda não funciona.
Como obtenho o comando que o XFCE executa quando pressiono o botão reproduzir/pausar padrão no teclado do meu laptop, porque isso parece reproduzir/pausar qualquer mídia reproduzida em segundo plano.
Eu uso o XFCE no Arch Linux. Eu costumo ouvir música no rhytmbox music play.
Responder1
Se você deseja apenas controlar rhythmbox
, rhythmbox-client --play
tocar a música ou rhythmbox-client --pause
pausá-la deve ser suficiente.
Mas encontrei este software chamado playerctl
em algum wiki do Arch que controla a mídia atualmente reproduzida. Não tenho 100% de certeza de qual é sua prioridade, mas quando abro um vídeo do YouTube, ele controla isso por padrão, em vez de mexer no Rhythmbox. Para alternar entre reproduzir e pausar, execute playerctl play-pause
. Para ir para o próximo vídeo/música que você executa playerctl next
e para o vídeo/música anterior que você executa playerctl previous
.
Não tenho 100% de certeza se isso funciona em qualquer outra distro ou se está disponível, mas funciona para mim no Arch.
Responder2
O Rhythmbox parece suportar rhythmbox-client --play/--pause
comandos e comandos D-Bus enviados usando dbus-send
, conforme explicado emesta pergunta no AskUbuntueesta pergunta aqui no U&L.SE conforme link da resposta do AskUbuntu.
Resumindo, o dbus-send
comando seria:
dbus-send --print-reply --dest=org.mpris.MediaPlayer2.rhythmbox /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause
com a condição de que a API MPRIS do Rhythmbox precise ser habilitada primeiro.
Mas se você também precisar controlar qualquer vídeo do YouTube usando essas mesmas teclas, provavelmente precisará dessas teclas para ativar um script que descobre qual player está tocando no momento e envia os comandos corretos para o Rhythmbox ou para qualquer navegador da web. (ou outro aplicativo) que você está usando para reproduzir vídeos do YouTube. E para o navegador, o comando/tecla precisaria ser enviado para a aba correta do navegador, que não será necessariamente a atual...
Responder3
Achei o mesmo que você: o comando xdotool key XF86AudioPlay
funciona em um shell, mas não em um atalho ou inicializador de aplicativos. Concluí então que xdotool
só funciona quando executado a partir de um shell interativo. E, engraçado, consegui que funcionasse em atalhos de teclado e ícones do iniciador (por exemplo, na barra de tarefas) com o seguinte comando:
bash -i -c 'xdotool key XF86AudioPlay'
Assim que você remove a -i
chave, tornando- bash
a não interativa, ela para de funcionar. Não faço ideia por que esse é o caso ...
O bom do XF86AudioPlay
método é que ele também funciona para pausar a reprodução de vídeos do Youtube em segundo plano no Firefox, por exemplo.
Atualizar
Ok, descobri por que isso está acontecendo. Na minha .bashrc
eu tinha mudado $LD_LIBRARY_PATH
o que era necessário para xdotool
rodar. No entanto, isso não aconteceu ao fazer login na minha sessão GUI (XFCE). Portanto, qualquer programa iniciado diretamente da GUI (por exemplo, um iniciador ou Alt+F2) e não de um terminal não veria o arquivo modificado $LD_LIBRARY_PATH
, perdendo assim algumas bibliotecas.
Portanto, a solução correta era colocar as modificações de $LD_LIBRARY_PATH
in .profile
em vez de .bashrc
. Dessa forma, o XFCE os executaria no login e todos os programas poderiam vê-los. No entanto, deixarei aqui a resposta antiga para futuros visitantes.
Responder4
Caso você esteja usando o Audacious, você pode usar
audacious -t
para alternar entre pausa e reprodução (consulte man audacious
).