任何方式使用快捷方式从Windows栏打开窗口
有没有办法使用快捷方式从Windows栏打开窗口? 例如,打开左侧第一个窗口Ctrl + 1,打开左侧第二个窗口Ctrl + 2。
我现在使用的是xfce4,但如果xfce4不可能,是否有其他桌面环境允许这样做?
由于我为同一个应用程序打开了几个窗口,因此我不会搜索与应用程序相关的排序,但正如我在下面所说的那样。
在您的系统上使用一个小脚本和一个小手术,它可以完全按照您的描述进行排列。
配料
-
wmctrl
; 它可能需要安装。 - 下面的脚本
-
xprop
,获取窗口属性。 这已经安装在您的系统上。 - xfce面板设置中的设置更改
- 其他键盘快捷键
如何设置
-
安装
wmctrl
:sudo apt-get install wmctrl
-
创建一个目录
~/bin
(/home/
)。 将下面的脚本复制到一个空文件中,将其保存为/bin ~/bin
panel_navigate
(无扩展名)并使其可执行 。 -
更改面板设置:
转到设置管理器>“面板”>“项目”(选项卡)>“窗口按钮”>- “排序顺序”>选择: 时间戳
- “窗口分组”>选择:“从不”
- 确保未选中“显示所有工作空间或视口中的窗口”
-
添加键盘快捷键:
转到设置管理器>“键盘”>“应用程序快捷方式”,选择“添加”。 添加命令:panel_navigate 1
将其设置为组合键Ctrl + 1
-
现在您可以选择:
- 重复此过程以在Ctrl + 2下添加
panel_navigate 2
2 ,依此类推(直到9)
(保存选项) 或 (如果您不害怕手动编辑配置文件):
-
你可以编辑文件:
~/.config/xfce4/xfconf/xfce-perchanel-xml/xfce4-keyboard-shortcuts.xml
其中存储了键盘快捷键(在
xfce
)。 使用mousepad
打开文件,然后查找如下行:复制该行,将其粘贴到下一行(插入)并将两次出现的更改为2,这样您将获得:
等等..
确保缩进完全相同。 重复该过程直到9。
- 重复此过程以在Ctrl + 2下添加
退出并重新登录,它应该工作:
Ctrl + 1
Ctrl + 3
等等…
剧本
#!/usr/bin/env python3 import subprocess import sys def get_value(command): return subprocess.check_output(["/bin/bash", "-c", command]).decode("utf-8").strip() def run_command(command): subprocess.Popen(["/bin/bash", "-c", command]) current_workspace = [l for l in get_value("wmctrl -d").splitlines() if l.split(" ")[2] == "*"][0][0] wlist_ids = [item.split()[0:4] for item in get_value("wmctrl -l").splitlines()] relevant = [item for item in wlist_ids if item[1] == current_workspace] panel = [] for item in relevant: data = get_value("xprop -id "+item[0]) if ("_TYPE_NORMAL" in data, "TYPE_DIALOG" in data).count(True) == 1: panel.append(item) try: window = panel[int(sys.argv[1])-1][0] run_command("wmctrl -ia "+window) except IndexError: pass
说明
解决方案是机会主义的解决方案。 在我看来,由命令wmcrl -l
调用的窗口列表按窗口的年龄排序。 通过使xfce面板执行相同的操作(设置),两个订单都完美对应。 脚本的作用是创建一个窗口列表,过滤掉“真实的”可见窗口(使用xprop
)并通过命令panel_navigate
切换到所选窗口,窗口编号(从左到右)为agrument。
问题
我注意到一个例外:IDLE(python解释器)窗口有pid 0, xprop
不能“研究”它们的属性。 窗口没有出现在窗口列表中,脚本会跳过这些窗口。
注意
虽然组合键Ctrl +
在测试时没有引发任何错误,但它可能与某些应用程序冲突。 选择(例如) Ctrl + Alt + 1可能更安全
不确定相同的应用程序 ,但在Unity
您可以使用super+number
切换应用程序,例如, super + 1
=启动器上的第一项, super + 2
=启动器的第二项, super + n
=第n项发射器的项目。 这也有助于打开放置在启动器上的任何项目,如果nautilus是启动器的第一项, super + 1
将打开nautilus文件管理器。