少し時間に余裕が出来る事になってメインデスクトップのUbuntu LTS環境を見直していました。 そろそろ2年振りのLTSアップデートが迫ってきていますしね。
Window ManagerにXfceを使っていますが、:0.0と:0.1のマルチディスプレイ環境にして、ウィンドウがディスプレイ内に留まって互いのデスクトップを移動しないようにしています。 nvidia-settingsでいうところのSeparate X screenという設定です。
気がついたらフォントの大きさがそれぞれのディスプレイXfce上で違った大きさになっていました。Xfceの設定パネルでは「外観」→「Font」で設定が変更できますが、ディスプレイ毎の説明はないので、不可解な動きに戸惑ってしまいました。
環境について
いまのメインデスクトップ環境は次のような環境になっています。
- CPU: AMD Phenom(tm) II X4 905e (4 core, 2.5GHz)
- Motherboard: ASUS M5A97 PRO
- Memory: 16GB (4GBx4)
- Video Card: NVIDIA GPU GeForce GTS 450
- Monitor0: EIZO FlexScan L567 (17inch.)
- Monitor1: EIZO FlexScan L567 (17inch.)
Xfceのフォント設定
設定は「Xfce4設定マネージャー」(xfce4-settings-manager)から変更する事ができます。 フォントは「外観」の「Fonts」タブから変更することができます。
ディスプレイ毎にフォント設定がおかしくなる現状の解決について
Gnomeではフォントがおかしくならないので、Xfceに原因があるのかなと最初は考えました。
実際Xfceのオプションで改善する事ができたのですが、xdpyinfoはScreen毎に違うDPI設定を返していて、これが原因と考えるのが妥当そうです。
screen #0:
resolution: 95x96 dots per inch
screen #1:
resolution: 75x75 dots per inch
解決策
Xfceでは「Fonts」タグの中に「Custom DPI Setting」チェックボックスがあるので、これにチェックを入れて問題は解決しました。
原因について
DPIが極端に大きかったり、小さかったりした場合に調整する「Custom DPI Setting」が必要な状況がよく分からなかったので、少し調べてみました。
ログを除いてみると、原因は同じディスプレイを使ってMulti Displayにしている事だと分かりました。
(II) Apr 12 18:10:15 NVIDIA(0): Virtual screen size determined to be 1280 x 1024
(--) Apr 12 18:10:15 NVIDIA(0): DPI set to (95, 96); computed from "UseEdidDpi" X config
(--) Apr 12 18:10:15 NVIDIA(0): option
--
(WW) Apr 12 18:10:15 NVIDIA(1): Cannot find size of first mode for Eizo L567 (DFP-0); cannot
(WW) Apr 12 18:10:15 NVIDIA(1): compute DPI from Eizo L567 (DFP-0)'s EDID.
(==) Apr 12 18:10:15 NVIDIA(1): DPI set to (75, 75); computed from built-in default
(--) Depth 24 pixmap format is 32 bpp
このcannot compute DPIをキーワードに検索してみると、いくつかドキュメントがみつかります。 IgnoreEDIDオプションはうまく動かなかったので、今回はDisplaySizeを指定する事にしました。
xdpyinfoではうまく調整できている方のディスプレイサイズがわかります。 dimensions: 1280x1024 pixels (342x271 millimeters)
/etc/X11/xorg.confのバックアップを取ってから、MonitorセクションにDisplaySizeを追加しました。
Section "Monitor"
Identifier "Monitor1"
VendorName "Unknown"
ModelName "Eizo L567"
HorizSync 31.0 - 64.0
VertRefresh 59.0 - 61.0
Option "DPMS"
DisplaySize 342 270
EndSection
最初は342 271と、そのままの数値を書いていたのですが、342x274と計算されてしまったので、1つ小さい数を指定したところうまく数字が合いました。 ここの挙動はまったく不明ですが、今回はここら辺で終りにしようと思います。
最後に
最終的にはCustom DPI Settingの機能は使わずに動いています。 ここまでやらなくても実用上は問題なかったのですが、xdpyinfoレベルで同じであればアプリケーションの挙動が両方のディスプレイで同じになる裏付けになるので安心できます。
dimensions: 1280x1024 pixels (342x271 millimeters)
resolution: 95x96 dots per inch
depths (7): 24, 1, 4, 8, 15, 16, 32
--
dimensions: 1280x1024 pixels (342x271 millimeters)
resolution: 95x96 dots per inch
depths (7): 24, 1, 4, 8, 15, 16, 32
0 件のコメント:
コメントを投稿