如何立即关闭程序的所有实例?


11

我女友的猫在我的笔记本电脑上行走,我没有注意到她。当我进行检查时,看到有32个“存档管理器”选项卡。我该如何立即关闭它们,就好像一次对它们使用Alt+一样F4

Answers:


14

从命令行:

killall file-roller

您可以执行alt + f4,但是您需要为每个打开的存档管理器执行此操作。


21
尽管有些人可能会认为“ killall”命令有点笨拙,但您的解决方案仍然比kill cat我要建议的操作更为人道。
尼克·温伯格

我认为没有比这更简单的方法来阻止它们了。很多alt + f4都可以做到,但这不是问题;-)
Rinzwind

5
@NickWeinberg我很感激:)

5
我读了这个问题并回答错误。我以为那只猫已经关了,那OP不知道那只猫是怎么做到的。我很惊讶猫能写出killall file-roller:D
Viktor Mellgren'Apr 24'17

1
该死的@ViktorMellgren不再让我在屏幕上喝咖啡
Rinzwind

3

另一种方法是使用该wmctrl实用程序(“窗口管理器”控件)。这可以用来告诉窗口管理器假装您单击了关闭按钮。这就避免了潜在的笨拙性质killall。例如,某些带有未保存文档的程序在被杀死(甚至轻轻地)时将立即退出,同时单击关闭按钮将显示“您是否要保存?”。提示。

基本命令是wmctrl -c WINDOWTITLE,因此在这种情况下wmctrl -c "Archive Manager"(假设它没有打开的文件:将更改标题)。不幸的是,它一次只能关闭一个,因此我们需要做更多的事情才能关闭所有它们。

wmctrl 如果找到匹配项,则返回成功,因此我们可以循环直到失败:

while wmctrl -c "Archive Manager"; do sleep 0.1; done

这总是选择它找到的第一个窗口,因此我们需要睡一会儿,以避免将关闭命令流连续发送到已经忙于关闭的第一个窗口-这会导致错误,从而使循环停止。

这很简单并且通常可以正常工作,但是在我们再次尝试之前,睡一会儿时间并希望窗口关闭是避免该错误的麻烦且缓慢的方法。我们真正想要做的是立即向每个匹配的窗口发送一条关闭消息。

我们可以使用找到所有打开的窗口wmctrl -l。这列出了一个数字窗口ID,即使它们都具有相同的标题,我们也可以使用该ID分别识别每个窗口。然后,我们只需要过滤匹配的窗口(grep命令),仅提取窗口ID(cut命令)并wmctrl -i -c为每个窗口调用。的-i需要相匹配的窗口ID而不是窗口的标题。

for w in $(wmctrl -l | grep "Archive Manager" | cut -d" " -f1); do
    wmctrl -i -c $w
done

仅在猫踩到键盘时才输入,这有点复杂,但希望它是一种方便的技术,可以保留在脚本工具箱中。


2
因此,您希望猫键入值得保存的东西吗?
Rinzwind

0

您可以使用Ctrl+ Q键盘快捷键来关闭Archive Manager的所有打开的窗口。


Ctrl+ Q快捷方式是在Ubuntu(和许多其它分布以及)常见。到目前为止,我使用的大多数应用程序都可以使用它。也就是说,它将关闭正在运行的应用程序的所有窗口。


取消我的投票,因为我无法确认Ctrl+Q实际上是这样做的。虽然Quit菜单确实关闭了Archive Manager的所有打开的窗口,但快捷键的功能却不同(至少在14.04中)。
clearkimura

1
@clearkimura我无法证实,如果是由于这样的事实,我使用GNOME,或者如果它是因为Ubuntu的版本,但它为我工作在Ubuntu 17.04(使用gnome),使用存档管理器版本3.22.3
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.