use*_*864 4 keyboard shortcut-keys unity launcher
当我在 Unity 启动器中右键单击某个应用程序的图标时,我可以按Quit关闭与该应用程序对应的所有窗口。是否可以使用在活动窗口(以及与同一应用程序对应的所有其他窗口)上运行的键盘快捷键执行相同操作?
我可以用 做类似的事情xkill
,但在那种情况下,我没有记住未保存文件的消息。
Jac*_*ijm 10
优雅地关闭应用程序窗口并确保不会丢失数据的最安全方法是使用wmctrl(默认情况下未安装):
wmctrl -ic <window_id>
Run Code Online (Sandbox Code Playgroud)
要在脚本中使用它来关闭应用程序的所有窗口:
安装xdotool
和wmctrl
sudo apt-get install wmctrl xdotool
Run Code Online (Sandbox Code Playgroud)将下面的脚本复制到一个空文件中,另存为 stop_active.py
wmctrl -ic <window_id>
Run Code Online (Sandbox Code Playgroud)将以下命令添加到快捷键:
python3 /path/to/stop_active.py
Run Code Online (Sandbox Code Playgroud)
选择:系统设置>“键盘”>“快捷方式”>“自定义快捷方式”。单击“+”并添加命令:
python3 /path/to/stop_active.py
Run Code Online (Sandbox Code Playgroud)
注意不要在快捷键中使用~
或$HOME
,而是使用绝对路径。
现在可以使用快捷方式优雅地关闭最前面窗口的所有窗口。
我尝试了不同的kill
选项(kill -2
,kill -HUP
,kill -s TERM <pid>
这是在几个职位提到优雅地关闭应用程序等)。在gedit
未保存更改的窗口上进行测试,但所有更改都愉快地关闭了窗口,没有任何交互。
wmctrl
确实会询问该怎么做,类似于Ctrl+ Q。
然后脚本首先pid
使用命令找出最前面的窗口的 :
xdotool getactivewindow getwindowpid
Run Code Online (Sandbox Code Playgroud)
随后,使用以下命令调用当前打开的窗口列表:
wmctrl -lp
Run Code Online (Sandbox Code Playgroud)
从该列表中,使用以下命令选择并关闭相应的窗口:
wmctrl -ic <window_id>
Run Code Online (Sandbox Code Playgroud)
如果您要关闭所有nautilus
窗口,请在行中
if pid in w and not "Desktop" in w:
Run Code Online (Sandbox Code Playgroud)
"Desktop"
指的是您的桌面窗口,通常应始终保留。如果您使用的不是英文版 Ubuntu,请替换"Desktop"
为您语言中桌面的本地化名称。