• 作成:
  • 更新:

Acerの4Kモニタ(RT280K)を購入しました,GNU/LinuxでのフルHDモニタを混ぜたマルチディスプレイ環境もきちんと設定できました

購入したもの

RT280Kです.

RT280Kbmjdpx | acer

セールで価格が¥35,840になってたので,そろそろ4Kモニタぐらい買っても良いだろうと思って購入しました.

他にも色々ありましたがこれは4KモニタでありながらGtoGが1msを謳っているので,ゲームにも使えないことは無いだろうと判断しました.

もちろんプロゲーマーなら144Hz駆動のやつでも買うのでしょうけど,私はヌルゲーマーだから関係ありませんね.

トリプルディスプレイ
トリプルディスプレイ

スピーカーが無音状態でもうるさい

このディスプレイ点いている時は何故か「キーン」という音が鳴っていて結構うるさいです.

これはAmazonで買ったから気が付かなかったとかではなく,家電量販店とかでも他の音があるから静かな自宅じゃなかったら気が付かなかったでしょう.

何の音だろう…電気通すのに音が鳴るのかな?そこまでの低レイヤーには詳しくないですね.

静かな自宅だとPCのファンレベルにはうるさいのでかなり気になります.

とりあえずスピーカーの音を0にしてみたら音が鳴らなくなりました.1だとめっちゃうるさいのに0だと音が鳴りません.電気通すだけでスピーカーが音を発してしまうということなのでしょうかね.

PavuControlで音を切ってみても無効なので音量をオフにするしかないようですね…

しかしPCだとヘッドホン使うから問題ないですが,Switch繋いでゲームする時に一々スピーカーの音を切り替えたりヘッドホン差し替えるのは面倒くさいですね…ヘッドホン買い足すべきですかね.

これぐらいの安物のディスプレイのスピーカーには初めから期待してはいませんでしたが,何も流してないのにうるさいのはちょっと.

そしてここからマルチディスプレイとdpiの問題とぶつかり始める

モノは特に問題なかったのですが,自分の環境(GNU/Linux)でフルHDのモニタを混ぜてマルチディスプレイしようとすると問題が起きてしまいました.

参考リンク

xrandrでDPIを設定すると他のディスプレイも変わってしまう

xrandr --output DVI-D-0 --dpi 96 --output HDMI-0 --dpi 96 --output HDMI-1 --dpi 144のようにDPIを設定してみましたが,これをやると4KではないサブのフルHDのディスプレイまで144 DPIになってしまうため文字が大きすぎてまともに読めない状況になってしまいます.

scaleを設定すると全てが崩壊する

xrandr --scaleはそもそもgsettings set org.gnome.desktop.interface scaling-factor 2の設定を受け付けるシステム向けの設定で,しかも設定するとマルチディスプレイの設定が全て崩壊するので使えませんでした.

gsettings set org.gnome.desktop.interface scaling-factor 2しても何も効果無いんですよね.不思議ですね.

Xresourcesに書く方法でスケーリングされるようになりました

~/.Xresources

Xft.dpi: 144

を設定してxrdb -merge ~/.Xresourcesすると,メインディスプレイではまともに拡大されて表示されるようになりました.サブのディスプレイで動かないということでもあるのですが…

FirefoxもChromiumもまともに動くようになりました

Xft.dpiの設定を読み込んでいるのか,この設定をするとFirefoxもChromiumも普通に表示されます.

と思いましたがXresourcesだとやはり全てのディスプレイのdpiが変更されてしまいます

やはり全てのディスプレイで引き伸ばしが発生してしまうことがわかりました.Xft.dpiを単純に変更するだけではうまく行かないようです.

メインディスプレイ以外をスケーリングしてxrandrで全て手動設定すれば良いのでは?

xrandr のスケールオプションを使って回避することができます。HiDPI の内部ディスプレイ (eDP-1) の右に HiDPI ではないモニター (DP-1) がある場合、次を実行:

もうnvidia-settingも何もないxrandrによるごり押し作戦ですがこれでうまくいくなら問題ないです.

xrandr --output HDMI-1 --auto --primary --output DVI-D-0 --scale 2x2 --right-of HDMI-1 --output HDMI-0 --scale 2x2 --left-of HDMI-1

を起動時に実行してみることにしました.

そうしたら以下のようなわけの分からない状態になってしまいました…

全体スクリーンショット
全体スクリーンショット

中途半端にミラーリングがされますし,mikutterは小さいまま描画されてしまいますね.

まあスケーリング変えてズレが生じるのは仕方がない.mikutterはGTK+2のアプリケーションなのでフォントスケーリングに対応していないのも仕方がない…のか?

とりあえずスケーリングしたあとのズレを解消するためにnvidia-settingでxorg.confを設定してみましたがダメ.毎回起動後にnvidia-settingを実行しないとダメらしいです.xrandrで設定してるのにどうして…

よく考えてみたらXの初期化はxorg.conf → xrandrの順番で行われているので,xrandrでの設定がうまくいっていない場合ダメになるのは当然でしたね.

しかし何故xrandrで--scale 2x2を指定するとマルチディスプレイの繋がりがダメになるのか全くわからない.スケーリングのシステムに謎が多すぎる.

スケーリングはどうも使えないようだという結論に達するしかありませんでした.nvidia-settingでの設定を自動化してマルチディスプレイの設定をうまく行えても,結局はdpiの値の共有は防げません.

妥協

Xft.dpi: 144

して,mikutterは影響ほとんど受けないのでそのままにして,サブディスプレイもう一つで異常に大きくスケーリングされてしまう問題は諦めることにしました.

まあ動画とかを流す限りは関係がないので.

うまいことディスプレイ毎にDPIを設定する方法を知っている人が居たらぜひ教えてください.

xrandrのscaleを使いつつうまくマルチディスプレイする方法を探れば良いのかなって感じはします.崩壊する原因は置いておいて絶対位置で座標指定したらうまくいくかも.mikutter表示するディスプレイはスケーリングしないで.うまくいったら追記します.

一番良い解決策

もう1枚4Kディスプレイ買えばDPIの違いに悩まされなくて解決.富豪的解決策ですがこれが一番良い気がしてきました…

巨大ディスプレイを買って気がついたこと

世の中のwebサイト巨大ディスプレイに最適化されてなさすぎですね.

このサイトもそうですけど.

デザインをちょっとbootstrapの.containerを何も考えずに使うのをやめて考え直す必要がありそうです.

追記(2018-12-16) ちゃんと設定できました!

xrandrのscaleを使いつつうまくマルチディスプレイする方法を探れば良いのかなって感じはします.崩壊する原因は置いておいて絶対位置で座標指定したらうまくいくかも.

うまくいきました!

私の場合以下のコマンドを起動時に実行するように設定すればOKです.

% xrandr --output HDMI-1 --primary --pos 3840x0 --output DVI-D-0 --pos 7680x1080 --output HDMI-0 --pos 0x0 --scale 2x2

もちろん

~/.Xresources

Xft.dpi: 144

を置いて起動時にxrdb ~/.Xresourcesすることを忘れずに.

HDMI-1が4Kの中央に置いているモニタです.DVI-D-0が右に置いているフルHDのmikutterを置くモニタで,これはmikutterがHiDPIに対応していないから,スケールを大きくすると文字の大きさが崩壊するから--scaleを設定しません.HDMI-0が左側に置いてあるフルHDのモニタです,これに--scale 2x2を設定します.

左側に置いてあるHDMI-0--scale 2x2にして仮想的に4Kに設定して,Xft.dpi: 144によってフォントサイズを大きくして,メインの4Kモニタでも左側の4Kモニタでもアプリケーションの設定を変えずに使用することが可能になりました.

ここで問題になるのは--scale 2x2を使うと,何故かマルチディスプレイの「つなぎ」が崩壊することですが,これはうまく動かない--right-ofを使わずに,--posで絶対的に指定することで解決しました.

また適当に設定しているとマウスの繋がりがおかしくなるので,HDMI-0にも--pos 0x0を設定しています.

DVI-D-0は何故か--right-ofで異常なく接続可能なのですが,そのままだと4Kディスプレイは28型でフルHDディスプレイは24型なのでフルHDを下側に置きたいのに,マウスの繋がりが上で行われてしまうので--posで設定しています.

フルHDディスプレイを仮想的に4K扱いしているので微妙なにじみが発生するという問題と,もともと24型のディスプレイを仮想4Kにしてるのに,DPIを等倍ではなく1.5倍の144までしか増やしてないので,文字が小さいという問題はありますが,深刻な問題はなくこれで使用することが可能になりました.

本当はディスプレイ毎にDPIを設定できるのが一番良いのですが,この方法(仮想4Kと絶対位置設置)でほとんど問題なく利用することが可能です.