HiDPI (Русский)

From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи 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-scalingAUR. После установки выполните:

$ 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).

Для совместной настройки масштаба шрифтов, виджетов и значков:

  1. Параметры системы > Экран > Настройка экранов > Глобальный масштаб (в Xorg) или Масштаб (в Wayland)
  2. Задайте нужный коэффициент с помощью ползунка и нажмите «Применить»
  3. Перезагрузитесь для полного применения изменений
Примечание: Если вы используете Xorg и масштаб в приложениях Qt не изменился даже после перезагрузки, проверьте наличие xft.dpi в ~/.Xresources. Если он там есть, удаление должно помочь.

Размер курсора

Для настройки размера курсора мыши:

  1. Параметры системы > Внешний вид > Курсоры мыши > Размер

Масштаб шрифтов

Чтобы настроить только масштабирование текста:

  1. Параметры системы > Внешний вид > Шрифты
  2. Поставьте галочку Использовать другой DPI и настройте значение на свой вкус. Эта настройка должна вступить в силу немедленно для вновь запущенных приложений. Для применения ко всему рабочему столу Plasma нужно перезапустить сеанс.

Масштаб значков

Чтобы настроить только масштабирование значков:

  1. Параметры системы > Внешний вид > Значки > Выбрать размеры значков
  2. Выберите желаемый размер значков в каждой категории. Изменения должны примениться сразу.

Значки в трее с фиксированным размером

Значки в трее не масштабируются вместе с остальным рабочим столом, поскольку по умолчанию Plasma игнорирует настройки масштабирования Qt. Чтобы заставить Plasma учитывать настройки Qt, установите переменную окружения PLASMA_USE_QT_SCALING=1.

Xwayland

Начиная с Plasma 5.26, метод масштабирования Xwayland можно выбрать здесь: Параметры системы > Экран > Настройка экранов > Устаревшие приложения (X11).

В режиме «Масштабирование средствами системы» приложение X11 будет рендериться в 1x, а затем увеличиваться (масштабироваться) силами KDE. Это работает для всех приложений, но размывает картинку из-за увеличения.

В режиме «Масштабирование средствами приложений» приложение X будет рендерить себя в соответствующем размере. Это позволит избежать размытости, но приложения, не поддерживающие HiDPI, будут рендерить себя в масштабе 1х и поэтому будут выглядеть маленькими.

Смотрите этот пост в блоге для более подробной информации.

Xfce

В Xfce настроить масштабирование можно здесь:

  1. Диспетчер настроек > Внешний вид > Настройки > Масштабирование окон
  2. Диспетчер настроек > Диспетчер окон > Стиль — тема 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)):

  1. Перейдите в Диспетчер настроек > Внешний вид > Шрифты > Задать DPI и измените на 192
  2. Установите переменную окружения 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-gitAUR можно сгенерировать тему с элементами, предварительно масштабированными для отображения в HiDPI.

Electron

В приложениях Electron (например, slack-desktopAUR, 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/[устаревшая ссылка 2023-04-23 ⓘ] для более подробной информации.

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.

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-develAUR использует 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]:

  1. Свойство Java – -Dsun.java2d.uiScale
  2. gsettings(1)ubuntu.user-interface/scale-factor или org.gnome.desktop.interface/scaling-factor
  3. GDK_SCALE и GDK_DPI_SCALE
  4. XresourcesXft.dpi
  5. 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 и новее, так как она больше не нужна и приведёт к ошибкам.

Skype

Skype for Linux (пакет skypeforlinux-binAUR) использует #GDK 3 (GTK 3).

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-gitAUR[ссылка недействительна: package not found] (который использует xpra).

Другой способ — запустить приложение на весь экран без декораций окна на отдельном рабочем столе VNC, а затем масштабировать VNC-просмотрщик. С помощью vncdesk-gitAUR вы можете создать рабочий стол для каждого приложения отдельно, а затем запустить сервер и клиент простой командой, например 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.
  • xlayoutdisplayAUR — это консольный фронтенд для 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.

Смотрите также