HiDPI (Русский)

Состояние перевода:
На этой странице представлен перевод статьи
HiDPI
. Дата последней синхронизации: 22 октября 2023. Вы можете
помочь
синхронизировать перевод, если в английской версии произошли
изменения
.
Ссылки по теме
Настройка шрифтов
Дисплеи HiDPI (High Dots Per Inch), также известные под маркетинговым названием Apple
«Retina Display»
, — это экраны, имеющие высокое разрешение при относительно небольшом размере. Они в основном встречаются в ноутбуках и мониторах высшего класса.
Ещё не все программы нормально работают в режиме высокого разрешения. Здесь перечислены основные настройки, улучшающие работу на дисплеях высокого разрешения.
Среды рабочего стола
GNOME
Для включения HiDPI перейдите в
Настройки > Дисплеи > Масштаб
и выберите нужное значение. Также можно использовать gsettings:
$ gsettings set org.gnome.settings-daemon.plugins.xsettings overrides "[{'Gdk/WindowScalingFactor', <2>}]"
$ gsettings set org.gnome.desktop.interface scaling-factor 2
Примечание
Коэффициент масштабирования в GNOME может быть только целым числом: 1 = 100%, 2 = 200% и т. д. Смотрите раздел
#Дробное масштабирование
ниже.
Дробное масштабирование
На некоторых экранах (например, планшетах) может быть комфортнее использовать дробное масштабирование (fractional scaling). Это можно реализовать как в Wayland, так и в Xorg, хотя процедуры различаются.
Реализация обсуждалась на GNOME fractional scaling hackfest 2017.
[1]
Wayland
Включите экспериментальную функцию дробного масштабирования:
$ gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']"
Затем перейдите в
Настройки > Дисплеи > Масштаб
(новые значения могут появиться только после перезапуска сеанса).
Примечание
Включение дробного масштабирования может привести к размытию в старых приложениях, использующих Xwayland,
даже если используется целочисленный коэффициент
, поскольку изменяется метод рендеринга.
Чтобы включить это для всех пользователей, создайте следующие три файла:
/etc/dconf/profile/user
user-db:user
system-db:local
/etc/dconf/db/local.d/00-hidpi
[org/gnome/mutter]
experimental-features=['scale-monitor-framebuffer']
/etc/dconf/db/locks/hidpi
/org/gnome/mutter/experimental-features
Затем выполните
dconf update
и перезагрузитесь.
Xorg
Ubuntu предоставляет патч
[2]
для настройки масштабирования с помощью Randr через GNOME Settings. Пропатченную версию можно установить с помощью пакета
mutter-x11-scaling
AUR
[
ссылка недействительна
: package not found]
. После установки выполните:
$ gsettings set org.gnome.mutter experimental-features "['x11-randr-fractional-scaling']"
Затем перейдите в
Настройки > Дисплеи > Масштаб
.
Также можно реализовать дробное масштабирование вручную, используя коэффициент масштабирования GNOME вместе с масштабированием через
xrandr
. Эта комбинация позволяет правильно масштабировать шрифты TTF, чтобы они не размывались, в отличие от использования только xrandr. С помощью
gsettings
картинка увеличивается, а затем с помощью
xrandr
уменьшается до нужного размера.
Сперва задайте в настройках GNOME такой масштаб, который будет больше чем нужно. Обычно «2» уже много, но если нет, то попробуйте «3» и так далее. Затем начните изменять масштабирование с помощью
xrandr
. Сперва узнайте название нужного видеовыхода, в примерах ниже используется
eDP1
. Попробуйте для начала задать коэффициент, например, 1.25 — если интерфейс всё ещё слишком крупный, то немного увеличьте коэффициент; если уже слишком мелкий — немного уменьшите.
$ xrandr --output eDP1 --scale 1.25x1.25
Чтобы изменения сохранялись между перезагрузками, можно использовать
autorandr
; смотрите
этот ответ на StackOverflow
.
Масштабирование текста
В качестве альтернативы или в дополнение к изменению общего масштаба можно отдельно изменить масштаб текста. Это можно сделать через Gnome Tweaks в настройке
Шрифты > Коэффициент масштабирования
или через gsettings. Этот коэффициент может быть дробным числом, например:
$ gsettings set org.gnome.desktop.interface text-scaling-factor 1.5
KDE Plasma
Настройки Plasma позволяют задать масштаб шрифтов, значков и виджетов. Они повлияют как на приложения Qt, так и на GTK.
Примечание
Plasma 5.27
отказалась
от использования переменных
GDK_SCALE
/
GDK_DPI_SCALE
и
перешла
на
Xsettingsd
. Установите его, чтобы масштабирование работало для GTK-приложений при использовании Xorg. Или можно установить эти переменные вручную, как описано в разделе
#GDK 3 (GTK 3)
.
Для совместной настройки масштаба шрифтов, виджетов и значков:
Параметры системы > Экран > Настройка экранов > Глобальный масштаб
(в Xorg) или
Масштаб
(в Wayland)
Задайте нужный коэффициент с помощью ползунка и нажмите «Применить»
Перезагрузитесь для полного применения изменений
Примечание
Если вы используете Xorg и масштаб в приложениях Qt не изменился даже после перезагрузки, проверьте наличие
xft.dpi
в
~/.Xresources
. Если он там есть, удаление должно помочь.
Размер курсора
Для настройки размера курсора мыши:
Параметры системы > Внешний вид > Курсоры мыши > Размер
Масштаб шрифтов
Чтобы настроить только масштабирование текста:
Параметры системы > Внешний вид > Шрифты
Поставьте галочку
Использовать другой DPI
и настройте значение на свой вкус. Эта настройка должна вступить в силу немедленно для вновь запущенных приложений. Для применения ко всему рабочему столу Plasma нужно перезапустить сеанс.
Масштаб значков
Чтобы настроить только масштабирование значков:
Параметры системы > Внешний вид > Значки > Выбрать размеры значков
Выберите желаемый размер значков в каждой категории. Изменения должны примениться сразу.
Значки в трее с фиксированным размером
Значки в трее не масштабируются вместе с остальным рабочим столом, поскольку по умолчанию Plasma игнорирует настройки масштабирования Qt. Чтобы заставить Plasma учитывать настройки Qt, установите
переменную окружения
PLASMA_USE_QT_SCALING=1
.
Xwayland
Начиная с Plasma 5.26, метод масштабирования Xwayland можно выбрать здесь:
Параметры системы > Экран > Настройка экранов > Устаревшие приложения (X11)
.
В режиме «Масштабирование средствами системы» приложение X11 будет рендериться в 1x, а затем увеличиваться (масштабироваться) силами KDE. Это работает для всех приложений, но размывает картинку из-за увеличения.
В режиме «Масштабирование средствами приложений» приложение X будет рендерить себя в соответствующем размере. Это позволит избежать размытости, но приложения, не поддерживающие HiDPI, будут рендерить себя в масштабе 1х и поэтому будут выглядеть маленькими.
Смотрите этот
пост в блоге
для более подробной информации.
Xfce
В
Xfce
настроить масштабирование можно здесь:
Диспетчер настроек > Внешний вид > Настройки > Масштабирование окон
Диспетчер настроек > Диспетчер окон > Стиль
— тема
Default-xhdpi
То же самое можно сделать с помощью команды
xfconf-query
:
$ xfconf-query -c xsettings -p /Gdk/WindowScalingFactor -s 2
$ xfconf-query -c xfwm4 -p /general/theme -s Default-xhdpi
Если в некоторых приложениях GTK шрифты всё равно не масштабируются, попробуйте также сделать следующее (смотрите
#GDK 3 (GTK 3)
):
Перейдите в
Диспетчер настроек > Внешний вид > Шрифты > Задать DPI
и измените на 192
Установите
переменную окружения
GDK_DPI_SCALE=0.5
для уменьшения тех шрифтов, которые отмасштабировались дважды.
Эти настройки применяются к Xfce и приложениям GTK.
Масштабирование в Qt нужно настроить вручную; смотрите раздел
#Qt 5
. Если вы изменили DPI шрифтов, вам может понадобиться задать переменную окружения
QT_FONT_DPI=96
, чтобы избежать двойного масштабирования шрифтов в приложениях Qt.
Cinnamon
Поддерживает из коробки.
Enlightenment
Для E18 перейдите в E Setting panel. В
Look > Scaling
можно управлять коэффициентами масштабирования пользовательского интерфейса. Коэффициент 1.2, похоже, хорошо подходит для родного разрешения экрана MacBook Pro 15".
Оконные менеджеры
Sway
Смотрите
Sway#HiDPI
.
Ресурсы X
Если вы не используете среду рабочего стола, такую как KDE, Xfce или другую, которая управляла бы настройками X за вас, вы можете установить желаемые настройки DPI вручную с помощью переменной
Xft.dpi
в
Xresources
:
~/.Xresources
Xft.dpi: 192

! Это также можно быть полезно в зависимости от вашего монитора и личных предпочтений:
Xft.autohint: 0
Xft.lcdfilter:  lcddefault
Xft.hintstyle:  hintfull
Xft.hinting: 1
Xft.antialias: 1
Xft.rgba: rgb
Для
Xft.dpi
обычно хорошо подходят значения кратные 96, например 192 даёт масштаб 200%.
Убедитесь, что эти настройки загружаются при запуске X — например, в файле
~/.xinitrc
с помощью команды
xrdb -merge ~/.Xresources
. Смотрите статью
Ресурсы X
для более подробной информации.
Это задаст нужный размер шрифта в большинстве приложений, однако не повлияет на такие вещи, как размер значков.
Установка
Xft.dpi
одновременно с масштабированием инструментария (например,
GDK_SCALE
) может привести к тому, что в некоторых программах, например Firefox, элементы интерфейса будут намного больше чем ожидалось.
X-сервер
Некоторые программы всё ещё могут считывать DPI, заданный X-сервером (большинство программ считывают ресурсы X прямо или косвенно). Старые версии i3 (до 2017 года) и Chromium (до 2017 года) делали это.
Чтобы проверить, правильно ли X-сервер определил физические размеры вашего монитора, используйте утилиту
xdpyinfo
из пакета
xorg-xdpyinfo
:
$ xdpyinfo | grep -B 2 resolution
screen #0:
  dimensions:    3200x1800 pixels (423x238 millimeters)
  resolution:    192x192 dots per inch
