Wie kann festgestellt werden, welche Entität die Xorg-DPI-Einstellungen ändert?

Wie kann festgestellt werden, welche Entität die Xorg-DPI-Einstellungen ändert?

Ich habe Xubuntu 19.04 installiert und um die Bildschirmauflösung meines Laptops zu berücksichtigen, /etc/lightdm/lightdm.confhabe 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-EinstellungInAussehenSchriftartenauf 166), aber alle anderen, wie z. B. Yakuake, sehen immer noch 96 DPI. Außerdem xdpyinfobekomme 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_crtcFunktion 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- RETAnweisung) 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-settingsdas Paket entweder zurückhalten (durch apt-mark hold xfce4-settings) oder etwas anderes tun, um dieses Fehlverhalten zu vermeiden.

verwandte Informationen