연결된 모니터를 구별하는 방법은 무엇입니까?

연결된 모니터를 구별하는 방법은 무엇입니까?

랩톱이 연결되어 있을 때 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}')
}

관련 정보