如何消除使用键盘快捷键运行 scrot 的需要?

如何消除使用键盘快捷键运行 scrot 的需要?

我想使用键盘快捷键来截取屏幕截图scrot --select。我尝试添加以下内容我的 rc.luaPrintScr为此目的使用密钥:

awful.key({}, "Print", function () awful.spawn("scrot --select") end,
    {description = "take screenshot of selection", group = "client"}),

不幸的是,这会导致 xsession systemd 日志中出现以下错误消息:

giblib错误:无法抓取键盘:资源暂时不可用

似乎scrot需要在我按住Fn+PrintScr组合键的同时抓住键盘。解决这个问题的一种方法使函数变得相当复杂:

awful.spawn.with_shell("sleep 0.5 && scrot --select")

.with_shell位是一种黑客手段,让我有时间在运行sleep前释放按键。scrot当然,这意味着如果我按住按键太长时间,命令仍然会失败,并出现与上面相同的错误。

更优雅的解决方法工作不可靠。我安装了xdotool,设置xdotool key XF86Ungrab && scrot --select为截图命令,并添加到grab:break_actionsservices.xserver.xkbOptions但仍然出现与上面相同的错误大多数时候。反复Fn+PrintScr按下最终会起作用,但没有明显的原因。

答案1

不是您问题的解决方案,但如果使用maim而不是scrot.此外,我还使用xclip自动将图像复制到剪贴板中,这非常方便。

awful.key({}, "#107",
  function ()
    awful.util.spawn_with_shell("FILE=" .. os.getenv("HOME") .. "/Media/Screenshots/snapshot-$(date +%Y-%m-%dT%H-%M-%S).png && maim -s --hidecursor $FILE && xclip -selection clipboard $FILE -t image/png")
  end),

相关内容