연결된 모니터가 켜질 때 출력이 자동으로 활성화되기를 원합니다(단, 전원 관리 상태일 수도 있음).
답변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에서 사용할 수 있는 디스플레이 식별자와 일치시키는 것입니다. 내가 생각한 방법 중 하나는 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