В этом примере используются неточные размеры (423 мм x 238 мм, хотя Dell XPS 9530 имеет размеры 346 мм x 194 мм), чтобы получить число, кратное 96 dpi, в данном случае 192 dpi. Это, как правило, работает лучше, чем использование правильного DPI — например, Pango рисует шрифты чётче в i3.
Если DPI неверный, можно попытаться исправить его, как описано в разделе
Xorg (Русский)#Размер дисплея и DPI
.
Инструментарий
Qt 5
Начиная с Qt 5.6, в приложениях Qt 5 можно включить учёт DPI экрана с помощью
переменной окружения
QT_AUTO_SCREEN_SCALE_FACTOR
. В Qt 5.14 появилась новая переменная окружения
QT_ENABLE_HIGHDPI_SCALING
, которая
заменяет
переменную
QT_AUTO_SCREEN_SCALE_FACTOR
. Для наибольшей совместимости рекомендуется задать обе переменные:
$ export QT_AUTO_SCREEN_SCALE_FACTOR=1
$ export QT_ENABLE_HIGHDPI_SCALING=1
Если автоматическое определение DPI не даёт желаемого эффекта, масштабирование можно задать вручную для каждого экрана (
QT_SCREEN_SCALE_FACTORS
/
QT_ENABLE_HIGHDPI_SCALING
) или глобально (
QT_SCALE_FACTOR
). Более подробная информация есть в
блоге Qt
и в
документации разработчика Qt
.
Примечание
Если вы вручную устанавливаете коэффициент экрана, важно установить
QT_AUTO_SCREEN_SCALE_FACTOR=0
и
QT_ENABLE_HIGHDPI_SCALING=0
, иначе некоторые приложения, которые принудительно включают высокий DPI, будут масштабироваться дважды.
QT_SCALE_FACTOR
масштабирует шрифты, а
QT_SCREEN_SCALE_FACTORS
может не масштабировать их в зависимости от приложения.
Если вы также установите DPI шрифта вручную в
xrdb
для поддержки других инструментариев,
QT_SCALE_FACTORS
сделает шрифты огромными.
Если у вас
#Несколько экранов
с разным DPI, вам может понадобиться сделать
QT_SCREEN_SCALE_FACTORS="2;2"
.
Альтернатива
:
$ QT_FONT_DPI=96 clementine
GDK 3 (GTK 3)
Примечание
Как указано в разделе
#Ресурсы X
, если вы установили xft.dpi на большее значение dpi, это сделает другие масштабы больше, чем обычно, в том числе GDK.
Установка масштаба GDK (в X11, не в Wayland) масштабирует пользовательский интерфейс, но не значки. Если вы используете минимальный оконный менеджер с установкой dpi через Xft.dpi, GDK будет масштабироваться отлично. В других случаях
сделайте следующее
:
Для масштабирования интерфейса только на целочисленный коэффициент:
$ export GDK_SCALE=2
GTK3/4 не поддерживает дробное масштабирование, поэтому дробные коэффициенты будут игнорироваться. Эта переменная окружения также игнорируется в сеансах mutter wayland.
Для масштабирования только текста можно использовать
GDK_DPI_SCALE
. Чтобы отменить масштабирование текста, можно использовать дробное масштабирование:
$ export GDK_DPI_SCALE=0.5
GTK3/4 не позволяют масштабировать значки, если приложение явно не реализует способ сделать это. Смотрите
issue #4528
. Если вам нужна эта возможность, по возможности используйте Qt.
GTK 2
Масштабирование интерфейса не поддерживается самим GTK 2, однако с помощью
themix-full-git
AUR
можно сгенерировать тему с элементами, предварительно масштабированными для отображения в HiDPI.
Electron
В приложениях
Electron
(например,
slack-desktop
AUR
,
signal-desktop
и т. п.) можно задать масштаб путём добавления флага
--force-device-scale-factor
в файл
.desktop
. Обычно он находится в каталоге
/usr/share/applications/
и может быть переопределён путём создания копии в
~/.local/share/applications/
. Флаг должен быть добавлен к строке, начинающейся с «Exec=», например:
~/.local/share/applications/slack.desktop
Exec=env LD_PRELOAD=/usr/lib/libcurl.so.3 /usr/bin/slack --force-device-scale-factor=1.5 %U
Elementary (EFL)
Увеличение интерфейса в 1.5 раза:
export ELM_SCALE=1.5
Смотрите
https://phab.enlightenment.org/w/elementary/
[
устаревшая ссылка
2024-10-12 ⓘ]
для более подробной информации.
GNUstep
Приложения GNUstep, использующие его графическую библиотеку (AppKit), принимают свойство
GSScaleFactor
в своих настройках по умолчанию (настройки STEP). Чтобы задать масштаб 1.5 для всех приложений:
defaults write NSGlobalDomain GSScaleFactor 1.5
Обратите внимание, что вы также должны отключить хинтинг шрифтов, установив значение параметра
GSFontHinting
равным 17, иначе рендеринг текста будет выглядеть искажённым при отображении длинных строк.
defaults write NSGlobalDomain GSFontHinting 17
Некоторое автоматическое обнаружение было возможно ещё в 2011 году, но код, отвечающий за бэкенд X11, был впоследствии
закомментирован
.
Загрузчики
GRUB
Уменьшение разрешения фреймбуфера
Смотрите
GRUB/Tips and tricks#Setting the framebuffer resolution
.
Изменение размера шрифта GRUB
Найдите желаемый шрифт в
/usr/share/fonts/
.
Сконвертируйте его в формат, который понимает GRUB:
# grub-mkfont -s 30 -o /boot/grubfont.pf2 /usr/share/fonts/FontFamily/FontName.ttf
Примечание
Параметром
-s
можно менять размер шрифта.
В файле
/etc/default/grub
задайте новый шрифт, как описано в разделе
GRUB/Tips and tricks#Background image and bitmap fonts
:
GRUB_FONT="/boot/grubfont.pf2"
Примечание
GRUB_THEME
, если используется, переопределит
GRUB_FONT
.
Наконец,
перегенерируйте файл настроек GRUB
.
Совет
Размер шрифта также можно изменить с помощью графического инструмента настройки
grub-customizer
AUR
.
systemd-boot
Выберите более низкое разрешение для консоли с помощью опции
console-mode
(смотрите
systemd-boot (Русский)#Настройка
и
loader.conf(5) § OPTIONS
).
Приложения
Если вы используете сеанс Wayland, но приложение работает через Xwayland (либо потому что оно не поддерживает Wayland изначально, либо потому что оно использует X11 по умолчанию), интерфейс и шрифты могут оказаться размытыми, даже если приложение поддерживает HiDPI. Смотрите
это сообщение об ошибке
. Смотрите также
Wayland (Русский)#Визуальное обнаружение приложений Xwayland
.
Браузеры
Firefox
Firefox должен использовать настройки
#GDK 3 (GTK 3)
. Однако
GDK_SCALE
масштабирует неконсистентно и не поддерживает дробные значения, вместо него можно попробовать
GDK_DPI_SCALE
. Другой вариант, который позволит избежать специфических для Firefox настроек во многих установках, — использовать
#Ресурсы X
, поскольку Firefox должен считывать указанное там значение
Xft.dpi
.
Чтобы переопределить эти параметры, откройте страницу расширенных настроек Firefox (
about:config
) и добавьте параметр
ui.textScaleFactor
со значением
150
(или подберите более подходящее для вас значение;
150
— хороший выбор для экранов Retina). Вероятно, также понадобится изменить масштаб по умолчанию в основных настройках, например, до 120%. Это не обеспечивает консистентное масштабирование всего Firefox: отредактируйте
layout.css.devPixelsPerPx
для этого, но это может работать не так, как ожидается.
Если Firefox не масштабирует шрифты, вы можете создать файл
userChrome.css
и добавить в него соответствующие стили. Более подробная информация о
userChrome.css
есть на
mozillaZine
. Начиная с Firefox 69, файлы
userChrome.css
и
userContent.css
не загружаются по умолчанию, если только пользователь не установит свои предпочтения. Откройте страницу расширенных настроек Firefox (
about:config
) и установите параметр
toolkit.legacyUserProfileCustomizations.stylesheets
на
True
, затем перезапустите Firefox для применения изменений.
~/.mozilla/firefox/
профиль
/chrome/userChrome.css
@namespace url("https://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");

