我想在用户不活动时关闭 iceweasel。之前我使用的是“重置 kiosk”扩展,但它与“R-Kiosk”扩展不兼容。有可能通过 Bash 获得非活动事件吗?
问问题
371 次
1 回答
0
您可以尝试跟踪运行屏幕保护程序并运行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
取决于您的分配。
此外,您可以检查屏幕保护程序的运行情况。这只是概念。我的桌面上没有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)它通过 Gnome 对我有用qdbus org.gnome.ScreenSaver /ScreenSaver org.gnome.ScreenSaver.GetActive
于 2013-08-09T06:46:00.910 回答