É possível usar o wmctrl (empacotado no Ubuntu), que envia sinais para os gerenciadores de janelas compatíveis com EWHM / NetWM (a maioria).
Fechar kate normalmente seria feito com o comando:
wmctrl -c kate
É possível usar a linha de comando (ou python) para desligar gradualmente um programa gui?
Por exemplo, seria possível desligar gradualmente programas (como pressionar o X na janela, não matar o processo), dando ao usuário a capacidade de salvar arquivos não salvos antes que o programa seja desligado (como o gedit?)
É possível usar o wmctrl (empacotado no Ubuntu), que envia sinais para os gerenciadores de janelas compatíveis com EWHM / NetWM (a maioria).
Fechar kate normalmente seria feito com o comando:
wmctrl -c kate
Eu acho que a palavra "graciosamente" pode descrever melhor o tipo de desligamento que você procura?
Você já tentou apenas killall processname
ou kill pidnumber
? (onde processname ou pidnumber são substituídos pelo nome ou PID do processo que você está tentando desligar)
Por padrão, kill envia um sinal TERM que o aplicativo pode tratar como uma solicitação de desligamento normal (embora seja tecnicamente até o desenvolvedor o que eles fazem com o sinal TERM).
O comando de desligamento permite que você especifique um período de tolerância, bem como uma mensagem de desligamento (de sua escolha) para avisar os usuários para salvar seu trabalho.
Parece improvável que exista um mecanismo para encerrar um único aplicativo além de matá-lo.
Provavelmente, é melhor pensar no aplicativo como uma caixa preta. Poderíamos matá-lo, mas é difícil influenciar sua operação interna de maneiras sutis.
E de fora, desligar com facilidade (salvar arquivos, etc) é muito sutil.
Se o programa é um que você está escrevendo, a melhor maneira de fazer isso é capturar sinais do sistema operacional e especificar no programa como você deseja que o programa os manipule. Então, você pode usar o comando (infelizmente chamado IMO) kill para enviar o sinal apropriado para o programa. que pára da maneira que você quer. (Infelizmente, nunca fiz isso com o Python, mas parece que você pode usar os.kill Claro, você poderia fazer a mesma coisa se não fosse um programa que você escreveu, mas você sabe (ou descobre, possivelmente por tentativa e erro) que ele lida com um sinal específico da maneira que você deseja. / p>
Eu não tenho Ubuntu, mas você pode conseguir uma lista de sinais disponíveis digitando man signal na linha de comando.