一种解决方案是在登录桌面时运行的脚本,该脚本捕获dbus消息。从挂起状态恢复后,屏幕被锁定,输入密码后,dbus上发生一个Unlock事件。
(感谢Kim SJ将我带入正确的轨道。我没有ScreenSaver信号,但是找到了另一个要使用的接口)。
在中~/.config/autostart/
,我有一个.desktop文件,该文件启动bash脚本:
$ cat ~/.config/autostart/mymonitor.desktop
[Desktop Entry]
Categories=System;Monitor;
Comment=Monitor dbus for unlock signals
Exec=/usr/local/bin/unlock_monitor
Name=unlock_monitor
Type=Application
该unlock_monitor
监控脚本读取DBUS消息com.canonical.Unity.Session
和不上东西Unlocked
的信号:
#!/bin/bash
dbus-monitor --session "type=signal,interface=com.canonical.Unity.Session" --profile \
| while read dbusmsg; do
if [[ "$dbusmsg" =~ Unlocked$ || "$dbusmsg" =~ NameAcquired$ ]] ; then
sleep 5
notify-send "$(basename $0)" "Unlocked or freshly logged in..."
# ...
fi
done
登录时,没有“ Unlocked”信号,但dbus-monitor
启动时有一个“ NameAcquired”信号。
users
,假设没有其他人登录。(或不要紧)