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

Modified on: Mon, 09 Jul 2018 19:10:30 +0800

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

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

作者:,Lynob

最佳答案

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


用于关闭Gnome

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

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

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

    python3 /path/to/script.py
    
  2. 以特定工作空间作为参数运行时,它将关闭该工作空间上的所有窗口,例如:

    python3 /path/to/script.py 0 
    

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

  3. 醇>

    脚本

    #!/usr/bin/env python3
    import subprocess
    import sys
    
    arg = sys.argv[1:]
    
    def check_close(w_id):
        w_data = get(["xprop", "-id", w_id])
        if "_NET_WM_WINDOW_TYPE_NORMAL" in w_data:
            subprocess.call(["wmctrl", "-ic", w])
    
    def get(cmd):
        return subprocess.check_output(cmd).decode("utf-8")
    
    wlist = [l.split() for l in get(["wmctrl", "-lG"]).splitlines()]
    
    arg = arg[0] if arg else [
        l.split()[0] for l in get(["wmctrl", "-d"]).splitlines() if '*' in l
        ][0]
    
    for w in [w[0] for w in wlist if w[1] == arg]:
        check_close(w)
    

    如何使用

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

      python3 /path/to/close_wins.py 2
      

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

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

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

      python3 /path/to/close_wins.py
      
    5. 醇>

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

      解释

      命令wmctrl -lG将为我们提供有关当前打开的窗口的信息。输出如下:

      0x018000f9  0 135  206  650  500  jacob-System-Product-Name pscript_6.py (1,6 GB Volume /media/jacob/6C08-F637) - gedit
      0x01600a09  1 283  275  724  443  jacob-System-Product-Name jacob@jacob-System-Product-Name: ~
      0x018018be  1 152  407  650  500  jacob-System-Product-Name Untitled Document 1 - gedit
      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
      0x01600a49  2 47   146  724  443  jacob-System-Product-Name jacob@jacob-System-Product-Name: ~
      

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

      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
      

      2表示窗口在工作区3上,因为0指的是第一个工作区。

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

      wmctrl -ic 0x0140008c
      

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

      wmctrl -d
      

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

作者:,Jacob Vlijm

相关问答

添加新评论