我想在用户不活动时关闭iceweasel。 之前我使用的是“重置信息亭”扩展程序,但它与“R-Kiosk”扩展程序不兼容。 可能通过Bash获得非活动事件?
答案 0 :(得分: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
。
此外,您可以检查屏幕保护程序运行情况。这只是概念。我的descktop上没有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