/* #tabbrowser-tabs, #navigator-toolbox, menuitem, menu, ... */
* {
    font-size: 15px !important;
}

/* exception for badge on adblocker */
.toolbarbutton-badge {
    font-size: 8px !important;
}
Если вы используете HiDPI-монитор вместе с другим монитором, вы можете использовать дополнение
ffreszoom
, регулирующее масштаб страницы, если обнаруживает использование большого монитора (уровень и порог масштабирования настраиваются). Изменение внутренних настроек CSS DPI через расширение в настоящее время не поддерживается
[3]
.
Если вы используете Wayland, смотрите
Firefox (Русский)#Wayland
для информации по включению опционального бэкенда Wayland в
firefox
. Это также применимо к
thunderbird
.
Chromium / Google Chrome
Chromium должен использовать настройки
#GDK 3 (GTK 3)
.
Для переопределения настроек можно добавить флаг
--force-device-scale-factor
, который изменит масштаб интерфейса браузера и содержимого страниц. Например:
chromium --force-device-scale-factor=2
.
При использовании этой опции значение 1 означает обычный размер. Можно использовать дробные значения. Чтобы сделать изменение постоянным, для Chromium вы можете добавить его в
~/.config/chromium-flags.conf
:
~/.config/chromium-flags.conf
--force-device-scale-factor=2
Для Chrome используйте
~/.config/chrome-flags.conf
.
Если вы используете HiDPI-монитор вместе с другим монитором, вы можете использовать расширение
reszoom
, чтобы автоматически менять уровень масштабирования под активный экран.
Если вы используете Wayland,
включите поддержку нативного Wayland
, чтобы не было размытости. Смотрите также
Chromium#Incorrect HiDPI rendering
.
Opera
Opera должна использовать настройки
#GDK 3 (GTK 3)
.
Для переопределения настроек можно добавить флаг
--alt-high-dpi-setting=
X
, где X означает желаемый DPI, например
--alt-high-dpi-setting=144
. Новые версии Opera автоматически определяют DPI через настройки DPI шрифта (в KDE:
Использовать другой DPI
).
Gimp 2.10
Gimp 2.10 всё ещё использует GTK 2, поэтому родной поддержки HiDPI не имеет. Для увеличения значков можно открыть
Параметры > Интерфейс > Тема значков
и выбрать
Огромный
размер значков или другое подходящее значение.
Если шрифты меню слишком маленькие, вы можете обновить существующую тему, скопировав её из
/usr/share/gimp/2.0/themes/
в
~/.config/GIMP/2.10/themes/
и изменив
gtk-font-name
и
font_name
в
gtkrc
на что-нибудь побольше, например
Sans 30
. Затем выберите новую тему через
Параметры > Интерфейс > Тема
. При копировании не забудьте переименовать новый каталог во что-то отличное от оригинального имени (например,
Dark > DarkHighDPI
).
Также можно попробовать
gimp-hidpi
(инструкции по установке устарели и относятся к версии 2.8, в Gimp 2.10 тема должна быть установлена в
~/.config/GIMP/2.10/themes/
).
Более новая версия
gimp-devel
AUR
использует GTK 3 и поэтому поддерживает Wayland и HiDPI. Размер значков и текста можно настроить через
Параметры > Интерфейс > Тема значков
/
Дисплей
соответственно.
Inkscape
Можно настроить размер значков через
Параметры > Интерфейс > Тема
.
[4]
[5]
Приложения Java
AWT/Swing
Java-приложения, использующие фреймворк
AWT/Swing
, можно масштабировать через свойство ВМ
sun.java2d.uiScale
при запуске
java
. Значение может быть дробным числом или процентами. Например:
java -Dsun.java2d.uiScale=2 -jar
приложение_на_swing
.jar
java -Dsun.java2d.uiScale=300% -jar
приложение_на_swing
.jar
Начиная с Java 9 также используется переменная окружения
GDK_SCALE
.
На данный момент Java
AWT/Swing
(вплоть до OpenJDK 13) фактически поддерживает только целочисленные значения. Значения
-Dsun.java2d.uiScale=250%
или
GDK_SCALE=2.5
будут обрабатываться аналогично значениям
-Dsun.java2d.uiScale=2
или
GDK_SCALE=2
.
JavaFX
Java-приложения, использующие
JavaFX
, можно масштабировать через свойство ВМ
glass.gtk.uiScale
при запуске
java
. Значение может быть целочисленным процентом, целочисленным значением DPI (где
96dpi
означает масштаб
100%
, а, например,
192dpi
означает масштаб
200%
) или дробным значением. Например:
java -Dglass.gtk.uiScale=200% -jar
приложение_на_jfx
.jar
java -Dglass.gtk.uiScale=192dpi -jar
приложение_на_jfx
.jar
java -Dglass.gtk.uiScale=2.0 -jar
приложение_на_jfx
.jar
JavaFX прекрасно поддерживает дробные значения. Использование значений вроде
-Dglass.gtk.uiScale=250%
или
-Dglass.gtk.uiScale=2.5
даёт ожидаемый результат.
AWT/Swing и JavaFX вместе
Некоторые Java-приложения используют
JavaFX
и
AWT/Swing
совместно (через
javafx.embed.swing.JFXPanel
). В этом случае настройки
AWT/Swing
будут влиять и на
JavaFX
, а настройка
-Dglass.gtk.uiScale
не будет иметь никакого эффекта.
IDE от JetBrains
Продукты JetBrains (IntelliJ IDEA и другие IDE) поддерживают два режима HiDPI (JRE-managed и IDE-managed). Последовательность определения коэффициента масштабирования системы описана в
[6]
:
Свойство Java –
-Dsun.java2d.uiScale
gsettings(1)
–
ubuntu.user-interface/scale-factor
или
org.gnome.desktop.interface/scaling-factor
GDK_SCALE
и
GDK_DPI_SCALE
Xresources
–
Xft.dpi
1.0
Для решения проблем обратитесь к диалогу «Show HiDPI Info» через
поиск «Shift Shift»
.
При использовании разного масштабирования на разных мониторах может возникнуть проблема, когда IntelliJ не распознаёт реальное, исходное разрешение монитора.
У некоторых пользователей получалось решить проблему добавлением опции
-Dsun.java2d.uiScale.enabled=true
в файле
название_ide
.vmoptions
(
Help > Edit custom VM options
).
Если это не сработает, на Wayland может быть включена экспериментальная опция GTK
scale-monitor-framebuffer
(смотрите раздел
#Wayland
выше). В настоящее время продукты JetBrains работают на Xwayland и
пока не имеют встроенной поддержки Wayland
. Это делает рендеринг в продуктах JetBrains несовместимым с фреймбуфером масштабирования монитора. Отключение фреймбуфера может решить проблемы размытых шрифтов и рендеринга в продуктах JB, но, увы, приводит к отключению дробного масштабирования.
Обратите внимание, что на PyCharm eap (2023.2.2 RC) масштабирование, управляемое через IDE, не работает. В качестве обходного пути удалите eap-версию и установите стабильную.
Maple
Отмасштабировать Maple под HiDPI можно с помощью решения AWT/Swing. Но его нужно добавить в каталог установки Maple в
каталог-maple
/bin/maple
в
JVM_OPTIONS
:
каталог-maple
/bin/maple
...
JVM_OPTIONS="-Dsun.java2d.uiScale=2 ..."
...
В качестве альтернативы можно использовать переменную окружения
GDK_SCALE
:
$ GDK_SCALE=2
каталог-maple
/bin/xmaple %f
LibreOffice
LibreOffice
на всех бэкендах VCL берёт настройки из соответствующих инструментариев. Есть ошибка, из-за которой бэкенд
kf5
на Wayland не масштабируется
[7]
. Вместо этого используйте бэкенд
gtk3
. Смотрите
LibreOffice (Русский)#Темы оформления
.
MATLAB
Последние версии
MATLAB
] (R2017b) позволяют задавать коэффициент масштабирования
[8]
:
>> s = settings;s.matlab.desktop.DisplayScaleFactor
>> s.matlab.desktop.DisplayScaleFactor.PersonalValue = 2
Изменения применяются после перезапуска.
Это может стать утомительным, если менять масштаб нужно часто. Для упрощения можно использовать скрипт:
~/bin/matlab-scale
#!/bin/sh
exec matlab -r "s = settings;s.matlab.desktop.DisplayScaleFactor.PersonalValue=$1;quit" -nodesktop -nosplash
Для изменения масштаба на 3:
$ matlab-scale 3
Приложения Mono
Согласно
[9]
[
устаревшая ссылка
2023-04-23 ⓘ]
, приложения Mono масштабируются как
GTK 3
. Точный метод зависит от графической библиотеки: GtkSharp, очевидно, опирается на Gtk, в то время как Windows Forms (libgdiplus) просто смотрит настройки Xft.
NetBeans
NetBeans позволяет управлять размером шрифта своего интерфейса с помощью параметра
--fontsize
при запуске. Чтобы сделать это изменение постоянным, отредактируйте файл
/usr/share/netbeans/etc/netbeans.conf
и добавьте параметр
--fontsize
к свойству
netbeans_default_options
.
[10]
Размер шрифтов редактора можно контролировать в меню
Tools > Option > Fonts & Colors
.
Размер шрифта окна вывода можно контролировать в меню
Tools > Options > Miscelaneous > Output
.
OBS Studio
OBS 29 поддерживает HiDPI без дополнительной настройки.
Для старых версий OBS рекомендовалось установить переменную окружения
QT_AUTO_SCREEN_SCALE_FACTOR=0
, чтобы отключить
Qt’s hi-dpi migration mode
, и установить тему Yami. Не используйте тему Yami в OBS 29 и новее, так как она больше не нужна и приведёт к ошибкам.
Spotify
Масштаб можно изменить с помощью сочетаний клавиш
Ctrl++
для увеличения,
Ctrl+-
для уменьшения и
Ctrl+0
для масштаба по умолчанию. Масштаб будет сохранён в
~/.config/spotify/Users/YOUR-SPOTIFY-USER-NAME/prefs
, возможно, вам придётся создать этот файл самостоятельно:
~/.config/spotify/Users/YOUR-SPOTIFY-USER-NAME/prefs
app.browser.zoom-level=100
Также Spotify может быть запущен с пользовательским коэффициентом масштабирования, который будет умножен на значение, указанное в
~/.config/spotify/Users/YOUR-SPOTIFY-USER-NAME/prefs
, например
$ spotify --force-device-scale-factor=1.5
Steam
Официальная поддержка HiDPI
С 25 января 2018 года в бета-программе появилась поддержка HiDPI, которая должна работать автоматически.
Через
Steam > Настройки > Интерфейс
установите флажок
Увеличить текст и значки в соответствии с размером монитора
(требуется перезапуск).
Если масштаб не определился автоматически, используйте
GDK_SCALE=2
для установки нужного коэффициента масштабирования.
Если это не сработает, используйте
steam -forcedesktopscaling 2
или установите переменную окружения
STEAM_FORCE_DESKTOPUI_SCALING=2.0
.
[11]
. После обновления интерфейса в 2023 году также поддерживается дробное масштабирование вроде
1.25
.
Неофициальная
Для увеличения размера шрифта интерфейса можно установить
HiDPI-Steam-Skin
. Хотя он не идеален, он повышает удобство использования.
Примечание
В README скина указаны несколько возможных мест для размещения скина. Правильную папку из них можно определить по наличию файла
skins_readme.txt
.
MetroSkin Unofficial Patch
также помогает в работе с HiDPI на Steam в Linux.
Sublime Text 3
Sublime Text 3 имеет полную поддержку масштабирования. Перейдите в
Preferences > Settings
и добавьте
"ui_scale": 2.0
в ваши настройки.
Thunderbird
Смотрите
#Firefox
. Для открытия страницы
about:config
, перейдите в
Настройки > Основные > Редактор настроек
(кнопка в самом низу).
VirtualBox
Примечание
Это относится только к KDE с включенным масштабированием.
VirtualBox также применяет общесистемное масштабирование к мониторам виртуальных машин, что уменьшает максимальное разрешение внутри виртуальных машин на коэффициент масштабирования (смотрите
[12]
).
Это можно обойти, вычислив обратную величину коэффициента масштабирования и вручную задав новый коэффициент масштабирования в команде запуска VirtualBox, например:
$ QT_SCALE_FACTOR=0.5 VirtualBoxVM --startvm
название-вм
VMware
Текст в приложении VMware отображается в размере, соответствующем настройкам системы, но значки маленькие, а между элементами интерфейса слишком маленькие отступы.
Как описано в
#GDK 3 (GTK 3)
, вы можете использовать
GDK_SCALE
для дальнейшего увеличения масштаба всего пользовательского интерфейса (включая значки и отступы), а затем использовать
GDK_DPI_SCALE
для уменьшения масштаба только текста до приемлемого размера.
Например, чтобы получить окончательный коэффициент масштабирования 2x:
$ GDK_SCALE=2 GDK_DPI_SCALE=0.5 vmware
Приложения Wine
Запустите
$ winecfg
и на вкладке «Графика» измените «Разрешение экрана». Это влияет только на размер шрифта.
Zathura
Просмотр документов нормально работает из коробки.
Размер шрифта интерфейса можно изменить через
файл настроек
(обратите внимание, что «font» это
опция girara
):
set font "monospace normal 20"
Zoom
Задайте переменную
scaleFactor
в
~/.config/zoomus.conf
.
Для Flatpak-версии задайте
переменную окружения
QT_SCALE_FACTOR
(например 0.5
[13]
). Это также можно сделать с помощью графического инструмента
Flatseal
.
Gazebo
Gazebo отображает только верхнюю левую часть вида, а не весь вид. Чтобы исправить это, необходимо установить переменную окружения Qt.
Для запуска Gazebo:
$ QT_SCREEN_SCALE_FACTORS=[1.0] gazebo
Для запуска симуляции ROS:
$ TURTLEBOT3_MODEL=burger QT_SCREEN_SCALE_FACTORS=[1.0] roslaunch turtlebot3_gazebo turtlebot3_world.launch
Создание псевдонима вроде
gazebo="QT_SCREEN_SCALE_FACTORS=[1.0] gazebo"
работает в первом случае, но не работает во втором.
Fcitx
Можно изменить
FontSize
в
~/.config/fcitx/conf/fcitx-classic-ui.config
.
Для Fcitx5 укажите
Font
в двойных кавычках в
~/.config/fcitx5/conf/classicui.conf
.
Неподдерживаемые приложения — через сетевой уровень
Для масштабирования приложений можно использовать
run-scaled-git
AUR
[
ссылка недействительна
: package not found]
(который использует
xpra
).
Другой способ — запустить приложение на весь экран без декораций окна на отдельном рабочем столе VNC, а затем масштабировать VNC-просмотрщик. С помощью
vncdesk-git
AUR
вы можете создать рабочий стол для каждого приложения отдельно, а затем запустить сервер и клиент простой командой, например
vncdesk 2
.
В
x11vnc
есть экспериментальная опция
-appshare
, которая открывает по одному просмотрщику на каждое окно приложения. Возможно, с этим можно что-то придумать.
Неподдерживаемые приложения — через Weston
Это несетевое и потенциально аппаратно ускоряемое решение. Базовый пример выглядит так:
$ weston --xwayland --socket=testscale --scale=2
$ DISPLAY=:1 WAYLAND_DISPLAY=testscale
приложение
Отдельный файл настроек
weston.ini
, используемый с
weston --config
, может сделать всё покрасивее:
[core]
idle-time=0
[shell]
panel-position=none
locking=false
Значение
DISPLAY
должно быть тем, которое использует Xwayland. Если обычный Xorg работает на
:0
, то Xwayland скорее всего будет использовать
:1
. Можно проверить файлы в
/tmp/.X11-unix
.
Для запуска приложений в отдельных окнах изменяйте параметры
--socket
и
WAYLAND_DISPLAY
+
DISPLAY
для каждого приложения. Правда, заскриптовать это проблематично из-за того, что
DISPLAY
должен быть небольшим целым числом.
Несколько экранов
Настройки HiDPI применяются ко всему рабочему столу, поэтому внешние мониторы без HiDPI будут отображать всё слишком крупно. Однако установка различных коэффициентов масштабирования для разных мониторов уже поддерживается в
Wayland
.
Экран сбоку
Можно использовать опцию
scale
в
xrandr
в качестве обходного пути. Например, если есть не-HiDPI монитор (DP1) справа от встроенного HiDPI дисплея (eDP1), можно выполнить:
$ xrandr --output eDP-1 --auto --output DP-1 --auto --scale 2x2 --right-of eDP-1
При расширении сверху внутреннего дисплея на внешнем мониторе может отображаться часть внутреннего дисплея, в таком случае укажите положение вручную.
Также можно настроить параметр
sharpness
для уменьшения размытия, вызванного масштабированием.
Примечание
Решение с
--scale 2x2
может не работать на некоторых картах
NVIDIA
, решения пока что нет.
[14]
Возможный обходной путь — задать
ForceFullCompositionPipeline=On
в
CurrentMetaMode
через
nvidia-settings
. Смотрите
[15]
.
Если вы используете драйвер
modesetting
и мышь мерцает, для решения проблемы можно задать экрану, который не масштабировался, масштаб 0.9999x0.9999.
Несколько внешних мониторов
При масштабировании нескольких внешних мониторов, имеющих более низкое разрешение, чем встроенный дисплей HiDPI, могут возникнуть проблемы. В этом случае вы можете попробовать понизить масштаб дисплея HiDPI, например, с помощью:
$ xrandr --output eDP1 --scale 0.5x0.5 --output DP2 --right-of eDP1 --output HDMI1 --right-of DP2
При понижении масштаба дисплея HiDPI шрифт на нём будет слегка размыт, но это отличается о той размытости, которая появляется при повышении масштаба внешних мониторов. Вы можете сравнить и посмотреть, какой вид размытости менее проблематичен для вас.
Дублирование экрана
Если вы хотите просто выводить одну и ту же картинку на оба экрана, то это просто.
Если AxB это разрешение дисплея HiDPI (например, 3200x1800) и CxD это разрешение внешнего монитора (например, 1920x1200):
$ xrandr --output HDMI --scale [A/C]x[B/D]
В данном примере получится следующее (3200/1920 = 1.66 и 1800/1200 = 1.5):
$ xrandr --output HDMI --scale 1.66x1.5
Пример для экранов UHD и 1080p (3840/1920=2 2160/1080=2):
$ xrandr --output HDMI --scale 2x2
Также можно настроить параметр
sharpness
для уменьшения размытия, вызванного масштабированием.
Инструменты
Есть инструменты для автоматизации выполнения вышеупомянутых команд.
Этот скрипт
настраивает внешний дисплей без HiDPI над внутренним дисплеем с HiDPI.
xrandr-extend
.
xlayoutdisplay
AUR
— это консольный фронтенд для xrandr, который определяет и устанавливает правильный DPI:
README
Консоль Linux (tty)
Встроенные шрифты
Консоль Linux
изменяет шрифт на
TER16x32
(основан на
ter-i32b
из
terminus-font
[16]
), основываясь на количестве пикселей по вертикали и горизонтали дисплея
[17]
независимо от его физического размера. Если ваш монитор не распознался как HiDPI, шрифт по умолчанию можно изменить. Для этого добавьте
fbcon=font:TER16x32
в
параметры ядра
. 32-пиксельные шрифты — это максимум, поддерживаемый ядром Linux, в некоторых случаях этого может быть недостаточно.
Внешние шрифты (tty)
Самые крупные шрифты, присутствующие в пакете
kbd
, —
latarcyrheb-sun32
и
solar24x32
. Другие пакеты, например
terminus-font
, содержат дополнительные альтернативы, такие как
ter-132n
(обычный) и
ter-132b
(полужирный). Подробнее о настройке можно почитать в разделах
Консоль Linux#Шрифты
и
Консоль Linux#Постоянные изменения
[
ссылка недействительна
: раздел не найден]
, в частности, для применения настройки шрифта в early userspace.
После изменения шрифта он часто искажается и становится нечитаемым при переходе на другие виртуальные консоли (
tty2-6
). Для исправления можно
принудительно задать определённый режим для KMS
, например
video=2560x1600@60
(подставьте родное разрешение вашего HiDPI дисплея) и перезагрузиться. При использовании меньших разрешений текст будет выглядеть более крупным, но при этом пикселизированным.
При загрузке через
UEFI
может оказаться так, что консоль и загрузчик ограничены низким разрешением, несмотря на правильные настройки KMS. Это может быть вызвано тем, что в настройках UEFI включена legacy/BIOS загрузка. Её отключение позволит системе загрузиться с правильным разрешением.
kmscon
Для полноценной поддержки HiDPI можно использовать
KMSCON
.
Смотрите также
Ultra HD 4K Linux Graphics Card Testing
(Nov 2013)
Understanding pixel density
Mixed DPI and the X Window System