LXDE:正常注销而不是终止所有正在运行的应用程序

LXDE:正常注销而不是终止所有正在运行的应用程序

在 Windows 上,当您注销时,每个应用程序都会收到相当于 Alt+F4 的按钮,因此如果您在 Word 中有一个未保存的文档,它会显示一条消息要求您保存它。

在 LXDE 中,每个程序都会直接关闭,即使我有未保存的文档。似乎每个程序都会收到 SIGTERM,而不是 Alt+F4 等同信号。

有没有什么办法可以改变这种行为?

答案1

据我所知,不是。但请记住,这是一个极简主义的 DE,这是有原因的。显然,它的制造者宣称这些功能太过臃肿。不过他们可能是对的。

UNIX 已经允许通过 SIGTERM 正常关闭子进程。可以使用 SIGKILL 立即终止无响应的子进程。明智的 DE 遵循此设计,发送 SIGTERM,然后仅在必要时跟进 SIGKILL。某些应用程序(如 libreoffice)不遵循此设计,在收到 SIGTERM 时立即关闭,即使有未保存的文档也是如此。制造商正确地认为这是 libreoffice 的问题,而不是其会话管理器的问题。

正常关闭 X11 会话的所有客户端可能比仅向所有窗口发送 alt-f4 更复杂。例如,如果您打开了多个 Firefox 窗口,并且同时向所有窗口发送 alt-f4,则窗口将以随机顺序逐个关闭。当 Firefox 再次启动时,只有最后关闭的窗口会再次打开。因此,SIGTERM 实际上是正确的如果您希望所有窗口都以之前的状态重新启动,则向 Firefox 进程发送信号。

由于我不明白的原因,大多数交互式 shell 不响应 SIGTERM,因此 xfce4-terminal 和许多其他 shell 只会向其客户端发送 SIGKILL。结果是终端通常对 alt-f4 的响应非常差。确保没有数据丢失的唯一方法是单独关闭每个终端,用户判断终端中是否有必须在关闭之前完成的任务。

话虽如此,如果您发现 alt-f4 适合正常关闭您日常使用的所有应用程序,那么编写一个简单的脚本将 alt-f4 发送到所有正在运行的窗口应该相当容易。相关的 X11 事件是WM_DELETE_WINDOW。有一些信息这里关于如何编写这样的脚本。甚至可以过滤掉麻烦的客户端,如 Firefox 和终端。现在想象一下为人们可能使用的所有 X11 应用程序维护这样的脚本是一项艰巨的任务,你就会明白为什么大多数 DE 选择 UNIX 风格的 SIGTERM、SIGKILL 方法。

相关内容