Como permitir que o aplicativo Linux Python manipule a terminação no logout do usuário corretamente?

0

Eu escrevi um aplicativo GUI do Linux no Python que precisa executar algumas tarefas de limpeza antes de ser finalizado quando o usuário efetua logout. Infelizmente, parece que, no logout, todos os aplicativos são eliminados. Eu tentei ambos para lidar com sinais POSIX e notificações DBUS, mas nada funcionou. Alguma ideia do que eu poderia ter errado?

Na inicialização do aplicativo, registro alguns manipuladores de finalização:

# create graceful shutdown mechanisms
signal.signal(signal.SIGTERM, self.on_signal_term)
self.bus = dbus.SessionBus()
self.bus.call_on_disconnection(self.on_session_disconnect)

Quando o usuário efetua logout, nem self.on_signal_term nem self.on_session_disconnect são chamados.

O problema ocorre em vários cenários: Ubuntu 14.04 com Unity, Debian Wheezy com Gnome.

Código completo: link

    
por tuxpoldo 05.06.2014 / 17:02

1 resposta

0

Tradicionalmente, isso é feito usando XSMP e libSM . Se você pedir a um gerenciador de sessão para sair, ele envia mensagens "SaveYourself" para todos os clientes que se registraram no XSMP.

O programa não é morto, no entanto; ele sai sozinho quando o Xlib perde a conexão com o servidor X11. (Não tenho certeza se o gtk tem uma opção para desativar isso.)

    
por 05.06.2014 / 17:24