Contextualizando:
Tenho uma mesa digitalizadora da Huion com 6 botões, criei um script para alguns programas que uso, constando um conjunto de atalhos para cada botão da mesa e gostaria de executar o script quando foco no aplicativo.
Exemplo: Quando focar na tela do Gimp, executar o script com os atalhos do GImp;
Quando focar na tela do Libresprite, executar o script com os atalhos do Libresprite;
Quando nenhum deles estão com foco, executar o script com atalhos para o Desktop.
Resumindo, quero fazer como os programas de drivers do windows, que permitem que consiga setar conjunto de atalhos para cada programa e como não encontrei um aplicativo similar para o linux, queria fazer através de scripts (mas não tenho conhecimento ainda para isso e não encontrei solução em pesquisas na internet)
Agradeço desde já
Você pode usar comando xdotool getactivewindow getwindowclassname
dentro de seja qual for o script que está utilizando aí para obter o nome do programa focado, e a partir disso construir uma condição.
#!/bin/sh
case "$(xdotool getactivewindow getwindowclassname)" in
(GIMP)
coisas_do_gimp
;;
(Libresprite)
coisas_do_libresprite
;;
(*)
coisas_de_nenhum_dos_dois
;;
esac
Note que eu não garanto que os nomes aí estão certos (até mesmo maiúsculas e minúsculas afetam).
Uma maneira de verificar os nomes seria rodar sleep 5 && xdotool getactivewindow getwindowclassname
dentro de um terminal para esperar 5 segundos (sleep 5
) e em seguida (&&
) emitir o nome da janela ativa (xdotool getactivewindow getwindowclassname
). Nesse intervalo de 5 segundos, você ia focar na janela cujo nome quer descobrir.
2 curtidas
@Capezotte era isso mesmo!
O único ponto é que o getwindowclassname
não funciona. O getwindowname
funciona no lugar (Não sei se estou em uma versão mais nova ou mais antiga do xdotool).
Acrescentei também um “*” antes do nome do programa, pois como a janela altera para o nome do arquivo em uso, não executou corretamente (assim como você pontuou).
Coloquei também os comandos dentro de um while para sempre ficar rodando o script. Tenho 99,99% de certeza que fiz da maneira errada, mas não matei meu sistema ainda, então está tranquilo rs.
o script para meu uso ficou assim
#!/bin/sh
while [ true ]
do
case "$(xdotool getactivewindow getwindowname)" in
(*"GIMP")
sh /home/maycon/.config/scripts/gimp.sh
;;
(*"LibreSprite v1.0")
sh /home/maycon/.config/scripts/libresprite.sh
;;
(*)
sh /home/maycon/.config/scripts/desktop.sh
;;
esac
done
Irei incluir os outros apps a medida que for usando, pois não configurei os atalhos para eles ainda.
Muito obrigado! Fiquei quase duas semanas procurando por essa solução e você veio mais rápido que a luz do sol e me ajudou. vlw mesmo!
2 curtidas