这是我的~/.xbindkeysrc
配置:
"gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval 'imports.ui.main.wm._showWorkspaceSwitcher(global.display, null, { get_name() { return `switch-to-workspace-down` } });'"
b:8
"gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval 'imports.ui.main.wm._showWorkspaceSwitcher(global.display, null, { get_name() { return `switch-to-workspace-up` } });'"
b:9
它将工作区切换分配给我的鼠标按钮。除了 Gnome 概览之外,它在其他任何地方都有效(按下 Super 键即可看到此概览)。我能做些什么来修复它吗?
如果需要的话我可以打补丁gnome-shell
。但我不知道补丁里应该有什么 :)
我的环境
- Gnome Shell 3.36.4
- Ubuntu 20.04
答案1
它在 Gnome 概览之外的任何地方都有效(按下 Super 键即可看到此概览)。我能做些什么来修复它吗?
不适用于 xbindkeys。在 Xorg 中,概览依赖于 X11 全局抓取来接收输入(非常类似于右键单击弹出菜单),而这会导致意想不到的后果,即其他程序甚至无法接收全局热键。如果您修补了这个问题,我怀疑您将无法在概览中使用键盘,甚至无法使用 Esc 关闭它(因为它无法像普通窗口一样接收焦点)。
换句话说,只有 gnome-shell 本身可以在此时接收输入,因此您需要编写一个 gnome-shell 扩展来挂接鼠标按钮。(这实际上不是一个坏选择——它可以避免通过 D-Bus 进行间接访问;您实际上可以从扩展的 JS 代码中调用 _showWorkspaceSwitcher()。)
或者,你可能会更幸运拦截工具它的工作原理是在低级输入事件到达 Xorg 之前读取它们。
答案2
我通过使用easystroke
包解决了我的问题
sudo apt-get install easystroke