我想在用户处于非活动状态时关闭iceweasel。早些时候,我使用"重置信息亭"扩展,但它与"R-kiosk"扩展不兼容。有可能通过Bash获得非活动事件?
您可以尝试跟踪运行屏幕保护程序并运行killall -9 iceweasel
,或者为用户操作留出一些时间。以下是最后一个变体的实现:
#!/bin/sh
TIMELIMIT=10 #10 seconds for example
MYPROGRAMM=chromium-browser #I use chromium-browser for example
MYPID=-1
$MYPROGRAMM & MYPID=`echo $!`
sleep $TIMELIMIT
kill -9 $MYPID
zenity --info --timeout=5 --text="Session expired" #show message for user
注意,zenity
可以替换为dialog
、gdialog
或kdialog
,具体取决于您的分配。
此外,您还可以检查屏幕保护程序的运行情况。这只是个概念。我的desktop上没有KDE,所以你可以做实验。
#!/bin/sh
MYPROGRAMM=chromium-browser #I use chromium-browser for example
if [ "$(qdbus org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSaver.GetActive)" $= 'false' ]; then
killall -9 $MYPROGRAMM
exit 0;
fi
您可以尝试更换
qdbus org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSaver.GetActive
qdbus org.kde.screensaver /ScreenSaver org.freedesktop.ScreenSaver.GetActive
注意,它可以在(运行)KDE(1)中工作。
它解析ps -C kscreenlocker
命令的结果更困难但更可靠。
(1) 它通过qdbus org.gnome.ScreenSaver /ScreenSaver org.gnome.ScreenSaver.GetActive
对我的Gnome起作用