Cor*_*ote 5 linux shell-script ubuntu
我有一个脚本,我想在每次屏幕解锁时自动调用。Ubuntu 是否为希望这样做的用户提供一些支持?
这是可能的,虽然有点棘手。GnomeScreensaver 文档说明:
有没有办法在屏幕保护程序激活或停用时执行操作?或者当会话空闲时?
一种方法是观察来自 gnome-screensaver 的 D-Bus 信号。下面是一个使用 Perl 语言在会话空闲或不再空闲时如何执行操作的示例:
my $cmd = "dbus-monitor --session \"type='signal',interface='org.gnome.ScreenSaver',member='SessionIdleChanged'\"";
open (IN, "$cmd |");
while (<IN>) {
if (m/^\s+boolean true/) {
print "*** Session is idle ***\n";
} elsif (m/^\s+boolean false/) {
print "*** Session is no longer idle ***\n";
}
}
Run Code Online (Sandbox Code Playgroud)
虽然当我检查使用dbus-monitor并继续锁定/解锁屏幕时,发出的信号是
path=/org/gnome/ScreenSaver; interface=org.gnome.ScreenSaver; member=ActiveChanged
boolean true
Run Code Online (Sandbox Code Playgroud)
当屏幕被锁定时
path=/org/gnome/ScreenSaver; interface=org.gnome.ScreenSaver; member=ActiveChanged
boolean false
Run Code Online (Sandbox Code Playgroud)
解锁时。
所以改变上面的脚本,
my $cmd = "dbus-monitor --session \"type='signal',interface='org.gnome.ScreenSaver',member='ActiveChanged'\"";
open (IN, "$cmd |");
while (<IN>) {
if (m/^\s+boolean false/) {
exec('/path/to/your/script');
}
}
Run Code Online (Sandbox Code Playgroud)
应该这样做。
| 归档时间: |
|
| 查看次数: |
5526 次 |
| 最近记录: |