Приложение масштаба по-другому на различных мониторах - Ubuntu 16.04

Я нашел много очень основательных статей/ответов об этой теме:

И конечно:

Однако я все еще борюсь. Моим ноутбуком является Dell XPS15. Его дисплей 3840x2160. Я попробовал различные внешние мониторы, но в данный момент тем, который я использую, является также Dell с разрешением 1920x1080.

Когда я подключаю внешний монитор, некоторые панели сразу становятся очень маленькими на 3840x2160 экран. Когда я пытаюсь увеличить масштаб сборки - в дисплее, хромовых масштабах, моих масштабах IDE, но окно дисплеев наряду с другими окнами как настройки NVIDIA X Server остается очень маленьким. Я попытался играть с Масштабом все содержание окна для соответствия в Дисплее, но напрасно. Это является или слишком большим на внешнем экране или к маленькому на сборке - в. Я также попробовал xrandr параметрическим усилителем масштаба, но он дает мне:

xrandr --output HDMI-1 --scale 2x2
X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  140 (RANDR)
  Minor opcode of failed request:  26 (RRSetCrtcTransform)
  Value in failed request:  0x40
  Serial number of failed request:  38
  Current serial number in output stream:  39

Идеально, я хочу несколько окон того же приложения (скажем, Chrome или Идея Intellij быть открытым на различных дисплеях и масштабироваться независимо на них).

Править

Я не ищу Масштаб для меню и строки заголовка, мне нравится способ, которым панели. Я хочу содержание окон, масштабируемое независимо. Дисплеи UI вынуждают меня или масштабировать все окна для соответствия дисплею созданного идентификатора или внешнему дисплею. В результате:

  1. Масштабируйте все содержание окна для соответствия Сборке - В Дисплее:

    Сборка - В Дисплее - все выглядит прекрасным; Внешний дисплей - все огромно.

  2. Масштабируйте все содержание окна для соответствия Внешнему дисплею:

    Сборка - В Дисплее - очень маленький; Внешний дисплей - все выглядит прекрасным.

6
задан 21 May 2019 в 17:12

2 ответа

Я нашел простое решение. Я запускаю Ubuntu 18.04. Это - мой вывод xrandr:

light@light:~$ xrandr
Screen 0: minimum 8 x 8, current 5760 x 2160, maximum 32767 x 32767
HDMI-0 connected 1920x1080+3840+92 (normal left inverted right x axis y axis) 476mm x 268mm
   1920x1080     60.00*+  59.94    50.00  
   1680x1050     59.95  
   1600x900      60.00  
   1440x900      59.89  
   1280x1024     60.02  
   1280x800      59.81  
   1280x720      60.00    59.94    50.00  
   1024x768      60.00  
   800x600       60.32  
   720x576       50.00  
   720x480       59.94  
   640x480       59.94    59.93  
DP-0 connected primary 3840x2160+0+0 (normal left inverted right x axis y axis) 382mm x 214mm
   3840x2160     60.02*+  48.02  
DP-1 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)
DP-1-1 disconnected (normal left inverted right x axis y axis)
HDMI-1-1 disconnected (normal left inverted right x axis y axis)
DP-1-2 disconnected (normal left inverted right x axis y axis)
HDMI-1-2 disconnected (normal left inverted right x axis y axis)
light@light:~$

я просто работал ниже команды, и она работала отлично:

light@light:~$ xrandr --output HDMI-0 --scale 2x2 --mode 1920x1080
light@light:~$

--scale 2x2 подразумевает, делают все на внешнем экране вдвое более маленьким.

--mode разрешение, которое Вы хотите.

Вот именно

0
ответ дан 23 November 2019 в 08:04

У меня есть драйвер Nvidia 340.98 с GT218M [NVS 3100M], Xubuntu 16.04, любые результаты ниже от этой среды, если я не упоминаю иначе. Вот моя информация о тестовой среде, вывод:

sudo apt-get install pastebinit; \
sudo sh -c "lsb_release -sd; \
 dmidecode -s system-product-name; echo ==; \
 lshw -c display; echo ==; \
 xrandr --verbose; echo ==; \
 cat /etx/X11/xorg.conf" \
 | tee ~/Desktop/ubuntu-graphic-info.txt \
 | pastebinit

