Коомпьютер с linux при выключении не спрашивает разрешения на выключение у приложний, так как алгоритм выключения был придуман для консольного режима работы, когда все работающие приложения были демонами (аналог резидентов в DOS), которые нежалко убивать. В настоящее время, компьютер работает с оконными приложениями, которых, в момент нажатия на кнопку завершения работы, выполняется около десятка, причем в каждом из которых могут быть результаты многочасового труда пользователя компьютера. Но команда выключения linux этого не понимает и все их закрывает не посылая им никаких сообщений и недавая пользователю возможможности передумать. В результате все введенные тексты и нарисованные картинки, схемы, чертежи будут потерены безвозвратно.
То есть процесс завершения работы linux реализован хуже, чем было сделано в windows 3.1, вероятно даже 1.0. В windows при выключении компьютера окнам посылается куча сообщений с запросом завершения работы: WM_QUERYENDSESSION (запрос разрешения выключения), WM_ENDSESSION (иформирование об выключении), WM_CLOSE (запрос разрешения закрытия окна)..... В результате самая тупая программа понимает, что надо сохраняться. Все завершается корректно.
В стабильнейшемем gdk после десятков лет работы нет аналога WM_QUERYENDSESSION, а в описании GDK_DELETE, аналоге WM_CLOSE , не сказано, что оно посылается при выключении компьютера, а только при нажии на специальную кнопку на заголовке.
Самое любопытное, пользователей linux это нисколько не волнует. Я для решения этой проблемы придумал деревянный костыль, который надо поместить в автозагрузку и запускать от root. Делается это через sudo, visudo, sudoers.
( Скрипт для перезагрузки )
( Скрипт для выключения )
Это костыль, так как проблему он до конца не решает: он не умеет посылать сообщения окнам свернутым в трей.
То есть процесс завершения работы linux реализован хуже, чем было сделано в windows 3.1, вероятно даже 1.0. В windows при выключении компьютера окнам посылается куча сообщений с запросом завершения работы: WM_QUERYENDSESSION (запрос разрешения выключения), WM_ENDSESSION (иформирование об выключении), WM_CLOSE (запрос разрешения закрытия окна)..... В результате самая тупая программа понимает, что надо сохраняться. Все завершается корректно.
В стабильнейшемем gdk после десятков лет работы нет аналога WM_QUERYENDSESSION, а в описании GDK_DELETE, аналоге WM_CLOSE , не сказано, что оно посылается при выключении компьютера, а только при нажии на специальную кнопку на заголовке.
the window manager has requested that the toplevel window be hidden or destroyed, usually when the user clicks on a special icon in the title bar.
Самое любопытное, пользователей linux это нисколько не волнует. Я для решения этой проблемы придумал деревянный костыль, который надо поместить в автозагрузку и запускать от root. Делается это через sudo, visudo, sudoers.
( Скрипт для перезагрузки )
( Скрипт для выключения )
Это костыль, так как проблему он до конца не решает: он не умеет посылать сообщения окнам свернутым в трей.