0

我想在用户不活动时关闭 iceweasel。之前我使用的是“重置 kiosk”扩展,但它与“R-Kiosk”扩展不兼容。有可能通过 Bash 获得非活动事件吗?

4

1 回答 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可以替换为dialoggdialogkdialog取决于您的分配。

此外,您可以检查屏幕保护程序的运行情况。这只是概念。我的桌面上没有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 回答