![Xorg DPI 設定を変更するエンティティを特定するにはどうすればよいでしょうか?](https://rvso.com/image/169420/Xorg%20DPI%20%E8%A8%AD%E5%AE%9A%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B%E3%82%A8%E3%83%B3%E3%83%86%E3%82%A3%E3%83%86%E3%82%A3%E3%82%92%E7%89%B9%E5%AE%9A%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%3F.png)
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
パッケージ (by apt-mark hold xfce4-settings
) を保持するか、この誤動作を回避するために何か他の操作を行う必要があります。