Xubuntu 19.04をインストールし、ラップトップの画面解像度を考慮して/etc/lightdm/lightdm.conf
次の行を追加しました。
xserver-command=X -dpi 166
その結果、XFCEパネル、端末、その他のGTK2およびGTK3プログラムは(私が設定したように)正しいフォントサイズを使用します。カスタムDPI設定存在する外観→フォント166)、しかし他のすべて(例えば、Yakuake)はまだ96 DPIを表示します。また、xdpyinfo
以下を試してみると、96 DPIが得られます。
$ xdpyinfo | grep dot
resolution: 96x96 dots per inch
また、選択して選択を解除するとカスタムDPI設定オプションを使用すると、XFCEでもフォントが減ります(明らかにDPIはXサーバーから再クエリされます)。
したがって、セッションの開始中に一部のエンティティが実行するなど、画面のDPI設定を変更すると疑われますxrandr --dpi 96
。手動で実行すると、xrandr --dpi 166
プログラムは正常に実行を開始します。
リリース後に回避策を追加するのではなく、この問題をコアで解決できるように、そのエンティティが正確に何をしているのかを知りたいです。どうやって見つけることができますか?
ベストアンサー1
@ mosvyのコメントのおかげで、犯人が正しいという事実がわかりましたxfsettingsd
。xfce_displays_helper_normalize_crtc
この関数には、96 DPIのランダムハードコーディングされた選択肢が含まれています。
/* The 'physical size' of an X screen is meaningless if that screen
* can consist of many monitors. So just pick a size that make the
* dpi 96.
*
* Firefox and Evince apparently believe what X tells them.
*/
helper->mm_width = (helper->width / 96.0) * 25.4 + 0.5;
helper->mm_height = (helper->height / 96.0) * 25.4 + 0.5;
0xC3
最初のバイトを(x86 / x86_64ディレクティブ)に置き換えてバイナリからこの関数を削除した後、RET
96 DPIを強制しなくなりました。
ただし、アップグレードはこのファイルを上書きする可能性があるため、これは完全に長期的な解決策ではありません。したがって、xfce4-settings
パッケージを維持したり(pass apt-mark hold xfce4-settings
)、これらの誤動作を防ぐために他の作業を実行する必要があります。