Programming/OS, Program, Framework Tip

Linux - 우분투에서 HiDPI 적용하기 (18.04, 19.04, ...)

awesometic 2019. 10. 22. 17:34
반응형

HiDPI on Linux

리눅스에선 그 동안 HiDPI 기능이 부족했었습니다. 100%, 200% 는 가능하지만 125%, 150% 등은 안 됐었죠.

하지만 최근 Xorg/Wayland 에서는 간단한 Experimental Features 활성화로 Fractional Scaling, 즉 HiDPI를 활성화할 수 있습니다. 방법은 밑에 적을게요. 최근 이래봐야 가장 최신 우분투인 Ubuntu 19.04는 돼야 합니다. 아직 LTS인 18.04에서는 불가능하기 때문에 가이드를 적습니다.

HiDPI 활성화

Ubuntu 19.04 이상

간단히 아래 명령어를 입력 후 다시 로그인 또는 재부팅하시면 디스플레이의 Scaling 옵션 중 125%, 150% 등이 활성화됩니다.

gsettings set org.gnome.mutter experimental-features "['x11-randr-fractional-scaling']"

만약 Wayland 기반 Gnome 3.32 이상이라면 아래 명령어를 입력합니다.

gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']"

Ubuntu 18.04 LTS 등 Xorg 기반

자동 실행 스크립트와 xrandr 이라는 명령어를 통해 HiDPI를 구현할 수 있습니다.

일단 200% 스케일링을 적용시킵니다.

스크린샷은 Elementary OS지만 Ubuntu에서도 동일하게 200%로 설정할 수 있습니다. EOS 에선 Pixel Doubled 란 이름이네요.

xrandr 명령어로 출력 디스플레이를 확인합니다.

xrandr

# 결과 예시
Screen 0: minimum 320 x 200, current 3200 x 1080, maximum 8192 x 8192
VGA-1 disconnected (normal left inverted right x axis y axis)
HDMI-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 531mm x 299mm
   1920x1080     59.93 +  60.00*   50.00    59.94  
   1920x1080i    60.00    50.00    59.94  
   1680x1050     59.88  

위의 경우 HDMI로 연결된 3200x1080 모니터가 보입니다. HDMI-1로 연결되어 있네요. 이렇게 현재 연결된 디스플레이 이름을 (여기선 HDMI-1) 기억합니다.

아래 명령어로 새로운 자동 실행 스크립트 파일을 생성합니다.

vi ~/.config/autostart/hidpi.desktop

그리고 아래 내용을 적습니다. 이 예제는 27인치 4K 모니터에서 QHD 해상도로 HiDPI를 적용합니다. 픽셀 깨짐 없이 150% 확대된 화면이 나올 겁니다.

[Desktop Entry]
Name=HiDPI-Configuration
GenericName=HiDPI-Configuration
Comment=Configure HiDPI Fractional Scaling
Exec=xrandr --output DisplayPort-1 --scale 1.333333333333x1.333333333333 --panning 5120x2880
Terminal=false
Type=Application
X-GNOME-Autostart-Delay=1
X-GNOME-Autostart-enabled=true

명령어 옵션은 다음과 같습니다.

  • --output: 만약 xrandr 명령어로 확인한 디스플레이 이름이 HDMI-1 이라면, DisplayPort-1 부분에 HDMI-1 을 입력하시면 됩니다.
  • --scale: 가로/세로 해상도 값에 해당 스케일링 값을 곱합니다. 3840x2160의 경우 1.333333333333을 곱하면 거의 정확하게 5120x2880을 맞출 수 있게 됩니다. 넉넉한 근사값으로 사용하시려면 1.3333 정도만 곱하시면 됩니다.
  • --panning: 화면을 사용할 수 있는 영역입니다. 이 값이 부정확하면 시스템이 인식하는 사용자의 화면 범위가 실제로 모니터로 보이는 범위와 맞지 않게 됩니다. 모니터의 해상도 * 스케일링 값을 적으시면 됩니다.

xrandr 명령어로 출력 해상도를 5120x2880 으로 맞춘 다음, 200% 스케일링을 적용해 2560x1440 화면을 볼 수 있게 되는 원리입니다. 결과적으로 UHD -> QHD HiDPI가 적용된 상태죠.

재 로그인 또는 재부팅 하시면 로그인 1초 후 화면이 QHD HiDPI로 바뀔 겁니다. :)

참고

반응형