Возможно ли иметь разные конфигурации DPI для двух разных экранов?

Я использую Ubuntu 12.04.3 с драйверами NVidia (319) для моей графической карты Quadro K2100M, и когда я переключаю свой основной экран ноутбука 3200x1800 в режим 1920x1080 (используя nvidia-settings), дисплей становится размытым ...

Я использую два экрана:

  • Мой основной экран - ЖК-дисплей с максимальным разрешением 1920x1200.
  • Справа от этого находится экран моего ноутбука (оригинальное разрешение 3200x1800).

Основная проблема в том, что в Ubuntu шрифт слишком мал на экране моего ноутбука. Из-за этого я хотел изменить разрешение своего ноутбука на 1920x1080.

Читая ответ Галгалеша , я попытался вычислить свой DPI , и вот конфигурация DPI, которую я должен иметь:

  • 94x94 для моего основного ЖК-дисплея screen 1920x1200
  • 235x236 для экрана моего ноутбука 3200x1800

Есть ли способ получить разрешение с двумя DPI с расширенным рабочим столом?

160
задан 11 December 2018 в 21:17

12 ответов

Похоже, что люди все еще пытаются работать с несколькими мониторами и дисплеями HiDPI. Хороший обходной путь описан в Arch wiki https://wiki.archlinux.org/index.php/HiDPI#Multiple_displays . Итак, у меня есть:

  • ноутбук asus ln303ux: 3200x1800,
  • внешний монитор: 1920x1200

Теперь я использую Ubuntu 14.10 и GNOME Shell 3.12.2 с довольно удобной поддержкой HiDPI. Поэтому я просто использую готовую поддержку HiDPI - коэффициент масштабирования равен 2 (его можно настроить через графический интерфейс). Это означает, что на внешнем мониторе у меня все получается вдвое больше допустимого. Таким образом, я использую xrandr; но вместо уменьшения масштаба экрана ноутбука я увеличиваю масштаб экрана внешнего монитора:

xrandr --output HDMI1 --scale 2x2 --mode 1920x1200 --fb 3840x4200 --pos 0x0
xrandr --output eDP1 --scale 1x1 --pos 320x2400

Итак, один за другим:

  1. - выход HDMI1 в моем случае это внешний экран, eDP1 - ноутбук экран.
  2. - масштаб 2x2 - сделать все на внешнем экране вдвое меньше
  3. - режим XxY - явно установить разрешение экрана (не требуется, если он уже установлен)
  4. - fb XxY - установить размер виртуального экрана (фреймбуфер) ( важно без этого вы сможете использовать только четвертую часть экран). В моем случае один экран был поверх другого, поэтому я сложил эффективные высоты 2400 + 1800 = 4200. Также обратите внимание, что максимальный размер буфера кадра может быть указан в xorg.conf - тогда вы не можете его превышать (это записано в первой строке вывода xrandr -q ).
  5. - pos XxY ] - в моем случае я установил абсолютное позиционирование экранов, поэтому экран моего ноутбука находится прямо в нижней части внешнего экрана. Значение Y в два раза больше высоты внешнего монитора.

Вот и все! Все настолько четкое, насколько могло быть.

К вашему сведению: чтобы получить имена экранов и доступные разрешения, можно запустить xrandr --current . Более подробную информацию о настройке разрешения можно найти здесь: https://wiki.ubuntu.com/X/Config/Resolution .

ОБНОВЛЕНИЕ - ВАРИАНТ 2: еще один интересный обходной путь для приложений, поддерживающих GTK3 . Если я обычно использую только одно приложение на большом экране (например, некоторую IDE, например, leksah), я не изменяю размер экрана, а запускаю приложение с масштабированием до исходного размера

env GDK_SCALE=0.5 GDK_DPI_SCALE=0.5 CLUTTER_SCALE=0.5 appname
143
ответ дан 11 December 2018 в 21:17

Почему он размыт?

На вашем экране всегда отображается 3200x1800 пикселей. Если вы снижаете разрешение экрана на вашем компьютере, это означает, что ваш экран должен масштабировать изображение, чтобы соответствовать вашему экрану. В зависимости от соотношения между собственным разрешением и текущим разрешением это масштабирование приведет к размытости изображения.

Дополнительную информацию о масштабировании и собственном разрешении можно найти здесь: https://en.wikipedia.org/wiki/Native_resolution

Как увеличить текст?

Если текст слишком маленький, у вас есть два варианта:

1. Изменить размер шрифта Ubuntu

Как изменить шрифты и размер?

2. Изменение DPI (увеличит не только текст, но и весь интерфейс)

Как найти и изменить экран DPI? (ответ @whtyger)

9
ответ дан 11 December 2018 в 21:17

Я использовал решение artmem, но столкнулся с проблемой мыши, упомянутой в EoghanM. Обходной путь, который я нашел в старом баг-репортаже, связанном с --panning.

I'm shooting for: - DP1-2 3840x2160 в родном DIP. - eDP1 1366x768, масштабируется, чтобы выглядеть разумно справа от DP1-2.

Я получаю это, имея буфер кадра, который похож на DP1-2 + (2x eDP1), затем я масштабирую все, что идет к eDP1 на 1/2.

Это должно быть просто, но xrandr немного хитрый.

Здесь -масштаб используется, чтобы уменьшить все, что идет к eDP1 на 1/2. -панирование такое же, как и eDP1 в исходном буфере кадра с позицией (+3840+0) справа от DP1-2. +0+2160 было бы ниже.

xrandr -d :0 --fb 6572x3696 --output DP1-2 --mode 3840x2160 --scale 1x1 --rate 60 --pos 0x0 --primary

# sometimes panning get applied incorrectly when switching from some other mode, running it twice is a work around
xrandr -d :0 --output eDP1 --off
xrandr -d :0 --fb 6572x3696 --output eDP1  --mode 1366x768  --scale 2x2 --panning 2732x1536+3840+0
xrandr -d :0 --fb 6572x3696 --output eDP1  --mode 1366x768  --scale 2x2 --panning 2732x1536+3840+0

Я также установил Xft.dpi на 185

$ cat ~/.Xresources
Xft.dpi: 185

Когда я отключаю питание от внешнего монитора, я запускаю :

xrandr -d :0 --output DP1-2 --off
xrandr -d :0 --fb 2732x1536 --output eDP1  --mode 1366x768  --scale 2x2 --panning 2732x1536+0+0 --pos 0x0 --primary

Это выглядит не очень хорошо, но я не очень далеко от своего рабочего стола. Вы можете обойти это, изменив Xft.dpi и перезапустив все свои настольные программы. Я не знаю, как изменить Xft.dpi и затем заставить клиентов использовать его без перезапуска.

8
ответ дан 11 December 2018 в 21:17

Мне удалось решить эту проблему (с проблемами), используя детали, описанные в следующем обсуждении на github: https://github.com/linuxmint/Cinnamon/issues/3606

Внешний монитор QHD (2560X1440) , Внутренний монитор / монитор ноутбука 3200x1800

xrandr --output eDP-1 --scale 1x1 --pos 0x2880
xrandr --output DP-1 --mode 2560x1440 --scale 2x2 --fb 5120x4680

ИЛИ

Внешний монитор FHD (1920x1080), Внутренний монитор / монитор ноутбука 3200x1800

xrandr --output eDP-1 --scale 1x1 --pos 0x2160
xrandr --output DP-1 --mode 1920x1080 --scale 2x2 --fb 3840x3960

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

Linux / Gnome 2017 года требует решения для многомониторного смешанного масштабирования. И в Windows 10, и в OS X эта проблема решена без необходимости прибегать к исправлениям из командной строки, которые частично работают (проблема разрывов недопустима для игр)

4
ответ дан 11 December 2018 в 21:17

