Чи можливі різні конфігурації DPI для двох різних екранів?


122

Я використовую 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: Отже, чи є у вас спосіб зберігання обох моніторів у роздільній здатності екрана? Я думаю, що це запитує Ентоні.
beldaz

2
@beldaz Моєю відповіддю було перегляд 1 питання . У ній не було згадано нічого, пов’язаного з налаштуванням подвійного екрана. Оскільки питання було суттєво змінено, це викликає брови для будь-яких постів, змінених після цієї дати. Це в основному скасовує все, що сприяло, і справді знижує мотивацію допомагати. На мій погляд, користувачі повинні задати нове запитання.
gertvdijk

@gertvdijk Вибачте, зараз має сенс.
beldaz

Цікаво, чи можливість використання Wayland у новітньому Ubuntu полегшує це.
mkataja

Відповіді:


119

Здається, люди все ще намагаються працювати з кількома моніторами та дисплеями 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 (його можна встановити через GUI). Це означає, що на зовнішньому моніторі я отримую все вдвічі більше, ніж прийнятне. Таким чином, я використовую 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 тут подвоює висоту зовнішнього монітора.

І це все! Все настільки чітке, як могло бути.

FYI: для отримання назв екранів та доступних дозволів можна запустити 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, що сидить ліворуч від мого ноутбука hiDPI 3200x1800: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 - трохи хитро.

Тут - масштаб використовується, щоб зменшити все на 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, а потім змусити клієнтів використовувати його без перезавантаження.


Панорамування було останньою частиною головоломки - вона вирішила, що курсор застряг на чверті екранного питання. Дякую @Brian!
rtindru

2
"запустити його двічі" ???? Holy pixel, він працює (я вже застосовував панірування, але він правильно застосовується лише у тому випадку, якщо я виконую одну і ту ж команду двічі).
Ріккардо Галлі

Так, я помітив, що це спрацьовує кожен другий раз, коли я його запускаю, тому подумав, що спробую двічі, і, ось, ми.
Брайан К.

Гаразд, тому це не працює з ядром 4.5.2. Я встановив саме це ядро ​​для вирішення проблеми, пов’язаної з докером в 4.5.1, і тепер вищевказаний сценарій залишає мені чорний екран. Щоб виправити це на 4.5.2, я спочатку виконую команди eDP1 без --off, а потім команди DP1-2.
Брайан К.

1
Нарешті працювали з паніруванням! У мене все ще є гнучка миша та екран (оскільки я почав використовувати xrandr). Будь-яка ідея?
hsandt

4

Мені вдалося вирішити це (з питаннями), використовуючи деталі, викладені в наступній дискусії про github: https://github.com/linuxmint/Cinnamon/isissue/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

Вони працюють, але в моніторі високої роздільної здатності (ноутбука) є велика кількість розривів, коли я переміщу вікна, змінюю розмір екранів або прокручую веб-переглядач. Це здається, що рішення про відшкодування програмного забезпечення (яке містить усі ці проблеми розриву та повільного оновлення).

У 2017 році Linux / Gnome потребує розв'язання багатомоніторного та змішаного масштабування. І Windows 10, і OS X вирішили цю проблему, не вдаючись до виправлень, які частково спрацьовують в командному рядку (проблема вирішення не прийнятна для ігор)


1
Це нова відповідь чи ви намагаєтеся повідомити про помилку?
user68186

Це розробка вже існуючої відповіді, що має більше варіантів, на які можна скористатися. Відповідь, надана @artem вище, пояснює, як ці налаштування працюють. Я просто спробував надати 2 варіанти, які можна використовувати, як для людей, у яких або QHD, або FHD зовнішній монітор, і 4K основний монітор / монітор ноутбука. Помилка в сльозі, яку ви бачите з цим рішенням. Це властиво такому підходу.
Jeets

2
З поширенням налаштувань 4k та мультироздільної здатності я погоджуюсь із заключним пунктом, який потребує вирішення. Раніше було не так вже й погано, але зараз я просто зруйнував моє налаштування на одному моніторі, коли у мене є 4k. Сподіваємось, Ubuntu 18 LTS вони виправлять це.
нейронет

3
Це 2018 рік ... все-таки той самий sh1t :)
Стефанос Каланціс

Wayland чудово підходить для цього. За винятком лише цього ... Маю гарний досвід роботи з 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
@Emily: Я думаю, що ця відповідь належить тут. Я сьогодні використав відповідь Артема і мав точну проблему ONECore (вказано мишею лише лівий верхній квадрант екрану). На щастя, я побачив цю відповідь, і панінг спрацював миттєво.
BrainCore

Так, вибачте, я хотів, щоб це була відповідь на відповідь @ artem, але Stackexchange є надзвичайно приголомшливим і не дозволить мені відповісти там, поки не отримаю 50 очок брауні.
ONECore

Також зауважте, що це не здається стійким, тому, якщо ви не додасте його до xorg.conf, воно вимикається при кожному перезапуску. Але тоді, якщо ви додасте його туди, це змусить цю настройку не залежно від цього (іноді я не підключаю монітор). Тому мені здається, що просто легко створити оболонку та виконати її, коли я захочу. Просто додайте код вище до текстового файлу, що закінчується на .sh (наприклад, резолюція.sh), а потім зробіть його виконуваним з "chmod 0700 resolution.sh" у терміналі.
ONECore

Дуже дякую, що поділилися своїм досвідом @BrainCore!
Хе Джин

1

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

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

VGA-1 - це внутрішня назва монітора, знайдена за допомогою наступної команди:

xrandr --current | grep connected

Ефект полягає в тому, що тепер старий монітор виводить його вміст майже такого ж розміру, як і ноутбук.

Що цікаво, він працює з масштабуванням x1.5, але не 1,45, дисплей (у моєму випадку) стає чорним.

Коли я запустив коментар за шкалою, вперше результат був лякаючим, оскільки вміст обох екранів перекривався. Наприклад, вказівник курсора з’явився двічі.

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

arandr &

встановити відносні положення екрана для його виправлення.
Він працює як Налаштування> Пристрої> Відображення налаштувань.

Я встановив його за допомогою:

sudo apt-get install arandr

Дякуємо @LuisAlvarado та іншим за те, що поділилися своїми знаннями!


Це працює для мене тимчасово, але не тримається, якщо я перезавантажуюсь. Я думаю, що мені потрібно знайти сценарій для того, щоб робити те arandr, що тут робиться, а потім помістити всю справу в мій bashrc чи щось таке. Дякую!
Макс фон Гіппел

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

0

Запустити кулак $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.