2013-07-01 17 views
11

私はALSAを使用しています。私は、サウンドが再生されている間、PCがサスペンドしないようにしたい。私は、画面ロッカーを実行するには、このbashのコードを使用して、suspendコマンド:現在、Linuxでサウンドが再生されていることを検出する方法はありますか?

私はその音や映像が再生さを検出し、停止するPCを防ぎたい
# Run a screen locker. 
#xautolock -time 5 -locker slimlock & 

# Run suspend 
#xautolock -time 6 -locker 'systemctl suspend' & 

。例えば 擬似コード:

if (video is not played) 
{ 
    run a screen locker 
} 

if (sound is not played and video is not played) 
{ 
    run suspend command 
} 

音や映像が、コマンドラインユーティリティで遊んでいることを検出する方法は?

+0

はhttp://unix.stackexchange.com/questions/61337/testing-from-a-script-if-audio-devices-are-in-silent – devnull

答えて

11

/proc/asound/card*/pcm*/sub*/statusファイルにstate: RUNNINGが含まれていないか確認してください。

xscreensaver-command -time | grep -q 'screen \(locked\|blanked\)' 

通常のビデオプレーヤーはので、もし、活性化からスクリーンセーバーを停止します:あなたは、このコマンドは、画面が空白にされているかどうかを教えてくれますxscreensaverを使用する場合は

pacmd list-sink-inputs 
+0

が、それは動作しますが、確認方法、ありがとう参照してください。ビデオは再生されますか? – mhd

+1

一般的に、ビデオ出力は他のグラフィック出力と区別できません。あなたのビデオプレーヤーアプリケーションが動作しているかどうかを見るために 'ps'を使ってみてください。 –

+1

これは有用なコメントではないかもしれませんが、私は少しの間ビデオの使用状況を検出することを考えましたが、ビデオが再生されているときに一般的にオーディオ出力があることを認識しました。これはとにかく便利でした –

5

私はこれを使用しますおそらくビデオが再生されていないことを意味するでしょう。

あなたはこのようにそれを使用することができます:

if xscreensaver-command -time | grep -q 'screen \(locked\|blanked\)'; then 
    echo Screen is off (screensaver active) 
else 
    echo Screen is on, video might be playing 
fi 
+0

ALSAでは動作しません。 –

0

あなたは(xmacroplayをインストールする必要があります)、このスクリプトを試してみてください:それは固定にマウスを移動し続け、

#!/bin/bash 
# Script to prevent screen blanking when audio is playing. 
command -v xmacroplay > /dev/null 2>&1 || { echo "ERROR: must install xmacroplay"; exit -1; } 
while true; do 
    sleep 50 
    if pacmd list-sink-inputs | grep -w state | grep -q RUNNING ; then 
     xmacroplay :0 >& /dev/null <<EOF 
MotionNotify 90 90 
MotionNotify 120 120 
EOF 
    fi 
done 
0

他のスクリプトは動作しますがロケーション。これは、変更されていない場合にのみ移動しようとし、現在の場所の近くに保持します。

#!/bin/bash 
# Script to prevent screen blanking when audio is playing. 
if [ -z DISPLAY ]; then 
    DISPLAY=:0 
fi 
while true; do 
    sleep 50 
    if pacmd list-sink-inputs | grep -w state | grep -q RUNNING ; then 
     xdotool mousemove_relative -- -1 -1 
     sleep 1 
     xdotool mousemove_relative -- 1 1 
    fi 
done 
関連する問題