Use a linha de comando (ou python) para desligar gradualmente um programa gui

1

É 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?)

    
por CodeJoust 21.12.2009 / 05:55

5 respostas

2

É 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
    
por 15.01.2010 / 15:10
1

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).

    
por 16.08.2010 / 09:16
0

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.

    
por 21.12.2009 / 06:35
0

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.

    
por 21.12.2009 / 06:45
0

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.

    
por 20.02.2010 / 20:19