HiDPI (Русский) - ArchWiki

Jump to content

# HiDPI (Русский)

3 languages

- English
- 日本語
- 中文（简体）

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. Xresources – `Xft.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.

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

- Ultra HD 4K Linux Graphics Card Testing (Nov 2013)
- Understanding pixel density
- Mixed DPI and the X Window System

Category:

- Graphics (Русский)

Hidden categories:

- Pages with dead links
- Pages with broken package links