¿Cómo determinar qué entidad cambia la configuración de DPI de Xorg?

¿Cómo determinar qué entidad cambia la configuración de DPI de Xorg?

Instalé Xubuntu 19.04 y, para tener en cuenta la resolución de la pantalla de mi computadora portátil, /etc/lightdm/lightdm.confagregué la línea

xserver-command=X -dpi 166

El resultado es que el panel XFCE, el terminal y otros programas GTK2 y GTK3 adoptan los tamaños de fuente correctos (lo mismo que si hubiera configuradoConfiguración de DPI personalizadaenAparienciaFuentesa 166), pero todos los demás como, por ejemplo, Yakuake todavía ven 96 DPI. Además, si lo intento xdpyinfo, obtengo estos 96 DPI:

$ xdpyinfo | grep dot
  resolution:    96x96 dots per inch

Además, si marco y desmarco la casillaConfiguración de DPI personalizadaopción, las fuentes también se reducen en XFCE (aparentemente, el servidor X vuelve a consultar DPI).

Entonces sospecho que, durante el inicio de la sesión, alguna entidad cambia la configuración de DPI de la pantalla como si estuviera ejecutando xrandr --dpi 96. Si ejecuto manualmente xrandr --dpi 166, los programas comienzan a comportarse correctamente.

Me gustaría saber qué entidad exactamente está haciendo esto, para solucionarlo desde el principio en lugar de agregar soluciones alternativas posteriores al inicio. ¿Cómo puedo encontrarlo?

Respuesta1

Gracias a los comentarios de @mosvy, descubrí que el culpable es xfsettingsd. En particular, suxfce_displays_helper_normalize_crtcLa función contiene esta elección arbitraria codificada de 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;

Después de eliminar esta función en el binario reemplazando su primer byte con 0xC3(instrucción x86/x86_64 RET), ya no me imponen 96 DPI.

Sin embargo, esta no es una solución a largo plazo, porque una actualización puede sobrescribir este archivo, por lo que tengo que conservar xfce4-settingsel paquete (por apt-mark hold xfce4-settings) o hacer algo más para evitar este mal comportamiento.

información relacionada