我通常将所有窗口使用一个工作区,但有时我的桌面上有太多窗口变得杂乱,因此我将它们放在两个或多个工作区中。
但是,由于我很少使用工作区,所以经常发生这样的情况:当我即将注销或关闭电脑时,我会关闭可见工作区上的所有程序,而忘记其他程序,从而导致文件无法保存等。
有没有办法在系统注销或关闭之前收到有关有程序打开的警告?或者您是否能想到一些 Gnome 扩展或解决方法?
答案1
信用:这个答案是基于找到的脚本这里。它适用于 x11 系统,而不是 Wayland,并且需要控制端被安装。
第一张图片显示的是 Ubuntu 19.04,其中打开了几个应用程序并出现在各个桌面上:
wmctrl -l
停靠栏旁边的终端中的输出列出了各个桌面上打开的八个应用程序。
从上到下:
1 Firefox(打开多个标签页)
2 GNOME 终端
3 GNOME 设置
4 Gedit,打开一个未保存的文件
5 LibreOffice Writer,打开一个未保存的文件
6 Geany,打开一个未保存的文件
7 Konsole 正在man man
运行
8 Kate(部分显示),打开一个未保存的文件
尽管 Dock 会显示多个应用程序无论位于何处都处于打开状态,但用户可能选择自动隐藏 Dock。
Ctrl在运行我绑定到++Super的脚本时W,不需要与用户交互的应用程序会立即关闭。在下图中,gnome 终端和gnome 设置已经关闭。剩下的(如 Dock 中所示)是需要用户做出决定的应用程序。
下图显示了一堆本国的打开的应用程序的对话框窗口允许用户决定是否在每个应用程序中保存他们的工作。特别是,以这种方式关闭的 LibreOffice Writer 在下次启动时不会出现“恢复”提示。
在这个例子中,最后一个决定是是否关闭 Firefox。同样,GUI 是 Firefox 本身的,从而确保干净地关闭。
脚本(基于BunsenLabs链接):
#!/bin/bash
# close_all_windows
# depends on wmctrl
# johnraff's close windows before shutdown from https://forums.bunsenlabs.org/viewtopic.php?id=508
windows_list=($(wmctrl -l | awk ' { print $1 } '))
for i in $windows_list
do
wmctrl -i -a $i
wmctrl -i -c $i
done
它会生成打开的窗口及其所在的桌面列表。然后会将窗口 ID 传递给控制端它会弹出每个窗口然后导致父应用程序向用户询问指导。
如果此方法合适,只需shutdown
在脚本中添加新行。这将在一分钟后关闭系统。或者,从中选择其他值man shutdown
。