用户不活动后,Linux关闭了另一个应用程序

时间:2013-08-09 05:59:04

标签: linux

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

1 个答案:

答案 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可以替换为您的分发中的dialoggdialogkdialog

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

为Gnome工作