如何关闭工作区中的所有应用程序?

Lyn*_*nob 7 fedora gnome workspaces gnome-shell gnome3

是否有 gnome 3 扩展或 Fedora 25 快捷方式来关闭工作区中所有打开的应用程序?(例如,通过按 X 关闭工作区本身)。

我很久以前在某个地方看到过这个功能,忘记在哪里了,但默认情况下它在 Fedora 中不可用。

Jac*_*ijm 3

下面的答案是在 Gnome3 / Ubuntu 上编写和测试的。如果您在 Fedora / Gnome 上运行时遇到问题,请提及。


用于关闭 Gnome 中特定工作区上的所有应用程序窗口的脚本

下面的脚本将关闭特定工作区上的所有窗口,有两个选项:

  1. 当不带参数运行时,它将关闭当前工作区上的所有窗口,例如:

    python3 /path/to/script.py
    
    Run Code Online (Sandbox Code Playgroud)
  2. 当使用特定工作区作为参数运行时,它将关闭该工作区上的所有窗口,例如:

    python3 /path/to/script.py 0 
    
    Run Code Online (Sandbox Code Playgroud)

    将关闭工作区 1 上的所有应用程序。请注意,第一个工作区的索引为 0

剧本

python3 /path/to/script.py
Run Code Online (Sandbox Code Playgroud)

如何使用

  1. 该脚本需要wmctrl,如果您的系统上没有,则应安装它。
  2. 将脚本复制到一个空文件中,另存为close_wins.py
  3. 现在,使用目标工作区作为参数,从终端窗口测试运行脚本,例如:

    python3 /path/to/close_wins.py 2
    
    Run Code Online (Sandbox Code Playgroud)

    正常关闭工作空间 3 上的所有窗口(0 = 工作空间 1)

    要关闭当前工作区上的所有窗口,请不带参数运行它:

    python3 /path/to/close_wins.py
    
    Run Code Online (Sandbox Code Playgroud)
  4. 如果一切正常,请将其添加到快捷键:选择:系统设置>“键盘”>“快捷方式”>“自定义快捷方式”。单击“+”并添加命令:

    python3 /path/to/close_wins.py
    
    Run Code Online (Sandbox Code Playgroud)

...或者以您喜欢的任何其他方式运行它。

解释

该命令wmctrl -lG 将为我们提供有关当前打开的窗口的信息。输出看起来像:

python3 /path/to/script.py 0 
Run Code Online (Sandbox Code Playgroud)

从第二列中,我们可以检索窗口的位置:

0x0140008c  2 0    101  1280 960  jacob-System-Product-Name gnome - Can I have a countdown window show the time until next suspend? - Ask Ubuntu - Mozilla Firefox
Run Code Online (Sandbox Code Playgroud)

2意味着窗口位于工作区 3 上,因为0它指的是第一个工作区。

如果脚本以工作空间作为参数运行,则脚本会解析出相应的窗口 ID,然后使用以下命令正常关闭它们(例如):

wmctrl -ic 0x0140008c
Run Code Online (Sandbox Code Playgroud)

如果脚本在没有工作区作为参数的情况下运行,则脚本将从命令中检索当前工作区:

wmctrl -d
Run Code Online (Sandbox Code Playgroud)

并随后在内部使用当前工作空间作为参数。