Похожие вопросы

Клавиатура не работает при подключении через диспетчер подключений к удаленному рабочему столу
Как в веб-браузере горячие клавиши в Windows?
Как удалить ограничение размера файла 25 Мб на PNG обои для рабочего стола для Windows 10
Как расширить рабочий стол с помощью видеокарты Nvidia 8800 GT?
Преимущества постоянного нажатия кнопки Обновить на рабочем столе Windows
Для Windows 7: создание ярлыков для папок и закрепление их
Перейти на рабочий стол на моем Mac [дубликат]
Как узнать путь к текущему изображению рабочего стола?
Рабочий стол Windows 7 не обновляется автоматически
Есть ли способ сделать приложение, которое разбивает экран рабочего стола?
Как вернуть значки рабочего стола в Vista обратно?
Windows всегда восстанавливает старые значки рабочего стола
Созданные файлы / загруженные файлы перейти к верхней левой части рабочего стола, а не в правом нижнем углу
Ярлыки на рабочем столе для программ, установленных в Sandboxie
Windows 7: Как скрыть общедоступные ярлыки с рабочего стола пользователя без прав администратора?

Как позволить приложению Linux Python корректно обрабатывать завершение при выходе пользователя из системы?

Я написал приложение с графическим интерфейсом Linux на Python, которое должно выполнять некоторые задачи очистки перед завершением, когда пользователь выходит из системы. К сожалению, кажется, что при выходе из системы все приложения убиты. Я пытался обрабатывать как сигналы POSIX, так и уведомления DBUS, но ничего не работало. Есть идеи, что я мог сделать неправильно?

при запуске приложения регистрирую обработчики завершения:

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

когда пользователь выходит из системы, ни self.on_signal_term nor self.on_session_disconnect называются.

проблема возникает в нескольких сценариях: Ubuntu 14.04 с Unity, Debian Wheezy с Gnome.

полный код:https://github.com/tuxpoldo/btsync-deb/tree/master/btsync-gui

5
задан tuxpoldo
источник

1 ответов

традиционно, это делается с помощью XSMP и libSM. Если вы попросите менеджера сеансов выйти из системы, он отправит сообщения "SaveYourself" всем клиентам, которые зарегистрировались в нем через XSMP.

программа не погибает; она завершает работу сама по себе, когда Xlib теряет соединение с сервером X11. (Я не уверен, есть ли у gtk возможность отключить это.)

0
отвечен grawity 2014-06-05 15:24:12
источник

Другие вопросы desktop gtk linux logout python