接続されている液晶モニターのどれがオンになっているのかわかりますか?

接続されている液晶モニターのどれがオンになっているのかわかりますか?

接続されているモニターの電源を入れたときに出力が自動的にアクティブになります(ただし、電源管理状態になる可能性があります)。

ベストアンサー1

あなたはそれを使用することができますddutilVCP 0xd6コードの値が0x05以外の値に設定されていることを確認して、対応するモニタが開いていることを確認します(表8-5を参照)。VESAモニター制御コマンドセット:

$ sudo ddcutil -d 1 getvcp d6 --terse |& awk '{ print $NF }'
x01

これは、最初のモニターがオンになっていることを意味します。

$ sudo ddcutil -d 1 getvcp d6 --terse |& awk '{ print $NF }'
x05

これは、最初のモニターがオフになっていることを意味します。

最も難しいのは、xrandrで指定された出力をddcutilで使用できるディスプレイ識別子と一致させることです。私が考えた方法の1つは、xrandr出力からEDIDを抽出し、edid-decodeで解析し、シリアル番号を取得してddcutilと一緒に使用することでした(ddcutilは --edidパラメータを受け入れますが、私はそれを使用します)できませんでした)。場合によっては)。全体として、スクリプトxrandr-turned-on.sh全体は次のようになります。

#!/usr/bin/env sh

if [ ! $# -eq 1 ]
then
    printf "Check if monitor represented by xrandr output is turned on.\n
Usage: %s output\n" "$0"
    exit 1
fi

for prog in ddcutil edid-decode
do
    if ! command -v "$prog" >/dev/null
    then
        printf "%s not found. Exiting.\n" "$prog" >&2
    exit 1
fi
done

set -e

serial="$(xrandr --prop | awk -v output="$1" '$1 ~ output {getline; for (i=1; i<=16; i++) {getline; printf("%s", $1)}}' | edid-decode | grep "Serial number" | cut -d: -f2 | sed "s,^ ,,")"

state="$(sudo ddcutil -n "$serial" getvcp d6 --terse | awk '{print $NF}')"
if [ "$state" != "x05" ]
then
    printf "Monitor for output %s turned on\n" "$1"
else
    printf "Monitor for output %s turned off\n" "$1"
fi

(使用法は次getlineのとおりです。awkスクリプトではお勧めできません。)

使用法:

$ ./xrandr-turned-on.sh HDMI3
Monitor for output HDMI3 turned on

おすすめ記事