우리는 최근 2160p 디스플레이를 갖춘 새 노트북을 받았습니다. Ubuntu 16.04를 받았을 때 Unity Desktop이 설치되어 있었습니다. Xfce 4를 설치하고 사용했지만 Unity 인사말을 그대로 유지했습니다(예뻐서).
높은 DPI 디스플레이에서 글꼴 크기 조정 문제가 발생할 것으로 예상했지만 Xresource가 Xft.dpi
일반적인 96 대신 192로 설정되었습니다. 거의 모든 앱이 이 설정을 사용하므로 내부 디스플레이를 대부분 사용할 수 있습니다. 10점 만점에 10점 맞죠?
아뇨. 이게 어디에 설치되어 있는지 모르거든요. Xfce의 외관 패널에서는 DPI가 96이라고 주장합니다. dconf
존재하는 변수에도 96이 표시됩니다. xdpyinfo
96년생이라고도 하더군요. Xorg.0.log
DPI에 대한 메시지가 있는데 96이라고 합니다. lightdm.conf
(Unity 인사말 구성 파일)에는 변경 시도가 표시되지 않습니다. 그리고 xrandr
항등 변환 행렬을 보고합니다(스케일링 없음).
인사말은 처음에 Flyspeck 3에서 렌더링되었지만 잠시 후 크기가 조정되므로 GNOME 또는 Unity 인사말이 원인인 것으로 의심됩니다. 하지만 이 작업을 수행하라는 지시가 어디에 있는지 또는 데스크톱 세션에 어떻게 지속되는지 알 수 없습니다.
내 목표는 외부 1080p 모니터를 연결하고 두 모니터가 모두 선명하게 보이도록 DPI를 조정하는 것입니다. 하지만 뒤에서 다른 사람들과 싸우면 효과적으로 할 수 없습니다.
모든 리드를 환영합니다.
시스템 메시지
- 우분투 16.04.3
- 유니티 7.4.0+16.04.20160906-0ubuntu1
- xorg 1:7.7+13우분투3
- xfce 4.12.2
답변1
나는 이 문제의 근본 원인을 다음에서 찾을 수 있다고 믿는다.https://gitlab.freedesktop.org/xorg/xserver/-/issues/509그리고https://bugzilla.gnome.org/show_bug.cgi?id=757142.
v3.17의 GTK는 필요하지 않은 Xft.dpi: 96
환경에 부과되며 Xft.dpi
그렇지 않으면 아무런 효과가 없습니다. Gnome 개발자는 시행 복원을 거부했으며 Xorg 개발자는 Gnome 시행에 대한 해결 방법을 제공하려고 하지 않았습니다.
*SUSE 개발자는 내가 이 문제에 주의를 기울인 직후 현명하게도 시행을 재개했습니다. *SUSE 또는 동등한 기능을 갖춘 배포판으로 전환하면 문제가 해결될 수 있습니다.
나는 Debian(적어도 TDE 및 IceWM 실행)과 Ubuntu(적어도 TDE 및 IceWM 실행)도 이를 수행한다고 생각하므로 다른 배포판이 있을 수 있습니다. Mint(최소한 XFCE 실행)에는 분명히 아직 이 기능이 없으며 Fedora에는 확실히 없습니다. 왜냐하면 이것이 Gnome의 주력 제품이고 최초는 아니더라도 3.17로 전환한 최초의 제품 중 하나이기 때문입니다. 요컨대 가장 기본적인 설정을 누가 했는지에 대한 답은 에 묻혀 있다고 생각합니다.gdk/x11/gdkxftdefaults.c
.
답변2
분명히 Gnome-settings-daemon이 Xft.dpi를 변경했습니다.
나는 /usr/lib/gsd-xsettings
~/.xinitrc에서 이 작업을 수행합니다. 저는 Gnome을 사용하지 않지만 커서를 깜박이지 않는 등 다양한 GTK 애플리케이션을 구성해야 하므로 데몬을 실행합니다. (수정도 가능해요 ~/.config/gtk-3.0/settings.ini
)
방금 변경해서 xrdb를 실행합니다.뒤쪽에설정 데몬을 시작합니다.
이 질문의 일부 용어를 이해하지 못할 수도 있지만 이것이 유용할 수도 있습니다. 실행중인 소프트웨어 중 하나가 gsd-xsettings를 수행하고 있는 것 같습니다.
여기다음은 Xft.dpi 속성을 변경하는 코드 조각입니다.
$ grep -n Xft.dpi gnome-settings-daemon/plugins/xsettings/gsd-xsettings-manager.c -2
852- g_debug("xft_settings_set_xresources: orig res '%s'", add_string->str);
853-
854: update_property (add_string, "Xft.dpi",
855- g_ascii_dtostr (dpibuf, sizeof (dpibuf), (double) settings->scaled_dpi / 1024.0));
856- update_property (add_string, "Xft.antialias",
파일 상단에는 소프트웨어가 기본적으로 96 DPI로 설정되는 이유가 자세히 설명되어 있습니다. 아마도 설정하도록 뭔가를 구성할 수 있을 것 같습니다.X설정"Xft/DPI"에 대한 값을 지정하면 GTK는 ~/.Xdefaults에서 구성한 값을 "기본값" 96으로 덮어쓰는 대신 내가 선호하는 값을 사용할 것입니다.
답변3
부분적으로 알아봤습니다. @derobert가 맞습니다. 해당 설정은 Unity의 인사말에서 남은 것입니다.
실험을 위해 두 개의 더미 사용자 계정을 만들었습니다. Unity 인사말은 96 DPI에서 시작하여 192 DPI에서 다시 그려집니다. 새로 생성된 가상 사용자를 통해 Unity 세션에 로그인했습니다. 데스크탑은 즉시 96 DPI로 되돌아갑니다. 다양한 제어판에서도 96DPI가 보고됩니다. 그래서 Unity는 이 설정을 강제하는 것 같습니다.
다른 가상 사용자와 함께 Xfce 세션에 로그인했습니다. 모든 제어판은 96 DPI를 보고합니다. 그러나 실행 중인 모든 프로그램에서 보고되고 사용되는 DPI는 xrdb -query
여전히 192이며, 이는 아마도 Unity 인사말에서 뒤쳐진 것으로 보입니다. 하지만즉각적인Xfce Appearance Control Panel에서 DPI 설정을 수정했는데 전체 데스크탑이 해당 DPI 값으로 전환되어 그대로 유지되었습니다. 내 생각에는 DPI 값을 터치할 때까지 설정이 사용자의 xfconf 변수에 없으며, 존재하지 않으면 로그인 시 명시적으로 설정되지 않을 것입니다.
따라서 Xfce에는 버그가 있는 것 같습니다. Xft.dpi
시작 시 현재 값을 확인하지 않거나 예상 기본값으로 강제 설정하지 않습니다.
애초에 Unity의 인사말이 왜 192 DPI로 전환되었는지 아직도 이해가 되지 않습니다.