こちらのフォーラムに回答したのですが,色々余計なことも書きたかったのでここに書いておきます.
XScreenSaverの自分の大体の設定,動画視聴時のスクリーンセーバー抑制についてです.ここではXScreenSaverの説明ですが,GnomeやKDE,Cinnamonなどでもコマンドを置き換えることでほぼ同じように使えるはずです.
Note
|
例えばGnome ScreenSaverの場合 xscreensaver-command を gnome-screensaver-command に置き換える |
2021-03-25追記)
XScreenSaver FAQ を見ると,XScreenSaver 5.45以降はFirefox, Chrome, Chromium, MPV, VLCでの動画視聴時にスクリーンセーバーが抑制されるようになっているようです.確認すると,xprintidleはカウントされますがスクリーンセーバーは抑制されるといった動作になっているようです.
XScreenSaverの設定
$ sudo apt install xscreensaver
xscreensaver
パッケージを導入します.
$ dpkg-query -W xscreensaver*
xscreensaver 5.45+dfsg1-1
xscreensaver-data 5.45+dfsg1-1
xscreensaver-data-extra 5.45+dfsg1-1
xscreensaver-gl 5.45+dfsg1-1
xscreensaver-gl-extra 5.45+dfsg1-1
xscreensaver-screensaver-bsod 5.45+dfsg1-1
xscreensaver-screensaver-dizzy 0.3-3.1
いろいろなスクリーンセーバーを使いたい場合その他のパッケージも導入します.
設定は xscreensaver-demo
で行えます.
私は,いくつかのスクリーンセーバーを有効にして,Modeを Random Screen Saver
にして選択したスクリーンセーバーがランダムに起動するようにしています.
その他スクリーンセーバー起動時にロックするようにしています.離席時に他の人が触りにくくなります.
- Blank After
- 指定した時間経過後スクリーンセーバー起動
- Lick Screen After
- スクリーンセーバー起動後指定時間でロックする(スクリーンセーバー解除時にパスワードが必要)
xscreensaver-command でスクリーンセーバー制御
xscreensaver-command
というコマンドで制御が出来ます.私がよく使うオプションはこのあたりです.
- -activate
- スクリーンセーバーを有効にします
- -deactivate
- スクリーンセーバーを解除します
- -lock
- 画面をロックします
1文字の省略形のオプションもありますが,manやhelpには載っていないので使わないほうがいいかもしれません.
私はこのコマンドで離席時画面をロックするためにキーボードショートカットに登録したり,以前は BlueProximity というソフトウェアでBluetoothデバイスを身につけてそれを持ったまま離席してある程度離れると画面をロックするというのに使っていました.(最近のDebian ではなくなっていたり,今使っているスマートフォンは少電力機能のせいかすぐロックされてしまうようになって今は使っていません.)
Alt+l
)でスクリーンロックする例. -- lock screen
awful.key({ "Mod1" }, "l", function () awful.util.spawn( "xscreensaver-command -lock",false) end),
xprintidleを見ながらスクリーンセーバー起動確認
スクリーンセーバーの設定を行って正しく起動するかを確認するとき xprintidle
コマンドが便利です.
xprintidle is a utility that queries the X server for the user's idle time and prints it to stdout (in milliseconds).
Xサーバーのアイドル時間を表示してくれるコマンドです.単位はミリ秒です.
$ watch xprintidle
watch コマンドなどで定期的に呼ぶようにしてスクリーンセーバーの起動を待つとわかりやすいです.
mpvでスクリーンセーバー抑制
--stop-screensaver, --no-stop-screensaver Turns off the screensaver (or screen blanker and similar mechanisms) at startup and turns it on again on exit (default: yes). The screensaver is always re-enabled when the player is paused. This is not supported on all video outputs or platforms. Sometimes it is implemented, but does not work (especially with Linux "desktops").
mpvにはスクリーンセーバー抑制オプションがありました.
$ echo 'alias mpv="mpv --stop-screensaver"' >> ~/.bashrc
$ source ~/.bashrc
$ alias | grep mpv
alias mpv='mpv --stop-screensaver'
alias や
$ cp /usr/share/applications/mpv.desktop ~/.local/share/applications/
$ vi ~/.local/share/applications/mpv.desktop
$ diff -u1 /usr/share/applications/mpv.desktop ~/.local/share/applications/mpv.desktop
--- /usr/share/applications/mpv.desktop 2020-08-13 05:52:09.000000000 +0900
+++ /home/matoken/.local/share/applications/mpv.desktop 2021-03-24 22:15:59.037232611 +0900
@@ -31,3 +31,3 @@
TryExec=mpv
-Exec=mpv --player-operation-mode=pseudo-gui -- %U
+Exec=mpv --stop-screensaver --player-operation-mode=pseudo-gui -- %U
Terminal=false
デスクトップファイルに設定しておくと良さそうです.
mplayerでスクリーンセーバー抑制
-heartbeat-cmd Command that is executed every 30 seconds during playback via system() - i.e. using the shell. NOTE: MPlayer uses this command without any checking, it is your responsibility to ensure it does not cause security problems (e.g. make sure to use full paths if "." is in your path like on Windows). It also only works when playing video (i.e. not with -novideo but works with -vo null). This can be "misused" to disable screensavers that do not support the proper X API (also see -stop-xscreensaver). If you think this is too complicated, ask the author of the screensaver program to support the proper X APIs. EXAMPLE for xscreensaver: mplayer -heartbeat-cmd "xscreensaver-command -deactivate" file EXAMPLE for GNOME screensaver: mplayer -heartbeat-cmd "gnome-screensaver-command -p" file
mplayerには -heartbeat-cmd
というオプションがあります.mpvと同じようにaliasやデスクトップファイルを編集しておくと便利です.
lightsOnスクリプトでスクリーンセーバー抑制
mpvやmplayerでは抑制できましたが,ウェブブラウザ等で動画閲覧時に抑制できません.そういうときに便利なのが lightsOn
です.
各種動画プレイヤーや,ウェブブラウザでFlash/HTML5ビデオ再生時にスクリーンセーバーを抑制してくれます.これを使うと上のmpv/mplayerの設定も不要になります.
$ wget https://raw.githubusercontent.com/kodx/lightsOn/master/lightsOn.sh
$ chmod u+x ./lightsOn.sh
$ ./lightsOn.sh
とりあえず実行すればokです.
しかし手元の環境では xprop: unable to open display ':0.0'
というメッセージで動作しませんでした.
DISPLAY番号が 0
で固定になっているせいのようです.
diff --git a/lightsOn.sh b/lightsOn.sh
index 6b5be4b..bdab249 100755
--- a/lightsOn.sh
+++ b/lightsOn.sh
@@ -162,7 +162,7 @@ checkFullscreen()
for display in $displays
do
#get id of active window and clean output
- activ_win_id=$(DISPLAY=:0.${display} xprop -root _NET_CLIENT_LIST_STACKING | sed 's/.*\, //') #previously used _NET_ACTIVE_WINDOW, but it didn't work with some flash players (eg. Twitch.tv) in firefox. Using sed because id lengths can vary.
+ activ_win_id=$(DISPLAY=${DISPLAY}.${display} xprop -root _NET_CLIENT_LIST_STACKING | sed 's/.*\, //') #previously used _NET_ACTIVE_WINDOW, but it didn't work with some flash players (eg. Twitch.tv) in firefox. Using sed because id lengths can vary.
# Skip invalid window ids (commented as I could not reproduce a case
# where invalid id was returned, plus if id invalid
@@ -173,8 +173,8 @@ checkFullscreen()
# Check if Active Window (the foremost window) is in a fullscreen state
if [[ -n $activ_win_id ]]; then
- isActivWinFullscreen=$(DISPLAY=:0.${display} xprop -id $activ_win_id | grep _NET_WM_STATE_FULLSCREEN)
- isActivWinAbove=$(DISPLAY=:0.${display} xprop -id $activ_win_id | grep _NET_WM_STATE_ABOVE)
+ isActivWinFullscreen=$(DISPLAY=${DISPLAY}.${display} xprop -id $activ_win_id | grep _NET_WM_STATE_FULLSCREEN)
+ isActivWinAbove=$(DISPLAY=${DISPLAY}.${display} xprop -id $activ_win_id | grep _NET_WM_STATE_ABOVE)
log "checkFullscreen(): Display: $display isFullScreen: \"$isActivWinFullscreen\""
log "checkFullscreen(): Display: $display isAbove: \"$isActivWinAbove\""
if [[ "$isActivWinFullscreen" = *NET_WM_STATE_FULLSCREEN* || "$isActivWinAbove" = *NET_WM_STATE_ABOVE* ]];then
少し書き換えて使っています.
これを自動起動するようにしておくと動画視聴時に抑制されます.
私はNetworkManagerのScriptで自宅のネットワークの場合起動するようにしています.その他のネットワークでは起動しない → スクリーンセーバーが抑制されない.
環境
$ dpkg-query -W xscreensaver* mpv mplayer xprintidle
mplayer 2:1.4+ds1-1
mpv 0.32.0-2+b1
xprintidle 0.2.4-1
xscreensaver 5.45+dfsg1-1
xscreensaver-data 5.45+dfsg1-1
xscreensaver-data-extra 5.45+dfsg1-1
xscreensaver-gl 5.45+dfsg1-1
xscreensaver-gl-extra 5.45+dfsg1-1
xscreensaver-screensaver-bsod 5.45+dfsg1-1
xscreensaver-screensaver-dizzy 0.3-3.1
$ lsb_release -dr
Description: Debian GNU/Linux bullseye/sid
Release: unstable
$ uname -m
x86_64