랩톱이 연결되어 있을 때 Xserver의 디스플레이 레이아웃을 자동으로 변경하려면 이벤트가 실제로 발생하는지 감지해야 할 뿐만 아니라;어느연결된 모니터는 서로 다른 모니터가 연결된 여러 도킹 스테이션이 있는 여러 도킹 스테이션 설정을 구별할 수 있습니다. Linux(바람직하게는 POSIX 쉘 코드)에서 이것이 어떻게 가능합니까?
답변1
실제로 도킹(도킹 해제)되었을 때 모니터를 자동으로 설정하는 방법을 찾고 있다면 확인해 보시기 바랍니다.자동 정렬나 자신과 비슷한 일을 시작하기 전에 (나와는 달리;).
특정 디스플레이 출력이 모니터에 연결되어 있는지 감지하려면 좋은 답변이 있습니다.이 질문에는. 가장 흥미로운 것은 /sys/class/drm/card0-*-*/status
또는 connected
.disconnected
이것이 이 질문에 명시된 문제를 해결하지는 못하지만 /sys/class/drm/card0-*-*/edid
(캐싱) 이 있기 때문에 매우 유사한 접근 방식을 취할 수 있습니다.EDID(일명 DDC 정보)해당 모니터. 운이 좋다면 이 데이터에는 모니터의 일련 번호도 포함되어 있으므로 동일한 모니터 유형의 설정을 구별하는 것도 가능합니다( 로 확인할 수 있음 edid-decode /sys/class/drm/.../edid
).
따라서 연결된 모니터 그룹을 구별하기 위해 유사한 기능을 가진 기능을 기반으로 하는 다음 셸 기능을 사용합니다.자동 정렬.
# hash_sysfs_edid() simply concatenates the md5 hashes of all connected
# monitors and hashes them again so that the output is always 32 characters long.
hash_sysfs_edid () {
edid_hash=""
for DEVICE in /sys/class/drm/card*-*; do
[ -e "${DEVICE}/status" ] && grep -q "^connected$" "${DEVICE}/status" || continue
edid_hash="${edid_hash}"$(md5sum "${DEVICE}/edid" | awk '{print $1}')
done
echo $(echo "$edid_hash" | md5sum | awk '{print $1}')
}