現在、 xautolock を使用して、 slock で画面を自動的にロックしています。しかし、私が映画を見ているとき、私は確かに画面が突然真っ暗になることを望んでいません。マンページを読んで、それを見ましたxautolock -toggle
キーボードショートカットにバインドすると、すべてを制御できるはずです。
でも、現在の状況を見たいです。さもないと混乱してしまいます。 xautolockステータスを見つける方法を知っている人はいますか、または現在のステータスを含むファイルを作成し、-enable/-disableを使用してファイルをチェックし、notify-send
何か?
ほとんどのメディアプレーヤーに組み込まれている機能を使用して、これを管理できます。 xautolock
と効果的に機能します。ロッカーです。
mpv と mplayer どちらにもスクリーンセーバーオプションがあります。
--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
現在のバージョンの ソースコードxautolock 2.2
を簡単にチェックすると、この機能がサポートされていないことがわかりますが、知っていれば自分で実装するのはそれほど難しくありません。 C
とX
プログラムの書き方について少し説明します。
理由はおそらくこれです。xautolock
のステータスを知りたいときはいつでも、どのステータスにしたいかがわかります。したがって、オフにしたい場合は、単にxautolock -disable
を発行してください。 、および逆の場合はxautolock -enable
。これを行っても、他のすべてのxautolock
設定は影響を受けないことに注意してください。
提案した方法で自分でステータスを追跡することも可能ですが、おそらく信頼性が低く、エラーが発生しやすくなります。
私はなんとか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"