Вход:  Пароль:  
FreeSource: DualScreenWithRadeon ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |

Xrandr


a-la XINERAMA: один Screen, экран имеет ширину в два монитора


xorg.conf


Section "Server Layout?"


Identifier “radeon”

Screen «radeon|0»

...

End Section?


# остался от fglrx.


Section “Monitor”


Identifier «aticonfig-Monitor[0]"

Option "Vendor Name?" “ATI Proprietary Driver”

Option "Model Name?" “Generic Autodetecting Monitor”

Option “DPMS” “true”

Display Size? 375 302

End Section?


Section “Device”


Identifier «radeon|0»

Driver “radeon”

End Section?


Section “Screen”


Identifier «radeon|0»

Device «radeon|0»

Monitor «aticonfig-Monitor[0]"

Default Depth? 24

Option “Backingstore” “true”

Sub Section? “Display”

Depth 24

Modes “1280x1024”

'Virtual 2560 1024'

End Sub Section?

End Section?


Обращаю внимание на выделенный жирным Virtual. не будет его, <tt>xrandr</tt> может начать ругаться (в моем случае)


xrandr: screen cannot be larger than 1280x1280 (desired size 2560x1024)


как я понял, причина, что <tt>xrandr</tt> работает в пределах Virtual и за них не вылезает.


в принципе это вся конфигурация <tt>xorg</tt>. остальное делается динамически.


xrandr invocation

получение списка выводов


перво-наперво смотрим, какие выводы мы имеем:


Screen 0: minimum 320 x 200, current 1280 x 1024, maximum '1280 x 1280'


<font color=red>DVI-0</font> connected 1280x1024+0+0 (normal left inverted right x axis y axis) 0mm x 0mm


1280x1024 59.9*+ 60.0

1280x960 60.0

1024x768 60.0

800x600 60.3

640x480 59.9

<font color=red>DVI-1</font> connected 1280x1024+0+0 (normal left inverted right x axis y axis) 0mm x 0mm


1280x1024 59.9*+ 60.0

1280x960 60.0

1024x768 60.0

800x600 60.3

640x480 59.9

<font color=red>DVI-0</font> и <font color=red>DVI-1</font> – выводы для <tt>xrandr</tt> ( подставляется в <tt>output</tt>).


обращаю внимание на выделенное 1280x1280: это тот самый region, на котором рабоатает xrandr. меняется через Virtual, как сказано выше.


запуск dual-head режима


xrandr --output DVI-0 --left-of DVI-1


в большинстве случаев после этой команды ничего делать тне нужно.


привязка выхода к монтору


так случилось, что после запуска <tt>xrandr</tt> с <tt>left-of</tt>, второй монитор начал показывать один в один то, что показывает первый. но по taskbar'у fluxbox'а заметно, что двойной режим-то включен. исправило ситуацию следующие команды:


xrandr output DVI-0 --crtc 0 --auto


xrandr --output DVI-1 --crtc 1 --auto


здесь устанавливается привязка монтора (crtc) и вывода (output). <tt>auto</tt> указан для того, чтобы после этих команда мониторы не выключались.


уменщились/увеличились шрифты


второй проблемой, с которой я столкнулся, были шрифты. после запуска <tt>xrandr</tt> с <tt>--left-of</tt> dpi шрифтов изменились, как и размеры монитора в выводе <tt>xdpyinfo</tt>:


...


screen #0:


print screen: no

'dimensions: 1280x1024 pixels (360x270 millimeters)

resolution: 96x96 dots per inch

depths (7): 24, 1, 4, 8, 15, 16, 32

root window id: 0xa1

depth of root window: 24 planes

...


мне же нужно было:


screen #0:


...

print screen: no

'dimensions: 1280x1024 pixels (375x302 millimeters)'

resolution: 87x86 dots per inch

depths (7): 24, 1, 4, 8, 15, 16, 32

root window id: 0xa1

depth of root window: 24 planes

...

для чего я и указывал DisplaySize 375 302 в xorg.conf, но после <tt>xrandr</tt> DisplaySIze'' к сожалению сбросился.


установка вручную происходит следующим образом:


xrandr --output DVI-0 --fbmm 375x302


xrandr --output DVI-1 --fbmm 375x302


после перезапуска программ (<tt>fluxbox</tt> restart, <tt>opera</tt>, etc) шрифты вернулись на место.


сброс dual-head


чисто случайно испробовал я следующую команду:


xrandr --output DVI-1 --same-as DVI-0


после неё X сервер вернулся к clone режиму.


Помещение в автозапуск


в <tt>/etc/X11/xinit</tt> есть файл <tt>xrandrrc</tt>. он считывает <tt>/etc/sysconfig/xrandr</tt> и <tt>$HOME/.Xrandr</tt> записи вида:


:[0–9]* <xrandr options>


поэтому для атвтоматического запуска <tt>xrandr</tt> достаточно поместить в один из этих файлов команды. мне хватило следующих:


:0 --output DVI-0 --fbmm 375x302


:0 --output DVI-1 --fbmm 375x302


:0 --output DVI-0 --crtc 0 --auto


:0 --output DVI-1 --crtc 1 --auto


:0 --output DVI-0 --left-of DVI-1


Dual Screen режим


как в <tt>XINERAMA</tt>, так и в <tt>xrandr</tt> мне не понравилось, что после их запуска программы экраном считают не один монитор, а оба сразу. например программа установки обев растягивала картинку на оба монитора.


с другой <tt>xrandr</tt> для этого и предназначен, потому нужен был иной подход: радзделение мониторов по разным Screen'ам.


я нашел только, как это сделать статически:


Section "Server Layout?"


Identifier “radeon”

<font color=red>Screen «radeon|0»</font>

<font color=red>Screen «radeon|1» Right Of? «radeon|0»</font>

...

End Section?


Section “Monitor”


Identifier «aticonfig-Monitor[0]"

Option "Vendor Name?" “ATI Proprietary Driver”

Option "Model Name?" “Generic Autodetecting Monitor”

Option “DPMS” “true”

Display Size? 375 302

End Section?


Section “Monitor”


Identifier «aticonfig-Monitor[1]"

Option "Vendor Name?" “ATI Proprietary Driver”

Option "Model Name?" “Generic Autodetecting Monitor”

Option “DPMS” “true”

Display Size? 375 302

End Section?


Section “Device”


Identifier «radeon|0»

Driver “radeon”

Option “DRI” “off”

<font color=red>Screen 0</font>

End Section?


Section “Device”


Identifier «radeon|1»

Driver “radeon”

Option “DRI” “off”

<font color=red>Screen 1</font>

End Section?


Section “Screen”


Identifier «radeon|0»

Device «radeon|0»

Monitor «aticonfig-Monitor[0]"

Default Depth? 24

Option “Backingstore” “true”

Sub Section? “Display”

Depth 24

Modes “1280x1024”

End Sub Section?

End Section?


Section “Screen”


Identifier «radeon|1»

Device «radeon|1»

Monitor «aticonfig-Monitor[1]"

Default Depth? 24

Option “Backingstore” “true”

Sub Section? “Display”

Depth 24

Modes “1280x1024”

End Sub Section?

End Section?


красным выделены критичные строчки.


в <tt>Server Layout?</tt> строка


Screen «radeon|0»


важна! в противном случае X сервер матерится, что не может найти подходящий screen для работы.



 
Файлов нет. [Показать файлы/форму]
Комментарии [Скрыть комментарии/форму]