現状

現状

現状

30分間アクティビティがない場合は、ラップトップを一時停止します。使っていますこのコード~へこのスクリプトアイドル期間を検出します。

元の質問

VLC(そしてスクリーンセーバーの実行を妨げる他のビデオプレーヤー)は、マウス/キーボードイベントを妨げる周期的な信号(30秒ごとに1回)を送信するので、スクリーンセーバー(したがって私のコード)は「終わった」と思います。 「アイドル時間に達しました」 VLCがビデオプレイリストの再生を終了するまで、必要なコマンドは実行されません。

問題を起こす

私は追跡を通してこれを行いますoffset。外乱が短い場合は、以前の測定値をoffset変数に追加するだけで主な問題が消えます。ただし、VLCの「ビデオを視聴中にスクリーンセーバーを表示しない」機能も無効にしました。ここでこの機能を再度追加したいと思います。

質問

アプリケーション/ VLCがフルスクリーンモードの場合にのみ「マイスクリーンセーバー」を無効にできるように、VLCがフルスクリーンビデオ(またはすべてのプレーヤーの「フルスクリーンビデオステータス」)を再生しているかどうかをどのように検出できますか?

答え1

xdotoolを使用してルートウィンドウジオメトリとVLCウィンドウジオメトリを取得できます。同じ場合、VLCウィンドウはフルスクリーンです。

gRoot=$(xdotool search --maxdepth 0 '.*' getwindowgeometry | grep 'Geometry:')
gActive=$(xdotool getactivewindow getwindowgeometry | grep 'Geometry:')
if [ "$gRoot" = "$gActive" ]; then
    echo "The active window is fullscreened."
else
    echo "The active window is not fullscreened."
fi

最初のコマンドは--maxdepth 0ルートウィンドウのみを検索します。

関連コマンドはxdotool getdisplaygeometryマニュアルには記載されていませんが、にあります。変更リスト。表示サイズはこの形式では[Width] [Height]なく形式で返されるので、それを使用するには同等の比較のために追加の処理が必要であることに注意してください。[Width]x[Height]getwindowgeometry

関連情報