Проблема масштабирования при использовании разрешения Ultra HD между ноутбуком и монитором

Проблема масштабирования при использовании разрешения Ultra HD между ноутбуком и монитором

У меня есть ноутбук с Arch Linux и Gnome Shell. Моя видеокарта — Intel HD 520. Разрешение экрана моего ноутбука — 3200×1800. На работе я подключаю свой ноутбук к монитору с разрешением 1920×1080. Подключение осуществляется с помощью кабеля HDMI. Система правильно определяет оба экрана и их разрешения. Проблема в следующем:

В разрешениях Ultra HD Gnome (это делает Gnome или это драйвер видеокарты?) масштабирует окна, чтобы они были больше. Это имеет смысл, иначе панель Firefox, например, была бы тонкой линией. Но проблема в том, что когда я перемещаю окно (например, Firefox) с одного монитора на другой, это масштабирование сохраняется. В результате все выглядитогромныйна моем мониторе 1920×1080, хотя разрешение определяется правильно.

  1. Это ошибка? Если да, то чья это вина? Gnome, Intel HD graphics или Linux Kernel?
  2. Могу ли я это исправить?

решение1

  1. Вкратце: это не ошибка, а просто не самое идеальное решение для комфортного использования экранов HiDPI.

Похоже, эти решения вытекают из того факта, что большинство программ не компенсируют автоматически мониторы с более высоким DPI. Если бы мы оставили все как есть (без масштабирования или настроек DPI), многие программы в конечном итоге выглядели бы крошечными на экране HiDPI. Таким образом, компенсация может быть сделана на уровне ОС (см.Информация о HiDPI для Arch Linux), но это вызывает проблему, если у вас два экрана с разной плотностью пикселей.

  1. При наличии внутреннего экрана HiDPI с разрешением 3200x1800 и внешнего экрана с разрешением 1920x1080 должны работать следующие конфигурации (проверено на Dell XPS9350 и XPS9360).

Настройте внешний справа:

xrandr --dpi 276 --fb 7040x3960 --output eDP-1 --mode 3200x1800 --output 
DP-1 --scale 2x2 --pos 3200x0 --panning 3840x2160+3200+0

Настройте внешний слева:

xrandr --dpi 276 --fb 7040x3960 --output DP-1 --scale 2x2 --panning
-3840x2160+3200+0 --pos 0x0 --output eDP-1 --mode 3200x1800 --pos 3840x0

Если вы часто переключаетесь, может быть хорошей идеей поместить эти команды в ваш .bashrc как псевдоним. Например:

alias ext-config-right="xrandr --dpi 276 --fb 7040x3960 --output eDP-1 --mode 
3200x1800 --output DP-1 --scale 2x2 --pos 3200x0 --panning 3840x2160+3200+0"

решение2

Похоже, что для экранов Ultra HD существует единая настройка, которая применяется ко всем подключенным мониторам, хотя это может быть неподходящим, и, похоже, это настройка из X, возможно.

TheArch Linux викиесть раздел об этом, с несколькими вариантами использования xrandr для масштабирования монитора, где eDP1 — это экран ноутбука:

xrandr --output eDP1 --auto --output HDMI1 --auto --scale 2x2 --right-of eDP1

Однако, по-видимому, все еще могут возникнуть некоторые проблемы, связанные либо с тем, что эти два экрана перекрываются, либо, во-вторых, курсор может не покрывать все оба экрана.

если внутренний монитор имеет размеры AxB, внешний — CxD, а масштабирование — ExF, как предлагается в Arch wiki, то скрипт оболочки связан с пользователем с именемwvengens Github, которому нужно, чтобы дисплеи были предоставлены соответствующие. Это дает:

xrandr --output eDP1 --auto --pos ${(A-C)/2}x${D} --scale 1x1 \
--output HDMI1 --auto --scale 2x2 --pos 0x0

Для решения второй проблемы Arch предлагает использовать панорамирование:

xrandr --output eDP1 --auto \
--output HDMI1 --auto --panning [C*E]x[D*F]+[A]+0 --scale [E]x[F] --right-of eDP1

и наконец, если что-то из этого помогло, вики Ubuntu предлагает сохранить команду xrandr в /etc/gdm/Init/Default, прямо перед строкой initctl -q emit login-session-start DISPLAY_MANAGER=gdm. (извините, слишком низкая репутация для третьей ссылки..)

Связанный контент