(ambiente gráfico)
O X.org prover um ambiente gráfico.
- Servidor X: conhecido também como X server ou servidor gráfico;
- Sessão X: conhecido também como session X ou sessão gráfica;
- Cliente X: conhecido também como X client ou cliente gráfico;
- Biblioteca X: conhecido também como X library ou biblioteca gráfica;
- Programa X: conhecido também como X program ou programa gráfico;
Instalação do Servidor Gráfico
# apt-get update ; apt-get install xorg (instala o servidor X. Além disso, instala as X libraries, fontes e conjunto básico de X clients, módulos e utilitários. Poderia instalar o pacote "x-window-system" ao invés do "xorg". Na verdade, ao tentar instalar o "x-window-system é selecionado e instalado automaticamente o "xorg")
# yum makecache ; yum groupinstall "x window system" (idem, só que para o RedHat/Fedora)
# startx (inicia uma sessão X. Ao digitar esse comando deverá aparecer um ambiente mínimo para testes com monitor, mouse, teclado, resoluções etc e um ambiente shell. Esse comando/script é um frontend para o "xinit" que prover uma sessão X mínima. Para chamar algum programa X, basta digitar no shell do X. No shell digite "x" e aperte o TAB duas vezes para ver alguns dos programas. Ex: xcalc. Ao iniciar uma sessão X não são abertas portas TCP ou UDP. Para que a porta de comunicação TCP 6000, usada para comunicação com clientes X, seja aberta como o comando "startx", é necessário editar o arquivo "/etc/X11/xinit/xserverrc" e modificar a linha "exec /usr/bin/X11/X -nolisten tcp" para "exec /usr/bin/X11/X")
# xinit (inicia uma sessão X juntamente com o servidor X. É usado para iniciar o servidor gráfico "X Window System initializer" e um ambiente shell em modo monocromático que provê o mínimo do mínimo em comparação ao "startx". Além disso, a porta TCP 6000 é aberta. Para realizar um teste, abra o "xcalc" no "xinit" e depois no "startx" para ver a diferença. Esse comando é ótimo para testes, pois além de provê o mínimo de recursos gráficos em comparação ao "startx", também abre a porta TCP 6000 para a comunicação com clientes X)
# Xorg (idem, só que não inicia um ambiente shell. Também conhecido como X11R7 X server)
# X (idem)
# exit, CTRL+ALT+BACKSPACE ou Alt+F1-Crtl+C (para sair de uma seção X ou um servidor X)
Arquivo de Configuração
# vi /etc/X11/xorg.conf

Identifier "Generic Keyboard" (nome do dispositivo de entrada. Esse nome deve ser único nesse arquivo de configuração e ele será usado mais adiante na sessão "ServerLayout". Informações importantes sobre a configuração do teclado Xorg digite "man kbd", "man keyboard" ou "man xorg.conf")
Driver "kbd" (especifica o nome do módulo/driver que será carregado nessa seção InputDevice. O "kbd" é o driver Xorg do teclado. Outros drivers possíveis para a "InputDevice" podem ser verificados no manual do "xorg.conf", conforme figura a seguir)

Option "XkbRules" "xorg" (opcional. Especifica qual o arquivo de regras usado para interpretar as configurações/opções do XkbModel, XkbLayout, XkbVariant e XkbOptitons. Ao invés de usar o "xorg" poderia usar "xfree98" para plataformas PC-98 Japonês. Para ver as outras opções digite "ls /usr/share/X11/xkb/rules/". Para a opção "xorg", o arquivo de regras é "/usr/share/X11/xkb/rules/xorg" e arquivo com a lista de opções é "/usr/share/X11/xkb/rules/xorg.lst". Para se ter uma idéia segue o conteúdo desse útimo arquivo)

