![Wie kann festgestellt werden, welche Entität die Xorg-DPI-Einstellungen ändert?](https://rvso.com/image/169420/Wie%20kann%20festgestellt%20werden%2C%20welche%20Entit%C3%A4t%20die%20Xorg-DPI-Einstellungen%20%C3%A4ndert%3F.png)
Ich habe Xubuntu 19.04 installiert und um die Bildschirmauflösung meines Laptops zu berücksichtigen, /etc/lightdm/lightdm.conf
habe ich die Zeile hinzugefügt
xserver-command=X -dpi 166
Das Ergebnis ist, dass das XFCE-Panel, das Terminal und andere GTK2- und GTK3-Programme die richtigen Schriftgrößen annehmen (genauso, als hätte ichBenutzerdefinierte DPI-EinstellungInAussehen→Schriftartenauf 166), aber alle anderen, wie z. B. Yakuake, sehen immer noch 96 DPI. Außerdem xdpyinfo
bekomme ich diese 96 DPI, wenn ich versuche:
$ xdpyinfo | grep dot
resolution: 96x96 dots per inch
Wenn ich das Häkchen wieder ankreuze und wieder entferne,Benutzerdefinierte DPI-Einstellungwerden die Schriftarten auch in XFCE verkleinert (offenbar wird DPI erneut vom X-Server abgefragt).
Ich vermute daher, dass beim Starten der Sitzung irgendein Element die DPI-Einstellung des Bildschirms ändert, als ob es ausgeführt würde xrandr --dpi 96
. Wenn ich manuell ausführe xrandr --dpi 166
, verhalten sich die Programme wieder korrekt.
Ich möchte herausfinden, welche Entität genau dies tut, um es im Kern zu beheben, anstatt Workarounds nach dem Start hinzuzufügen. Wie kann ich es finden?
Antwort1
Dank der Kommentare von @mosvy habe ich herausgefunden, dass der Übeltäter ist xfsettingsd
. Insbesondere seinxfce_displays_helper_normalize_crtc
Funktion enthält diese beliebige fest codierte Auswahl von 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;
Nachdem ich diese Funktion in der Binärdatei entfernt habe, indem ich ihr erstes Byte durch 0xC3
(x86/x86_64- RET
Anweisung) ersetzt habe, werden mir keine 96 DPI mehr aufgezwungen.
Dies ist allerdings keine wirklich langfristige Lösung, da diese Datei bei einem Upgrade überschrieben werden kann. Daher muss ich xfce4-settings
das Paket entweder zurückhalten (durch apt-mark hold xfce4-settings
) oder etwas anderes tun, um dieses Fehlverhalten zu vermeiden.