everdream

LinuxとHiDPI

2019年08月14日


今更ですがThinkPad X240の液晶をFHDに換装しました。画面交換自体は少し検索すれば事例がたくさん出てくるので省きますが、10分程度で終わる作業ですしディスプレイ自体も1万円しないぐらいなので中古のThinkPadを買った人は交換するべきだと思います。

ただし12.5インチでフルHDは小数点倍のスケーリングが必要になるHiDPI環境になります。ThinkPadにはWindowsではなくLinuxを入れているので、LinuxのHiDPI環境を調べながら色々設定していました。

IMG 1889

デスクトップ環境

PlasmaやGNOMEは多少の設定でHiDPIでも使えるようになります。ただしGNOMEは初期設定では整数倍のスケーリングにしか対応しないので、このコマンドで有効にしてやる必要があります。GNOMEではWaylandセッションでのみ小数点倍のスケーリングができます。

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

ウィンドウマネージャ(Xorg)

ここからが本番です。HiDPIというものは上手いことアプリケーションがスケーリングしてほしい倍率をどこかから読み取って上手いことスケーリングすれば成り立つものなのですが、Linux環境においてDPI設定ができる場所は主にこの2箇所です。

  • Xftのdpi設定
  • Xで設定されたdpi

この両方を設定してやればだいたいいい感じになります。

DPI設定は96dpiを基準とした数値で設定されます。今回は1.25倍にしたいので120dpiとします。

Xftの設定

~/.Xdefaults に追記しておきます。

Xft.dpi: 120

X側での設定

xrandrで設定することができます。たいていのアプリケーションはXftの設定を読んでくれますが、念の為設定しておきます。

$ xrandr --dpi 120

sway

Waylandコンポジタのswayは最初からHiDPI対応になっています。

output <出力の名前> scale 1.25

これでWaylandネイティブで動くアプリケーションに関して言えば、簡単にスケーリングしてくれます。 ただし、xwayland上で動くX用のアプリケーションは単純に100%でレンダリングして拡大するだけの表示になるためこの世のアプリケーションがすべてWaylandに対応しない限りはボケボケの表示がどこかしらに残ることになります。ChromiumやVisual Studio CodeのようなElectron製のアプリケーションが該当するので、ターミナルだけで生活できる人でもない限りはXに留まったほうがよいかもしれません。