리눅스 Wine 프로그램 DPI 자동 조정하기
포스트
취소

리눅스 Wine 프로그램 DPI 자동 조정하기

최근 노트북에서 고해상도가 대세가 되면서 맥이나 윈도우처럼 리눅스도 HiDPI 지원을 시작했다. 맥북이나 다른 고해상도 노트북 화면에 선명한 HiDPI 화면을 뿌릴 수 있게 됐다는 것까지는 좋지만, 문제는 모든 모니터가 HiDPI에 적합하지는 않다는 것이다. 사용하다 보면 어쩔 수 없이 고해상도 노트북을 구형 모니터에 연결해야 하거나, 아니면 반대로 저해상도 노트북을 최신 고해상도 모니터에 연결해야 하는 경우가 생긴다. 그리고 이런 상황에서 GTK3 응용 프로그램들은 DPI를 바꿔도 잘 작동하고, GTK2 프로그램들은 미관상 조금 안 좋아지지만 그래도 쓸만한데, Wine으로 돌리는 윈도우 응용 프로그램들은 전혀 반응하지 않아 HiDPI에서 작은 글씨를 힘들게 봐가며 사용해야 한다. 이 글에서는 후자의 경우로, 씽크패드 X1 카본 FHD 모델과, LG 울트라파인 4K 모니터를 연결해 카카오톡을 사용하는 경우에 대해 설명한다.

winecfg를 실행해 dpi를 96으로 바꾸면 1x 스케일, 192로 바꾸면 2x 스케일에 맞출 수는 있다. 그런데 이 방법으로는 실행 동선이 복잡해 매번 실행하기에는 귀찮음이 따른다.

Wine은 dpi 정보를 윈도우와 동일하게 레지스트리에 저장하므로 레지스트리 파일을 만들어 보자.

DPI 설정은 HKEY_CURRENT_USER\Control Panel\Desktop에 있는 LogPixels DWORD값에 저장된다.

즉 이 값을 건드려 주기 위해 .reg 파일을 만드는 것부터 시작!

`Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Control Panel\Desktop]
"LogPixels"=dword:00000060`
`Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Control Panel\Desktop]
"LogPixels"=dword:000000c0`

각각 96dpi(1x)와 192dpi(2x)로 바꿔 주는 파일이다. (16진수 값으로 되어 있다)
터미널에서 ‘wine regedit 파일명’으로 바로 등록시킬 수 있다.

하지만 여전히 터미널에 써줘야 하는 수고가 따른다. 자동 쉘 스크립트를 만드는 김에 현재 배율을 자동으로 인식하도록 리눅스 측에서 현재 DPI 정보를 가져올 수 있도록 해보자.

`$ xrdb -query | grep dpi`

이렇게 현재 dpi 정보를 가져올 수 있다. 마찬가지로 96dpi가 1x 192dpi가 2x다.
이걸 이용해서 스크립트를 실행할 때마다 자동으로 dpi를 맞추게끔 스크립트를 짤 수 있다.

`#! /bin/bash

STR1=`xrdb -query | grep dpi`
if [ "$STR1" == "Xft.dpi:	192" ]; 
then
	echo `wine regedit ~/Apps/winedpifix/2x.reg`
fi

if [ "$STR1" == "Xft.dpi:	96" ]; 
then
	echo `wine regedit ~/Apps/winedpifix/1x.reg`
fi`

(파일 경로는 사정에 맞게 수정해야 한다)
이렇게 한 다음 만들어진 스크립트 파일과 레지스트리 파일을 적당한 경로에 놓고

`# cd /usr/bin
# ln -s /home/hkeylocal/Apps/winedpifix/winedpifix`

/usr/bin에 연결을 만들어 주면 간단한 명령어로 실행이 가능해진다.

`$ winedpifix`

이제 이것을 시작 프로그램에 등록하거나, Wine 프로그램 바로가기 링크에 넣어 프로그램을 실행하기 전 먼저 DPI를 잡게 하거나 하는 식으로 응용이 가능하다.

단, 스크립트를 실행해도 이미 실행중인 프로그램에는 반영이 안된다. 껐다 켜야 한다.

This post is licensed under CC BY 4.0 by the author.

포크댄스로 보는 알고리즘

GDM3 배경화면 바꾸기

Comments powered by Disqus.