Це оновлена версія моєї попередньої відповіді, яка стосувалася Ubuntu 12.04. У 16.04 (Xenial) для правильного встановлення DPI замість 2 потрібно 3 кроки.
Я поясню на прикладі системи з Ubuntu 12.04 з Gnome Classic та монітором з роздільною здатністю 1680x1050. Мої початкові налаштування: xdpyinfo | grep dotsповідомили 96x96 dots, xrdb -query | grep dpiповідомили Xft.dpi: 96, grep DPI /var/log/Xorg.0.logповідомили про деякі дивні налаштування NOUVEAU(0): DPI set to (90, 88).
У 16.04 результати всіх цих 3 команд були послідовними та дорівнювали 96. Хоча така консенсус краща, ніж розлад 12.04, повідомлене значення твердо кодоване та далеко не реальне значення DPI.
Давайте обчислимо оптимальну DPI для мого монітора. Фактичний розмір екрана можна дізнатися за допомогою команди xrandr | grep -w connected(конвертувати вихід у сантиметри) або з довгою лінійкою вручну. У моєму випадку X = 47.4cm:; Y = 29.6cm. Розділіть їх на 2,54, щоб отримати розмір у дюймах X ~ 18.66in; Y ~ 11.65in. Нарешті, розділіть фактичну суму крапок (виходячи з вашої роздільної здатності) на розмір в дюймах X = 1680/18.66 ~ 90dpi; Y = 1050/11.65 ~ 90dpi. Отже, мій справжній dpi - 90.
Попереджуйте , що ручний метод вимірювання може бути більш точним, ніж вихід команди, xrandr | grep -w connectedтому що новіші версії X-сервера ігнорують розмір, про який повідомляє EDID, і обчислюють розмір, використовуючи роздільну здатність екрана та твердо кодовану величину DPI (більше інформації тут ).
Інший метод, як знайти розмір монітора, - це зчитувати його EDID безпосередньо. Встановіть read-edidпакет і запустіть команду sudo get-edid | parse-edid | grep DisplaySizeв терміналі. Його вихід дозволить отримати фактичний розмір монітора в міліметрах. Якщо ні - використовуйте лінійку.
Почнемо виправляти DPI:
1) У 12.04 запустіть gksudo gedit, відкрийте /etc/lightdm/lightdm.confта додайте параметр у [SeatDefaults]розділі:
xserver-command=X -dpi 90
За замовчуванням такого файлу в 16.04 немає, тому його потрібно створити lightdm.confвручну і вкласти в нього /etc/lightdm/lightdm.conf.d/. Вміст цього файлу однаковий:
[SeatDefaults]
xserver-command=X -dpi 90
Перезавантажте комп'ютер або перезапустіть X. Тепер grep DPI /var/log/Xorg.0.logбуде показано потрібне налаштування.
2) У своїй колишній відповіді я запропонував створити файл, /etc/X11/Xsession.d/що містить рядок xrandr --dpi 90. Це працювало в 12.04, але в 16.04 цей параметр не зберігається. У нових системах ми можемо додати бажане значення при запуску сеансу. Запустіть "Запуск програм", натисніть кнопку "Додати", назвіть її "Виправити DPI" і встановіть команду xrandr --dpi 90в полі. Збережіть зміни та повторно ввійдіть у систему. Тепер xdpyinfo | grep dotsзвітуватимемо 90x90 dots.
Якщо xdpyinfoвсе ще відображається 96, то перед запуском додайте таймаут xrandr. Відредагуйте команду в "Запуск програм" та змініть її на:
bash -c "sleep 15; xrandr --dpi 90"
Довідково
Крок 2 необов’язковий для 12.04, оскільки в старих системах крок 1 фіксує Xorg.0.logі xdpyinfoзначення, і значення.
3) У налаштуваннях GNOME3 DPI жорстко закодовано 96 і не може бути змінено безпосередньо, але натомість текст можна масштабувати. Обчисліть потрібний множник: desired_DPI / 96(у моєму випадку 90/96 = 0.9375). Тепер запустіть команду (або скористайтеся, dconfякщо вам зручніше):
gsettings set org.gnome.desktop.interface text-scaling-factor 0.9375
Зміни будуть застосовані одразу. xrdb -query | grep dpiповідомить про бажане Xft.dpi: 90.
PS Існує ще один спосіб виправити налаштування DPI, який набагато складніше, і він описаний у цьому посібнику. Я також спробував це, і результат був таким же (принаймні, в 12.04).
Післямова: Тільки розробники Ubuntu можуть точно сказати, чи дійсно значення, змінені кроками 1 і 2, мають значення в сучасному Ubuntu або вони мовчки ігноруються. Тільки крок 3 виробляє зміни, які миттєво помітні. Користувачам, які вважають, що певні програми все ще можуть покладатися на налаштування X-сервера, рекомендується виконати всі 3 описані вище кроки. Для решти кроків 3 достатньо - це єдиний спосіб налаштування, прийнятий у сучасних дистрибутивах Ubuntu.