令和元年度 非 HiDPI 混在マルチディスプレイ環境を Linux で過ごす
ヘイシャは Mac 天国であり、僕も普段は会社支給の Mac を使っているものの、ここ数日は業務内容の都合から Linux を使いたいとなり使っている。
そういうわけで HiDPI/LowDPI 混在マルチディスプレイに関する気持ちが溜まったので排出します。
環境
- マシン: HUAWEI MateBook X Pro 2018 (MACH-W29)
- 外付ディスプレイ: Philips 258B6QUEB/11 (25'' 117PPI)
- OS: Arch Linux with KDE Plasma 5.17
自分の体感では、内蔵ディスプレイは 1.3~1.5 倍ぐらいでちょうどよく、一方外付ディスプレイはドットバイドットで丁度いい……ぐらいの気持ちです。ではどうするか。
やっとたどり着いた鋼鉄設定
- KDE システム設定(
systemsettings5
) のフォントDPI設定から Xft の DPI を 96→144 (1.5倍) xrandr --output DP2(外部ディスプレイ) --scale 1.5x1.5
で外部ディスプレイを疑似4K化optimus-manager
で X11 全体で nvidia dGPU を使う
以下経緯
- 上記設定は当然、外付ディスプレイ側のスケールによるにじみを許容できる人向け
- 個人的には許せないレベルではない
- 内蔵ディスプレイ側をスケールする方法も当然あるがそっちのほうが許せなかった
- Xft の DPI ではなく
QT_SCALE_FACTOR
/GDK_SCALE
を変更してもよい- UI のサイズは割とどうでもよく思ったのでフォントだけいじった
- Intel iGPU で xrandr のスケールだけ使うと GPU が炎上して KWin (コンポジット有) がカックカクになるし GPU を富豪に使う Chromium 系アプリも激重になる
- 3000x2000 + 2560x1440➞3840×2160 2枚出しということになるのでそれもそうか
- ってことで MX150 を使った
- でも MX150 を起動するとそれだけでファンが回りっぱなしになるほど加熱する……(未解決)
- 最初は直接 xorg.conf を書いて GPU を切り替えようとしたが上手く動かなかったので optimus-manager に頼ったらすんなりいった
- 一応 Bumblebee (optirun/primusrun) で KWin を起動してみたが当然 Compositor がコケた
- 仕事が終わったら Bumblebee に戻すなどしてマメに GPU の電源を切ってる
- optimus-manager での電源管理はまだ試してない
QT_SCREEN_SCALE_FACTORS=eDP1=1.5;DP2=1;
のように Qt の Per-display DPI 切り替えを使うのも割と体験はよかった- が、
- ウィンドウ枠もでかいまま
- というか KDE はこの設定を kcm で吐けないどころか、xprofile 等に書いていても起動時に全ディスプレイ同じスケールで上書きしてくる
- 最近まで[いつ?]
startkde
に直接手を入れることで解決できていたが、廃止され startplasma_x11 に置き換わったのでこの方法は使えなくなった - 怒りの
env QT_SCREEN_SCALE_FACTORS="eDP1=1.5;DP2=1;" plasmashell --replace
- 最近まで[いつ?]
- xrandr スケールをかけてると kcm のディスプレイ設定での配置は壊れるので適当に ARandR などの xrandr フロントエンドを使うと楽
感想
- Linux での HiDPI は令和になってもなお闇
- Wayland にしてもマルチディスプレイの辛さはあんま軽減しない
- KDE に至っては小数スケールが機能しなくなるのでむしろ悪化する
- Wayland にしてもマルチディスプレイの辛さはあんま軽減しない
- macOS はえらい
- X11 のアーキテクチャを思うと Qt なんかはかなり頑張ってる方だとは思った
- が、辛いもんは辛いよな……
こちらからは以上です。