Option "XkbModel" "abnt2" (opcional. Especifica o nome do modelo do teclado. O modelo pode significar o frabricante, o fabricante+modelo, um teclado genérico etc. Ex: pc102, dell, microsoft, apple, jp106 [japonês genérico] etc. O padrão é "pc105". O modelo de teclado genérico brasileiro é "abnt2". Esse valor é obtido dentro do arquivo "/usr/share/X11/xkb/rules/xorg.lst")
Option "XkbLayout" "br" (opcional. especifica o nome do layout do teclado. Em outras palavras, diz qual é o país ou o tipo de língua teclado. O padrão é "us" e o brasileiro é "br". Esse valor é obtido dentro do arquivo "/usr/share/X11/xkb/rules/xorg.lst")
Option "XkbVariant" "abnt2" (opcional. Especifica as variantes do teclado. É usado para aprimorar o layout/país/língua do teclado. Por exemplo, se escolhercemos o país como "us" em "XkbLayout", teríamos como oções para "XkbVariant" o "euro" [com sinais europeus], "intl" [Internacional] etc. Para o "br" temos como exemplo o "thinkpad" [teclado com mouse], "nativo-epo" [brasileiro + esperanto]. O padrão é não configurar. Esse valor é obtido dentro do arquivo "/usr/share/X11/xkb/rules/xorg.lst". Para o teclado brasileiro sem variação deixe somente "abnt2")
EndSection (fecha essa sessão do teclado)
Obs1: o Indentifier e o Driver é requerido em toda seção InputDevice e Device. Todas as outras entradas são opcionais. Pode existir múltiplas seções InputDevice. Normalmente existem duas, uma para o teclado e outra para o mouse.
Obs2: os drivers dos dispositivos usados no ambiente gráfico ficam em "/usr/lib/xorg/modules/" Têm-se drivers para a placas de vídeo (intel, nv, i810, ati, vesa, sis, vmware etc), dispositivos de entrada (mouse, kdb, synaptics, evdev, wacom etc), fontes (freetype) etc (dri)).
Obs3: como já foi visto acima, os drivers dos dispositivos usados pelo ambiente gráfico ficam em "/usr/lib/xorg/modules/". Alguns exemplos de drivers mais conhecidos que o ambiente gráfico usa são os de vídeo, mouse e teclado. Já os drivers usados no modo texto ficam em "/lib/modules/" e os mais conhecidos são os da placa de rede, som, ata, ide, porta paralela e serial, usb, filesystem (ntfs, ext3, reiserfs etc), vídeo, mouse, teclado etc. Mas aí vem uma pergunta quer não quer calar: Existe a repetição de drivers, por exemplo, de vídeo, mouse e teclado para o ambiente gráfico e para o modo texto. SIM, mas veja que cada driver tem a sua função. O driver do mouse PS2 do modo texto fica em "/lib/modules/$(uname -r)/kernel/drivers/input/mouse/psmouse.ko" e do mouse PS2 do ambiente gráfico fica em "/usr/lib/xorg/modules/input/mouse_drv.so". Só que um é voltado para o modo texto e o outro para o ambiente gráfico. Da mesma forma, ocorre com o driver do teclado, do modo texto fica em "/lib/modules/$(uname -r)/kernel/drivers/input/evdev.ko" e do ambiente gráfico fica em "/usr/lib/xorg/modules/input/kbd_drv.so", sendo drivers diferentes usado em situações diferentes (texto e gráfico).
Obs4: os drivers dos dispositivos usados no ambiente gráfico são definidos em "/etc/X11/xorg.conf". Já os drivers dos dispositivos usados no modo texto podem ser definidos durante a compilação do kernel, em "/etc/modules", em "/etc/sysconfig/modules/*.modules" ou usando os comandos modprobe/insmod).

Identifier "Configured Mouse" (nome do dispositivo de entrada. Esse nome deve ser único nesse arquivo de configuração e ele será usado mais adiante na sessão "ServerLayout". Informações importantes sobre a configuração do mouse Xorg digite "man mousedrv" ou "man xorg.conf")
Driver "mouse" (especifica o nome do módulo/driver que será carregado nessa sessão InputDevice. O "mouse" é o driver Xorg do mouse. Esse driver suporta vários tipos e interface de mouse disponíveis no mercado. Outros drivers possíveis para a "InputDevice" podem ser verificados no manual do "xorg.conf", conforme figura a seguir)

Option "Device" "/dev/input/mice" (opcional. Especifica o dispositivo o qual o mouse está associado. Uma configuração comum é "/dev/mouse" que é frequentemente um link simbólico de um dispositivo real. A opções são: /dev/ttySx - mouse serial, /dev/psaux - mouse PS/2 e /dev/input/mice - mouse USB. O "x" do "/dev/ttySx" deve ser substituído por 0, 1, 2, ..., pois representam as portas seriais COM1, COM2, COM3, ..., respectivamente)
Option "Protocol" "ImPS/2" (opcional. Especifica o protocolo do mouse. Algumas opções de protocolo são: Auto - especifica que a auto-detecção deve ser tentada - usado bastante para mouse serial, PS/2 - mouse PS/2 ou USB sem wheel e ImPS/2 - mouse PS/2 ou USB com wheel. Wheel nada mais é do que a roda que fica entre os dois botões da maioria dos mouses atuais)
Option "Emulate3Buttons" "true" (opcional. Habilita ou desabilita a emulação do terceiro botão do meio de um mouse o qual só tem dois botões físicos. O terceiro botão é emulado ao pressionar ambos os botões simultanêamente. O padrão é "true", até o pressionamento do terceiro botão físico seja detectado)
Option "Buttons" "3" (especifica o número de botões. O padrão é 3 e o máximo é 24. Geralmente usado quando o número de botões não pôde ser auto-detectado)
Option "ZAxisMapping" "4 5" (usado com os mouses que têm wheel)
Option "Resolution" "inteiro" (configura a resolução do mouse por ponto / per inch)
Option "Sensitivity" "1.5" (configura a sensibilidade do mouse onde o movimento será multiplicado pelo valor definido por esta opção)
EndSection (fecha essa sessão do mouse)

Identifier "nVidia Corporation GeForce 8400 GS" (nome da placa de vídeo. Esse nome deve ser único nesse arquivo de configuração e ele será usado mais adiante na sessão "ServerLayout". Informações importantes sobre a configuração da placa de vídeo Xorg digite "man xorg.conf")
Driver "nv" (especifica o nome do módulo/driver que será carregado nessa seção Device. O "nv" é o driver Xorg para as placas NVidia. Esse driver suporta vários tipos de placas. Ver manual com o comando "man nv". Outros drivers possíveis para a seção "Device" podem ser verificados no manual do "xorg.conf", conforme figura a seguir. Caso ocorra problemas com o driver de vídeo, utilize o "vesa", pois é o driver genérico. Só para conhecimento, ao instalar um GNU/Linux com ambiente gráfico numa máquina virtual do VMWare utilize como driver o "vmware" para melhorar o desempenho geral)

EndSection (fecha essa sessão da placa de vídeo)

Identifier "Generic Monitor" (nome da monitor de vídeo. Esse nome deve ser único nesse arquivo de configuração e ele será usado mais adiante na sessão "ServerLayout". Informações importantes sobre a configuração do monitor Xorg digite "man xorg.conf")
Option "DPMS" (especifica a habilitação da extensão DPMS - Display Power Management Signaling - para o gerenciamento da tela. O padrão é habilitar. Esta opção também poderia ficar assim: Option "DPMS" "true")
HorizSync 30-96 (especifica o range da frequencia de sincronização horizontal suportada pelo monitor. Quando não é especificada a unidade, é usado o kHz, mas pode-se especificar MHz ou Hz. O padrão é 28-33kHz)
VertRefresh 50-160 (especifica o range da frequencia de atualização/refresh vertical suportada pelo monitor. Quando não é especificada a unidade, é usado o Hz, mas pode-se especificar MHz ou kHz. O padrão é 43-72Hz)
EndSection (fecha essa seção do monitor)

Identifier "Default Screen" (nome da sessão "Screen". Esse nome deve ser único nesse arquivo de configuração e ele será usado mais adiante na sessão "ServerLayout". Informações importantes sobre a configuração dessa seção digite "man xorg.conf")
Device "nVidia Corporation GeForce 8400 GS" (relaciona essa seção de screen/tela com a seção Device/placa de vídeo)
Monitor "Ceneric Monitor" (relaciona essa seção de screen/tela com a seção Monitor)
DefaultDepth 24 (define qual a SubSection que será usada. É exatamente nas SubSections que são definidas as resoluções e quantidade de cores que serão usadas. Nesse exemplo, é definido que será usada a "SubSection" que tiver a opção "Depth" igual a 24)
SubSection "Display" (dentro das SubSections são definidas as resoluções e quantidade de cores que serão usadas)
Viewport 0 0 (opcional. Esta opção só é usada para resolução de tela virtual, ou seja, quando queremos que a área de trabalho fique maior do que a do monitor. Essa opção só é relevante quando a resolução virtual for diferente da resolução real)
Depth X (quantidade de cores)
Modes "X" (resoluções suportadas)
EndSubSection (fecha essa subseção do Display)
EndSection (fecha essa seção da tela)

Identifier "Default Layout" (nome da sessão "Default Layout". Esse nome deve ser único nesse arquivo de configuração. Informações importantes sobre a configuração dessa seção digite "man xorg.conf")
Screen "Default Screen" (define qual seção "Screen" vai ser usada)
InputDevice "Generic Keyboard" (define qual seção "InputDevice" vai ser usada)
InputDevice "Configured Mouse" (define qual seção "InputDevice" vai ser usada)
EndSection (fecha essa seção ServeLayout)
Na maioria dos casos, as opções acima serão as mais usadas. Contudo, existem outras que podem ajudar a customizar ou melhorar a desenvoltura do ambiente gráfico. Abaixo estão algumas delas:

ModulePath "/usr/lib/xorg/modules" (define um caminho para a procura de módulos e/ou drivers para o servidor gráfico. Têm-se drivers para a placas de vídeo [intel, nv, i810, ati, vesa, sis, vmware etc], dispositivos de entrada [mouse, kdb, synaptics, evdev, wacom etc], fontes [freetype], módulos de extenção [dri, glx, extmod, dbe etc] etc)
FontPath "/usr/share/fonts/X11/misc" (a opção "FontPath" define onde procurar por fontes. Essa já é uma opção padrão usada mesmo que não exista no arquivo de configuração "xorg.conf". Os arquivos dentro dos diretórios definidos no "FontPath" geralmente são vários e podem estar compactados com o gzip)
FontPath "/usr/share/fonts/X11/cyrillic"
FontPath "/usr/share/fonts/X11/100dpi/:unscaled"
FontPath "/usr/share/fonts/X11/75dpi/:unscaled"
FontPath "/usr/share/fonts/X11/Type1" (. Essa já é uma opção padrão usada mesmo que não exista no arquivo de configuração "xorg.conf")
FontPath "/usr/share/fonts/X11/100dpi" (. Essa já é uma opção padrão usada mesmo que não exista no arquivo de configuração "xorg.conf")
FontPath "/usr/share/fonts/X11/75dpi" (. Essa já é uma opção padrão usada mesmo que não exista no arquivo de configuração "xorg.conf")
FontPath "/usr/share/fonts/X11/TTF" (. Essa já é uma opção padrão usada mesmo que não exista no arquivo de configuração "xorg.conf")
EndSection (fecha essa seção Files)
Obs: O caminho para as fontes pode ser um diretório ou um servidor de fontes (mais conhecido como Font Server). Um Font Server trabalha com a seguinte síntaxe no "xorg.conf": FontPath "<trans>/<hostname>:<port-number>". O "trans" deve ser substituído por "unix" ou "tcp", o "hostname" pelo endereço de rede e o "port-number" usualmente é o 7100. Ex1: FontPath "tcp/172.16.0.31:7100" para o servidor remoto. Ex2: FontPath "unix/:7100" para o servidor local.

Load "glx" (carrega o módulo chamado "glx")
Load "extmod" (carrega o módulo chamado "extmod"e é recomendado que este módulo seja carregado para que funções como o do SHAPE estejam disponìveis)
Load "record" ()
Load "dri2" ()
Load "dbe" ()
Load "dri" ()
Disable "dri" (não carrega o módulo chamado "dri". Alguns módulos são carregados por padrão e essa é uma maneira de desabilitá-los)
EndSection (fecha essa seção Module)
Obs: geralmente os módulos podem ser achados em "/usr/lib/xorg/modules/extensions/" e em "/usr/lib/xorg/modules/fonts/". Na verdade, a seção "Module" irá procurar em cada diretório especificado em "ModulePath" na seção "Files" de maneira recursiva.
Recuperação do Arquivo de Configuração
# X -configure (antes de executar esse comando, pare os serviços do ambiente gráfico ou finalize qualquer instância X. Depois, execute "X -configure". Com esse comando será gerado um arquivo chamado "xorg.conf.new" no diretório atual, customizado aos inputs e outputs do equipamento. Renomeie-o para "xorg.conf" e coloque-o em "/etc/X11/" (é interessante fazer backup do "xorg.conf" atual antes). Inicie o ambiente gráfico novamente)
# dexconf (somente para o Debian. Esse comando cria um novo arquivo "/etc/X11/xorg.conf" e o antigo é renomeado)
# xdpyinfo (utilitário X que mostra informação sobre o servidor X. Ele é usado para mostrar as capacitadade do servidor, predefindo valores para varios parâmetros usados na comunicação entre cliente e servidor e os diferentes tipos de telas e visuais que estão disponíveis. Algumas das informações mostradas são: versão do Xorg, resolução, dimensão da tela, quantidade de cores, quantidade de telas/monitores etc)
# xvidtune (programa usado para ajustar as configurações de tela depois de instalado o X11)
# xrandr (mostra as resoluções e frequencias compatíveis com a placa de vídeo e monitor. Informa sobre as saídas VGA, DVI etc da placa de vídeo)
# xrandr --verbose (idem, com mais detalhes)
# xrandr -d 1024x768 (muda resolução do monitor)
# xsetroot -solid "blue" (muda a cor de fundo)
# xsetroot (volta cor de fundo original)
Referências Bibliográgicas
http://imasters.uol.com.br/artigo/4933/linux/configurando_o_red_hat_para_ser_acessado_remotamente_via_modo_grafico/