如何杀死所有打开的窗口?

如何杀死所有打开的窗口?

我想关闭桌面上出现的所有窗口。我也想过这么做pkill,但一次只能杀掉他们一个,这不是我想要的。最终目标是将其放入脚本中来运行信息亭,它将检测信息亭软件是否正在运行(我想出了这部分),如果没有,那么它将杀死所有打开的窗口,并重新启动我的计算机。信息亭软件。

答案1

最简单的方法使用xdotool:

xdotool search "" windowkill %@

xdotool search ""列出每个窗口。windowkill %@杀死他们每一个人;%@指的是之前搜索的所有结果。

您可能更喜欢使用--maxdepth 1选项tosearch将所选窗口限制为顶级窗口。

答案2

这至少适用于 kde 和 xfce(gnome 未测试,但也可能有效):

1)安装wmctrl

2)然后创建一个名为的脚本close_windows.sh

# close all open windows gracefully without closing the Desktop environment
WIN_IDs=$(wmctrl -l | grep -vwE "Desktop$|xfce4-panel$" | cut -f1 -d' ')
for i in $WIN_IDs; do wmctrl -ic "$i"; done
# Keep checking and waiting until all windows are closed (you probably don't need this section)
while test $WIN_IDs; do 
    sleep 0.1; 
    WIN_IDs=$(wmctrl -l | grep -vwE "Desktop$|xfce4-panel$" | cut -f1 -d' ')
done 

3)使其可执行:chmod +x ./close_windows.sh

3) 在开始菜单中创建一个指向 close_windows 脚本的条目。

4) 从该条目执行 close_windows 脚本。

来源:https://forum.manjaro.org/index.php?topic=4412.0:

答案3

迈克尔·霍默吉多·范·斯蒂恩已经展示了杀死所有窗口的方法。这不会杀死后台进程(如果有的话)。它不会杀死窗口已消失但仍在没有用户界面的情况下执行的崩溃程序。因此,您可能更愿意终止进程。

您可以kill -9 -1以非 root 用户身份运行来终止以该用户身份运行的所有进程。您需要以专用用户身份运行信息亭应用程序(无论如何,为了安全起见,这都是信息亭的标准配置),并确保当会话中的所有进程都停止时,信息亭界面重新启动(这也是信息亭的标准配置,为了鲁棒性)。

答案4

也许是与命令的组合/解决方法killall processName,并适应一组可能运行的应用程序。

例如。杀死所有终端killall bash,杀死所有chrome窗口killall chrome,这样就可以关闭预期的应用程序进程的组合。

相关内容