Existem 2 abordagens básicas que você pode seguir. A primeira é utilizar o randr , que permitirá criar um grande display virtual no qual você pode posicionar seus monitores. A segunda é utilizar xinerama , que permitirá que você tenha 2 telas X separadas, que funcionarão como uma grande tela. Vou cobrir os dois aqui e você pode decidir qual é o mais adequado às suas necessidades.
RandR - Redimensionar e girar
Você pode ativar dinamicamente a cabeça dupla usando XRandR
xrandr --output foo --above bar
Há também um frontend de gui para este chamado arandr que está nos 12.04 repos, mas parece que você quer uma configuração mais estática.
Poderia ser tão simples quanto criar /etc/X11/xorg.conf.d/10-monitor.conf com o conteúdo:
Section "Monitor"
Identifier "Monitor0"
EndSection
Section "Monitor"
Identifier "Monitor1"
Option "Above" "Monitor0"
EndSection
Este método implica em uma configuração randr . Existem algumas desvantagens notáveis quando se usa xrandr com monitores de diferentes resoluções. O Windows pode estar mal colocado, pode haver áreas pretas em uma tela, etc.
Quando você roda xrandr sem opções de linha de comando, você pode descobrir qual Identificador você precisa usar no 10-monitor.conf . Em seguida, reinicie o Ubuntu para ver se as configurações estão carregadas.
Xinerama Para ativar o xinerama, você precisa modificar o /etc/X11/xorg.conf :
Section "ServerFlags"
Option "Xinerama" "true"
EndSection
Pode ser tão simples quanto isso, já que o X é muito bom em configurar automaticamente as coisas com base na detecção de hardware. Mas, se simplesmente ativar a extensão xinerama não fornecer a funcionalidade que você deseja, você pode optar por configurar totalmente o X para usar xinerama . Existem algumas maneiras de configurar o X. Você pode ter vários arquivos em /etc/X11/xorg.conf.d / , alguns para seus monitores, outros para os dispositivos, etc. um único arquivo xorg.conf que contém todas as configurações usando uma versão modificada da minha configuração atual.
Section "ServerLayout"
Identifier "DualHead"
Screen 0 "Screen0" 0 0
Screen 1 "Screen1" Above "Screen0"
Option "Xinerama" "1" # You can specify xinerama here
EndSection
Section "Device"
Identifier "Device0" # A Device section for each monitor
Driver "nvidia" # Specify the driver to use
VendorName "NVIDIA Corporation"
BoardName "GeForce GT 430"
BusID "PCI:1:0:0" # Use lspci | grep VGA to find BusID
Screen 0 # Do note the screen number
EndSection
Section "Device"
Identifier "Device1"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce GT 430"
BusID "PCI:1:0:0"
Screen 1 # Do note the screen number
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Unknown"
ModelName "Gateway HX2000"
HorizSync 31.0 - 83.0
VertRefresh 56.0 - 76.0
Option "DPMS"
EndSection
Section "Monitor"
Identifier "Monitor1"
VendorName "Unknown"
ModelName "DELL 1907FPV"
HorizSync 30.0 - 81.0
VertRefresh 56.0 - 76.0
Option "DPMS"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
EndSection
Section "Screen"
Identifier "Screen1"
Device "Device1"
Monitor "Monitor1"
DefaultDepth 24
EndSection
Obviamente, você precisará modificar isso para se adequar ao seu hardware, mas o esqueleto básico está disponível para você.
Observe que li recentemente que a Intel pode ter problemas com xinerama . Você pode precisar usar sua placa gráfica discreta.