Как можно остановить выход пользователя из KDE и запустить при этом GUI приложение?

Я хочу при выходе или logout пользователя в KDE запустить некое приложение для установки обновлений. Alt linux KDE

Много чего перепробовал. Первое что пробовал это опция в настройках KDE. Там где можно добавить скрипт в автозапуск, так же можно и скрипт при выходе. Он отрабатывает но GUI не работает. Видимо запускается где то там на фоне. Потом пробовал поставить блокировки через systemd inhibit. Толку ноль. Они игнорирующийся. Единственно что пока получилось это создать программку с окном которое нельзя закрыть. Тогда при попытке выйти или вообще выключить компьютер мы получаем "Приложение не дает завершить работу" но держать это окно постоянно во время работы это бред. Должен же быть более красивый способ это все обработать. Например, словить сигнал от DBUS по типу PrepareForShutdown и отправить в ответ что то типа false.


Ответы (1 шт):

Автор решения: eri

Стандартный метод предотвратить завершение сессии в современном линукс десктопе это интерфейс dbus org.freedesktop.portal.Inhibit

Методом Inhibit создается dbus хандл с интерфейсом org.freedesktop.portal.Request и сигналом Response.

Сигнал выдаст что там пользователь ответил на запрос "Приложение препятствует ...". если Ок, то можно безопасно что-то запустить.

Из староверских способов:

На приложении наверное должен висеть обработчик сигнала системного SIGINT. Но так как родитель приложения менеджер сессии, а не дисплейный сервер, то скорее всего не прокатит.

→ Ссылка