Dawn it-tweġibiet huma kollha kbar, u għenuni qabel, iżda

sudo apt-get upgrade 

reċenti ħassar ir-randr-config tiegħi! Waqt li ppruvajt nirrestawra l-issettjar tiegħi sibt li ma stajtx inġib iktar il-maws lil hinn mill-aqwa kwadrant 1/4 tat-tieni skrin, irrispettivament mill-input --fb. Minn https://wiki.archlinux.org/index.php/HiDPI#Side_display Eventwalment skoprejt li ż-żieda tal-panning għamlet l-iskuża. Ukoll, l-użu ta '' --right-of 'jew' --left-of 'huwa aktar sempliċi minn' --pos '.

"Ġenerikament jekk il-monitor HiDPI tiegħek (laptop) huwa pixels AxB u l-monitor regolari tiegħek (estern) huwa CxD u qed tiskala minn [ExF], il-linja tal-kmand għad-dritt tal-lemin hija: "

xrandr --output eDP-1 --auto --output HDMI-1 --auto --panning [C*E]x[D*F]+[A]+0 --scale [E]x[F] --right-of eDP-1
7
ответ дан 11 December 2018 в 21:17

У меня есть устаревший монитор 1024x768, подключенный к (менее устаревшему) ноутбуку.
. Окна, выводимые в совершенно разных размерах, намного больше во внешнем мониторе (который имеет более старый, больший шаг точек)
. Я нашел команду для масштабирования монитора:

xrandr --output VGA-1 --scale 1.5x1.5

VGA-1 - это внутреннее имя монитора, которое было найдено при выполнении следующей команды:

xrandr --current | grep connected

В результате старый монитор теперь отображает свое содержимое почти в том же размере, что и ноутбук.

Любопытно, что он работает с масштабированием х1,5, но не 1,45, дисплей (в моем случае) становится черным.

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

Я запустил программу:

arandr &

для установки относительных позиций экрана, чтобы исправить это.
Он работает так же, как и Настройки > Устройства > Отображает .

Я установил его с:

sudo apt-get install arandr

Спасибо @LuisAlvarado и другим за то, что поделились своими знаниями!

2
ответ дан 11 December 2018 в 21:17

Первый запуск $ xrandr для отображения всех выходных данных

Screen 0: minimum 320 x 200, current 7680 x 2160, maximum 8192 x 8192
eDP-1 connected primary 3840x2160+0+0 (normal left inverted right x axis y axis) 344mm x 194mm
   3840x2160     60.00*+  59.98    59.97  
   3200x1800     59.96    59.94  
   2880x1620     59.96    59.97   
DP-1 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)
DP-3 connected 3840x2160+3840+0 (normal left inverted right x axis y axis) 521mm x 294mm
   1920x1080     60.00*+  50.00    59.94  
   1920x1080i    60.00    50.00    59.94  
   1680x1050     59.88  
   1280x1024     75.02    60.02

Как вы можете видеть в этом случае второй монитор подключается к DP-3 Затем вы можете перепродать дисплей: $ xrandr --output DP-3 --auto --scale 2x2

0
ответ дан 11 December 2018 в 21:17

У меня была аналогичная проблема, и я решил ее таким образом.

У меня есть внешний большой экран 24 дюйма 3840x2160 и ноутбук такое же разрешение 3840x2160, но маленький экран 15,4 дюйма

Я хотел, чтобы экран ноутбука был увеличен, потому что масштабирование по умолчанию слишком мало ..

Уменьшение масштаба с помощью xrandr, поскольку мы обычно видим результаты в размытом экране, решение состоит в том, чтобы масштабировать все вверх с помощью xrandr используйте коэффициент масштабирования gnome:

Вот как это сделать (внешний экран поверх экрана ноутбука, но вы можете расположить его по-другому, если измените параметры pos)

xrandr --output DP-0 --primary --mode 3840x2160  --pos 0x0 --scale 2x2  --rotate normal --output DP-2 --mode 3840x2160 --pos 0x4320 --scale 1x1  --rotate normal --output DP-1 --off

