如何从终端关闭新的Firefox窗口?


10

我有多个在Ubuntu 14.04中运行的Firefox实例。如何从终端关闭最近打开的窗口/实例?

我尝试使用在相关问题的答案中定义的cfct别名,但是没有用。


@chaos我认为OP表示窗口,而不是选项卡
Jacob Vlijm

@JacobVlijm的答案也关闭了窗口,对我而言似乎是唯一的解决方案。由于firefox仅运行一个进程,而不会打开多少窗口,因此您需要双重解决方案。killall firefoxSIGTERM整个过程,而不仅仅是一个窗口。
混乱

@chaos我不同意,很可能,我不在家,看看我是否足够快地在休息时给出答案:)
Jacob Vlijm 2015年

1
@chaos重复用于相同的问题,而不是答案。有些重叠是不可避免的。
塞斯

什么是cfct?搜索主要返回这个问题。
TRiG,2015年

Answers:


13

要创建一个查找id最后一个窗口(由创建Firefox(并关闭))的命令,需要wmctrl安装以下命令:

sudo apt-get install wmctrl

命令

然后使用以下命令:

wmctrl -ic "$(wmctrl -l | grep 'Mozilla Firefox' | tail -1 | awk '{ print $1 }')"


说明:

wmctrl -l

列出所有窗口,但是该命令的一个重要属性是按创建它们的顺序列出窗口。

因此:

wmctrl -l | grep 'Mozilla Firefox' | tail -1 | awk '{ print $1 }'

将:

  • 列出所有窗口:

    wmctrl -l
    
  • 在名称中找到带有“ Mozilla Firefox”的名称(行):

    grep 'Mozilla Firefox'
    
  • 找到最后一个(也是最后一个创建的):

    tail -1
    
  • 提取该行中的第一个字符串(它是window -id):

    awk '{ print $1 }'
    

命令:

wmctrl -ic

然后将通过其ID(优美)杀死最新的Firefox窗口。

甚至更可靠:

虽然远高于在几乎所有情况下,作品的命令,也就是名称冲突的可能性很小,如果例如用“Mozilla Firefox浏览器”在其名称中存在的另一个窗口,而不是从一个窗口Firefox(不太可能,但仍然)。

因此,什么应该工作“防水”是识别(使用窗口列表窗口wmctrl -lp由)PIDfirefox,而不是在窗口名称字符串,:

wmctrl -ic "$(wmctrl -lp | grep "$(pgrep firefox)" | tail -1 | awk '{ print $1 }')"

如您所见,在此命令中,

wmctrl -l | grep 'Mozilla Firefox'

产生包含“ Mozilla Firefox”的行,替换为:

wmctrl -lp | grep "$(pgrep firefox)"

产生包含Firefox的pid的行(作为的输出pgrep firefox


2

要关闭窗口(也有许多打开的选项卡),请使用该命令:

wmctrl -a firefox; xdotool key Ctrl+Shift+w

请注意,这wmctrlxdotool必须安装:

$ sudo apt-get install wmctrl xdotool

另请参阅答案:使用terminal关闭当前选项卡Firefox

我的答案有些修改,因为Ctrl+ Shift+ w关闭了Firefox窗口。


有关所有快捷方式,请参阅Firefox键盘快捷方式

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.