![i3wm:如果绑定到键,屏幕截图脚本将失败](https://linux22.com/image/1609986/i3wm%EF%BC%9A%E5%A6%82%E6%9E%9C%E7%BB%91%E5%AE%9A%E5%88%B0%E9%94%AE%EF%BC%8C%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%E8%84%9A%E6%9C%AC%E5%B0%86%E5%A4%B1%E8%B4%A5.png)
imagemagick 的import
shell 命令会拍摄桌面快照。执行
import /tmp/foo.png
会将我的光标转换为十字准线,并允许我选择要捕获的屏幕区域。但是,如果我尝试将该命令绑定到 i3wm 热键,则不起作用。
我的 i3wm 配置文件中有以下键绑定
# ...
bindsym $mod+m exec "import /tmp/foo.png"
# ...
产生以下错误(我可以将其输出到终端):
import-im6.q16:无法抓取鼠标“”:没有此文件或目录@error/xwindow.c/XSelectWindow/9187。
为什么会这样?我怎样才能使它发挥作用?
答案1
问题是,只要按下Ctrl+ ,键绑定就会触发m。添加--release
到bindsym
调用中,使其在您释放键时触发,它就会起作用:
bindsym --release $mod+m exec "import /tmp/foo.png"
这甚至记录:
某些工具(例如 import 或 xdotool)可能无法在 KeyPress 事件发生时运行,因为键盘/指针仍被抓取。对于这些情况,可以使用 --release 标志,这将在释放按键后执行命令。