Linux在用户处于非活动状态一段时间后关闭另一个应用程序



我想在用户处于非活动状态时关闭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可以替换为dialoggdialogkdialog,具体取决于您的分配。

此外,您还可以检查屏幕保护程序的运行情况。这只是个概念。我的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起作用

相关内容

最新更新