최근 노트북에서 고해상도가 대세가 되면서 맥이나 윈도우처럼 리눅스도 HiDPI 지원을 시작했음.
맥북이나 다른 고해상도 노트북 화면에 선명한 HiDPI 화면을 뿌릴 수 있게 됐다는 것까지는 좋지만, 그래봤자 사용하다 보면 어쩔 수 없이 고해상도 노트북을 구형 모니터에 연결해야 하거나, 아니면 반대로 저해상도 노트북을 최신 고해상도 모니터에 연결해야 하는 경우가 생기는데... 이때 맥이나 윈도우와 달리 리눅스는 DPI 1x과 2x를 왔다 갔다하기 굉장히 까다로운 축에 속함.
GTK3 응용 프로그램들은 DPI를 바꿔도 잘 작동하고, GTK2 프로그램들은 미관상 조금 안 좋아지지만 그래도 쓸만한데, 문제는 Wine으로 돌리는 윈도우 응용 프로그램들은 HiDPI가 걸리든 말든 꿋꿋이 1x를 유지하기 때문에 수동으로 설정해줘야 함.
그 설정을 자동화할 수 있는 방법을 알아보자
winecfg를 실행해 dpi를 96으로 바꾸면 1x 스케일, 192로 바꾸면 2x 스케일에 맞출 수는 있는데 이 방법으로는 실행 동선이 복잡해서 귀찮음.
Wine은 dpi 정보를 윈도우와 동일하게 레지스트리에 저장하니까 이걸 스크립트로 수정하려면 레지스트리 파일을 만들어야 함
친절하게도 저장되는 위치 역시 윈도우랑 똑같음. HKEY_CURRENT_USER\Control Panel\Desktop에 있는 LogPixels DWORD값에 96 보이지??
즉 이 값을 건드려 주기 위해 .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)로 바꿔 주는 파일임. 각각 복사해서 빈 파일에 붙여넣고 1x.reg, 2x.reg로 저장하면 터미널에서 ‘wine regedit 파일명’으로 바로 등록시킬 수 있음.
근데 이왕 하는 김에 더 편하게 쓰는 게 낫지 않겠어? 현재 UI 배율을 자동으로 인식하도록 리눅스 측에서 현재 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
(.reg 파일 경로는 사정에 맞게 알아서 수정)
이렇게 한 다음 만들어진 스크립트 파일과 레지스트리 파일을 적당한 경로에 놓고
# cd /usr/bin
# ln -s /home/hkeylocal/Apps/winedpifix/winedpifix
/usr/bin에 연결을 만들어 주면 명령어 딱 한 줄로 알아서 wine dpi를 맞춰주는 프로그램 완성!
$ winedpifix
이제 이것을 시작 프로그램에 등록하거나, Wine 프로그램 바로가기 링크를 수정하여 프로그램을 실행하기 전 먼저 DPI를 잡게 하거나 하는 식으로 응용이 가능함
winedpifix && (프로그램 실행 명령어)
단 스크립트를 실행해도 이미 실행중인 프로그램에는 반영이 안 되니까 껐다 켜야 함.
댓글 영역
획득법
① NFT 발행
작성한 게시물을 NFT로 발행하면 일주일 동안 사용할 수 있습니다. (최초 1회)
② NFT 구매
다른 이용자의 NFT를 구매하면 한 달 동안 사용할 수 있습니다. (구매 시마다 갱신)
사용법
디시콘에서지갑연결시 바로 사용 가능합니다.