我对应用程序窗口之间切换的当前状态不满意。
假设我有三层终端窗口,标题如下:
- 当地的
- 根@本地主机
- 用户@远程主机
使用 ALT+TAB 在这三个终端之间切换很无趣。
我是一个快速的十指触摸打字者。
我寻找一种切换的方法直接地到窗口。我不想因为查看列表并选择一个条目而使眼睛负担过重。
例如:如果我想切换到标题为用户@远程主机,我只想输入一些神奇的键,然后输入“用户”,仅此而已。就像我们今天看到的所有那些不错的自动完成输入一样。
我想保留 ubuntu 自带的默认窗口管理器。
我知道有些非常特殊的窗口管理器可以做到这一点。但我想使用默认窗口管理器和一些扩展插件。
答案1
从 Unity 14.04 开始,您可以点击Super+W
(窗口展开),然后通过窗口名称或程序名称来搜索窗口。
答案2
如果您不使用 Unity...
如果你正在使用 Unity,一定要使用 jan 的答案。这个可以作为其他窗口管理器的替代方案。
下面的脚本应该完全按照您描述的方式执行:
剧本
#!/usr/bin/env python3
import subprocess
import socket
machine_name = socket.gethostname()
get = lambda cmd: subprocess.check_output(["/bin/bash", "-c", cmd]).decode("utf-8")
w_list = get("wmctrl -l").splitlines()
w_data = [(w.split()[0], w[w.find(machine_name)+len(machine_name)+1:])for w in w_list]
windows = [it[1] for it in w_data if "_NET_WM_WINDOW_TYPE_NORMAL" in get("xprop -id "+it[0])]
l = "'"+("' '").join(windows)+"'"
cmd = "zenity --list --title='Window chooser' --column='Type one or more characters' "+l
try:
window = get(cmd).split("|")[-1].strip()
w_id = [item[0] for item in w_data if window in item[1]][0]
subprocess.Popen(["wmctrl", "-ia", w_id])
except:
pass
如何使用
wmctrl
需要安装脚本:sudo apt-get install wmctrl
然后:
- 将脚本复制到一个空文件中,另存为
window_switcher.py
通过命令测试运行:
python3 /path/to/window_switcher.py
如果一切正常,请将其添加到快捷键:选择:系统设置>“键盘”>“快捷键”>“自定义快捷键”。单击“+”并添加命令:
python3 /path/to/window_switcher.py
答案3
实用程序“rofi”允许显示打开的窗口列表,可以通过输入应用程序名称和/或窗口标题的部分内容来缩小列表范围。
罗菲可以使用命令来安装sudo apt install rofi
。
使用以下命令以“窗口”模式启动 rofi
rofi -show window
将此命令绑定到热键。
答案4
使用 wmctrl 创建快捷键并将其绑定到键盘快捷键
例如
wmctrl -a 'Chromium'
切换到一个名为 chromium 的窗口
- 如果你知道窗口的全名,你可以使用
wmctrl -Fa 'Terminal - 12'
- 列出窗口名称
wmctrl -l