To jest zaktualizowana wersja mojej poprzedniej odpowiedzi, która była związana z Ubuntu 12.04. W 16.04 (Xenial) potrzebne są 3 kroki, aby poprawnie ustawić DPI zamiast 2.
Wyjaśnię na przykładzie systemu z Ubuntu 12.04 z Gnome Classic i monitorem o rozdzielczości 1680x1050. Moje ustawienia początkowe: xdpyinfo | grep dots
zgłaszane 96x96 dots
, xrdb -query | grep dpi
zgłaszane Xft.dpi: 96
, grep DPI /var/log/Xorg.0.log
zgłaszane dziwne ustawienia NOUVEAU(0): DPI set to (90, 88)
.
W 16.04 wyniki wszystkich tych 3 poleceń były spójne i równe 96. Chociaż taki konsensus jest lepszy niż zaburzenie z 12.04, podawana wartość jest zakodowana na stałe i daleka od rzeczywistej wartości DPI.
Obliczmy optymalne DPI dla mojego monitora. Rzeczywisty rozmiar ekranu można znaleźć za pomocą polecenia xrandr | grep -w connected
(przekonwertuj wyjście na centymetry) lub ręcznie za pomocą długiej linijki. W moim przypadku X = 47.4cm
:; Y = 29.6cm
. Podzielić je przez 2,54, aby uzyskać rozmiar w calach: X ~ 18.66in
; Y ~ 11.65in
. Wreszcie podzielić faktyczną ilość kropek (na podstawie swojej uchwały) przez wielkość w calach: X = 1680/18.66 ~ 90dpi
; Y = 1050/11.65 ~ 90dpi
. Tak więc moja rzeczywista rozdzielczość wynosi 90.
Uwaga: ręczna metoda pomiaru może być dokładniejsza niż wynik polecenia, xrandr | grep -w connected
ponieważ nowsze wersje serwera X ignorują rozmiar zgłaszany przez EDID i obliczają rozmiar przy użyciu rozdzielczości ekranu i zakodowanej wartości DPI (więcej informacji tutaj ).
Inną metodą znalezienia rozmiaru monitora jest bezpośredni odczyt jego EDID. Zainstaluj read-edid
pakiet i uruchom polecenie sudo get-edid | parse-edid | grep DisplaySize
w terminalu. Jego moc wyjściowa da ci rzeczywisty rozmiar twojego monitora w milimetrach. Jeśli nie - użyj linijki.
Zacznijmy naprawiać DPI:
1) W uruchomieniu 12.04 gksudo gedit
otwórz /etc/lightdm/lightdm.conf
i dodaj parametr w [SeatDefaults]
sekcji:
xserver-command=X -dpi 90
Domyślnie takiego pliku nie ma w 16.04, więc musisz go utworzyć lightdm.conf
ręcznie i włożyć do /etc/lightdm/lightdm.conf.d/
. Zawartość tego pliku jest taka sama:
[SeatDefaults]
xserver-command=X -dpi 90
Uruchom ponownie komputer lub uruchom ponownie X. Teraz grep DPI /var/log/Xorg.0.log
pokaże żądane ustawienie.
2) W mojej poprzedniej odpowiedzi zaproponowałem utworzenie pliku /etc/X11/Xsession.d/
zawierającego ciąg znaków xrandr --dpi 90
. Działało to w 12.04, ale w 16.04 to ustawienie nie jest trwałe. W nowszych systemach możemy dodać pożądaną wartość na początku sesji. Uruchom „Aplikacje startowe”, naciśnij przycisk „Dodaj”, nazwij go „Napraw DPI” i ustaw polecenie xrandr --dpi 90
w polu. Zapisz zmiany i ponownie się zaloguj. Teraz xdpyinfo | grep dots
zgłosi się 90x90 dots
.
Jeśli xdpyinfo
nadal pokazuje 96, dodaj limit czasu przed uruchomieniem xrandr
. Edytuj polecenie w „Aplikacjach startowych” i zmień je na:
bash -c "sleep 15; xrandr --dpi 90"
Odniesienie
Krok 2 jest opcjonalny dla 12.04, ponieważ w starszych systemach krok 1 naprawia zarówno wartości, jak Xorg.0.log
i xdpyinfo
wartości.
3) W GNOME3 ustawienie DPI jest zakodowane na 96 i nie można go zmienić bezpośrednio, ale zamiast tego można skalować tekst. Oblicz żądany mnożnik: desired_DPI / 96
(w moim przypadku 90/96 = 0.9375
). Teraz uruchom polecenie (lub użyj, dconf
jeśli wolisz):
gsettings set org.gnome.desktop.interface text-scaling-factor 0.9375
Zmiany zostaną zastosowane od razu. xrdb -query | grep dpi
zgłosi żądane Xft.dpi: 90
.
PS Istnieje inna metoda naprawy ustawienia DPI, która jest znacznie trudniejsza i została opisana w tym przewodniku. Próbowałem też i wynik był taki sam (przynajmniej w 12.04).
Posłowie: tylko programiści Ubuntu mogą z całą pewnością stwierdzić, czy wartości zmodyfikowane w krokach 1 i 2 naprawdę mają znaczenie w nowoczesnym Ubuntu, czy też są po cichu ignorowane. Tylko krok 3 powoduje zmiany, które są natychmiast zauważalne. Użytkownicy, którzy uważają, że niektóre aplikacje mogą nadal polegać na ustawieniach serwera X, są zachęcani do wykonania wszystkich 3 opisanych wyżej kroków. Co do reszty, krok 3 jest wystarczający - to jedyny sposób dostosowywania przyjęty w nowoczesnych dystrybucjach Ubuntu.