Como fechar todas as instâncias de um programa instantaneamente?

11

O gato da minha namorada estava andando no meu laptop e eu não a notei. Quando me virei para verificar, vejo que tenho 32 guias "Archive Manager". Como posso fechá-los todos instantaneamente, como se estivesse usando Alt+ F4em todos eles ao mesmo tempo.

sticsk
fonte

Respostas:

14

Na linha de comando:

killall file-roller

Você pode fazer alt + f4, mas precisa fazer isso para todos os gerenciadores de arquivos que foram abertos.

Rinzwind
fonte
21
Embora alguns possam argumentar que o comando "killall" é um pouco pesado, o seu ainda é uma solução muito mais humana do que a kill catação que eu sugeriria.
23817 Nick Weinberg
Não acho que exista uma maneira mais fácil de detê-los. Muita ALT + F4 do faria isso para, mas que não foi a questão ;-)
Rinzwind
5
@NickWeinberg eu aprecio isso :)
cat
5
Eu li esta pergunta e respondo errado. Eu pensei que era sobre o gato ter fechado tudo, e que OP não sabia como o gato fez isso. Fiquei espantado que o gato era capaz de escrever killall file-roller: D
Viktor Mellgren
1
caramba @ViktorMellgren parar de me fazer derramar café na minha tela
Rinzwind
3

Outra abordagem seria usar o wmctrlutilitário (controle do Gerenciador de Janelas). Isso pode ser usado para dizer ao gerenciador de janelas para fingir que você clicou no botão Fechar. Isso evita a natureza potencialmente pesada de killall; por exemplo, alguns programas com um documento não salvo são encerrados imediatamente quando são mortos (mesmo que gentilmente), enquanto o clique no botão Fechar exibe a mensagem "Deseja salvar?" pronto.

O comando básico é wmctrl -c WINDOWTITLE, portanto, neste caso wmctrl -c "Archive Manager"(supondo que ele não tenha um arquivo aberto: isso altera o título). Infelizmente, ele fecha apenas um de cada vez; portanto, precisamos fazer mais para fechar todos eles.

wmctrl retorna sucesso se encontrar uma correspondência, para que possamos fazer um loop até que falhe:

while wmctrl -c "Archive Manager"; do sleep 0.1; done

Isso sempre escolhe a primeira janela que encontra, por isso precisamos dormir um pouco para evitar o envio contínuo de um fluxo de comandos de fechamento para a primeira janela que já está ocupada fechando - isso pode causar um erro que interrompe o loop.

Isso é simples e geralmente funciona, mas dormir uma quantidade de tempo definida e esperar que uma janela se feche antes de tentarmos novamente é uma maneira lenta e confusa de evitar o erro. O que realmente queremos fazer é enviar imediatamente uma mensagem próxima para cada janela correspondente.

Podemos encontrar todas as janelas abertas com wmctrl -l. Isso lista um ID numérico da janela que podemos usar para identificar cada janela individualmente, mesmo que todas tenham o mesmo título. Então, precisamos filtrar apenas as janelas correspondentes (o grepcomando), retirar apenas o ID da janela (o cutcomando) e chamar wmctrl -i -ccada uma. O -ié necessário para coincidir com o ID de janela em vez do título da janela.

for w in $(wmctrl -l | grep "Archive Manager" | cut -d" " -f1); do
    wmctrl -i -c $w
done

Um pouco complicado para digitar sempre que um gato pisar no teclado, mas espero que seja uma técnica útil para manter em sua caixa de ferramentas de script.

Harun
fonte
2
Então você espera que o gato digite algo que valha a pena salvar?
Rinzwind
0

Você pode usar o atalho do teclado Ctrl+ Qque fechará todas as janelas abertas do Gerenciador de arquivos.


O atalho Ctrl+ Qé comum no Ubuntu (e muitas outras distribuições também). Funciona da mesma forma com a maioria dos aplicativos que usei até agora. Ou seja, fechará todas as janelas de um aplicativo em execução.

Dan
fonte
Desfiz o meu voto, já que não posso confirmar que Ctrl+Qrealmente faz isso. Enquanto o Quitmenu fechava todas as janelas abertas do Archive Manager, a tecla de atalho não fazia o mesmo (pelo menos na versão 14.04).
precisa saber é o seguinte
1
@clearkimura Não posso confirmar se é devido ao fato de estar usando o gnome ou se é por causa da versão do Ubuntu, mas funciona para mim no Ubuntu 17.04 (com gnome) que usa o Archive Manager versão 3.22.3
Dan