Странный и сложный стек для отладки особенно использующих собственных драйверов. Большую часть времени я получаю неожиданные поведения, может произойти из-за отсутствия знаний о текущей установке стопки графики Linux.

  • Я записал этот ответ прежде, который может представить некоторые средства отладки как xtrace
  • Постарайтесь не выполнять несколько/последовательных xrandr команды, только после того, как X-сервер сбрасывается. Та же команда может иметь другой результат в зависимости от предыдущих команд. Я заметил это с --scale (см. тестовый сценарий из моего ответа, связанного выше), --transform & --fb. Все еще не знайте простой способ только выходом из системы/входом в систему. Поэтому всегда выход из системы/вход в систему прежде, чем сделать другую пробную версию.
  • Снимки экрана берут только изображение размера пикселя от FB, таким образом, я добавлю фотографии камеры для показа реальных результатов.

Метод 1: xrandr --output .. --scale HCoefxVCoef или --scale-from WxH

Отметьте, хорошо работает для меня. --scale ярлык для --transform, см. method3

(VGA 0 ниже DP-3)

xrandr \
--output DP-3 --mode 1280x800 --scale 1x1 --pos 0x0 --fb 2880x2600 \
--output VGA-0 --mode 1440x900 --scale 2x2 --pos 0x800

или:

xrandr \
--output DP-3 --mode 1280x800 --pos 0x0 --fb 2880x2600 \
--output VGA-0 --mode 1440x900 --scale-from 2880x1800 --pos 0x800

Вычисление размера FrameBuffer:

width = max(1280,1440*2) = 2880
height = 800+900*2 = 2600

Результаты:

  • Nvidia xrandr масштабирует снимок экрана

    nvidia xrandr scale screenshot

  • Nvidia xrandr масштабирует фотографию

    nvidia xrandr scale photo

Метод 2: nvidia-settings Порт представления, In/Out

Отметьте, не работайте хорошо. nvidia-settings не изменяет кадровый буфер на необходимый размер как в xrandr команда. Это кажется ошибкой (отчасти, nvidia имеет его собственный FB), нуждаются в большем количестве исследования.

Попробованный для тиражирования xrandr установите непосредственно использование nvidia-settings (Я использовал xrandr от method1, отметил установку Nvidia, настройки сброса, затем использовал настройки Nvidia непосредственно):

  1. gksu nvidia-settings → Конфигурация дисплея X-сервера
  2. Выберите внешний монитор → усовершенствованный...
  3. Сделайте ViewPortIn & Panning дважды ViewPortOut (который совпадает с исходным разрешением),
  4. Оставьте внутренний монитор без изменений, затем Применяются

Пример:

Результаты: Заметьте указатель мыши, он может достигнуть всех краев 2-го монитора, даже он только тянет верхнюю левую четверть.

  • настройки Nvidia viewportin снимок экрана

    nvidia-settings viewportin screenshot

  • настройки Nvidia viewportin фотография

    nvidia-settings viewportin photo

Обновление: Ну, я мог наконец получить прием обходного решения. Добавьте 1 пкс к ширине или высоте панорамирования (Panning)

    Panning:     2881x1800 or 2880x1801

Новые Результаты: Я не могу объяснить это, просто фон повреждается, если я использую ниже, иначе каждая вещь кажется хорошо.

  • настройки Nvidia viewportin с панорамированием снимка экрана приема

    nvidia-settings viewportin with panning trick screenshot - below пониженный качество цветопередачи вышеупомянутого изображения для создания меньше затем 2 МБ imgur пределом nvidia-settings viewportin with panning trick screenshot - right of

  • Nvidia - настройки viewportin с панорамированием фотографии приема

    nvidia-settings viewportin with panning trick photo - below nvidia-settings viewportin with panning trick photo - right of

Метод 3: xrandr --output .. --transform "H,0,0,0,V,0,0,0,1"

Отметьте, хорошо работает для меня, то же как method1

(VGA 0 прав на DP-3)

xrandr \
--output DP-3  -primary --mode 1280x800 --pos 0x0 --transform "1,0,0,0,1,0,0,0,1" --fb 4160x1800 \
--output VGA-0 --mode 1440x900 --transform "2,0,0,0,2,0,0,0,1" --right-of DP-3

Вычисление размера FrameBuffer:

width = 1280+1440*2 = 4160
height = max(800,900*2) = 1800

Результаты:

  • Nvidia xrandr преобразовывает снимок экрана

    nvidia xrandr transform screenshot

  • Nvidia xrandr преобразовывает фотографию

    nvidia xrandr transform photo

3
ответ дан 23 November 2019 в 08:04

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

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