如何使用 xbindkeys 在 Gnome 概览中切换工作区?

如何使用 xbindkeys 在 Gnome 概览中切换工作区?

这是我的~/.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

相关内容