i3wm:如果绑定到键,屏幕截图脚本将失败

Jer*_*sey 5 imagemagick i3-window-manager

imagemagick 的importshell 命令拍摄桌面快照。执行中

import /tmp/foo.png
Run Code Online (Sandbox Code Playgroud)

会将我的光标转换为十字准线,并允许我选择要捕获的屏幕区域。但是,如果我尝试将该命令绑定到 i3wm 热键,它就不起作用。

我的 i3wm 配置文件中的以下键绑定

# ...
bindsym $mod+m exec "import /tmp/foo.png"
# ...
Run Code Online (Sandbox Code Playgroud)

产生以下错误(我可以将其输出到终端):

import-im6.q16:无法抓取鼠标`':没有这样的文件或目录@ error/xwindow.c/XSelectWindow/9187。

这是为什么?我怎样才能让它发挥作用?

dir*_*rdi 6

问题是,只要您按Ctrl+ ,键绑定就会触发m。添加--releasebindsym调用中,使其在释放按键时触发,它将起作用:

bindsym --release $mod+m exec "import /tmp/foo.png"
Run Code Online (Sandbox Code Playgroud)

这甚至已经被记录下来:

某些工具(例如 import 或 xdotool)可能无法在 KeyPress 事件上运行,因为键盘/指针仍被抓住。对于这些情况,可以使用 --release 标志,它将在释放按键后执行命令。