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


123

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

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

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

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

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

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

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


3
Что ж, управление любым ЖК-экраном с не родным разрешением будет выглядеть размытым. Это связано с тем, что пиксели расположены фиксированным образом, а сигнал не соответствует этому. Что именно вы ожидаете? Возможно, отключить масштабирование? Но тогда он отображается только в середине экрана, а не во весь экран. Для оптимального отображения всегда держите его на собственном разрешении экрана. Я не думаю, что это как-то связано с Ubuntu.
— gertvdijk

2
@gertvdijk: Так есть ли у вас способ сохранить оба монитора в их родном разрешении экрана? Я думаю, это то, что спрашивает Энтони.
— Белдаз

2
@beldaz Мой ответ был на пересмотр 1 вопроса . Там не упоминалось ничего, связанного с настройкой двойного экрана в то время. Поскольку вопрос был значительно изменен, это вызывает удивление у всех постов, измененных после этой даты. Это в основном лишает законной силы все, что способствует, и действительно снижает мою мотивацию помочь. Пользователи должны задать новый вопрос вместо этого, по моему мнению.
— gertvdijk

@gertvdijk Извините, теперь имеет смысл.
— Белдаз

Интересно, облегчает ли это возможность использования Wayland в новейшей Ubuntu?
— mkataja

Ответы:


120

Кажется, что люди все еще пытаются работать с несколькими мониторами и дисплеями HiDPI. Хороший обходной путь описан в архивной вики 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. --output HDMI1в моем случае это внешний экран, eDP1это экран ноутбука.
  2. --scale 2x2 - сделать все на внешнем экране в два раза меньше
  3. --mode XxY - явно установить разрешение экрана (не обязательно, если оно уже установлено)
  4. --fb XxY- установить размер виртуального экрана (framebuffer) ( важно без этого, вы сможете использовать только четвертую часть экрана). В моем случае один экран был поверх другого, поэтому я добавил эффективные высоты 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

