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

12

O gato da minha namorada estava andando no meu laptop e eu não percebi. Quando me virei para verificar, vejo que tenho 32 guias "Gerenciador de arquivamento". Como posso fechá-las instantaneamente, como se estivesse usando Alt + F4 em todas elas de uma só vez.

    
por sticsk 23.04.2017 / 20:10

3 respostas

14

Da linha de comando:

killall file-roller

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

    
por Rinzwind 23.04.2017 / 20:13
3

Outra abordagem seria usar o utilitário wmctrl (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 sairão imediatamente quando forem eliminados (até mesmo suavemente), enquanto que ao clicar no botão fechar, aparece um "Deseja salvar?" prompt.

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

wmctrl retorna sucesso se encontrar uma correspondência, então podemos fazer um loop até falhar:

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

Isso sempre escolhe a primeira janela que encontrar, então precisamos dormir um pouco para evitar o envio contínuo de um fluxo de comandos próximos 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 um determinado período de tempo e esperar que uma janela feche antes de tentarmos novamente é uma maneira confusa e lenta de evitar o erro. O que realmente queremos fazer é enviar imediatamente uma mensagem fechada para todas as janelas de correspondência.

Podemos encontrar todas as janelas abertas com wmctrl -l . Isso lista um ID de janela numérica que podemos usar para identificar cada janela individualmente, mesmo que todas tenham o mesmo título. Em seguida, precisamos filtrar apenas as janelas correspondentes (o comando grep ), extrair apenas o ID da janela (o comando cut ) e chamar wmctrl -i -c para cada um. O -i é necessário para corresponder ao id da 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 apenas digitar sempre que um gato pisa no seu teclado, mas esperamos que seja uma técnica útil para manter em sua caixa de ferramentas de script.

    
por Harun 24.04.2017 / 09:55
0

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

O atalho Ctrl + Q é comum no Ubuntu (e em 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.

    
por Dan 24.04.2017 / 13:28

Tags