我想使用键盘快捷键来截取屏幕截图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_actions
,services.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),