我想创建一个快捷方式来最小化所有窗口并访问我的 -opened- 终端。我知道命令 ctrl+super+D 可以最小化所有窗口,但我想要一种最简单的方法。(ubuntu 14.04)
答案1
下面的脚本可以做你想做的事。用法很简单:将其绑定到键盘快捷键并赋予它终端的窗口类。请按照以下步骤操作
1.保存文件
最好将其保存在~/bin
目录下的主文件夹中。如果您没有该目录,请创建它。
确保脚本具有可执行权限,chmod +x
如下所示。
$ chmod +x ~/bin/get_terminal.py
2. 找出你的终端的WM_CLASS。
使用xprop
命令来执行此操作(它将允许您通过将光标更改为 x 符号来选择要检查的窗口):
$ xprop WM_CLASS
WM_CLASS(STRING) = "gnome-terminal-server", "Gnome-terminal"
任何结果字符串都可以。
3. 绑定键盘快捷键
在系统设置 -> 键盘 -> 快捷键 -> 自定义下,添加以下条目:
那里使用的命令是:
python3 /home/xieerqi/bin/get_terminal.py "Gnome-terminal"
请注意,我给出了完整路径,并且 WM_CLASS 被引用
我设置的键盘快捷键是CtrlSuperG,但您也可以自由使用其他键绑定。
脚本源
#!/usr/bin/env python3
#from __future__ import print_function
import gi
gi.require_version('Gdk', '3.0')
from gi.repository import Gdk
import subprocess
import time
import os
import sys
def run_cmd(cmdlist):
""" Reusable function for running external commands """
new_env = dict(os.environ)
new_env['LC_ALL'] = 'C'
try:
stdout = subprocess.check_output(cmdlist, env=new_env)
except subprocess.CalledProcessError:
print('FAIL:' + repr(cmdline))
else:
if stdout:
return stdout
def main():
if len(sys.argv) < 2:
sys.stderr.write("REQUIRES WM_CLASS\n")
sys.exit(1)
screen = Gdk.Screen.get_default()
for window in screen.get_window_stack():
xid = int(window.get_xid())
wm_class = run_cmd(['xprop','-notype','WM_CLASS','-id',str(xid)])
if sys.argv[1] in wm_class.decode():
window.focus(int(time.time()))
window.process_all_updates()
else:
window.iconify()
window.process_all_updates()
if __name__ == '__main__':
main()