Как настроить физический размер монитора в Ubuntu?

Я работаю на системе с двумя подключёнными мониторами, и внезапно озадачился их разными физическими размерами.
Основной — ноутбук с диагональю 14" и разрешением 1600х900. Второй — «большой» монитор (17", 1280х1024).
Проблема в том, что система воспринимает пропорции мониторов только исходя из их разрешения.

Например, окошко терминала, расположенное «между» мониторами выглядит примерно вот так:

image

Вопрос: возможно ли «подшаманить» систему так, чтобы физические размеры так же учитывались?
Как это сделать?

Ubuntu 12.04 с дефолтным Unity
  • Вопрос задан
  • 13844 просмотра
Решения вопроса 1
@klirichek Автор вопроса
В общем, практически получилось. За исключением одного момента, но о нём позже.

Лезть в глобальные настройки xorg я не стал.
Утверждение о неучёте DPI тоже оказалось не совсем верным.

Шаг номер раз: смотрим, как оно сейчас.
alexey@vubuntu:~$ xrandr
Screen 0: minimum 320 x 200, current 2880 x 1024, maximum 8192 x 8192
LVDS1 connected 1600x900+0+124 (normal left inverted right x axis y axis) 309mm x 174mm
   1600x900       60.0*+   40.0  
   1440x900       59.9  
   1360x768       59.8     60.0  
   1152x864       60.0  
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        59.9  
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 connected 1280x1024+1600+0 (normal left inverted right x axis y axis) 338mm x 270mm
   1280x1024      60.0*+   75.0  
   1152x864       75.0  
   1024x768       75.1     70.1     60.0  
   832x624        74.6  
   800x600        72.2     75.0     60.3     56.2  
   640x480        72.8     75.0     66.7     60.0  
   720x400        70.1  
DP1 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
HDMI3 disconnected (normal left inverted right x axis y axis)
DP2 disconnected (normal left inverted right x axis y axis)
DP3 disconnected (normal left inverted right x axis y axis)


— сразу видно и разрешение, и физические размеры мониторов.
Что мешает системе учесть физические размеры сразу? Неизвестно. Но факт в том, что они есть, и они верные.

Шаг номер два. Вычисляем коэффициент масштабирования (ну, привык я пятоном пользоваться, как калькулятором):

alexey@vubuntu:~$ python
Python 2.7.3 (default, Aug  1 2012, 05:14:39) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 900/174.0
5.172413793103448
>>> 1024/270.0
3.7925925925925927
>>> 5.1724/3.79259
1.3638173385470087
>>>


Шаг номер три: применяем полученный коэффициент и смотрим, что в итоге получилось:
alexey@vubuntu:~$ xrandr --output HDMI1 --scale 1.3638x1.3638
alexey@vubuntu:~$ xrandr
Screen 0: minimum 320 x 200, current 3346 x 1397, maximum 8192 x 8192
LVDS1 connected 1600x900+0+124 (normal left inverted right x axis y axis) 309mm x 174mm
   1600x900       60.0*+   40.0  
   1440x900       59.9  
   1360x768       59.8     60.0  
   1152x864       60.0  
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        59.9  
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 connected 1746x1397+1600+0 (normal left inverted right x axis y axis) 338mm x 270mm
   1280x1024      60.0*+   75.0  
   1152x864       75.0  
   1024x768       75.1     70.1     60.0  
   832x624        74.6  
   800x600        72.2     75.0     60.3     56.2  
   640x480        72.8     75.0     66.7     60.0  
   720x400        70.1  
DP1 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
HDMI3 disconnected (normal left inverted right x axis y axis)
DP2 disconnected (normal left inverted right x axis y axis)
DP3 disconnected (normal left inverted right x axis y axis)


Это уже похоже на правду!
Остался один момент: мониторы выровнены по нижнему краю. В начальном варианте это означало, что левый смещён на (1024-900)-124 пикселя по вертикали. Теперь «большой» стал имитировать вертикальное разрешение уже 1397; стал быть смещение нужно задать в 497 пикселей:

alexey@vubuntu:~$ xrandr --output LVDS1 --pos 0x497


Получилось вот так:
image

Но один момент остался — это координаты мыши. Она по-прежнему думает, что имеет дело с 1280х1024 — и поэтому на отмасштабированном мониторе при перемещении вниз/вправо в конце концов упирается в эту невидимую границу. На картинке на большом мониторе мышь видно в её самой нижней-правой возможной позиции (т.е. там её нельзя сдвинуть ни ниже, ни правее).

Если кто подскажет, как побороть и этот момент тоже — буду премного благодарен!
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
kotomyava
@kotomyava
Системный администратор
Я на практике не пробовал подгонять именно два монитора(у меня была необходимость поставить разный dpi по горизонтали и вертикали), но можно посчитать DPI мониторов по горизонтали и вертикали, и указать их в xorg.conf вот таким образом, естественно подставив нужные значения:

Section "Monitor" Identifier "My small monitor" Modes "1024x600" Option "DPI" "118 x 118" EndSection Section "Monitor" Identifier "My big monitor" Modes "1024x600" Option "DPI" "96 x 96" EndSection
Ответ написан
volanddd
@volanddd
Насколько я в курсе, текущая версия не учитывает dpi, так что это будет весьма проблемно
Ответ написан
Комментировать
unwrecker
@unwrecker
По выводу xrand во втором случая я вижу, что установлено разрешение выше штатного. И оно, по всей видимости, масштабируется в меньшее. Если это так, то описанный метод адски костыльный так как не даёт вывода типа точка-в-точку и добавляет мыльности.

Интересно вообще: это проблема unity или третьегнома? Во втором то dpi легко настраивалось.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы