Arch Linux でマルチモニターする
今までワイドな曲面モニタ1枚でやってきたが、マルチ、というかデュアルモニタを試すこととなった。使うのは ASUS MB16AMT だ。
おそらく定番の ARandR を入れてはみたのだがいくつか問題が出てきた。
2枚目のモニタの追加・削除が上手くいかない
arandr から acvtiate/deactivate すると妙なことが起きる
正しく認識させるには OS 再起動 が今のところ必要
デフォルトのモニタがワイドな曲面モニタ (Display Port) の方になってほしい
今のところ追加モニタ (HDMI) がメインにデフォルトでなってしまう
解像度?がおかしい
Emacs のフォントがデカく出る
Vivaldi の表示には問題ないし、arandr 上は適切な解像度に設定されているように見えるのだが
Hibernation からまともに復帰できない
i3bar はメインモニタの方だけで出ていて欲しい
この辺は i3 の話になりそう
複数モニタの認識について
NVIDIA グラボ付近の問題だと思われれる。
code:shell
sudo pacman -S nvidia-settings
# 起動 (GUI)
nvidia-settings
すると、X Server Display Configuration というメニューの中では追加したモニタが出現していた。ただし Disabled の表示つき。
で、Enabled にしたはいいけど X の再起動が必要と言われた。この辺が OS 再起動をいつもしていた理由でもあるかもしれない。
えーと、X だけ再起動するのはどうやればいいんだ。
たぶん Display Manager の再起動でいけるんじゃないかな。
ということで
code:shell
sudo systemctl restart lightdm
OS 再起動は免れたものの、しかし残念ながらログイン中のセッションは全部消えた。そりゃそうか…。
いや、何か上手くいったぞ
nvitia-settings すら必要なくかなりの問題が解消された
1. PC 起動てログインまでする
2. 別モニタを接続する
3. ARandR を起動する
4. 右クリックして HDMI-0 を Active にする
5. Display Port の方を Active かつ Primary にする
6. ✓ボタンで反映する
これで上記の問題の多くが解決されて、残るは i3 だけになった。
と思ったのだが
問題が起きるのは以下の手順だ。
1. PC の電源を落とした状態で
2. モニタを接続し
3. PC を起動する
この場合は HDMI のサブモニタが自動で primary 判定されるのだが、こうなると後から ARandR を操作してもどうにもおかしい。恐らくだが /etc/X11 配下に Display Port 側を primary にするような設定を手で仕込まないといけないのではないだろうか。
というわけで
code:shell
$ cat /etc/X11/xorg.conf.d/10-monitor.conf
Section "Monitor"
Identifier "DP-0"
Option "Primary" "true"
Option "Position" "0 0"
EndSection
Section "Monitor"
Identifier "HDMI-0"
Option "Below" "DP-0"
Option "Position" "760 1440"
EndSection
うーん?Primary は効いているが Below や Position が効いてない気がするな?まあ ARandR で後から補正できるからまあよしとするか…。ちなみに Nitrogen が思った通りに壁紙を貼ってくれないと思ったが、--set-tile にしたらイメージと同じ仕上がりになった。
i3 の問題とは
サブモニタではbar は消したい
デフォルトでサブモニタに割当てられるワークスペースが固定されてないっぽいので固定したい
bar とワークスペースについては公式マニュアルにて言及がある。
bar の削除は、bar セクションに以下を追加すればよい。
code:config
bar {
# bar の出力を primary モニタに限定する
# しかしこの行はのちにコメントアウトすることになるのであった。
output primary
# タスクトレイの出力を primary モニタに限定する
tray_output primary
}
しかしよくよく確認してみると、ワークスペースの固定化は不要な考えであることがわかった。
フォーカスしているモニタで meta 9 とかやると、そっちのモニタでワークスペース 9 が有効になる、ただそれだけだ。
しかしこうなってくると、セカンドモニタに割当てられているワークスペースが知りたくなるので、そうなると bar は必須であろう。
というわけで、tray_output の行は削除した。
欲を言うと
セカンドモニタに割当てられているワークスペースが一目で分かるようにしたいのであり、それ以外の表示はいらないんだよねえ。
と思って bar セクションを 2 つにしてみたが効果はなかった。