0

ユーザーが非アクティブなときにiceweaselを閉じたい。以前は「Reset 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に置き換えるかdialog、配布物に依存することに注意してください。gdialogkdialog

さらに、スクリーンセーバーの実行を確認できます。あくまでもコンセプトです。私のデスクトップには 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 に答える