xrandr에 디스플레이 모드가 있는지 확인하는 방법은 무엇입니까?

xrandr에 디스플레이 모드가 있는지 확인하는 방법은 무엇입니까?

해상도를 재설정하는 다양한 프로그램이나 모니터를 대기 상태로 만드는 게임과 관련된 다양한 문제로 인해 xrandr을 사용하여 모니터를 구성하는 세션 스크립트가 있습니다...

현재 이 스크립트는 각 모니터를 1280x1024에서 1600x1280까지만 확장할 수 있지만 이렇게 낮은 해상도를 높은 해상도로 확장하면 전체 디스플레이 품질이 떨어지므로 실제 모드로 설정하고 싶습니다...

그러나 문제는 이 스크립트가 여러 번 호출된다는 것입니다(전체 화면 게임 또는 xorg를 중단하는 것보다 더 잘 알고 있다고 생각하는 프로그램). 각 모니터에 대한 모드만 테스트할 수 있습니다...
이는 최악의 경우 xrandr --newmode각 모니터가 실행될 때마다 반복적으로 호출된다는 의미입니다.

xrandr에 패턴이 정의되어 있는지 확인하여 각 모니터에 패턴이 적용되는지 확인할 수 있는 방법이 있나요?


modeline = <modeline>
outputmode = ${modeline[0]}

if [[ <!mode_exists> ]]; then
    xrandr --newmode $modeline
fi

while IFS= read -r line; do
    
    ...

    # this part just for context and is already doable
    if [[ <!outputmode_exists> ]]; then
        xrandr --addmode $output $outputmode
    fi

done <<< $(xrandr -d $DISPLAY | tail -n +2)

xrandr -fb <screensize> \
    --output <output1> --mode $outputmode ... --primary --preferred \
    --output <output2> --mode $outputmode ... \
    ...

--newmode스키마가 이미 정의되어 있으면 호출할 필요가 없도록 스키마가 존재하는지 어떻게 확인합니까?

답변1

글쎄, 잠시 생각한 후에 마침내 /tmp로그아웃 시 더미 파일을 삭제하는 WM 기반의 간단한 솔루션을 결정했습니다.


modeline = <modeline>
outputmode = ${modeline[0]}

if [ ! -f "/tmp/.xrandr$DISPLAY" ]; then
    touch "/tmp/.xrandr$DISPLAY"
    xrandr --newmode $modeline
    xrandr --addmode $outputmode
fi

xrandr -fb <screensize> \
    --output <output1> --mode $outputmode ... --primary --preferred \
    --output <output2> --mode $outputmode ... \
    ...

이제 스크립트를 실행할 때마다 파일이 존재하는 한 새 스키마가 추가되지 않습니다.
(특정 X 서버가 종료되는 즉시 삭제되어야 합니다.)

이것이 절대적으로 최선의 해결책은 아닐 수도 있지만 충분히 훌륭하고 예상대로 작동할 것입니다.

관련 정보