Xorg DPI 설정을 변경하는 엔터티를 확인하는 방법은 무엇입니까?

Xorg DPI 설정을 변경하는 엔터티를 확인하는 방법은 무엇입니까?

Xubuntu 19.04를 설치했고 노트북의 화면 해상도를 고려하여 /etc/lightdm/lightdm.conf다음 줄을 추가했습니다 .

xserver-command=X -dpi 166

그 결과 XFCE 패널, 터미널, 기타 GTK2 및 GTK3 프로그램이 올바른 글꼴 크기를 취하게 됩니다(내가 설정한 것과 동일함).사용자 정의 DPI 설정~에모습글꼴166), 그러나 Yakuake와 같은 다른 모든 제품에서는 여전히 96 DPI를 볼 수 있습니다. 게다가 시도하면 xdpyinfo96 DPI를 얻습니다.

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

또한 다시 선택하고 선택 취소하면사용자 정의 DPI 설정옵션을 사용하면 XFCE에서도 글꼴이 다시 축소됩니다(분명히 DPI는 X 서버에서 다시 쿼리됩니다).

따라서 세션 시작 중에 일부 엔터티가 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패키지를 보관하거나( 으로 apt-mark hold xfce4-settings) 이 잘못된 동작을 방지하기 위해 다른 작업을 수행해야 하기 때문입니다.

관련 정보