我的场景是,我希望rtcwake -m no
在我睡着的时候用来唤醒我的电脑,并使用systemd/systemd-suspend
脚本来触发smplayer
通过播客队列唤醒我。
我的困难是smplayer
不能在唤醒时运行,因为 Ubuntu 加载登录屏幕并等待登录。有没有办法以编程方式登录?如果没有,我可以在显示登录屏幕时以某种方式运行 GUI 程序,例如smplayer
root 用户吗?(到目前为止,情况并非如此。)
(我不希望将计算机暂停到简单的睡眠状态,从而永远不会注销,因为我不想在我暂停/睡眠计算机时提前知道我最后一次这样做天。要明确的是,我不想在所有情况下都自动登录,只有在为此目的唤醒计算机时。)
我在 LTS 16 上。
您可以使用
xdotool
登录,但请记住以下几点:XAUTHORITY
变量设置为.Xauthority
与您的用户相对应的文件(通常/home/myuser/.Xauthority
。也设置DISPLAY
变量。请参见下面的代码示例。xdotool
以要登录的用户身份运行。(你的脚本会以root身份运行。实际上在某些情况下它会以你的登录用户身份运行,例如导致睡眠/lib/systemd/systemd-sleep suspend
,但在一般情况下systemctl suspend
,它会以root身份运行。)linux/rtc.h
API 将机器的当前时间 (RTC_RD_TIME
) 与闹钟时间 (RTC_ALM_READ
) ON进行比较/dev/rtc0
。如果在您的脚本运行时它们靠近在一起systemd/system-sleep
,那么您可能会推测这是警报触发的唤醒。示例代码: