Como configurar o vídeo: /etc/X11/XF86Config-4

Como configurar o vídeo: /etc/X11/XF86Config-4
O suporte à vídeo no Linux é provido pelo Xfree, que já vem com drivers para as placas suportadas. Além dos drivers open-source incluídos no Xfree você pode instalar os drivers binários distribuídos pela nVidia e ATI.

Antigamente, até a versão 3.x, o Xfree possuía várias versões separadas, com drivers para diferentes placas de vídeo. Isso complicava a configuração e obrigava as distribuições a manterem instaladas todas as diferentes versões simultâneamente, o que também desperdiçava muito espaço em disco.

A partir do Xfree 4.0 existe apenas uma única versão unificada, com drivers para todas as placas e recursos suportados. Melhor ainda, cada driver dá suporte à todas as placas de um determinado fabricante, o “sis” dá suporte a todas as placas da SiS, o “trident” dá suporte a todas as placas da Trident e assim por diante. Temos ainda dois drivers genéricos, o “vesa” e o “fbdev”, que servem como um mínimo múltiplo comum e uma opção para fazer funcionar placas novas (ou muito antigas), que não sejam suportadas pelos drivers titulares.

Outro detalhe interessante é que toda a configuração do vídeo, incluindo o mouse e o suporte a 3D é feita através de um único arquivo de configuração, o /etc/X11/XFConfig-4 (/etc/X11/XF86Config no Slackware), que é relativamente simples de editar e funciona em todas as distribuiçoes que utilizam o Xfree 4.0 em diante (praticamente todas as usadas atualmente). Isto significa que você pode pegar o arquivo de configuração gerado pelo Kurumin e usar no Slackware por exemplo.

Existe várias ferramntas de configuração que perguntam ou autodetectam a configuração e geram o arquivo, como o kxconfig, xf86cfg entre outros. Mas, neste tópico vamos ver como configurar manualmente o arquivo, adaptando ou corrigindo as configurações geradas pelos configuradores.

O arquivo é dividido em seções. Basicamente temos (não necessariamente nesta ordem) uma seção “Server”, com parâmetros gerais, a seção “Files” com a localização das fontes de tela e bibliotecas, duas seções “InputDevice”, uma com a configuração do teclado e outra com a do mouse, uma seção “Monitor” e outra “Device”, com a configuração do monitor e placa de vídeo e por último a seção “Screen” onde é dito qual resolução e profundidade de cor usar.

Este é um exemplo de arquivo de confiuração completo:

Section “ServerLayout”
Identifier “XFree86 Configured”
Screen 0 “Screen0” 0 0
InputDevice “Keyboard0” “CoreKeyboard”
InputDevice “PS/2 Roda” “CorePointer”
EndSection

# Esta opção permite que o X abra mesmo que o mouse esteja desconectado:

Section “ServerFlags”
Option “AllowMouseOpenFail” “true”
EndSection

Section “Files”
RgbPath “/usr/X11R6/lib/X11/rgb”
ModulePath “/usr/X11R6/lib/modules”
FontPath “/usr/X11R6/lib/X11/fonts/misc:unscaled”
FontPath “/usr/X11R6/lib/X11/fonts/misc”
FontPath “/usr/X11R6/lib/X11/fonts/75dpi:unscaled”
FontPath “/usr/X11R6/lib/X11/fonts/75dpi”
FontPath “/usr/X11R6/lib/X11/fonts/100dpi:unscaled”
FontPath “/usr/X11R6/lib/X11/fonts/100dpi”
FontPath “/usr/X11R6/lib/X11/fonts/Speedo”
FontPath “/usr/X11R6/lib/X11/fonts/PEX”
FontPath “/usr/X11R6/lib/X11/fonts/cyrillic”
FontPath “/usr/share/fonts/truetype/openoffice”
FontPath “/usr/X11R6/lib/X11/fonts/defoma/CID”
FontPath “/usr/X11R6/lib/X11/fonts/defoma/TrueType”
EndSection

Section “Module”
Load “ddc” # ddc probing of monitor
Load “GLcore”
Load “dbe”
Load “dri”
Load “extmod”
Load “glx”
Load “bitmap” # bitmap-fonts
Load “speedo”
Load “type1”
Load “freetype”
Load “record”
EndSection

Section “InputDevice”
Identifier “Keyboard0”
Driver “keyboard”
Option “CoreKeyboard”
Option “XkbRules” “xfree86”
Option “XkbModel” “abnt2”
Option “XkbLayout” “abnt2”
EndSection

Section “InputDevice”
Identifier “Serial Mouse”
Driver “mouse”
Option “Protocol” “Microsoft”
Option “Device” “/dev/ttyS0”
Option “Emulate3Buttons” “true”
Option “Emulate3Timeout” “70”
Option “SendCoreEvents” “true”
EndSection

Section “InputDevice”
Identifier “PS/2 Mouse”
Driver “mouse”
Option “Protocol” “PS/2”
Option “Device” “/dev/psaux”
Option “Emulate3Buttons” “true”
Option “Emulate3Timeout” “70”
Option “SendCoreEvents” “true”
EndSection

Section “InputDevice”
Identifier “USB Mouse”
Driver “mouse”
Option “Device” “/dev/input/mice”
Option “SendCoreEvents” “true”
Option “Protocol” “IMPS/2”
Option “ZAxisMapping” “4 5”
Option “Buttons” “5”
EndSection

Section “InputDevice”
Identifier “PS/2 Roda”
Driver “mouse”
Option “Protocol” “IMPS/2”
Option “Device” “/dev/psaux”
Option “ZAxisMapping” “4 5”
Option “Butons” “5”
Option “Emulate3Buttons” “true”
Option “Emulate3Timeout” “70”
Option “SendCoreEvents” “true”
EndSection

Section “Monitor”
Identifier “Monitor0”
VendorName “GSM”
ModelName “GSM3b60”
HorizSync 30 – 63 # DDC-probed
VertRefresh 50 – 75 # DDC-probed
EndSection

Section “Device”
Option “sw_cursor”
Identifier “Card0”
Driver “nv”
VendorName “All”
BoardName “All”
EndSection

Section “Screen”
Identifier “Screen0”
Device “Card0”
Monitor “Monitor0”
DefaultColorDepth 16
Depth 16
Modes “1024×768” “800×600” “640×480”
EndSubSection
EndSection

Section “DRI”
Mode 0666
EndSection

A ordem com que estas configurações aparecem no arquivo pode mudar de distribuição para distribuição, mas a ordem não importa muito, desde que estejam todas lá. Vou usar como exemplo a configuração do Kurumin. Como em outros arquivos de configuração você pode incluir comentários, usnado um “#” no início das linhas. Linhas em branco, espaços e tabs também são ignorados e podem ser usadas para melhorar a formatação do arquivos e melhorar a organização das informações.

Section “ServerLayout”
Identifier “XFree do Kurumin”
Screen 0 “Screen0” 0 0
InputDevice “Keyboard0” “CoreKeyboard”
InputDevice “PS/2 Roda” “CorePointer”
EndSection

Neste seção vai a configuração geral. Ela é uma espécie de “índice” das seções abaixo. O campo “Identifier” pode conter qualquer texto, é apenas uma descrição. O “PS/2 Roda” indica a configuração do mouse. Abaixo deve existir uma seção com este mesmo nome, com a configuração do mouse “PS/2 Roda”. O Kurumin usa um arquivo de configuração que vem com várias configurações de mouse prontas (As opções disponíveis são: “PS/2 Mouse”, “Serial Mouse”, “USB Mouse” e “PS/2 Roda”, mouse PS/2 com roda), mas apenas a informada nesta primeira seção é usada.

Caso você tenha simultâneamente mais de um mouse conectado, como por exemplo no caso de um notebook com o moute tochpad (visto pelo sistema como um mouse PS/2) e um mouse USB externo, você precisaria apenas duplicar a configuração do mouse, como abaixo. Isso faz com que o X tente ativar ambos os mouses:

Section “ServerLayout”
Identifier “XFree do Kurumin”
Screen 0 “Screen0” 0 0
InputDevice “Keyboard0” “CoreKeyboard”
InputDevice “PS/2 Mouse” “CorePointer”
InputDevice “USB Mouse” “CorePointer”
EndSection

Na seção “ServerFlags” vão opções gerais, é aqui que colocamos a opção que inicializa o Xinerama, que dá suporte à uma segunda placa de vídeo e monitor (como veremos mais adiante). Neste exemplo está sendo usada apenas a opção “”AllowMouseOpenFail” “true” que permite que o modo gráfico abra mesmo que o mouse esteja desconectado.

Section “ServerFlags”
Option “AllowMouseOpenFail” “true”
EndSection

Seria estúpido parar toda a abertura do modo gráfico e voltar para o modo texto por que o mouse não foi detectado, pois você ainda pode usar o mouse virtual do KDE como uma solução temporária até que consiga solucionar o problema. Veja esta dica que escrevi a algum tempo atrás: https://www.hardware.com.br/dicas/usando-teclado-como-mouse-kde.html

Embora seja raro, em alguns casos o Kurumin pode não conseguir detectar o mouse durante o boot. Pode acontecer ainda do mouse parar de funcionar coso você tente tente alterar a configuração e acabe fazendo alguma besteira, ou ainda que o seu mouse simplesmente para de funcionar por falta de limpeza 🙂

Seja qual for a causa, o KDE oferece um recurso de mouse virtual, que permite usar o micro mesmo sem o mouse. O movimento do mouse passa a ser controlado pelas teclas do teclado numérico.

Para ativar o mouse virtual, pressione a tecla Shift junto com a tecla NumLock do teclado numérico. A partir daí as teclas 1, 2, 3, 4, 6, 7, 8 e 9 ficam responsáveis pela movimentação do mouse, enquanto a tecla 5 simula o clique do botão esquerdo, pressionando 5 duas vezes você simula um duplo clique.

Para arrastar arrastar e soltar pressione a tecla 0 para prender e depois a tecla 5 para soltar.

Por padrão a tecla 5 simula o botão esquerdo do mouse. Para simular os outros botões você usa as teclas / (botão direito), * (botão central) e – (para voltar ao botão esquerdo), que funcionam como teclas modificadoras.

Para desativar o mouse virtual basta pressionar Shift + NumLock novamente.

Voltando ao arquivo de configuração, a seguir temos as seções “Files” e “Modules“, que indicam respectivamente as pastas com as fontes True Type, Type 1 e outras que serão usadas pelo sistema e os módulos de extensões do Xfree que serão usados.

Section “Files”
RgbPath “/usr/X11R6/lib/X11/rgb”
ModulePath “/usr/X11R6/lib/modules”
FontPath “/usr/X11R6/lib/X11/fonts/misc:unscaled”
FontPath “/usr/X11R6/lib/X11/fonts/misc”
FontPath “/usr/X11R6/lib/X11/fonts/75dpi:unscaled”
FontPath “/usr/X11R6/lib/X11/fonts/75dpi”
FontPath “/usr/X11R6/lib/X11/fonts/100dpi:unscaled”
FontPath “/usr/X11R6/lib/X11/fonts/100dpi”
FontPath “/usr/X11R6/lib/X11/fonts/Speedo”
FontPath “/usr/X11R6/lib/X11/fonts/PEX”
FontPath “/usr/X11R6/lib/X11/fonts/cyrillic”
FontPath “/usr/share/fonts/truetype/openoffice”
FontPath “/usr/X11R6/lib/X11/fonts/defoma/CID”
FontPath “/usr/X11R6/lib/X11/fonts/defoma/TrueType”
EndSection

Section “Module”
Load “ddc” # ddc probing of monitor
Load “GLcore”
Load “dbe”
Load “dri”
Load “extmod”
Load “glx”
Load “bitmap” # bitmap-fonts
Load “speedo”
Load “type1”
Load “freetype”
Load “record”
EndSection

Estas duas seções geralmente não precisam ser alteradas, a menos que você instale algum novo conjunto de fontes True Type e queira habilitá-lo manualmente ou caso instale um novo driver de vídeo (como o driver da nVidia) e o read-me diga para desativar algum dos módulos.

Você poderia mexer aqui caso quisesse intencionalmente desativar algum recurso, ou para tentar solucionar problemas.

O módulo “dri” por exemplo habilita o suporte a 3D para a placa de vídeo. As placas onboard com chipset Intel (i810, etc.), placas Ati Rage e Ati Radeon e as antigas Voodoo 2 e Voodoo 3 possuem suporte 3D nativamente no Xfree 4.x.

Mas, ao instalar o driver 3D da nVidia você precisa remover esta opção pois o driver do Xfree conflita com o que é instalado junto com o driver. Pode ser também que por algum motivo você quiser desabilitar o 3D da sua Voodo 3(para evitar que fiquem jogando TuxRacer durante o expediente por exemplo). Em qualquer um dos casos você poderia comentar a linha: Load “dri”.

Em seguida vem a configuração do teclado. O “abnt2” indica o layout de teclado que será usado por padrão. No KDE e Gnome o layout indicado aqui perde o efeito, pois eles possuem ferramentas próprias para configurar o teclado. No caso do KDE é usado o kxbd.

Section “InputDevice”
Identifier “Keyboard0”
Driver “keyboard”
Option “CoreKeyboard”
Option “XkbRules” “xfree86”
Option “XkbModel” “abnt2”
Option “XkbLayout” “abnt2”
EndSection

Você deve lembrar que acima, na seção “ServerLayout” informamos que o X iria usar um mouse “PS/2 Roda”. Este é apenas um nome que indica a seção (com a configuração do mouse propriamente dita) que será usada. Isso permite que você tenha várias seções com configurações de mouses diferentes. Basta indicar a correta na seção de cima e as demais serão ignoradas.

Estas são as seções com as configurações usadas no Kurumin. Dentro de cada seção vai a porta e driver usados pelo mouse e outras opções necessárias em cada caso. Você pode usá-las como modelos para configurar o mouse em outras distribuições:

Section “InputDevice”
Identifier “Serial Mouse”
Driver “mouse”
Option “Protocol” “Microsoft”
Option “Device” “/dev/ttyS0”
Option “Emulate3Buttons” “true”
Option “Emulate3Timeout” “70”
Option “SendCoreEvents” “true”
EndSection

Section “InputDevice”
Identifier “PS/2 Mouse”
Driver “mouse”
Option “Protocol” “PS/2”
Option “Device” “/dev/psaux”
Option “Emulate3Buttons” “true”
Option “Emulate3Timeout” “70”
Option “SendCoreEvents” “true”
EndSection

Section “InputDevice”
Identifier “USB Mouse”
Driver “mouse”
Option “Device” “/dev/input/mice”
Option “SendCoreEvents” “true”
Option “Protocol” “IMPS/2”
Option “ZAxisMapping” “4 5”
Option “Buttons” “5”
EndSection

Section “InputDevice”
Identifier “PS/2 Roda”
Driver “mouse”
Option “Protocol” “IMPS/2”
Option “Device” “/dev/psaux”
Option “ZAxisMapping” “4 5”
Option “Butons” “5”
Option “Emulate3Buttons” “true”
Option “Emulate3Timeout” “70”
Option “SendCoreEvents” “true”
EndSection

Ainda falta a configuração do monitor e placa de vídeo, que afinal são os componentes mais importantes neste caso. Ela é dividida em três seções, com a configuração do monitor, da placa de vídeo e uma seção “screen” que, com base nas duas anteriores indica qual resolução e profundidade de cores será usada.

A configuração do monitor precisa incluir apenas as taxas de varredura horizontal e vertical usadas por ele. Você pode encontrar estes dados no manual. As opções Identifier, VendorName e ModelName são apenas descritivas, podem conter qualquer texto:

Section “Monitor”
Identifier “Monitor0”
VendorName “GSM”
ModelName “GSM3b60”
HorizSync 30 – 63
VertRefresh 50 – 75
EndSection

Se você não souber as taxas de varredura usadas pelo seu monitor e quiser alguma configuração genérica que funcione em qualquer monitor contemporâneo, experimente usar esta, que permite trabalhar a até 1024×768 com 60 hz:

Section “Monitor”
Identifier “My Monitor”
HorizSync 31.5 – 50.0
VertRefresh 40-90
EndSection

Em geral os configuradores incluem várias seção “Modelines” dentro da seção Monitor, com as resoluções e taxas de atualização suportadas pelo monitor. Estes dados são fornecidos pelo próprio monitor, via DCC (uma espécie de plug-and-play para monitores) e não é necessário alterá-los a menos que você esteja escrevendo o arquivo manualmente do zero, o que não é muito aconselhável já que é sempre muito mais fácil usar um arquivo copiado de outro micro como base. Esta configuração dos modelines não é obrigatória, pois o X pode deduzir a configuração a partir das taxas de varredura do monitor informadas dentro da seção.

Este é um exemplo de configuração, incluindo modelines para usar 1280×1024, 1024×768 e 800×600:

Section “Monitor”
Identifier “Monitor0”
VendorName “GSM”
ModelName “GSM3b60”
HorizSync 30 – 63
VertRefresh 50 – 75
# 1280×1024, 75.0Hz; hfreq=79.98, vfreq=75.03
ModeLine “1280×1024” 135.00 1280 1296 1440 1688 1024 1025 1028 1066 +hsync +vsync
# 1024×768, 75.0Hz; hfreq=60.02, vfreq=75.03
ModeLine “1024×768” 78.75 1024 1040 1136 1312 768 769 772 800 +hsync +vsync
# 800×600, 75.0Hz; hfreq=46.88, vfreq=75.00
ModeLine “800×600” 49.50 800 816 896 1056 600 601 604 625 +hsync +vsync
EndSection

Em seguida vem a seção “Device” que indica a configuração da placa de vídeo. As opções Identifier, VendorName e BoardName são apenas descrições, o que interessa mesmo é o Driver usado:

Section “Device”
Option “sw_cursor”
Identifier “Card0”
Driver “nv”
VendorName “nVidia”
BoardName “TnT2 Ultra”
EndSection

Os drivers disponíveis são:

  • ati: Este é o driver para as placas Ati Radeon. Ele oferece um suporte 3D rudimentar, para usar todo o desempenho das placas você deve instalar o driver 3D fornecido pela Ati.
  • chips: Placas da “Chips and Technologies”, um fabricante relativamente desconhecido
  • cirrus: A Cirrus Logic fabricou alguns modelos de placas de vídeo PCI. Elas são encontradas geralmente apenas em micros antigos.
  • cyrix: Placas Cyrix MediaGX
  • fbdev: Este driver usa o recurso de framebuffer suportado pelo Kernel como driver de vídeo. Neste modo o Kernel manipula diretamente a memória da placa de vídeo, gravando as imagens que serão mostradas no monitor. O desempenho não é dos melhores e a utilização do processador é maior que nos outros drivers pois não existe aceleração de vídeo, mas por outro lado este é um driver que funciona com a maioria das placas de vídeo e é o único onde você não precisa se preocupar com a configuração das taxas de atualização do monitor (as placas usam sempre uma taxa de atualização baixa, de 56 ou 60 hz, que é fixa).

Ao usar o fbdev como driver de vídeo a configuração da resolução não é feita no arquivo XF86Config, mas no /etc/lilo.conf (o parâmetro é passado dirtamente ao Kernel no início do boot).

Procure pela linha: vga=791

O número indica a resolução que será usada, onde: 791 usa 1024×768, 788 usa 800×600 e 785 usa 640×480.

  • glint: Uma família de placas lançada pela 3D Labs
  • i740: Usado pelas placas de vídeo (offboard) om chipset i740. Estas placas foram uma tentativa frustrada da Intel entrar no ramo de placas 3D, o desempenho era fraco comparado com as placas da nvidia e Ati, mas o projeto acabou sendo usado como base para os chipsets de vídeo onboard que passariam a ser usados nos chipsets Intel.
  • i810: Este é o driver usado por todas as placas de vídeo onboard com chipset Intel suportadas. A lista de compatibilidade inclui quase todos os chipsets para Pentium III e Pentium 4.
  • neomagic: Placas com chipset Neomagic, usadas em alguns notebooks antigos.
  • nv: É o driver genérico para placas nVidia. Ele oferece apenas suporte 2D, para ativar os recursos 3D você precisa instalar os drivers da nVidia.
  • r128: Driver para as placas Ati Rage (a família anteiror às Ati Radeon). Este driver oferece um bom suporte 3D, permitindo que estas placas funcionem usando quase todo seu potencial 3D (que não é grande coisa hoje em dia, mas ainda suficiente para vários jogos).
  • rendition: Placas Rendition Verite da Micron.
  • s3virge: Placas com chipset S3 Virge. Estas placas foram muito usadas por volta da época do lançamento do Pentium MMX
  • sis: Este é o driver que funciona em todas as placas da SiS suportadas. Caso você encontre algum chipset novo, que não funcione com ele, experimente usar o driver vesa ou fddev.

A SiS não desenvolve drivers 3D para o Linux e não divulga as especificações técnicas que permitiriam o desenvolvimento de drivers 3D por parte da comunidade. Atualmente as placas de vídeo e chipsets da SiS são os com PIOR suporte no Linux por causa da falta de cooperação do fabricante e devem ser evitadas na hora da compra.

O driver oferece apenas suporte 2D, as placas funcionam mas não servem para rodar jogos 3D ou trabalhar com aplicativos 3D profissionais por exemplo. Até o Xfree 4.0 existia um esforço para desenvolver suporte 3D, mas o fabricante divulgava tão pouca informação e os chipsets eram tão bugados (o que pode ser percebido pela instabilidade dos drivers for Windows) que os desenvolvedores simplesmente desistiram.

  • tdfx: Driver para as placas da 3Dfx, as famosas Voodoo, que fizeram muito sucesso a alguns anos atrás. Este driver oferece suporte 3D para as placas Voodoo 2 e Voodoo 3.
  • trident: Placas de vídeo da Trident. Ele funciona bem com placas Trident Blade e os novos chipsets usados em notebooks, mas o suporte às antigas 9680 é ruim, em muitos casos elas funcionam a apenas 640×480. Pensando nestas placas, algumas distribuições, como o Mandrake oferecem a opção de usar o driver do antigo Xfree 3.3, que oferecia um suporte mais completo a elas.
  • tseng: Placas da Tseng Labs, outro fabricante pouco conhecido.
  • vesa: Este é o “coringa”, um driver genérico que utiliza apenas as extensões do padrão vesa que em teoria é suportado por todas as placas de vídeo PCI e também pelas antigas placas VLB. Algumas placas antigas, como as Trident 9680 não funcionam com ele, mas são excessões.
  • vga: Este é um driver VGA genérico que trabalha 640×480 com 16 cores. Serve como um fail safe.

Cada um destes drivers oferece algumas opções de configuração que podem ser usadas em casos de problemas ou por quem quiser fuçar na configuração. Você pode encontrar mais informações sobre cada um no: http://www.xfree86.org/4.4.0/

Finalmente, vai a configuração da seção “Screen“, que indica a resolução que será usada. As várias seções determinam as resoluções disponíveis para cada configuração de profundidade de cor, enquanto a opção “DefaultColorDepth” determina qual será usada:

Section “Screen”
Identifier “Screen0”
Device “Card0”
Monitor “Monitor0”
DefaultColorDepth 16
SubSection “Display”
Depth 8
Modes “1024×768” “800×600” “640×480”
EndSubSection
SubSection “Display”
Depth 16
Modes “1024×768” “800×600” “640×480”
EndSubSection
SubSection “Display”
Depth 24
Modes “1024×768” “800×600” “640×480”
EndSubSection
EndSection

Neste exemplo o vídeo está configurado para usar 16 bits de cor, mas se você quisesse usar 24 bits bastaria mudar o número na opção “DefaultColorDepth”. Dentro de cada uma das três seções (Depth 8, Depth 16 e Depth 24) vai a resolução que será usada para cada uma.

Na linha que começa com “Modes” vão as resoluções de tela. A primeira da lista (1024×768 no exemplo) é a default. As outras duas, 800×600 e 640×480 são usadas apenas caso a primeira falhe (se a plaa de vídeo ou monitor não a suportarem) ou caso você alterne manualmente, pressionando Ctrl Alt + ou Ctrl Alt – .

Sempre que você fizer alterações no arquivo e quiser testar a configuração, reinicie o X pressionando Ctrl + Alt + Backspace. Não é preciso reiniciar o micro 😉

Configurando dois monitores no Linux

Embora seja um recurso bem interessante, que está disponível desde os tempos do Windows 98, não sei quanta gente realmente usa dois monitores. Talvez pelo custo de ter duas placas de vídeo e dois monitores, talvez pelo medo de ser algo complicado de configurar a maioria acaba deixando a idéia de lado.

A configuração de dois monitores no Windows já é conhecimento comum, você instala a segunda placa de vídeo, ativa-a na configuração do vídeo e em seguida indica a posição do segundo monitor em relação ao primeiro. Se tudo funcionar como deveria é relativamente simples.

Este artigo é dedicado a ensinar como fazer o mesmo no Linux. A configuração também é simples, mas ainda não encontrei nenhum utilitário que faça isso automaticamente, por isso vou ensinar como ativar “na mão”, editando diretamente o arquivo de configuração do X. A vantagem é que você vai poder usar o que aprender aqui em qualquer distribuição, sem se preocupar se a ferramenta XYKZ está ou não instalada.

Vamos colocar a mão na massa então.

O suporte a múltiplos monitores no Linux é feito através das extensões Xinerama. Elas estão disponíveis desde o tempo do Xfree 2.x, mas antigamente era necessário sair recompilando o X inteiro para fazê-las funcionar. A partir do Xfree 4.0 elas vem incorporadas por default. Ou seja, você já tem todo o software necessário, só falta mesmo a configuração.

Lembre-se que muitas distribuições (o Mandrake por exemplo) oferecem a opção de usar o Xfree 3.3.6 durante a instalação ao invés do 4.x para manter compatibilidade com algumas placas antigas que não são mais suportadas na versão recente. Se por acaso você está usando o Xfree antigo, vai precisar primeiro reconfigurar o vídeo para usar o 4.x.

O documento que originalmente descreve a configuração é o Xinerama HOWTO:

http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/html_single/Xinerama-HOWTO.html

Vamos então ao que interessa.

O arquivo de configuração do Xfree 4.x é o /etc/X11/XF86Config-4. Em muitas distribuições existe um outro arquivo na mesma pasta, o /etc/X11/XF86Config que era usado pelo Xfree 3.3.6 mas geralmente é encontrado até hoje por questão de compatibilidade.

Antes de mais nada, faça um backup do arquivo original, assim se as coisas não derem certo da primeira vez você poderá restaurar a configuração inicial e começar de novo:

# cp /etc/X11/XF86Config-4 /etc/X11/XF86Config-4.original

Para isso cria o arquivo /etc/X11/XF86Config-4.original que você pode restaurar posteriormente com o comando:

# cp /etc/X11/XF86Config-4.original /etc/X11/XF86Config-4

O Linux não tem registro nem configurações escondidas, ao restaurar um determinado arquivo de configuração você realmente desfaz todas as alterações. Não ficam “sobras” espalhadas pelo sistema.

O primeiro passo é naturalmente espetar a segunda placa de vídeo. Você pode tanto usar duas placas PCI quanto uma placa PCI e outra AGP. A segunda placa de vídeo pode ser qualquer placa PCI, mesmo que antiga. Eu por exemplo estou utilizando uma velha Trident 9680 de 2 MB. Quem tem que suportar o recurso de dois monitores é a primeira placa de vídeo, que deve ser alguma coisa mais atual.

Se você estiver usando uma placa AGP e outra PCI, lembre-se de verificar a opção “Initialize First” no Setup, que determina qual será a placa de vídeo “titular”. Ao usar duas placas PCI então a primeira placa será a que estiver no Slot PCI mais próximo da fonte.

No primeiro boot o segundo monitor nem dará sinal de vida. Não se preocupe pois isso é normal. Uma forma fácil de verificar se tudo está funcionando é rodar o comando “X -configure” (como root). Normalmente este comando deveria ser dado em texto puro, sem o X rodando. Mas, você pode executa-lo sem precisar fechar a seção atual:

  • Abra um terminal e logue-se como root.
  • Execute o comando: X -configure :2
  • Execute o comando: XFree86 -xf86config /root/XF86Config.new :2

Isto vai inicializar um X “pelado” nos dois monitores para que você possa verificar se a sua segunda placa de vídeo é compatível. Para voltar para a seção inicial, pressione Ctrl + Alt + F7
01
O comando gera um arquivo de configuração modelo chamado /root/XF86Config.new. Nós usaremos algumas coisas detectadas pelo X e escritas neste arquivo na configuração do nosso /etc/X11/XF86Config-4 principal. Comece abrindo os dois arquivos:

# kedit /etc/X11/XF86Config-4 &
# kedit /root/XF86Config.new

Logo no comecinho do arquivo kedit /etc/X11/XF86Config-4 nós faremos uma pequena mudança. Logo abaixo da linha “Screen 0 “Screen0″ 0 0”, adicionaremos uma segunda linha que ativa o segundo monitor. A nova linha está em negrito:

Section “ServerLayout”
Identifier “XFree86 Configured”
Screen 0 “Screen0” 0 0
Screen 1 “Screen1” RightOf “Screen0”
InputDevice “Keyboard0” “CoreKeyboard”
InputDevice “PS/2 Mouse” “CorePointer”
EndSection

O “RightOf” (à direita de) indica a posição do segundo monitor em relação ao primeiro, o que determina como o mouse vai se comportar na hora de mudar entre os dois. Se ele estiver à esquerda do primeiro (como na minha foto) você pode substituir por “LeftOf”, se ele estiver em cima use o “Above” e se ele estiver abaixo substitua por “Below”

Logo abaixo você deve adicionar três linhas, que fazem o segundo monitor ser inicializado por default:

Section “ServerFlags”
Option “Xinerama” “true”
EndSection

Um detalhe importantíssimo é que caso já exista uma seção “Server Flags” com alguma opção dentro, você deve apenas adicionar a linha Option “Xinerama” “true” dentro da seção que já existe e não criar outra. Em geral, depois da alteração a seção ficará parecida com:

Section “ServerFlags”
Option “Xinerama” “true”
Option “AllowMouseOpenFail” “true”
EndSection

O restante da configuração do X é composto pelas seções “Input Device” (onde vai a configuração do teclado e do mouse), “Monitor” (configuração do monitor, como o nome sugere), “Device” (que indica o driver da placa de vídeo) e a seção “Screen”, que indica qual resolução e profundidade de cores será usada.

Para ativar a segunda placa de vídeo nós deveremos duplicar as seções Monitor, Device e Screen, adicionando configurações separadas para a segunda placa e monitor.

Se você vai usar a mesma resolução e taxa de atualização nos dois monitores fica mais fácil, pois você vai precisar apenas copiar as seções Monitor e Screen, alterando só o nome. Não é preciso usar dois monitores iguais, apenas verificar se o segundo suporta mesma configuração que você está usando no primeiro. Você pode começar usando 1024×768 com 60 hz de atualização, que quase todos os monitores de 14″ ou mais já suportam.

Vamos começar então. Descendo um pouco você verá a seção “Monitor” que em muitas distribuições pode ser bem grande, cheia de modos alternativos. Mas não importa muito o conteúdo, basta dar um Ctrl+C, Ctrl+V em tudo.

No meu micro a seção original era:

Section “Monitor”
Identifier “Monitor0”
HorizSync 31.5-95# Warning: This may fry old Monitors
VertRefresh 50-150# Very conservative. May flicker.
vendorname “Typical Monitors”
modelname “1280×1024, 75Hz”
ModeLine “1024×768/85Hz” 98.9 1024 1056 1216 1408 768 782 788 822 -HSync -VSync
ModeLine “1024×768/60Hz” 65 1024 1032 1176 1344 768 771 777 806 -HSync -VSync
ModeLine “800×600/60Hz” 40 800 840 968 1056 600 601 605 628 +HSync +VSync
EndSection

A adicionei a cópia logo abaixo dela:

Section “Monitor”
Identifier “Monitor1”
HorizSync 31.5-95# Warning: This may fry old Monitors
VertRefresh 50-150# Very conservative. May flicker.
vendorname “Typical Monitors”
modelname “1280×1024, 75Hz”
ModeLine “1024×768/85Hz” 98.9 1024 1056 1216 1408 768 782 788 822 -HSync -VSync
ModeLine “1024×768/60Hz” 65 1024 1032 1176 1344 768 771 777 806 -HSync -VSync
ModeLine “800×600/60Hz” 40 800 840 968 1056 600 601 605 628 +HSync +VSync
EndSection

Note que eu mudei o Identifier “Monitor0” para Identifier “Monitor1”. Esta linha indica justamente o “nome” do segundo monitor, que como disse acima, precisa ser alterado.

Logo abaixo vem a seção “Device”, com a configuração da placa de vídeo. Esta seção ja vai dar um pouquinho mais de trabalho, pois é preciso indicar o driver que será usado para a placa de vídeo.

A minha placa principal é uma TnT2 AGP, com os drivers da nVidia instalados e a minha segunda placa é uma Trident 9680 de 2MB. A seção “Device” original era:

Section “Device”
Identifier “Card0”
Driver “nvidia”
VendorName “All”
BoardName “All”
EndSection

E a nova seção que adicionei para ativar a Trident ficou:

Section “Device”
Identifier “Card1”
Driver “trident”
BusID “PCI:2:10:0”
vendorname “trident”
boardname “trident9680”
EndSection

O “Identifier”, “vendorname” e “boardname” são apenas para seu controle, podem ser qualquer coisa. O que interessa mesmo são as seções “Driver” e “BusID”, que devem ter as configurações corretas. Mas, não é preciso ficar quebrando a cabeça para descobrir quais são as configurações, pois o comando “X -configure :2” que rodamos acima já detectou a placa para nós. Olhe dentro daquele arquivo /root/XF86Config.new que abrimos anteriormente e você verá a configuração já mastigadinha. No meu caso estava:

Section “Device”
Identifier “Card1”
Driver “trident”
VendorName “Trident Microsystems”
BoardName “TGUI 9660/938x/968x”
BusID “PCI:2:10:0”
EndSection

Você pode simplesmente copiar a seção toda de um arquivo para o outro, sem alterar nada.

Finalmente, falta duplicar a seção “Screen”, assim como fizemos com a configuração do monitor. A minha seção “Screen” original, com a configuração para a TnT2 era:

Section “Screen”
Identifier “Screen0”
Device “Card0”
Monitor “Monitor0”
DefaultColorDepth 16
SubSection “Display”
Depth 16
Modes “1024×768/60Hz” “640×480”
Virtual 0 0
EndSubSection
EndSection

A segunda seção, que adicionei logo abaixo:

Section “Screen”
Identifier “Screen1”
Device “Card1”
Monitor “Monitor1”
DefaultColorDepth 16
SubSection “Display”
Depth 16
Modes “1024×768/60Hz” “640×480”
Virtual 0 0
EndSubSection
EndSection

Veja que alterei as linhas Device e Monitor, colocando os nomes do segundo monitor (do jeito que coloquei na seção “Monitor”) e da segunda placa de vídeo (e exatamente como está escrito na seção Device).

Pronto, agora só precisamos recompilar o Kernel adicionando o patch para o Xinerama, baixar a versão mais recente do X e matar dois frangos para que tudo funcione…

Haha, é brincadeira! Depois de salvar o arquivo o segundo monitor já deve estar funcionando. Basta dar um Ctrl + Alt + Backspace para reiniciar o X ou, se preferir, dar um reset. 😛
02
Se não funcionar da primeira vez, restaure o backup do arquivo de configuração do X que criamos no início, dando um:

# cp /etc/X11/XF86Config-4.original /etc/X11/XF86Config-4

(como root)

E comece de novo. Provavelmente você deixou faltar alguma linha na hora de copiar e colar as seções. Como você pode ver, a lógica não é muito complicada e não é preciso instalar nenhum programa adicional. Com um pouco de prática você vai ser capaz de fazer isso em poucos minutos em qualquer distribuição, já que a configuração é a mesma para qualquer uma.

Este é o meu arquivo /etc/X11/XF86Config-4 depois de todas as alterações (exatamente como está funcionando na minha máquina, com os comentários e tudo) que você pode verificar caso ainda tenha alguma dúvida:

https://www.hardware.com.br/artigos/267/XF86Config-4.txt

Xinerama x KDE

Praticamente todos os gerenciadores de janelas oferecem um bom suporte ao Xinerama. Você pode arrastar janelas entre os dois monitores e até mesmo dimensionar as janelas de modo que elas ocupem as telas dos dois monitores, útil para programas de imagem ou CAD, onde é preciso ter muito espaço.

Exemplos clássicos são abrir o gimp e deixar a imagem que está sendo editada num monitor e as barras de ferramentas no outro; deixar o navegador em um e o ICQ/IRC/MSN no segundo, deixar uma janela do VMware com um segundo sistema operacional aberto no segundo monitor e assim por diante.
03
O sistema passa a enxergar os dois monitores como se fossem um único desktop, tanto que se você tirar um screenshot da tela usando o ksnapshot por exemplo, vai ver as imagens dos dois “coladas”:
04
Se você quiser ter uma melhor qualidade, experimente usar dois monitores de tela plana, se possível dois monitores de LCD. O monitores CRT tradicionais tem a tela angulada, o que dá um efeito muito estranho ao colocar uma janela entre os dois monitores.

Se por acaso os dois monitores estiverem se comportando como se fosem duas seções separadas do X, sem o recurso de arrastar janelas significa que o Xinerama NÃO está funcionando corretamente. Em geral o problema tem a ver com a seção “Server Flags” do arquivo /etc/X11/XF86Config-4, onde o Xinerama é ativado.

Um exemplo de configuração que NÃO funciona:

Section “ServerFlags”
Option “Xinerama” “true”
EndSection

Section “ServerFlags”
Option “AllowMouseOpenFail” “true”
EndSection

Veja que a seção está duplicada. Pelas regras da configuração do arquivo só pode existe uma seção “Server Flags”, o X passa então a simplesmente ignorar a primeira, onde está a instrução para habilitar o Xinerama. No final acaba sendo como se você não tivesse adicionado a linha.

O correto é colocar todas as opções dentro de uma única seção, como em:

Section “ServerFlags”
Option “Xinerama” “true”
Option “AllowMouseOpenFail” “true”
EndSection

O KDE possui algumas opções relacionadas ao Xinerama. Por exemplo, para escolher em qual tela a barra de tarefas ficará, clique com o botão direito sobre uma área vazia e acesse a opção “Configurar Painel”. A ativar o Xinerama aparecerá uma opção “Tela Xinerama”.
05
Você encontrará mais algumas opções no KControl em Ambiente de Trabalho > Comportamento da janela > Avançado.
06

Usando três ou mais monitores

O Xinerama não se limita a apenas duas placas de vídeo e dois monitores. Em teoria você pode usar quantas placas for possível instalar na placa mãe, 3, 5 ou até 7 numa placa com um slot AGP e 6 PCI.

Para isso você deve repetir os passos acima, adicionando uma seção “Monitor, “Device” e “Screen” para cada nova placa de vídeo. Se você tiver 3 placas, você terá três seções “Monitor” e assim por diante.

Não se esqueça de também adicionar uma nova linha na seção “Server Layout” para cada nova placa. Com tres placas a seção ficaria assim:

Section “ServerLayout”
Identifier “XFree86 Configured”
Screen 0 “Screen0” 0 0
Screen 1 “Screen1” RightOf “Screen0”
Screen 2 “Screen1” LeftOf “Screen0”
InputDevice “Keyboard0” “CoreKeyboard”
InputDevice “PS/2 Mouse” “CorePointer”
EndSection

Você não é obrigado a usar a mesma resolução e taxa de atualização para todas as placas, você pode usar por exemplo um monitor de 17″ a 1280×1024 e dois monitores de 15″ a 1024×768 por exemplo, mas, é obrigatório utilizar o mesmo número de bits de cor para todos os monitores. Hoje em dia isso não deve ser o problema, pois qualquer placa de vídeo com 4 MB já suporta 1280×1024 com 24 bits de cor.

A configuração da resolução e taxa de atualização para cada monitor vai dentro da seção “Screen” referente a ele. Esta configuração que usei como exemplo usa 1024×768 com 60 Hz e 16 bits de cor:

Section “Screen”
Identifier “Screen0”
Device “Card1”
Monitor “Monitor1”
DefaultColorDepth 16
SubSection “Display”
Depth 16
Modes “1024×768/60Hz” “640×480”
Virtual 0 0
EndSubSection
EndSection

Se você quisesse mudar para 800×600 com 75 Hz de taxa de atualização por exemplo, bastaria alterar o “1024×768/60Hz” por “800×600/75Hz”:

Section “Screen”
Identifier “Screen0”
Device “Card1”
Monitor “Monitor1”
DefaultColorDepth 16
SubSection “Display”
Depth 16
Modes “800×600/75Hz” “640×480”
Virtual 0 0
EndSubSection
EndSection

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X