LXDE: изящный выход из системы вместо того, чтобы убивать все запущенные приложения

В Windows, когда вы выходите из системы, каждое приложение получает эквивалент Alt + F4, поэтому, если у вас есть несохраненный документ в Word, оно отобразит сообщение с просьбой сохранить его.

В LXDE каждая программа просто закрывается, хотя у меня есть несохраненные документы. Кажется, что каждая программа получает SIGTERM вместо эквивалента Alt + F4.

Есть ли способ изменить это поведение?

2
задан 30 December 2013 в 15:15

1 ответ

AFAIK, нет. Но имейте в виду, что это минималистский DE по причине. По-видимому, его создатели объявили такие функции слишком ненормальными. Хотя они могут быть правы.

UNIX уже позволяет корректно закрывать дочерние процессы через SIGTERM. Не отвечающие дети могут быть немедленно убиты с помощью SIGKILL. Разумные DE следуют этой схеме, отправляя SIGTERM, а затем следуя SIGKILL только при необходимости. Некоторые приложения, такие как libreoffice, не следуют этой схеме и сразу же закрываются при получении SIGTERM, даже если есть несохраненные документы. Создатели справедливо считают, что это проблема libreoffice, а не менеджера их сессий.

Изящное закрытие всех клиентов сеанса X11 может быть более сложным, чем просто отправка alt-f4 во все окна. Например, если у вас открыто несколько окон Firefox и вы посылаете alt-f4 всем одновременно, окна будут закрываться по отдельности в случайном порядке. Когда Firefox снова запускается, снова открывается только последнее закрытое окно. Таким образом, SIGTERM на самом деле является правильным сигналом для отправки процессу firefox, если вы хотите, чтобы все окна снова запускались в своем предыдущем состоянии.

По причинам, которые я не понимаю, большинство интерактивных оболочек не отвечают на SIGTERM, поэтому xfce4-терминал и многие другие просто отправят SIGKILL своим клиентам. В результате терминалы обычно очень плохо реагируют на alt-f4. Единственный способ убедиться, что данные не потеряны, - это если каждый терминал закрыт по отдельности, и пользователь сам решает, есть ли в терминале задание, которое должно быть выполнено до его закрытия.

Тем не менее, если вы сочтете, что alt-f4 подходит для изящного закрытия всех приложений, которые вы используете на ежедневной основе, вам будет довольно легко написать простой скрипт, который отправляет alt-f4 все запущенные окна. Соответствующее событие X11 - WM_DELETE_WINDOW. Здесь есть некоторая информация о том, как вы можете написать такой скрипт. Можно даже отфильтровать проблемных клиентов, таких как firefox и терминалы. Теперь представьте себе задачу Herculean по поддержанию такого сценария для всех приложений X11, которые, вероятно, будут использовать люди, и вы поймете, почему большинство DE выбирают подход SIGTERM, SIGKILL в стиле UNIX.

0
ответ дан 30 December 2013 в 15:15

Другие вопросы по тегам:

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