Quero fechar todas as janelas que aparecem na minha área de trabalho. Eu pensei em fazer isso pkill
, mas só consegui matá-los um de cada vez, o que não é o que eu quero. O objetivo final é colocar isso em um script para executar um quiosque, ele detectará se o software do quiosque está em execução (eu percebi essa parte) e, se não estiver, ele matará todas as janelas abertas e reiniciará o meu quiosque. software de quiosque.
9
Respostas:
A abordagem mais simples usa
xdotool
:xdotool search ""
lista todas as janelas.windowkill %@
mata cada um deles;%@
refere-se a todos os resultados da pesquisa anterior.Você pode preferir usar a
--maxdepth 1
opção parasearch
limitar as janelas selecionadas para as de nível superior.fonte
isso funciona pelo menos para o kde e o xfce (o gnome não foi testado, mas pode funcionar também):
1) instalar o wmctrl
2) crie um script chamado
close_windows.sh
:3) torná-lo executável:
chmod +x ./close_windows.sh
3) crie uma entrada no menu Iniciar que aponte para o script close_windows.
4) execute o script close_windows a partir desta entrada.
fonte: https://forum.manjaro.org/index.php?topic=4412.0 :
fonte
Michael Homer e Guido van Steen mostraram maneiras de matar todas as janelas. Isso não mataria os processos em segundo plano, se houver algum. Não mataria programas travados cuja janela se foi, mas que ainda estão sendo executados sem uma interface de usuário. Então você pode preferir matar os processos.
Você pode executar
kill -9 -1
como um usuário não raiz para eliminar todos os processos em execução como esse usuário. Você precisaria executar o aplicativo de quiosque como um usuário dedicado (que é uma configuração padrão para quiosques de qualquer maneira, para segurança) e garantir que a interface do quiosque seja reiniciada quando todos os processos da sessão estiverem mortos (que também é uma configuração padrão para quiosques, robustez).fonte
A resposta de Guido funciona perfeitamente para mim. Eu escrevi um pequeno programa Pascal compilável em Linux / Windows compilado com o Lazarus / FPC para meu próprio uso, que lança seu comando wmctrl ou o comando equivalente do Windows Powershell:
Também notei que Diego está certo sobre o nome da área de trabalho, e meu executável Linux funcionaria apenas em um ambiente francês xfce com a área de trabalho chamada "Bureau". Não consegui encontrar o nome da área de trabalho nas variáveis de ambiente (e não valeu a pena).
fonte