Normalmente, ao executar o aplicativo em ambiente gráfico, quando quero fechá-lo, clico X
no canto superior esquerdo da janela ou vou para File > Close
.
Às vezes, gostaria de fechar esses programas remotamente através do ssh do terminal usando a linha de comando, agora uso o kill
comando, mas imagino que ele faça o mesmo que sair do aplicativo adequadamente.
Do man kill
sinal padrão parece ser 15) SIGTERM, esse sinal informa ao aplicativo que estou tentando fechar para limpar, fechar arquivos abertos, salvar coisas?
Existe uma maneira melhor se eu quiser fazer isso no terminal?
command-line
Mike
fonte
fonte
Respostas:
A maneira típica de fechar o aplicativo normalmente é usar
kill -TERM 1234
, onde1234
está o PID da janela. O problema, no entanto, é que aplicativos gráficos são projetados para escutar um sinal específico do próprio servidor X, não escutando oTERM
sinal.Isso significa que você precisaria de algum tipo de agente entre você e o servidor X para comunicar que deseja enviar o sinal apropriado. É claro que você pode escrever um programa em C, no entanto, existe um
wmctrl
programa já existente (não surpreendentemente escrito em C) que faz exatamente isso.O uso de
wmctrl
é simples:Como não está instalado por padrão, obtenha-o com
sudo apt-get install wmctrl
Existem muitos usos para
wmctrl
além de apenas fechar as janelas, por favor, veja mais respostas e as de Jacob Vlijm para exemplos de scripts nos quais ela foi usadafonte
wmctrl -l
listará todas as janelas e fornecerá o ID numérico em hexadecimal na primeira coluna. =)Minimize to tray on close
ewmctrl -c
apenas fecha uma janela, não o aplicativo em si, ele permanecerá em execução minimizado na bandeja.Eu acho que vale a pena adicionar que
wmctrl -xl
produzirá resultados como este:Onde a
x
requisição da classe window está na saída. Geralmente, é a maneira mais fácil de fechar o mesmo programa todas as vezes. Então, podemos apenas fornecer a classe window ao fechá-la:Este exemplo fechará o speedcrunch.
fonte