接続されているモニターの電源を入れたときに出力が自動的にアクティブになります(ただし、電源管理状態になる可能性があります)。
ベストアンサー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