web-dev-qa-db-ja.com

xautolockステータスを取得します

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

でも、現在の状況を見たいです。さもないと混乱してしまいます。 xautolockステータスを見つける方法を知っている人はいますか、または現在のステータスを含むファイルを作成し、-enable/-disableを使用してファイルをチェックし、notify-send何か?

7
MadTux

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

mpvmplayer どちらにもスクリーンセーバーオプションがあります。

--stop-screensaver、-no-stop-screensaver起動時にスクリーンセーバー(またはスクリーンブランカーや同様のメカニズム)をオフにし、終了時に再びオンにします(デフォルト:yes)。プレーヤーが一時停止すると、スクリーンセーバーは常に再度有効になります。これは、すべてのビデオ出力またはプラットフォームでサポートされているわけではありません。実装されることもありますが、機能しません(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
2
jasonwryan

現在のバージョンの ソースコードxautolock 2.2を簡単にチェックすると、この機能がサポートされていないことがわかりますが、知っていれば自分で実装するのはそれほど難しくありません。 CXプログラムの書き方について少し説明します。

理由はおそらくこれです。xautolockのステータスを知りたいときはいつでも、どのステータスにしたいかがわかります。したがって、オフにしたい場合は、単にxautolock -disableを発行してください。 、および逆の場合はxautolock -enable。これを行っても、他のすべてのxautolock設定は影響を受けないことに注意してください。

提案した方法で自分でステータスを追跡することも可能ですが、おそらく信頼性が低く、エラーが発生しやすくなります。

4
Arturo

私はなんとかOPが要求したことを実行でき、それはすべて私のi3構成に含まれており、ショートカットにバインドされています(以下を参照)。そこで、Mod + oで画面をロックし、Mod + Shift + oで自動画面ロックを切り替えます。ここで、xautolockの「ステータス」に応じて「LOCKon」または「LOCKOFF」のいずれかを通知する通知が表示されます。 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"
1
user195692