Пояснения:

--output : DP-1 is the external screen, DP-2 is the laptop screen (use xrandr -q to get your devices names)
--mode : both screen have same definitions 3840x2160
--scale 2x2 for external, 1x1 for laptop, this is "relative" to the primary which is external screen here..
--pos : external screen is at position 0x0, laptop screen is bellow at pos 0x(2160*2)=0x4320 because external screen is scalled by 2

Затем

gsettings set org.gnome.desktop.interface scaling-factor 2

ИЛИ

gsettings set org.gnome.settings-daemon.plugins.xsettings overrides "{'Gdk/WindowScalingFactor': <2>}"

enter image description here

3
ответ дан 16 November 2019 в 09:33

Я трачу часы на решение этой проблемы. У меня ноутбук 4k и внешний монитор 1080p. Если я установил масштабирование на «200%», внешние мониторы отображали увеличенный текст значков и т. Д.

Я пробовал команды xrandr с «--scale», но они не дали мне ожидаемых результатов. Итак, у меня есть команда xrandr, которая отлично работает для меня. Я хочу, чтобы кто-то еще нашел ее полезной.

xrandr --output HDMI-1-1 --mode 1920x1080 --pos 0x0 --rate 60.00 --transform 2,0,0,0,2,0,0,0,1 --output eDP-1-1 --mode 3840x2160 --pos 0x2160 --primary --rate 60.00

Эта команда работает как внешний монитор с масштабированием до «100%» и встроенным экраном с масштабированием до «200%». Эта команда помещает внешний монитор над встроенным. Имейте в виду, что вы, вероятно, измените имена --output на свои.

Обратите внимание, что 2160 в - pos 0x2160 не имеет ничего общего с высотой eDP-1-1 (в моем случае это просто случайно). Фактически это число является высотой верхнего монитора ( 1080 в моем случае), исправленной преобразованием (так 1080 * 2 в моем случае).

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

Наконец, , вы можете игнорировать флаги --rate. Самый важный флаг здесь - - transform . А положение зависит от разрешения экрана и размещения. Используя эти команды, у меня есть предварительный просмотр Arandr, подобный этому:

Arandr screenshot

монитор 1080p виртуально настраивается, чтобы занимать вдвое больше места. Благодаря идеально выровненным мониторам, когда я перемещаю мышь с одного экрана на другой, она появляется в одной и той же горизонтальной координате

1
ответ дан 5 January 2021 в 23:15

Я создал сценарий для автоматизации вычислений в anwser artem:

#!/usr/bin/env bash

# usage:
# ./script.sh 8 # to set scale 1.8

Y1=1440
X2=1680
Y2=1050

xrandr --output HDMI2 --scale 1.$1x1.$1 --fb $(($X2 * 1$1 / 10))x$(($Y1 + $Y2 * 1$1 / 10)) --pos 0x0
xrandr --output eDP1 --scale 1x1 --pos 0x$(($Y2 * 1$1 / 10))

Это уродливо, потому что bash не поддерживает операции с числами с плавающей запятой, но он работает.

0
ответ дан 5 January 2021 в 23:15

Я попробовал все вышеперечисленное, и, похоже, ничего не работает безупречно. В конце концов, я просто поместил две терминальные записи в свое меню Fluxbox.Один для дисплея с высоким разрешением, другой для низкого разрешения.

[exec] (Terminal 9pt) { xterm -fa Hack:size=9 } <>
[exec] (Terminal 12pt) { xterm -fa Hack:size=12 } <>
0
ответ дан 5 January 2021 в 23:15

В Ubuntu 20.04 я все решил, щелкнув Дробное масштабирование в нижней части настроек экрана. Это позволит масштабировать каждый монитор отдельно.

2
ответ дан 5 January 2021 в 23:15

Другие вопросы по тегам:

Похожие вопросы: