ユーザーが一定期間アイドル状態のときにカスタムコマンドを実行するようにXFCE(またはX自体または他のもの)を設定するにはどうすればよいですか?

ユーザーが一定期間アイドル状態のときにカスタムコマンドを実行するようにXFCE(またはX自体または他のもの)を設定するにはどうすればよいですか?

私が覚えている限り、スクリーンセーバーで画面をロックすることは決してうまくいきませんでした。継続的な問題は、マウスを動かすかキーを押すとスクリーンセーバーが消え、画面が表示されてから1秒後にロック画面が表示されることです。これは間違っているように見え、感じることができます。あなたが席を空にしたときに何をしているのか他の人が見ることを望まない場合は、望ましくありません。

これで、最新のXubuntuとXFCE 4.12をインストールすると(上記の最初の問題に加えて)、別の問題が発生します。画面がまったくロックされていないか、画面が2回ロックされます(次のように入力する必要があります)。私のパスワードを2回ロック解除してください)

最初の問題は何度も議論されていますが、まだ誰も解決策が見つからないようです。

ところで昨日、偶然次の事実を発見しました。

スタートスクリーンセーバーを呼び出しxscreensaver-command -lock、画面をロックして正しい方法で実行してください。この方法で起動すると、スクリーンセーバーが消えてもデスクトップは公開されません。

だから私は欲しいデスクトップ環境/ディスプレイマネージャのメインスクリーンセーバー/ロック画面管理機能を無効にし、私が去ったときに定義したコマンドを実行します。、それはシンプルで非常に「Unix方式」です。これはどのように達成できますか?

ベストアンサー1

私が念頭に置いているアプローチは、アイドル時間をチェックし、まだ実行されていない場合はロックコマンドを実行する無限ループbashスクリプトです。これはクライアント/サーバーモデルであるため、xscreensaverでは機能しませんが、質問に「カスタムコマンド」を記載したので、非常にシンプルな画面ロックス​​ロックを自由に使用できました。

これを行うには、2つのパッケージをインストールする必要があります。xprintidleそしてslock。どちらもアパートで見つけることができます。

次のスクリプトをどこかに配置して実行可能にします。必要に応じてロックを調整します。 600000 = 10分。

#!/bin/sh
DISPLAY=":0"
# in ms
LOCK=600000
while :
do
  IDLE=$(xprintidle)
  if [ $IDLE -gt $LOCK ]; then
    slock
  fi
  sleep 1
done

このアーチウィキによるとhttps://wiki.archlinux.org/index.php/Xfce#Startup_applications次のように開始にスクリプトを追加できます。

Xfceの起動時にカスタムアプリケーションを起動するには、[アプリケーションメニューの設定]> [設定マネージャ]をクリックし、[セッションと起動]オプションを選択して[アプリケーションの自動起動]タブをクリックします。起動時に実行されるプログラムの一覧が表示されます。エントリを追加するには、[追加]ボタンをクリックし、実行する実行可能ファイルのパスを指定してフォームを作成します。

もちろん、xscreensaverが無効になっていることを確認する必要があります。

編集:最初はバックグラウンドでslockを実行し、pgrepを使用してプロセスが実行されていることを確認しました。私はこれが不要であることを知っており、slockがブロックプロセスになることを許可します。それに応じて変更されました。

おすすめ記事