我正在使用i3wm
,并且希望在解锁屏幕后运行脚本。当我手动锁定屏幕时,我可以让它工作,例如使用本文中概述的步骤
。
但在我的屏幕自动解锁后,我无法让它工作,例如通过xautolock
. 例如,
xautolock -time 5 -locker "blurlock -n && my_script.sh"
不起作用 – 5 分钟后屏幕锁定,但解锁后脚本不运行。事实上,它似乎根本没有运行。
有什么方法可以让它发挥作用吗?也许使用xss-lock
或类似?
编辑
根据评论中@aviro的建议,我将脚本更改为
#!/usr/bin/bash
echo "Hello" >> $HOME/temp.txt
blurlock -n
echo "Unlocked" >> $HOME/temp.txt
然后就跑了xautolock -time 1 -locker "my_script.sh &"
。屏幕锁定,文件temp.txt
包含脚本中的两行。因此,在xautolock
.
我希望我的脚本执行的部分操作是通过ffmpeg
. 我将脚本更改为以下内容:
#!/usr/bin/bash
blurlock -n
ffmpeg -f video4linux2 -s vga -i /dev/video-cam $HOME/Pictures/test.jpg
notify-send -t 30000 'Unlocked'
这在手动运行时有效 - 屏幕被锁定,解锁后会弹出一条通知,显示“已解锁”,并且来自网络摄像头的图像将按照指定写入到文件中。
但通过 运行时xautolock -locker "my_script.sh"
,解锁后,没有图像捕获或通知。由于我xautolock
从终端运行(并将其发送到后台&
),我收到以下消息
[1] + 581665 suspended (tty output) xautolock -time 1 -locker "my_script.sh"
添加> /dev/null 2>&1
到ffmpeg
命令也没有帮助。
经过大量实验后,我相当确定在命令
nohup
之前使用ffmpeg
可以解决问题。也就是说,上面的行my_script.sh
应该改为: