我有一个老 Linux 问题,没有任何解决方案,所以也许您可以帮助我?!
systemd
是否有可能通过任何已处理的事件来运行 CLI 命令/启动进程屏幕唤醒?系统未从挂起状态唤醒!!!,只是后屏幕唤醒屏幕空白后作为省电功能。网上有无数关于从待机状态真正唤醒系统的冗余问题,但遗憾的是我还没有找到任何关于仅用于省电屏幕空白的问题。
如果无法实现这一点systemd
,还有其他解决方案吗?是否有可能,或者我必须干脆忘记这样的事情?
在此先感谢任何类型的帮助!
答案1
您可以使用 来做到这一点xscreensaver
。
来自xscreensaver
男人:
--watch 每次屏幕保护程序改变状态时打印一行:当屏幕空白、锁定、取消空白或正在运行的 hack 发生更改时。此选项永远不会返回;它旨在供希望以某种方式对屏幕保护程序做出反应的 shell 脚本使用。其输出的示例如下:
BLANK Fri Nov 5 01:57:22 1999 RUN 34 RUN 79 RUN 16 LOCK Fri Nov 5 01:57:22 1999 RUN 76 RUN 12 UNBLANK Fri Nov 5 02:05:59 1999
上面显示了屏幕保护程序激活、运行三个不同的黑客程序、然后锁定(可能是因为锁定超时)然后取消空白(因为用户变得活跃并输入了正确的密码。)黑客号码是它们在“程序”列表中的索引(从 1 开始,而不是 0,对于 --select 命令。)
例如,假设您想运行一个程序,在屏幕空白时调低机器的音量,在屏幕恢复空白时调高音量。您可以通过在后台运行如下所示的 Perl 程序来实现这一点。以下程序跟踪 --watch 命令的输出并做出相应的反应:
#!/usr/bin/perl my $blanked = 0; open (my $in, "xscreensaver-command -watch |") || die; while (<$in>) { if (m/^(BLANK|LOCK)/) { if (!$blanked) { system ("sound-off"); $blanked = 1; } } elsif (m/^UNBLANK/) { system ("sound-on"); $blanked = 0; } }
请注意,LOCK 可能带有或不带有前面的 BLANK(取决于锁超时是否为非零),因此上述程序会跟踪它们两者。
答案2
虽然@mashuptwice的答案似乎也很完美,但最后我通过以下线索解决了“问题”:https://unix.stackexchange.com/questions/28181/how-to-run-a-script-on-screen-lock-unlock
根据线程,有可能仅在“屏幕空白”时触发(没有真正的‘锁定’状态),而且也处于‘锁定’状态。