7
получил error of failed request: BadValue (integer parameter out of range for operation):-(
— Juh_

4
Эта --fbопция, кажется, не активирует более четверти 2x2экрана (курсор мыши нельзя перемещать за верхний левый квадрант)
— EoghanM

2
Масштабирование работает, но вы не потеряете HiDPI? Все выглядит масштабно и размыто.
— Энди

8
Для установки рядом с внешним монитором 1920x1080, сидящим слева от моего ноутбука с высоким разрешением 3200x1800 hiDPI:xrandr --output eDP1 --scale 1x1 --pos 3840x0 ; xrandr --output HDMI1 --scale 2x2 --mode 1920x1080 --fb 7680x2160 --pos 0x0
— Дэниел Бауэр

2
Параметр --fb равен 2 * внешний монитор + экран ноутбука
— Брайан С.

10

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

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

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

Как я могу сделать текст больше?

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

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

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

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

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


1
Так же, как примечание об увеличении размеров шрифта. Скорее увеличьте DPI, чтобы масштабировать весь пользовательский интерфейс. Это должно быть правильно распознано автоматически (чтение EDID с вашего дисплея), но если это не удается: как найти и изменить DPI экрана?
— gertvdijk

23
На самом деле это не ответ на мой вопрос. Я использую два разных экрана с разными разрешениями . Я сделал вычисления: мой левый главный ЖК-экран должен иметь разрешение 94x94 DPI, тогда как мой правый экран ноутбука должен иметь 235x235 DPI ... И я не могу найти никакого способа установить два разных разрешения DPI, кроме как настроить nvidia для запуска 2 отделил X, и тогда я не могу пропустить одно окно слева направо ... Windows намного лучше справится с этой проблемой :(
— Энтони О.

9
-1 за полное игнорирование сути вопроса
— Мартин Конечни

8
@AnthonyO. Пожалуйста, не меняйте свой вопрос после публикации ответа, который вам не нравится. На момент публикации этого ответа вы не упомянули ничего о настройке двух экранов (см. Редакцию 1 ). Изменение вашего вопроса лишает законной силы все, что уже опубликовано, и вы не должны этого делать. Вместо этого отмените редактирование вопроса и опубликуйте новый вопрос.
— gertvdijk

5
@MartinKonecny ​​Исходный вопросник существенно отредактировал свой вопрос, этот ответ действительно отвечает на его первоначальный вопрос, проверьте исправления.
— Джейми Китсон

7

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

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

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

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

Здесь --scale используется для уменьшения всего, что собирается в eDP1, на 1/2. --Panning совпадает с 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, а затем заставить клиентов использовать его без перезапуска.


Панорамирование было последней частью головоломки - оно решило проблему с курсором, который застрял на четверти проблемы с экраном. Спасибо, Брайан!
— rtindru

2
"запустить его дважды" ???? Святой пиксель, это работает (я уже применял панорамирование, но это правильно применяется, только если я запускаю одну и ту же команду дважды).
— Риккардо Галли

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

Хорошо, так что это не работает с ядром 4.5.2. Я установил именно это ядро ​​для решения проблемы, связанной с докером, в 4.5.1, и теперь приведенный выше скрипт оставляет меня с черным экраном. Чтобы исправить это на 4.5.2, я сначала выполняю команды eDP1 без --off, а затем - команду DP1-2.
— Брайан С.

1
Наконец то с панорамированием поработали! У меня все еще есть глючная мышь и экран (так как я начал использовать xrandr). Любая идея?
— 18:18

4

Я смог решить эту проблему (с проблемами), используя детали, изложенные в следующем обсуждении 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 эта проблема решена без необходимости прибегать к исправлениям, которые частично работают в командной строке (эта проблема не подходит для игр)


1
Это новый ответ или вы пытаетесь сообщить об ошибке?
— user68186

Это уточнение существующего ответа, с большим количеством вариантов, которые можно использовать. Ответ, предоставленный @artem выше, объясняет, как работают эти настройки. Я просто попытался предоставить 2 варианта, которые можно использовать как есть для тех, у кого есть внешний монитор QHD или FHD и основной монитор 4K / монитор ноутбука. Ошибка в разрыве, который вы видите с этим решением. Это присуще этому подходу.
— Джитс

2
С распространением 4k и множественным разрешением я согласен с последним пунктом, который требует разрешения. Раньше было не так уж и плохо, но теперь, когда у меня есть 4K, это просто разрушает мою установку на одном мониторе. Надеюсь, в Ubuntu 18 LTS это исправят.
— нейросеть

3
Это 2018 год ... все тот же дерьмо :)
— Стефанос Каланцис

Уэйленд отлично подходит для этого. За исключением того, что только для этого ... Получил хороший опыт с Wayland + KDE, лучше, чем Gnome + Wayland. Я вернулся к X из-за отсутствия поддержки некоторых программ, которые работают только на X, и из-за проблем со стабильностью. 2018 ...
— Виктор

4

Эти ответы все отлично, и помогли мне ранее, но недавно

sudo apt-get upgrade 

удалил мой randr-config! Пытаясь восстановить мои настройки, я обнаружил, что больше не могу вывести мышь за верхний 1/4-й сектор второго экрана, независимо от ввода --fb. Из https://wiki.archlinux.org/index.php/HiDPI#Side_display я в конце концов обнаружил, что добавление панорамирования сработало. Кроме того, использование «--right-of» или «--left-of» проще, чем «--pos».

«Обычно, если ваш HiDPI-монитор (ноутбук) имеет пиксели AxB, а ваш обычный монитор (внешний) имеет CxD, и вы масштабируете с помощью [ExF], командная строка для права:»

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

Это интересно, и определенно кажется, что это может быть кому-то полезно, хотя я точно не уверен, что это ответ на этот вопрос. Может быть, вы должны открыть, а затем ответить на свой вопрос? Не совсем уверен.
— Хи Джин,

1
@ Эмили: я думаю, что этот ответ принадлежит здесь. Сегодня я использовал ответ Артема, и у меня была точная проблема, заявленная ONECore (мышью можно было использовать только верхний левый квадрант экрана). К счастью, я увидел этот ответ, и панорамирование сработало мгновенно.
— BrainCore

Да, извините, я хотел, чтобы это был ответ на ответ @ artem, но Stackexchange супер клевый и не даст мне ответить, пока я не получу 50 очков брауни.
— ONECore

Также обратите внимание, что это не кажется постоянным, поэтому, если вы не добавите его в xorg.conf, он исчезнет при каждом перезапуске. Но затем, если вы добавите его туда, он заставит эту настройку, несмотря ни на что (иногда я не подключаю монитор). Поэтому мне очень легко просто создать оболочку и выполнить ее, когда захочу. Просто добавьте приведенный выше код в текстовый файл, заканчивающийся на .sh (например, resolution.sh), а затем сделайте его исполняемым с помощью «chmod 0700 resolution.sh» в терминале.
— ONECore

Большое спасибо за то, что поделились своим опытом @BrainCore!
— Хи Джин,

1

У меня устаревший монитор 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 и другим за то, что поделились своими знаниями!


Это работает для меня временно, но не прилипает, если я перезагружаюсь. Я думаю, что мне нужно найти сценарий, чтобы делать то arandr, что здесь делается, а затем поместить все это в мой bashrc или что-то еще. Спасибо!
— Макс фон Хиппель

arandr может экспортировать файл конфигурации. Я установил файл на своем рабочем столе и передавал его в arandr при каждой перезагрузке. Я не разработал сценарий, и теперь у меня есть монитор, и я больше не использую arandr.
— Хуан Ланус

0

Fist run $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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.