xautolockステータスの取得

xautolockステータスの取得

私は現在使用しています自動ロック私の画面を自動的にロックします。ロックする。しかし、映画を見れば当然いいえ画面が突然暗くなってほしいです。私はマンページを読んでxautolock -toggleキーボードショートカットにバインドすると、すべてを制御できることがわかりました。

でも今はどこにいるのか見たいです。そうでなければ私は混乱するでしょう。 xautolockの状態を見つける方法を知っている人はいますか?または、現在の状態を含むファイルを作成し、-enable / -disableを使用してファイルを確認して、何かをする必要がnotify-sendありますか?

答え1

クイックチェックソースコード現在のバージョンのPythonではこの機能をサポートしていないとマークされていますが、これについて少し知ってプログラミングする方法を知っていれば、直接xautolock 2.2実装することは難しくありません。CX

その理由は次のとおりです。何かの状態を知りたい時はxautolockいつでも欲しい状態もわかります。したがって、xautolock -disableオフにしたい場合は解放すればよく、xautolock -enableその逆の場合も同様です。これはxautolock他のすべての設定には影響しません。

提案どおりに状態を直接追跡することも可能ですが、やや信頼できず、エラーが発生しやすいです。

答え2

ほとんどのメディアプレーヤーに組み込まれている機能を使用して管理でき、xautolockLockerと効果的に機能します。

ユーティリティ車両そしてプレイヤーどちらにもスクリーンセーバーのオプションがあります。

--スクリーンセーバーを停止、--スクリーンセーバーを停止しない 起動時にスクリーンセーバー(またはスクリーンブレーカーなどのメカニズム)をオフにしてから再度オンにします。 終了時に再度開きます(デフォルト:はい)。プレイヤーがプレイしているとき、スクリーンセーバーは常に再びアクティブになります。 一時停止しました。 すべてのビデオ出力またはプラットフォームがこの機能をサポートしているわけではありません。実装する場合もあり、 しかし、うまくいきません(GNOMEで頻繁に発生します)。以下を使用してこの問題を解決できます。 --heartbeat-cmdの代わりに。

以下の行を含むこの機能を有効にできます~/.mpv/config

stop-screensaver=yes

中断のないビデオ再生をお楽しみください。

使用しているメディアプレーヤーにこれらの基本機能がない場合は、単純なラッパーを使用して同じ効果を得ることができます。

#!/usr/bin/env bash
# wrapper to prevent screen blanking when files are played from ~/Videos

usage() {
    printf "%s\n" "Usage: ${0##*/} /path/to/file"
    exit 1
}

case $# in
    1)  if [[ $1 =~ Videos ]]; then
            xset dpms 0 0 0
            xautolock -disable
            vlc "$1"
            xautolock -enable
            xset dpms 900 900 900
        else
            usage
        fi
        ;;
    *) usage
        ;;
esac

答え3

私はOPが要求したことを行いましたが、ショートカットにバインドされた私のi3設定にはすべて含まれています(下記参照)。したがって、Mod + oを使用して画面をロックし、Mod + Shift + oを使用して自動画面ロックを切り替えます。ここで、xautolockの「状態」に応じて、「ロック」または「ロック解除」を知らせる通知が表示されます。私はこれを使用して、xautlock -exit追加ファイルで状態を管理する必要なしに実行されていることを確認します。

スイッチング状態を個別に処理するスクリプトは次のとおりです。

if xautolock -exit
    then (notify-send -u normal -t 100 -- 'LOCK OFF') 2> /dev/null
    else
        notify-send -u normal -t 100 -- 'LOCK on'
        xautolock -time 2 -locker 'slock' -notify 10 -notifier "notify-send -u normal -t 100 -- 'LOCKING screen ...'"
fi

xautolock -time ...スクリプトを呼び出す場所に応じて、スクリプトがバックグラウンドで実行されていることを確認する必要があります(例:を追加して&)。

私の.i3/configファイルから:

exec --no-startup-id xautolock -time 2 -locker 'slock' -notify 10 -notifier "notify-send -u normal -t 10000 -- 'LOCKING screen'"

bindsym $mod+o exec --no-startup-id xautolock -locknow
bindsym $mod+Shift+o exec --no-startup-id "if xautolock -exit; then (notify-send -u normal -t 100 -- 'LOCK OFF') 2> /dev/null; else notify-send -u normal -t 100 -- 'LOCK on'; xautolock -time 2 -locker 'slock' -notify 10 -notifier \\"notify-send -u normal -t 100 -- 'LOCKING screen ...'\\"; fi"

関連情報