web-dev-qa-db-ja.com

再生中にスクリーンセーバーが起動しないようにmplayerに指示します

Mplayerにハートビートの設定があることは知っていますが、それが何であるか思い出せません。誰か教えてもらえますか?

以前は機能していたが、どこかでデフォルトが機能しなくなった、もう1つの厄介なもの

2
xenoterracide

mplayerにはスイッチがあります-heartbeat-cmd 30秒ごとにコマンドを実行しますが、manページに記載されているとおりです。

これは、適切なXAPIをサポートしていないスクリーンセーバーを無効にするために「誤用」される可能性があります

スクリーンセーバーを無効にするための実際のスイッチは-stop-xscreensaver;あなたはおそらく最初にそれを試すべきです

5
Michael Mrozek

mplayer -stop-xscreensaverが機能しません(Debian wheezy; xscreensaver = 5.15-3、xfce4 = 4.8.0.3、mplayer = 2:1.0〜rc4.dfsg1 + svn34540-1 + b2)-スクリーンセーバーは、映画。スクリーンセーバー抑制ツールxscreensaver-inhibitとmplayerラッパーplayを作成しました。 xscreensaver-inhibitはYouTubeのような他のことに役立つので、パネルにショートカットを配置しました。

$HOME/bin/xscreensaver-inhibitは次のとおりです。

#!/bin/bash
usage () {
    echo "usage: $0 [on|off]"
    echo '    Turns screensaver inhibition on or off.'
    echo '    default: toggle on/off'
    exit 1;
}

if [ -n "$1" ]  ; then
    [ "$1" = "on" -o "$1" = "off" ] || usage
fi

inhibit () {
    while [ -f "$lock" ] ; do
        # echo "$lock exists"
# UPDATE Dec 2018 this command seems to have stopped working after upgrading to Debian Stretch.
        # DISPLAY=:0 xdg-screensaver reset
# Replaced with this command which is working for me,
# though if you do not use xscreensaver you might need something else.
        DISPLAY=:0 xscreensaver-command -deactivate
        sleep 50
    done
    # echo "$lock is gone"
}

lock="/tmp/xsi.lock"

if [ -e "$lock" ] ; then
    echo 'Screensaver currently inhibited.'
    on='on'
else 
    echo 'Screensaver operating normally.'
    on=''
fi

if [ "$1" = "on" ] ; then
    if [ -n "$on" ] ; then
        echo 'Starting screensaver inhibitor anyway.'
    else 
        echo 'Screensaver inhibitor started.'
    fi
    touch "$lock" && inhibit &
fi

if [ "$1" = "off" ] ; then
    if [ -n "$on" ] ; then
        echo 'Screensaver inhibitor(s) stopped.'
    else 
        echo 'Perhaps the screensaver daemon is not running or another program is inhibiting it.'
    fi
    rm -f "$lock"
fi

if [ ! -n "$1" ] ; then
    if [ -n "$on" ] ; then
        echo 'Screensaver inhibitor(s) stopped.'
        rm -f "$lock"
    else 
        echo 'Screensaver inhibitor started.'
        touch "$lock" && inhibit &
    fi
fi

$HOME/bin/playは次のとおりです。

#!/bin/sh

xscreensaver-inhibit on

DISPLAY=:0 mplayer -fs "$@"

xscreensaver-inhibit off

DISPLAY=:0を含めたので、SSH経由でログインしている場合でも、ローカルのアクティブなディスプレイでムービーが再生されます。 playは、ファイルマネージャーのすべてのムービーファイルのデフォルトハンドラーでもあります。

sox/usr/bin/playを提供するため、soxがインストールされている場合は、playを別の名前で呼び出すことをお勧めします。

スクリーンセーバーを中断させたくない他のフルスクリーンアプリ用に同様のラッパーを作成できます。

xscreensaver-inhibitは、私が試したすべてのDE、Linux、およびスクリーンセーバーで動作します。 xdg-screensaver: command not foundを取得した場合は、apt-get install xdg-utilsを実行します。

UPDATE 2018年12月、xscreensaver-inhibitのメインコマンドがxdg-screensaverからxscreensaver-commandに変更されました-すべてのDE、Linux、スクリーンセーバーでテストされているわけではありません。 YMMV

1
retrospectacus

私にとっては--stop-screensaver

--stop-xscreensaverを使用すると、mplayerは次のように警告します。オプション--stop-xscreensaverは--stop-screensaverに置き換えられ、将来削除される可能性があります。

Debian&mpv 0.23.0(C)2000-2016 mpv/MPlayer/mplayer2プロジェクト

0
premek.v