如何通过 scrot 在 awesome wm 中截取屏幕截图(使用选择)

如何通过 scrot 在 awesome wm 中截取屏幕截图(使用选择)

尝试过:

awful.util.spawn("scrot -s")
awful.util.spawn("urxvt -e \"scrot -s\"")
os.execute("scrot -s")

以及所有可能的组合,甚至包括sleep
还尝试了守护进程。
什么都不起作用 =( PS 所有命令都在键绑定中,如果我scrot -s用替换scrot,则除了选择区域外,所有命令都有效。

答案1

由于命令行中有参数,因此应该使用 awesome.util.spawn_with_shell()。这

awful.util.spawn_with_shell("sleep 0.5 && scrot -s")

对我来说很好用。

答案2

我也一直在为此苦苦挣扎。spawn_with_shell 不是让我工作的解决方案。当我按下相应的热键时,屏幕会闪烁,因此配置正确,当我按 Win+r(运行)并输入 path/to/screenshot.sh 时,它也能正常工作。这是 shebang 之后的脚本

scrot -s '%Y-%m-%d_$wx$h_scrot.png' -e 'mv $f /home/sam/Pictures/Screenshots'

这是我尝试过的事情:

screenshot = "/home/sam/run/screenshot.sh"
awful.spawn.with_shell(screenshot)

真正起作用的是使用终端执行 bash 脚本:这些是我在页面顶部的变量定义

screenshot = "/home/sam/run/screenshot.sh"
screenshot_cmd = terminal .. " -e " .. screenshot

然后在文件的更下方,我有这些(都可以使用)

awful.key({ modkey  ,         }, "#107", function () awful.spawn.with_shell(screenshot_cmd) end,
          {description = "take screenshot", group = "launcher"}),
awful.key({ modkey  , "Shift" }, "p", function () awful.spawn(screenshot_cmd) end,
          {description = "take screenshot", group = "launcher"}),

不幸的是,后者还会打开一个终端窗口,这不是一个理想的行为(但至少有些东西正在起作用

相关内容