---
title: Capítulo 5. O sistema X Window
part: Parte I. Primeiros Passos
prev: books/handbook/ports
next: books/handbook/partii
showBookMenu: true
weight: 7
params:
  path: "/books/handbook/x11/"
---

[[x11]]
= O sistema X Window
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:sectnumoffset: 5
:partnums:
:source-highlighter: rouge
:experimental:
:images-path: books/handbook/x11/

ifdef::env-beastie[]
ifdef::backend-html5[]
:imagesdir: ../../../../images/{images-path}
endif::[]
ifndef::book[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
toc::[]
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]

ifndef::env-beastie[]
toc::[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]

[[x11-synopsis]]
== Sinopse

Uma instalação padrão do FreeBSD usando o bsdinstall não irá instalar automaticamente uma interface gráfica para o usuário. Este capítulo descreve como instalar e configurar o Xorg, que fornece o sistema X Window open source usado para fornecer um ambiente gráfico. Em seguida, descreve como encontrar e instalar um ambiente de área de trabalho ou um gerenciador de janelas.

[NOTE]
====
Os usuários que preferem um método de instalação que configure automaticamente o Xorg devem consultar https://www.furybsd.org[FuryBSD], https://ghostbsd.org[GhostBSD] ou https://www.midnightbsd.org[MidnightBSD].
====

Para obter maiores informações sobre o hardware de vídeo suportado pelo Xorg, consulte o web site http://www.x.org/[x.org].

Depois de ler este capítulo, você saberá:

* Quais são os vários componentes do Sistema X Window e como eles interoperam.
* Como instalar e configurar o Xorg.
* Como instalar e configurar vários gerenciadores de janelas e ambientes de desktop.
* Como usar fontes TrueType(TM) no Xorg.
* Como configurar seu sistema para usar um sistema de login gráfico (XDM).

Antes de ler este capítulo, você deve:

* Saber como instalar softwares adicionais de terceiros, conforme descrito em crossref:ports[ports, Instalando Aplicativos. Pacotes e Ports].

[[x-understanding]]
== Terminologia

Embora não seja necessário entender todos os detalhes dos vários componentes do Sistema X Window e como eles interagem, algum conhecimento básico desses componentes pode ser útil.

Servidor X::
O X foi projetado desde o início para ser centrado em rede e para adotar um modelo "cliente-servidor". Neste modelo, o "Servidor X" é executado no computador que possui o teclado, o monitor e o mouse conectados. A responsabilidade do servidor inclui tarefas como gerenciar o monitor, manipular a entrada do teclado e do mouse e manipular a entrada ou saída de outros dispositivos, como um tablet ou um projetor de vídeo. Isso confunde algumas pessoas, porque a terminologia X é exatamente o oposto do que eles esperam. Eles esperam que o "X server" seja a grande máquina poderosa no final das contas, e o "Ciente X" seja a máquina em sua mesa.

Cliente X::
Cada aplicativo X, como o XTerm ou o Firefox, é um "cliente". Um cliente envia mensagens para o servidor, como "Por favor, desenhe uma janela nessas coordenadas", e o servidor envia de volta mensagens como "O usuário apenas clicou no botão OK".
+
Em um ambiente doméstico ou de uma pequena empresa, o servidor X e os clientes X geralmente são executados no mesmo computador. Também é possível executar o servidor X em um computador menos potente e executar os aplicativos X em um sistema mais poderoso. Nesse cenário, a comunicação entre o cliente X e o servidor ocorre através da rede.

Gerenciador de janelas::
O X não dita como as janelas devem se parecer na tela, como movê-las com o mouse, quais teclas devem ser usadas para mover-se entre as janelas, como devem ficar as barras de título em cada janela, se elas têm ou não botões para fechar nelas e assim por diante. Em vez disso, o X delega essa responsabilidade para um gerenciador de janelas separado. Existem http://www.xwinman.org/[dezenas de gerenciadores de janelas] disponíveis. Cada gerenciador de janelas oferece uma aparência diferente: alguns oferecem suporte a desktops virtuais, alguns permitem pressionamentos de tecla personalizados para gerenciar a área de trabalho, alguns têm um botão "Iniciar" e alguns são personalizáveis, permitindo uma alteração completa da aparência da área de trabalho. Os gerenciadores de janelas estão disponíveis na categoria [.filename]#x11-wm# da coleção de ports.
+
Cada gerenciador de janelas usa um mecanismo de configuração diferente. Alguns esperam que o arquivo de configuração seja escrito à mão, enquanto outros fornecem ferramentas gráficas para a maioria das tarefas de configuração.

Ambiente de desktop::
O KDE e o GNOME são considerados ambientes de desktop, pois incluem um conjunto completo de aplicativos para executar tarefas comuns de desktop. Estes podem incluir pacotes de escritório, navegadores da web e jogos.

Política de foco::
O gerenciador de janelas é responsável pela política de foco do mouse. Essa política fornece alguns meios para escolher qual janela está recebendo ativamente as teclas digitadas e também deve indicar visivelmente qual janela está ativa no momento.
+
Uma política de foco é chamada "click-to-focus". Neste modelo, uma janela fica ativa ao receber um clique do mouse. Na política "focus-follows-mouse", a janela que está sob o ponteiro do mouse tem foco e o foco é alterado apontando para outra janela. Se o mouse estiver sobre a janela raiz, esta janela estará focada. No modelo "sloppy-focus", se o mouse for movido sobre a janela raiz, a janela usada mais recentemente ainda terá o foco. Com sloppy-focus, o foco só é alterado quando o cursor entra em uma nova janela, e não ao sair da janela atual. Na política de "click-to-focus", a janela ativa é selecionada pelo clique do mouse. A janela pode então ser destacada para aparecer na frente de todas as outras janelas. Todas as teclas digitadas serão direcionadas para esta janela, mesmo se o cursor for movido para outra janela.
+
Diferentes gerenciadores de janela suportam diferentes modelos de foco. Todos eles suportam click-to-focus, e a maioria deles também suporta outras políticas. Consulte a documentação do gerenciador de janelas para determinar quais modelos de foco estão disponíveis.

Widgets::
Widget é um termo para todos os itens na interface do usuário que podem ser clicados ou manipulados de alguma forma. Isso inclui botões, caixas de seleção, botões de opção, ícones e listas. Um kit de ferramentas de widget é um conjunto de widgets usado para criar aplicativos gráficos. Existem vários toolkits de widgets populares, incluindo o Qt, usado pelo KDE, e o GTK+, usado pelo GNOME. Como resultado, os aplicativos terão uma aparência e comportamentos diferentes, dependendo de qual kit de ferramentas de widget foi usado para criar o aplicativo.

[[x-install]]
== Instalando o Xorg

No FreeBSD, o Xorg pode ser instalado como um pacote ou port.

O pacote binário pode ser instalado rapidamente, mas com menos opções de personalização:

[source,shell]
....
# pkg install xorg
....

Para compilar e instalar a partir da Coleção de Ports:

[source,shell]
....
# cd /usr/ports/x11/xorg
# make install clean
....

Qualquer uma dessas instalações resulta no sistema completo do Xorg sendo instalado. Pacotes binários são a melhor opção para a maioria dos usuários.

Uma versão menor do sistema X adequada para usuários experientes está disponível em package:x11/xorg-minimal[]. A maioria dos documentos, bibliotecas e aplicativos não será instalada. Algumas aplicações requerem esses componentes adicionais para funcionarem.

[[x-config]]
== Configuração do Xorg

[[x-config-quick-start]]
=== Inicio Rápido

O Xorg suporta as placas de vídeo, teclados e dispositivos USB mais comuns.

[TIP]
====

Placas de vídeo, monitores e dispositivos de entrada são detectados automaticamente e não exigem nenhuma configuração manual. Não crie o [.filename]#xorg.conf# ou execute o passo `-configure` a menos que a configuração automática falhe.
====

[.procedure]
====
. Se o Xorg tiver sido usado neste computador antes, mova ou remova qualquer arquivo de configuração existente:
+
[source,shell]
....
# mv /etc/X11/xorg.conf ~/xorg.conf.etc
# mv /usr/local/etc/X11/xorg.conf ~/xorg.conf.localetc
....
+
. Adicione o usuário que executará o Xorg ao grupo `video` ou `wheel` para ativar a aceleração 3D quando disponível. Para adicionar o usuário _jru_ ao grupo que estiver disponível:
+
[source,shell]
....
# pw groupmod video -m jru || pw groupmod wheel -m jru
....
+
. O gerenciador de janelas twm é incluído por padrão. Ele é chamado quando o Xorg se inicia:
+
[source,shell]
....
% startx
....
+
. Em algumas versões mais antigas do FreeBSD, o console do sistema deve ser definido como man:vt[4] antes que a volta para o console de texto funcione corretamente. Veja <<x-config-kms>>.
====

[[x-config-user-group]]
=== Grupo de Usuários para Vídeo Acelerado

O acesso ao [.filename]#/dev/dri# é necessário para permitir a aceleração 3D nas placas de vídeo. Geralmente é mais simples adicionar o usuário que estará executando o X no grupo `video` ou no `wheel`. Aqui, o man:pw[8] é usado para adicionar o usuário _slurms_ ao grupo `video`, ou ao grupo `wheel` se não houver nenhum grupo `video`:

[source,shell]
....
# pw groupmod video -m slurms || pw groupmod wheel -m slurms
....

[[x-config-kms]]
=== Configuração do Modo Kernel (KMS)

Quando o computador alterna a exibição do console para uma resolução de tela mais alta para o X, ele deve definir o _modo_ da saída de vídeo. Versões recentes do Xorg usam um sistema dentro do kernel para fazer essas mudanças de modo mais eficiente. Versões mais antigas do FreeBSD usam o man:sc[4], que não tem conhecimento do sistema KMS. O resultado final é que depois de fechar o X, o console do sistema fica em branco, embora ainda esteja funcionando. O console man:vt[4] mais recente evita esse problema.

Adicione esta linha ao [.filename]#/boot/loader.conf# para ativar o man:vt[4]:

[.programlisting]
....
kern.vty=vt
....

[[x-config-files]]
=== Arquivos de Configuração

A configuração manual geralmente não é necessária. Por favor, não crie manualmente arquivos de configuração, a menos que a autoconfiguração não funcione.

[[x-config-files-directory]]
==== Diretório

O Xorg procura em vários diretórios por arquivos de configuração. O [.filename]#/usr/local/etc/X11/# é o diretório recomendado para esses arquivos no FreeBSD. Usar esse diretório ajuda a manter os arquivos dos aplicativos separados dos arquivos do sistema operacional.

Armazenar arquivos de configuração no diretório legado [.filename]#/etc/X11/# ainda funciona. No entanto, isso combina arquivos de aplicativos com os arquivos básicos do FreeBSD e não é recomendado.

[[x-config-files-single-or-multi]]
==== Arquivos Únicos ou Múltiplos

É mais fácil usar multiplos arquivos em que cada um controla uma configuração específica ao invés do único e tradicional [.filename]#xorg.conf#. Esses arquivos são armazenados no subdiretório [.filename]#xorg.conf.d/# do diretório principal do arquivo de configuração. O caminho completo é tipicamente [.filename]#/usr/local/etc/X11/xorg.conf.d/#.

Exemplos desses arquivos serão mostrados posteriormente nesta seção.

O tradicional e único arquivo [.filename]#xorg.conf# ainda funciona, mas não é tão claro e nem tão flexível quanto vários arquivos no subdiretório [.filename]#xorg.conf.d/#.

[[x-config-video-cards]]
=== Placas de Vídeo

Devido as mudanças feitas nas versões recentes do FreeBSD, agora é possível usar drivers gráficos fornecidos pelo Framework do Ports, assim como pelos pacotes. Assim sendo, os usuários podem usar um dos seguintes drivers disponíveis em package:graphics/drm-kmod[].
[[x-config-video-cards-ports]]
Intel KMS driver::
A aceleração 2D e 3D é suportada na maioria das placas gráficas do driver Intel KMS fornecidas pela Intel.
+
Nome do driver: `i915kms`
+
A aceleração 2D e 3D é suportada na maioria das placas gráficas de driver Radeon KMS mais antigas fornecidas pela AMD.
+
Nome do Driver: `radeonkms`
+
A aceleração 2D e 3D é suportada nas mais recentes placas gráficas do driver AMD KMS fornecidas pela AMD.
+
Nome do Driver: `amdgpu`
+
Para referência, veja https://en.wikipedia.org/wiki/List_of_Intel_graphics_processing_units[] ou https://en.wikipedia.org/wiki/List_of_AMD_graphics_processing_units[] para uma lista das GPUs suportadas.

[[x-config-video-cards-intel]]
Intel(TM)::
A aceleração 3D é suportada na maioria dos chipsets gráficos da Intel(TM) até o Ivy Bridge (HD Graphics 2500, 4000 e P4000), incluindo Iron Lake (HD Graphics) e Sandy Bridge (HD Graphics 2000) .
+
Nome do driver: `intel`
+
Para referência, veja https://en.wikipedia.org/wiki/List_of_Intel_graphics_processing_units[].

[[x-config-video-cards-radeon]]
AMD(TM) Radeon::
Aceleração 2D e 3D é suportada em placas Radeon das mais antigas até a série HD6000.
+
Nome do Driver: `radeon`
+
Para referência, veja https://en.wikipedia.org/wiki/List_of_AMD_graphics_processing_units[].

[[x-config-video-cards-nvidia]]
NVIDIA::
Vários drivers da NVIDIA estão disponíveis na categoria [.filename]#x11# da Coleção de Ports. Instale o driver que corresponde à sua placa de vídeo.
+
Para referência, veja https://en.wikipedia.org/wiki/List_of_Nvidia_graphics_processing_units[].

[[x-config-video-cards-hybrid]]
Gráficos Híbridos de Combinação::
Alguns notebooks adicionam unidades de processamento gráfico adicionais àquelas incorporadas ao chipset ou ao processador. O _Optimus_ combina o hardware da Intel(TM) e da NVIDIA. O _Switchable Graphics_ ou _Hybrid Graphics_ são uma combinação dos processadores Intel(TM) ou AMD(TM) e uma GPUAMD(TM) Radeon.
+
As implementações desses sistemas gráficos híbridos variam e o Xorg no FreeBSD não é capaz de controlar todas as versões deles.
+
Alguns computadores fornecem uma opção no BIOS para desativar um dos adaptadores gráficos ou selecionar um modo _discreto_ que pode ser usado com um dos drivers de placa de vídeo padrão. Por exemplo, às vezes é possível desativar a GPU NVIDIA em um sistema Optimus. O vídeo Intel(TM) pode então ser usado com um driver Intel(TM).
+
Configurações de BIOS dependem do modelo do computador. Em algumas situações, ambas GPUs podem ser deixadas ativadas, mas criar um arquivo de configuração que use apenas a GPU principal na seção `Device` é o suficiente para tornar esse sistema funcional.
[[x-config-video-cards-other]]
Outras placas de vídeo::
Drivers para algumas placas de vídeo menos comuns podem ser encontrados no diretório [.filename]#x11-drivers# da Coleção de Ports.
+
PLacas que não são suportadas por um driver específico ainda podem ser usadas com o driver package:x11-drivers/xf86-video-vesa[]. Este driver é instalado pelo package:x11/xorg[]. Ele também pode ser instalado manualmente como package:x11-drivers/xf86-video-vesa[]. O Xorg tenta usar este driver quando um driver específico não é encontrado para a placa de vídeo.
+
O package:x11-drivers/xf86-video-scfb[] é um driver de vídeo não especializado similar que funciona em muitos computadores UEFI e ARM(TM).

[[x-config-video-cards-file]]
Configurando o driver de vídeo em um arquivo::
Para definir o driver Intel(TM) em um arquivo de configuração:
+
[[x-config-video-cards-file-intel]]
.Selecione o driver de vídeo Intel(TM) em um arquivo
[example]
====
[.filename]#/usr/local/etc/X11/xorg.conf.d/driver-intel.conf#

[.programlisting]
....
Section "Device"
	Identifier "Card0"
	Driver     "intel"
	# BusID    "PCI:1:0:0"
EndSection
....

Se mais de uma placa de vídeo estiver presente, o identificador `BusID` pode ser descomentado e configurado para selecionar a placa desejada. Uma lista de barramento de placa de vídeo ID pode ser exibida com `pciconf -lv | grep -B3 display`.
====
+
Para definir o driver Radeon em um arquivo de configuração:
+
[[x-config-video-cards-file-radeon]]
.Selecione o driver de vídeo Radeon em um arquivo
[example]
====
[.filename]#/usr/local/etc/X11/xorg.conf.d/driver-radeon.conf#

[.programlisting]
....
Section "Device"
	Identifier "Card0"
	Driver     "radeon"
EndSection
....

====
+
Para definir o driver VESA em um arquivo de configuração:
+
[[x-config-video-cards-file-vesa]]
.Selecione o driver de vídeo VESA em um arquivo
[example]
====
[.filename]#/usr/local/etc/X11/xorg.conf.d/driver-vesa.conf#

[.programlisting]
....
Section "Device"
	Identifier "Card0"
	Driver     "vesa"
EndSection
....

====
+
Para definir o driver `scfb` para uso com um computador UEFI ou ARM(TM):
+
[[x-config-video-cards-file-scfb]]
.Selecione o driver de vídeo `scfb` em um arquivo
[example]
====
[.filename]#/usr/local/etc/X11/xorg.conf.d/driver-scfb.conf#

[.programlisting]
....
Section "Device"
	Identifier "Card0"
	Driver     "scfb"
EndSection
....

====

[[x-config-monitors]]
=== Monitores

Quase todos os monitores suportam o padrão Extended Display Identification Data (EDID). O Xorg usa o EDID para se comunicar com o monitor e detectar as resoluções e taxas de atualização suportadas. Em seguida, seleciona a combinação mais adequada de configurações para usar com esse monitor.

Outras resoluções suportadas pelo monitor podem ser escolhidas definindo a resolução desejada nos arquivos de configuração, ou após o servidor X ter sido iniciado com man:xrandr[1].

[[x-config-monitors-xrandr]]
Usando man:xrandr[1]::
Execute o man:xrandr[1] sem nenhum parâmetro para ver uma lista de saídas de vídeo e modos de monitor detectados:
+
[source,shell]
....
% xrandr
Screen 0: minimum 320 x 200, current 3000 x 1920, maximum 8192 x 8192
DVI-0 connected primary 1920x1200+1080+0 (normal left inverted right x axis y axis) 495mm x 310mm
   1920x1200     59.95*+
   1600x1200     60.00
   1280x1024     85.02    75.02    60.02
   1280x960      60.00
   1152x864      75.00
   1024x768      85.00    75.08    70.07    60.00
   832x624       74.55
   800x600       75.00    60.32
   640x480       75.00    60.00
   720x400       70.08
DisplayPort-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 disconnected (normal left inverted right x axis y axis)
....
+
Isso mostra que a saída `DVI-0` está sendo usada para exibir uma resolução de tela de 1920x1200 pixels a uma taxa de atualização de cerca de 60 Hz. Os monitores não estão conectados aos conectores `DisplayPort-0` e `HDMI-0`.
+
Qualquer um dos outros modos de exibição pode ser selecionado com man:xrandr[1]. Por exemplo, para mudar para 1280x1024 a 60 Hz:
+
[source,shell]
....
% xrandr --mode 1280x1024 --rate 60
....
+
Uma tarefa comum é usar a saída de vídeo externa em um notebook para um projetor de vídeo.
+
O tipo e a quantidade de conectores de saída variam entre os dispositivos, e o nome dado a cada saída varia de driver para driver. O que um driver chama de `HDMI-1`, outro pode chamar de `HDMI1`. Portanto, o primeiro passo é executar man:xrandr[1] para listar todas as saídas disponíveis:
+
[source,shell]
....
% xrandr
Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192
LVDS1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 344mm x 193mm
   1366x768      60.04*+
   1024x768      60.00
   800x600       60.32    56.25
   640x480       59.94
VGA1 connected (normal left inverted right x axis y axis)
   1280x1024     60.02 +  75.02
   1280x960      60.00
   1152x864      75.00
   1024x768      75.08    70.07    60.00
   832x624       74.55
   800x600       72.19    75.00    60.32    56.25
   640x480       75.00    72.81    66.67    60.00
   720x400       70.08
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)
....
+
Quatro saídas foram encontradas: os conectores `LVDS1` e `VGA1`, `HDMI1` e `DP1` do painel interno.
+
O projetor foi conectado à saída `VGA1`. O man:xrandr[1] agora é usado para definir essa saída para a resolução nativa do projetor e adicionar o espaço adicional à direita da área de trabalho:
+
[source,shell]
....
% xrandr --output VGA1 --auto --right-of LVDS1
....
+
A opção `--auto` escolhe a resolução e a taxa de atualização detectadas pelo EDID. Se a resolução não for detectada corretamente, um valor fixo pode ser fornecido com `--mode` em vez da instrução `--auto`. Por exemplo, a maioria dos projetores pode ser usada com uma resolução de 1024x768, que é definida com `--mode 1024x768`.
+
O man:xrandr[1] geralmente é executado a partir do [.filename]#.xinitrc# para definir o modo apropriado quando o X é iniciado.

[[x-config-monitors-files]]
Configurando a resolução do monitor em um arquivo::
Para definir uma resolução de tela de 1024x768 em um arquivo de configuração:
+
.Defina a resolução de tela em um arquivo
[example]
====
[.filename]#/usr/local/etc/X11/xorg.conf.d/screen-resolution.conf#

[.programlisting]
....
Section "Screen"
	Identifier "Screen0"
	Device     "Card0"
	SubSection "Display"
	Modes      "1024x768"
	EndSubSection
EndSection
....

====
+
Os poucos monitores que não possuem EDID podem ser configurados setando o `HorizSync` e o `VertRefresh` para o intervalo de frequências suportado pelo monitor.
+
.Configurando Manualmente as Frequências do Monitor
[example]
====
[.filename]#/usr/local/etc/X11/xorg.conf.d/monitor0-freq.conf#

[.programlisting]
....
Section "Monitor"
	Identifier   "Monitor0"
	HorizSync    30-83   # kHz
	VertRefresh  50-76   # Hz
EndSection
....

====

[[x-config-input]]
=== Dispositivos de Entrada

[[x-config-input-keyboard]]
==== Teclados

[[x-config-input-keyboard-layout]]
Layout do Teclado::
A localização padronizada das teclas em um teclado é chamada de _layout_. Layouts e outros parâmetros ajustáveis são listados em man:xkeyboard-config[7].
+
Um layout dos Estados Unidos é o padrão. Para selecionar um layout alternativo, defina as opções `XkbLayout` e `XkbVariant` em um `InputClass`. Isso será aplicado a todos os dispositivos de entrada que correspondam à classe.
+
Este exemplo seleciona um layout de teclado Francês.
+
.Definindo um layout de teclado
[example]
====
[.filename]#/usr/local/etc/X11/xorg.conf.d/keyboard-fr.conf#

[.programlisting]
....
Section	"InputClass"
	Identifier	"KeyboardDefaults"
	MatchIsKeyboard	"on"
	Option		"XkbLayout" "fr"
EndSection
....

====
+
.Definindo vários layouts de teclado
[example]
====
Define os layouts de teclado para Estados Unidos, Espanhol e Ucraniano. Alterne entre esses layouts pressionando kbd:[Alt+Shift]. O package:x11/xxkb[] ou package:x11/sbxkb[] pode ser usado para um melhor controle da mudança de layout e dos indicadores do layout atual.

[.filename]#/usr/local/etc/X11/xorg.conf.d/kbd-layout-multi.conf#

[.programlisting]
....
Section	"InputClass"
	Identifier	"All Keyboards"
	MatchIsKeyboard	"yes"
	Option		"XkbLayout" "us, es, ua"
EndSection
....

====
[[x-config-input-keyboard-zap]]
Fechando o Xorg pelo teclado::
X pode ser fechado com uma combinação de teclas. Por padrão, essa combinação de teclas não está definida porque entra em conflito com os comandos do teclado para alguns aplicativos. Ativar essa opção requer alterações na seção `InputDevice` do teclado:
+
.Ativando o fechamento de X pelo teclado
[example]
====
[.filename]#/usr/local/etc/X11/xorg.conf.d/keyboard-zap.conf#

[.programlisting]
....
Section	"InputClass"
	Identifier	"KeyboardDefaults"
	MatchIsKeyboard	"on"
	Option		"XkbOptions" "terminate:ctrl_alt_bksp"
EndSection
....

====

[[x11-input-mice]]
==== Mouse e Dispositivos Similares

[IMPORTANT]
====
Se ao usar package:xorg-server[] 1.20.8 ou maior no FreeBSD 12.1 e não usar man:moused[8], adicione `kern.evdev.rcpt_mask=12` ao arquivo [.filename]#/etc/sysctl.conf#:
====

Muitos parâmetros do mouse podem ser ajustados com opções de configuração. Veja man:mousedrv[4] para obter uma lista completa.
[[x11-input-mice-buttons]]
Botões do Mouse::
O número de botões em um mouse pode ser definido na seção `InputDevice` do [.filename]#xorg.conf#. Para definir o número de botões para 7:
+
.Definindo o número de botões do mouse
[example]
====
[.filename]#/usr/local/etc/X11/xorg.conf.d/mouse0-buttons.conf#

[.programlisting]
....
Section "InputDevice"
	Identifier  "Mouse0"
	Option      "Buttons" "7"
EndSection
....

====

[[x-config-manual-configuration]]
=== Configuração manual

Em alguns casos, a autoconfiguração do Xorg não funciona com alguns hardwares específicos, ou uma configuração diferente é desejada. Para esses casos, um arquivo de configuração personalizado pode ser criado.

[WARNING]
====

Não crie arquivos de configuração manualmente, a menos que seja necessário. A configuração manual desnecessária pode impedir o funcionamento adequado.
====

Um arquivo de configuração pode ser gerado pelo Xorg baseado no hardware detectado. Esse arquivo geralmente é um ponto de partida útil para configurações personalizadas.

Gerando um arquivo [.filename]#xorg.conf#:

[source,shell]
....
# Xorg -configure
....

O arquivo de configuração é salvo em [.filename]#/root/xorg.conf.new#. Faça as alterações desejadas e teste esse arquivo(usando `-retro` assim será exibido um fundo visível) com:

[source,shell]
....
# Xorg -retro -config /root/xorg.conf.new
....

Após a nova configuração ter sido ajustada e testada, ela pode ser dividida em arquivos menores no diretorio, [.filename]#/usr/local/etc/X11/xorg.conf.d/#.

[[x-fonts]]
== Usando fontes no Xorg

[[type1]]
=== Fontes Type1

As fontes padrões que vem com o Xorg não são adequadas para muitas aplicações desktop. As fontes grandes aparecem irregulares e com aparência não profissional, e as fontes pequenas são quase ilegíveis. Contudo existem muitas fontes Type1 (PostScript(TM)) gratuitas de alta qualidade prontas para uso no Xorg. Por exemplo, a coleção de fontes URW (package:x11-fonts/urwfonts[]) inclui versões de alta qualidade de fontes type1 padrão (Times Roman(TM), Helvetica(TM), Palatino(TM) e outras). A coleção Freefonts (package:x11-fonts/freefonts[]) inclui muito mais fontes, mas a maioria delas direcionadas para uso em softwares gráficos como o Gimp, e não são tão completas para servir como fontes de tela. Além disso, o Xorg pode ser configurado para usar fontes TrueType(TM) com um minimo esforço. Para maiores detalhes sobre isso veja a página de manual do man:X[7] ou <<truetype>>.

Para instalar as coleções de fontes Type1 usando pacotes binários, execute os seguintes comandos:

[source,shell]
....
# pkg install urwfonts
....

Como alternativa, para compilar a partir da coleção de Ports, execute os seguintes comandos:

[source,shell]
....
# cd /usr/ports/x11-fonts/urwfonts
# make install clean
....

Proceda da mesma forma com a freefont ou outras coleções. Para que o servidor X detecte essas fontes, adicione uma linha apropriada ao arquivo de configuração do servidor X ([.filename]#/etc/X11/xorg.conf#):

[.programlisting]
....
FontPath "/usr/local/shared/fonts/urwfonts/"
....

Alternativamente, na linha de comando de execução da sessão X:

[source,shell]
....
% xset fp+ /usr/local/shared/fonts/urwfonts
% xset fp rehash
....

Isso funcionará, mas será perdido quando a sessão X for fechada, a menos que seja adicionada ao arquivo de inicialização ([.filename]#~/.xinitrc# para uma sessão `startx` normal ou [.filename]#~/.xsession# ao efetuar login através de um gerenciador de login gráfico como o XDM). Uma terceira forma é usar o novo [.filename]#/usr/local/etc/fonts/local.conf#, como demonstrado em <<antialias>>.

[[truetype]]
=== Fontes TrueType(TM)

O Xorg tem suporte nativo para renderizar fontes TrueType(TM). Existem dois módulos diferentes que podem ativar essa funcionalidade. O módulo freetype é usado neste exemplo porque é mais consistente com os outros backends de renderização de fonte. Para habilitar o módulo freetype, basta adicionar a seguinte linha à seção `"Module"` do [.filename]#/etc/X11/xorg.conf#.

[.programlisting]
....
Load  "freetype"
....

Agora crie um diretório para as fontes TrueType(TM) (por exemplo, [.filename]#/usr/local/shared/fonts/TrueType#) e copie todas as fontes TrueType(TM) para este diretório. Tenha em mente que as fontes TrueType(TM) não podem ser obtidas diretamente de um Apple(TM)Mac(TM); elas devem estar no formato UNIX(TM)/MS-DOS(TM)/Windows(TM) para uso pelo Xorg. Uma vez que os arquivos foram copiados para este diretório, use mkfontdir para criar um [.filename]#fonts.dir#, para que o renderizador de fontes do X saiba que esses novos arquivos foram instalados. O `mkfontdir` pode ser instalado como um pacote binário com o comando:

[source,shell]
....
# pkg install mkfontdir
....

Em seguida, crie um índice de arquivos de fontes X em um diretório:

[source,shell]
....
# cd /usr/local/shared/fonts/TrueType
# mkfontdir
....

Agora adicione o diretório TrueType(TM) ao caminho da fonte. Isso é exatamente o mesmo descrito em <<type1>>:

[source,shell]
....
% xset fp+ /usr/local/shared/fonts/TrueType
% xset fp rehash
....

ou adicione uma linha de `FontPath` ao [.filename]#xorg.conf#.

Agora, o Gimp, o Apache OpenOffice e todos os outros aplicativos X devem reconhecer as fontes TrueType(TM) instaladas. Fontes extremamente pequenas (como o texto em uma tela de alta resolução em uma página da Web) e fontes extremamente grandes (dentro do StarOffice(TM)) ficarão muito melhores agora.

[[antialias]]
=== Fontes com Anti-Alias

Todas as fontes do Xorg que são encontradas em [.filename]#/usr/local/shared/fonts/# e [.filename]#~/.fonts/# são automaticamente disponibilizadas para anti-aliasing para aplicativos compatíveis com Xft-aware. Os aplicativos mais recentes são compatíveis com o Xft-aware, incluindo o KDE, o GNOME e o Firefox.

Para controlar quais fontes são anti-aliased, ou para configurar as propriedades do anti-alias, crie (ou edite, se já existir) o arquivo [.filename]#/usr/local/etc/fonts/local.conf#. Vários recursos avançados do sistema de fontes Xft podem ser ajustados usando este arquivo; Esta seção descreve apenas algumas possibilidades simples. Para maiores detalhes, por favor veja man:fonts-conf[5].

Este arquivo deve estar no formato XML. Preste muita atenção ao uso de letras maiusculas e minusculas e certifique-se de que todas as tags estejam corretamente fechadas. O arquivo começa com o cabeçalho XML usual seguido por uma definição DOCTYPE e, em seguida, a tag `<fontconfig>`:

[.programlisting]
....
<?xml version="1.0"?>
      <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
      <fontconfig>
....

Como dito anteriormente, todas as fontes em [.filename]#/usr/local/shared/fonts/# e [.filename]#~/.fonts/# já estão disponíveis para aplicativos Xft-aware. Para adicionar outro diretório fora dessas duas árvores de diretórios, adicione uma linha como essa a [.filename]#/usr/local/etc/fonts/local.conf#:

[.programlisting]
....
<dir>/path/to/my/fonts</dir>
....

Depois de adicionar novas fontes e especialmente novos diretórios de fontes, reconstrua os caches de fontes:

[source,shell]
....
# fc-cache -f
....

O anti-aliasing torna as bordas um pouco confusas, o que torna o texto muito pequeno mais legível e remove os "serrilhados" do texto grande, mas pode causar fadiga ocular se aplicado ao texto normal. Para excluir tamanhos de fonte menores que 14 pontos do anti-aliasing, inclua estas linhas:

[.programlisting]
....
        <match target="font">
	    <test name="size" compare="less">
		<double>14</double>
	    </test>
	    <edit name="antialias" mode="assign">
		<bool>false</bool>
	    </edit>
	</match>
	<match target="font">
	    <test name="pixelsize" compare="less" qual="any">
		<double>14</double>
	    </test>
	    <edit mode="assign" name="antialias">
		<bool>false</bool>
	    </edit>
	</match>
....

O espaçamento para algumas fontes monoespaçadas também pode ser inadequado com o anti-aliasing. Este parece ser um problema com o KDE, em particular. Uma possível correção é forçar o espaçamento dessas fontes para que seja 100. Adicione essas linhas:

[.programlisting]
....
	<match target="pattern" name="family">
	   <test qual="any" name="family">
	       <string>fixed</string>
	   </test>
	   <edit name="family" mode="assign">
	       <string>mono</string>
	   </edit>
	</match>
	<match target="pattern" name="family">
	    <test qual="any" name="family">
		<string>console</string>
	    </test>
	    <edit name="family" mode="assign">
		<string>mono</string>
	    </edit>
	</match>
....

(isto cria um apelido para outros nomes comuns para fontes fixas como `"mono"`), e então adicione:

[.programlisting]
....
         <match target="pattern" name="family">
	     <test qual="any" name="family">
		 <string>mono</string>
	     </test>
	     <edit name="spacing" mode="assign">
		 <int>100</int>
	     </edit>
	 </match>
....

Determinadas fontes, como Helvetica, podem ter um problema com o anti-alias. Geralmente isso se manifesta como uma fonte que parece cortada ao meio na vertical. Na pior das hipóteses, pode causar falhas nos aplicativos. Para evitar isso, considere adicionar o seguinte ao [.filename]#local.conf#:

[.programlisting]
....
         <match target="pattern" name="family">
	     <test qual="any" name="family">
		 <string>Helvetica</string>
	     </test>
	     <edit name="family" mode="assign">
		 <string>sans-serif</string>
	     </edit>
	 </match>
....

Depois de editar o [.filename]#local.conf#, certifique-se de finalizar o arquivo com a tag `</fontconfig>`. Não fazer isso fará com que as alterações sejam ignoradas.

Os usuários podem adicionar configurações personalizadas criando seus próprios arquivos [.filename]#~/.config/fontconfig/fonts.conf#. Este arquivo usa o mesmo formato XML descrito acima.

Um último ponto: com uma tela de LCD, a amostragem de sub-pixels pode ser desejada. Isso basicamente trata os componentes vermelho, verde e azul (separados horizontalmente) separadamente para melhorar a resolução horizontal; os resultados podem ser dramáticos. Para habilitar isso, adicione a linha em algum lugar do [.filename]#local.conf#:

[.programlisting]
....
	 <match target="font">
	     <test qual="all" name="rgba">
		 <const>unknown</const>
	     </test>
	     <edit name="rgba" mode="assign">
		 <const>rgb</const>
	     </edit>
	 </match>
....

[NOTE]
====
Dependendo do tipo de display, o `rgb` pode precisar ser alterado para `bgr`, `vrgb` ou `vbgr`: experimente e veja qual funciona melhor.
====

[[x-xdm]]
== O Gerenciador de Display X

O Xorg fornece um Gerenciador de Display X, o XDM, que pode ser usado para o gerenciamento de sessões de login. O XDM fornece uma interface gráfica para escolher em qual servidor de display se conectar para inserir informações de autorização, tal como uma combinação de login e senha.

Esta seção demonstra como configurar o X Display Manager no FreeBSD. Alguns ambientes de desktop fornecem seu próprio gerenciador de login gráfico. Consulte <<x11-wm-gnome>> para instruções sobre como configurar o GNOME Display Manager e <<x11-wm-kde>> para instruções sobre como configurar o KDE Display Manager.

=== Configurando o XDM

Para instalar o XDM, use o pacote ou ports package:x11/xdm[]. Uma vez instalado, o XDM pode ser configurado para ser executado quando a máquina for inicializada editando esta entrada em [.filename]#/etc/ttys#:

[source,shell]
....
ttyv8   "/usr/local/bin/xdm -nodaemon"  xterm   off secure
....

Altere o `off` para `on` e salve a edição. O `ttyv8` nesta entrada indica que o XDM será executado no nono terminal virtual.

O diretório de configuração do XDM está localizado em [.filename]#/usr/local/lib/X11/xdm#. Esse diretório contém diversos arquivos usados para alterar o comportamento e a aparência do XDM, bem como alguns scripts e programas usados para configurar a área de trabalho quando o XDM está em execução. <<xdm-config-files>> resume a função de cada um desses arquivos. A sintaxe exata e o uso desses arquivos são descritos em man:xdm[1].
[[xdm-config-files]]
.Arquivos de Configuração do XDM
[cols="1,1", frame="none", options="header"]
|===
| Arquivo
| Descrição

|[.filename]#Xaccess#
|O protocolo para conectar ao XDM é chamado de X Display Manager Connection Protocol (XDMCP). Este arquivo é um conjunto de regras de autorização do cliente para controlar conexões de XDMCP de máquinas remotas. Por padrão, esse arquivo não permite a conexão de nenhum cliente remoto.

|[.filename]#Xresources#
|Este arquivo controla a aparência do seletor de display XDM e das telas de login. A configuração padrão é uma janela de login retangular simples com o nome do host da máquina exibido na parte superior em uma fonte grande e "Login:" e "Senha:" solicitado abaixo. O formato deste arquivo é idêntico ao arquivo app-defaults descrito na documentação do Xorg.

|[.filename]#Xservers#
|A lista de exibições locais e remotas que o seletor deve fornecer como opções de login.

|[.filename]#Xsession#
|Script de sessão padrão para logins que é executado pelo XDM após um usuário realizar o login. Isso aponta para um script de sessão personalizado em [.filename]#~/.xsession#.

|[.filename]#Xsetup_#*
|Script para iniciar automaticamente os aplicativos antes de exibir as interfaces de seleção ou de login. Há um script para cada exibição sendo usada, denominada [.filename]#Xsetup_*#, em que `*` é o número de exibição local. Geralmente, esses scripts executam um ou dois programas em segundo plano, como `xconsole`.

|[.filename]#xdm-config#
|Configuração global para todos os monitores executados nesta máquina.

|[.filename]#xdm-errors#
|Contém os erros gerados pelo programa do servidor. Se um display que o XDM está tentando iniciar travar, procure neste arquivo por mensagens de erro. Essas mensagens também são gravadas no [.filename]#~/.xsession-errors# do usuário.

|[.filename]#xdm-pid#
|O ID do processo XDM em execução.
|===

=== Configurando o acesso remoto

Por padrão, somente usuários no mesmo sistema podem efetuar login usando o XDM. Para permitir que os usuários em outros sistemas se conectem ao servidor de Display, edite as regras de controle de acesso e ative o listener de conexão.

Para configurar o XDM para escutar qualquer conexão remota, comente a linha `DisplayManager.requestPort` em [.filename]#/usr/local/etc/X11/xdm/xdm-config# colocando um `!` na frente dele:

[source,shell]
....
! SECURITY: do not listen for XDMCP or Chooser requests
! Comment out this line if you want to manage X terminals with xdm
DisplayManager.requestPort:     0
....

Salve as edições e reinicie o XDM. Para restringir o acesso remoto, veja as entradas de exemplo em [.filename]#/usr/local/lib/X11/xdm/Xaccess# e consulte man:xdm[1] para mais informações.

[[x11-wm]]
== Ambientes de desktop

Esta seção descreve como instalar três ambientes de desktop populares em um sistema FreeBSD. Um ambiente de desktop pode variar de um gerenciador de janelas simples a um conjunto completo de aplicativos de desktop. Mais de cem ambientes de área de trabalho estão disponíveis na categoria [.filename]#x11-wm# da Coleção de Ports.

[[x11-wm-gnome]]
=== GNOME

O GNOME é um ambiente de área de trabalho amigável. Ele inclui um painel para iniciar aplicativos e exibir status, uma área de trabalho, um conjunto de ferramentas e aplicativos e um conjunto de convenções que facilitam a cooperação entre os aplicativos e a compatibilidade entre eles. Mais informações sobre o GNOME no FreeBSD podem ser encontradas em https://www.FreeBSD.org/gnome[https://www.FreeBSD.org/gnome]. Esse site contém documentação adicional sobre instalação, configuração e gerenciamento do GNOME no FreeBSD.

Este ambiente de desktop pode ser instalado a partir de um pacote binario:

[source,shell]
....
# pkg install gnome3
....

Para instalar o GNOME a partir do ports, use o seguinte comando. O GNOME é um aplicativo grande e levará algum tempo para compilar, mesmo em um computador rápido.

[source,shell]
....
# cd /usr/ports/x11/gnome3
# make install clean
....

O GNOME requer que o [.filename]#/proc# seja montado. Adicione esta linha ao [.filename]#/etc/fstab# para montar este sistema de arquivos automaticamente durante a inicialização do sistema:

[.programlisting]
....
proc           /proc       procfs  rw  0   0
....

O GNOME usa o D-Bus e o HAL para barramento de mensagens e abstração de hardware. Esses aplicativos são instalados automaticamente como dependências do GNOME. Habilite-os em [.filename]#/etc/rc.conf# para que eles sejam iniciados quando o sistema inicializar:

[.programlisting]
....
dbus_enable="YES"
hald_enable="YES"
....

Após a instalação, configure o Xorg para iniciar o GNOME. A maneira mais fácil de fazer isso é habilitar o Gerenciador de Display do GNOME, o GDM, que é instalado como parte do pacote ou ports do GNOME. Pode ser ativado adicionando esta linha ao [.filename]#/etc/rc.conf#:

[.programlisting]
....
gdm_enable="YES"
....

Geralmente é desejável também iniciar todos os serviços do GNOME. Para conseguir isso, adicione uma segunda linha ao [.filename]#/etc/rc.conf#:

[.programlisting]
....
gnome_enable="YES"
....

O GDM será iniciado automaticamente quando o sistema for inicializado.

Um segundo método para iniciar o GNOME é digitar `startx` na linha de comando depois de configurar o [.filename]#~/.xinitrc#. Se este arquivo já existir, substitua a linha que inicia o gerenciador de janelas atual por uma que inicie o [.filename]#/usr/local/bin/gnome-session#. Se este arquivo não existir, crie-o com este comando:

[source,shell]
....
% echo "exec /usr/local/bin/gnome-session" > ~/.xinitrc
....

Um terceiro método é usar o XDM como o gerenciador de Display. Neste caso, crie um executável [.filename]#~/.xsession#:

[source,shell]
....
% echo "exec /usr/local/bin/gnome-session" > ~/.xsession
....

[[x11-wm-kde]]
=== KDE

O KDE é outro ambiente de trabalho fácil de usar. Essa área de trabalho fornece um conjunto de aplicativos com aparência e comportamento consistentes, um menu e barras de ferramentas padronizadas, atalhos de teclado, esquemas de cores, internacionalização e uma configuração de área de trabalho centralizada e orientada a diálogos. Mais informações sobre o KDE podem ser encontradas em http://www.kde.org/[http://www.kde.org/]. Para informações específicas do FreeBSD, consulte http://freebsd.kde.org/[http://freebsd.kde.org].

Para instalar o pacote KDE, digite:

[source,shell]
....
# pkg install x11/kde5
....

Para instalar o KDE via ports, use o seguinte comando. A instalação do ports fornecerá um menu para selecionar quais componentes instalar. O KDE é um aplicativo grande e levará algum tempo para compilar, mesmo em um computador rápido.

[source,shell]
....
# cd /usr/ports/x11/kde5
# make install clean
....

O KDE requer que o [.filename]#/proc# esteja montado. Adicione esta linha ao [.filename]#/etc/fstab# para montar este sistema de arquivos automaticamente durante a inicialização do sistema:

[.programlisting]
....
proc           /proc       procfs  rw  0   0
....

O KDE usa o D-Bus e o HAL para barramento de mensagens e abstração de hardware. Estas aplicações são automaticamente instaladas como dependências do KDE. Habilite-os em [.filename]#/etc/rc.conf# para que eles sejam iniciados quando o sistema inicializar:

[.programlisting]
....
dbus_enable="YES"
hald_enable="YES"
....

Desde o KDE Plasma 5, o Gerenciador de Display do KDE, KDM, não é mais desenvolvido. Uma possível substituição é o SDDM. Para instalá-lo, digite:

[source,shell]
....
# pkg install x11/sddm
....

Adicione esta linha em [.filename]#/etc/rc.conf#:

[.programlisting]
....
sddm_enable="YES"
....

Um segundo método para iniciar o KDE Plasma é digitar `startx` na linha de comando. Para que isso funcione, a seguinte linha é necessária em [.filename]#~/.xinitrc#:

[.programlisting]
....
exec ck-launch-session startplasma-x11
....

Um terceiro método para iniciar o KDE Plasma  é através do XDM. Para fazer isso, crie um arquivo executável [.filename]#~/.xsession# da seguinte maneira:

[source,shell]
....
% echo "exec ck-launch-session startplasma-x11" > ~/.xsession
....

Uma vez iniciado o KDE Plasma , consulte o sistema de ajuda integrado para obter mais informações sobre como usar seus diversos menus e aplicativos.

[[x11-wm-xfce]]
=== Xfce

O Xfce é um ambiente de desktop baseado no kit de ferramentas GTK+ usado pelo GNOME. No entanto, é mais leve e fornece um desktop simples, eficiente e fácil de usar. É totalmente configurável, possui um painel principal com menus, applets e lançadores de aplicativos, fornece um gerenciador de arquivos e um gerenciador de som e é personalizável. Como é rápido, leve e eficiente, é ideal para máquinas mais antigas ou mais lentas com limitações de memória. Mais informações sobre o Xfce podem ser encontradas em http://www.xfce.org/[http://www.xfce.org].

Para instalar o pacote Xfce:

[source,shell]
....
# pkg install xfce
....

Alternativamente , para compilar o port:

[source,shell]
....
# cd /usr/ports/x11-wm/xfce4
# make install clean
....

O Xfce usa o D-Bus para barramento de mensagens. Este aplicativo é instalado automaticamente como dependência do Xfce. Habilite-o em [.filename]#/etc/rc.conf# para que ele seja iniciado quando o sistema inicializar:

[.programlisting]
....
dbus_enable="YES"
....

Ao contrário do GNOME ou KDE, o Xfce não disponibiliza seu próprio gerenciador de login. Para iniciar o Xfce à partir da linha de comando digitando `startx`, mas primeiro adicione sua entrada ao [.filename]#~/.xinitrc#:

[source,shell]
....
% echo ". /usr/local/etc/xdg/xfce4/xinitrc" > ~/.xinitrc
....

Um método alternativo é usar o XDM. Para configurar este método, crie um executável [.filename]#~/.xsession#:

[source,shell]
....
% echo ". /usr/local/etc/xdg/xfce4/xinitrc" > ~/.xsession
....

[[x-compiz-fusion]]
== Instalando o Compiz Fusion

Uma maneira de tornar o uso de um computador desktop mais agradável é com bons efeitos 3D.

Instalar o pacote Compiz Fusion é fácil, mas a configuração requer alguns passos que não estão descritos na documentação do ports.

[[x-compiz-video-card]]
=== Configurando o Driver nVidia no FreeBSD

Os efeitos da área de trabalho podem causar uma carga considerável na placa gráfica. Para uma placa gráfica baseada na nVidia, o driver proprietário é necessário para um bom desempenho. Usuários de outras placas gráficas podem pular esta seção e continuar com a configuração do [.filename]#xorg.conf#.

Para determinar qual o driver nVidia é necessário, consulte a extref:{faq}[Perguntas frequentes sobre o assunto, idp59950544].

Tendo determinado o driver correto para usar em sua placa gráfica, a instalação é tão simples quanto instalar qualquer outro pacote.

Por exemplo, para instalar o driver mais recente:

[source,shell]
....
# pkg install x11/nvidia-driver
....

O driver irá criar um módulo do kernel, que precisa ser carregado na inicialização do sistema. Adicione a seguinte linha ao [.filename]#/boot/loader.conf#:

[.programlisting]
....
nvidia_load="YES"
....

[NOTE]
====
Para carregar imediatamente o módulo no kernel em execução, você pode executar o comando `kldload nvidia`. No entanto, foi observado que algumas versões do Xorg não funcionarão corretamente se o driver não for carregado no momento da inicialização. Desta forma, depois de editar o [.filename]#/boot/loader.conf#, é recomendado reiniciar o sistema.
====

Com o módulo do kernel carregado, você normalmente só precisa alterar uma única linha no [.filename]#xorg.conf# para habilitar o driver proprietário:

Encontre a seguinte linha no [.filename]#/etc/X11/xorg.conf#:

[.programlisting]
....
Driver      "nv"
....

e mude para:

[.programlisting]
....
Driver      "nvidia"
....

Inicie a GUI como de costume, e você será saudado pelo splash da nVidia. Tudo deve funcionar como de costume.

[[xorg-configuration]]
=== Configurando o xorg.conf para Efeitos de Desktop

Para ativar o Compiz Fusion, o [.filename]#/etc/X11/xorg.conf# precisa ser modificado:

Adicione a seguinte seção para habilitar os efeitos compostos:

[.programlisting]
....
Section "Extensions"
    Option         "Composite" "Enable"
EndSection
....

Localize a seção "Screen", que deve ser semelhante à abaixo:

[.programlisting]
....
Section "Screen"
    Identifier     "Screen0"
    Device         "Card0"
    Monitor        "Monitor0"
    ...
....

e adicione as duas linhas seguintes (após "Monitor"):

[.programlisting]
....
DefaultDepth    24
Option         "AddARGBGLXVisuals" "True"
....

Localize a "Subsection" que se refere à resolução da tela que você deseja usar. Por exemplo, se você deseja usar 1280x1024, localize a seção a seguir. Se a resolução desejada não aparecer em nenhuma subseção, você pode adicionar a entrada relevante à mão:

[.programlisting]
....
SubSection     "Display"
    Viewport    0 0
    Modes      "1280x1024"
EndSubSection
....

Uma profundidade de cor de 24 bits é necessária para a composição do desktop, altere a subseção acima para:

[.programlisting]
....
SubSection     "Display"
    Viewport    0 0
    Depth       24
    Modes      "1280x1024"
EndSubSection
....

Finalmente, confirme que os módulos "glx" e "extmod" estão carregados na seção "Module":

[.programlisting]
....
Section "Module"
    Load           "extmod"
    Load           "glx"
    ...
....

A configuração acima pode ser feita automaticamente com o package:x11/nvidia-xconfig[] (executando como `root`):

[source,shell]
....
# nvidia-xconfig --add-argb-glx-visuals
# nvidia-xconfig --composite
# nvidia-xconfig --depth=24
....

[[compiz-fusion]]
=== Instalando e Configurando o Compiz Fusion

Instalar o Compiz Fusion é tão simples quanto qualquer outro pacote:

[source,shell]
....
# pkg install x11-wm/compiz-fusion
....

Quando a instalação estiver concluída, inicie o Desktop Gráfico e, em um terminal, digite os seguintes comandos (como usuário normal):

[source,shell]
....
% compiz --replace --sm-disable --ignore-desktop-hints ccp &
% emerald --replace &
....

Sua tela piscará por alguns segundos, pois o gerenciador de janelas (por exemplo, Metacity se você estiver usando o GNOME) será substituído pelo Compiz Fusion. O Emerald cuida das decorações da janela (isto é, botões de fechar, minimizar, maximizar, barras de título e assim por diante).

Você pode converter isso em um script trivial e executá-lo na inicialização automaticamente (por exemplo, adicionando a "Sessions" em um Desktop do GNOME):

[.programlisting]
....
#! /bin/sh
compiz --replace --sm-disable --ignore-desktop-hints ccp &
emerald --replace &
....

Salve isso no seu diretório home como, por exemplo, [.filename]#start-compiz# e torne-o executável:

[source,shell]
....
% chmod +x ~/start-compiz
....

Em seguida, utilize a GUI para adicioná-lo a [.guimenuitem]#Startup Programs# (localizado em [.guimenuitem]#System#, [.guimenuitem]#Preferences#, [.guimenuitem]#Sessions# em um desktop GNOME).

Para selecionar realmente todos os efeitos desejados e suas configurações, execute (novamente como um usuário normal) o Compiz Config Settings Manager:

[source,shell]
....
% ccsm
....

[NOTE]
====
No GNOME, isso também pode ser encontrado no menu [.guimenuitem]#System#, [.guimenuitem]#Preferences#.
====

Se você selecionou "gconf support" durante a compilação, você também será capaz de ver estas configurações usando o `gconf-editor` sob `apps/compiz`.

[[x11-troubleshooting]]
== Solução de problemas

Se o mouse não funcionar, você precisará primeiro configurá-lo antes de prosseguir. Em versões recentes do Xorg, as seções `InputDevice` em [.filename]#xorg.conf# são ignoradas em favor dos dispositivos autodetectados. Para restaurar o comportamento antigo, adicione a seguinte linha à seção `ServerLayout` ou `ServerFlags` deste arquivo:

[.programlisting]
....
Option "AutoAddDevices" "false"
....

Os dispositivos de entrada podem então ser configurados como nas versões anteriores, juntamente com quaisquer outras opções necessárias (por exemplo, troca do layout de teclado).

[NOTE]
====
Como explicado anteriormente, o daemon hald irá, por padrão, detectar automaticamente o seu teclado. Há chances de que o layout ou modelo do teclado não esteja correto, ambientes de Desktop como o GNOME, KDE ou Xfce fornecem ferramentas para configurar o teclado. No entanto, é possível definir as propriedades do teclado diretamente com a ajuda do utilitário man:setxkbmap[1] ou com uma regra de configuração do aplicativohald.

Por exemplo, se alguém quiser usar um teclado de teclas PC 102 vindo com um layout francês, temos que criar um arquivo de configuração de teclado para o hald chamado [.filename]#x11-input.fdi# e salva-lo no diretório [.filename]#/usr/local/etc/hal/fdi/policy#. Este arquivo deve conter as seguintes linhas:

[.programlisting]
....
<?xml version="1.0" encoding="utf-8"?>
<deviceinfo version="0.2">
  <device>
    <match key="info.capabilities" contains="input.keyboard">
	  <merge key="input.x11_options.XkbModel" type="string">pc102</merge>
	  <merge key="input.x11_options.XkbLayout" type="string">fr</merge>
    </match>
  </device>
</deviceinfo>
....

Se este arquivo já existir, apenas copie e adicione ao seu arquivo as linhas referentes à configuração do teclado.

Você terá que reinicializar sua máquina para forçar o hald a ler este arquivo.

É possível fazer a mesma configuração a partir de um terminal X ou um script com esta linha de comando:

[source,shell]
....
% setxkbmap -model pc102 -layout fr
....

O [.filename]#/usr/local/shared/X11/xkb/rules/base.lst# lista os vários teclados, layouts e opções disponíveis.
====

O arquivo de configuração [.filename]#xorg.conf.new# pode agora ser ajustado para o seu gosto. Abra o arquivo em um editor de texto, como man:emacs[1] ou o man:ee[1]. Se o monitor for um modelo antigo ou incomum que não suporta a detecção automática de frequências de sincronização, essas configurações podem ser adicionadas ao [.filename]#xorg.conf.new# na seção `"Monitor"`:

[.programlisting]
....
Section "Monitor"
	Identifier   "Monitor0"
	VendorName   "Monitor Vendor"
	ModelName    "Monitor Model"
	HorizSync    30-107
	VertRefresh  48-120
EndSection
....

A maioria dos monitores suporta autodetecção de frequência de sincronização, tornando desnecessária a entrada manual desses valores. Para os poucos monitores que não suportam a detecção automática, evite possíveis danos inserindo apenas valores fornecidos pelo fabricante.

O X permite que os recursos do DPMS (Energy Star) sejam usados com monitores capazes. O programa man:xset[1] controla os tempos limite e pode forçar os modos de espera, suspensão ou desativação. Se você deseja habilitar recursos de DPMS para o seu monitor, você deve adicionar a seguinte linha à seção do monitor:

[.programlisting]
....
Option       "DPMS"
....

Enquanto o arquivo de configuração [.filename]#xorg.conf.new# ainda estiver aberto em um editor, selecione a resolução padrão e a profundidade de cor desejada. Isso é definido na seção `"Screen"`:

[.programlisting]
....
Section "Screen"
	Identifier "Screen0"
	Device     "Card0"
	Monitor    "Monitor0"
	DefaultDepth 24
	SubSection "Display"
		Viewport  0 0
		Depth     24
		Modes     "1024x768"
	EndSubSection
EndSection
....

A palavra-chave `DefaultDepth` descreve a profundidade de cor a ser executada por padrão. Isto pode ser sobrescrito com a opção de linha de comando `-depth` para man:Xorg[1]. A palavra-chave `Modes` descreve a resolução a ser executada na profundidade de cor especificada. Observe que somente os modos padrão VESA são suportados, conforme definido pelo hardware gráfico do sistema de destino. No exemplo acima, a profundidade de cor padrão é de vinte e quatro bits por pixel. Nesta profundidade de cor, a resolução aceita é 1024 por 768 pixels.

Finalmente, escreva o arquivo de configuração e teste-o usando o modo de teste dado acima.

[NOTE]
====
Uma das ferramentas disponíveis para ajudá-lo durante o processo de solução de problemas são os arquivos de log do Xorg, que contêm informações sobre cada dispositivo ao qual o servidor Xorg se conecta. Os nomes de arquivos de log do Xorg estão no formato [.filename]#/var/log/Xorg.0.log#. O nome exato do log pode variar de [.filename]#Xorg.0.log# para [.filename]#Xorg.8.log# e assim por diante.
====

Se tudo estiver bem, o arquivo de configuração precisa ser instalado em um local comum onde o man:Xorg[1] possa encontrá-lo. Isto é tipicamente [.filename]#/etc/X11/xorg.conf# ou [.filename]#/usr/local/etc/X11/xorg.conf#.

[source,shell]
....
# cp xorg.conf.new /etc/X11/xorg.conf
....

O processo de configuração do Xorg agora está completo. O Xorg pode agora ser iniciado com o utilitário man:startx[1]. O servidor Xorg também pode ser iniciado com o uso de man:xdm[1].

=== Configuração com Chipsets gráficos Intel(TM)`i810`

A configuração com chipsets integrados i810 da Intel(TM) requer a interface de programação AGP [.filename]#agpgart# para o Xorg para conduzir a placa. Consulte a página de manual do driver man:agp[4] para obter maiores informações.

Isso permitirá a configuração do hardware como qualquer outra placa gráfica. Observe que nos sistemas sem o driver man:agp[4] compilado no kernel, tentar carregar o módulo com man:kldload[8] não funcionará. Este driver tem que estar no kernel no momento da inicialização, através da compilação ou usando o [.filename]#/boot/loader.conf#.

=== Adicionando um Flatpanel Widescreen ao Mix

Esta seção pressupõe um pouco de conhecimento avançado de configuração. Se as tentativas de usar as ferramentas de configuração padrão acima não resultaram em uma configuração funcional, há informações suficientes nos arquivos de log para serem úteis para fazer a configuração funcionar. O uso de um editor de texto será necessário.

Os formatos widescreen atuais (WSXGA, WSXGA+, WUXGA, WXGA, WXGA+, etc.) suportam formatos ou proporções de formato 16:10 e 10:9 que podem ser problemáticos. Exemplos de algumas resoluções de tela comuns para proporções de 16:10 são:

* 2560x1600
* 1920x1200
* 1680x1050
* 1440x900
* 1280x800

Em algum momento, será tão fácil quanto adicionar uma dessas resoluções como um possível `Mode` na `Section "Screen"` como tal:

[.programlisting]
....
Section "Screen"
Identifier "Screen0"
Device     "Card0"
Monitor    "Monitor0"
DefaultDepth 24
SubSection "Display"
	Viewport  0 0
	Depth     24
	Modes     "1680x1050"
EndSubSection
EndSection
....

O Xorg é inteligente o suficiente para extrair as informações de resolução da tela widescreen via informações I2C/DDC, para que ele saiba o que o monitor pode suportar em termos de freqüências e resoluções.

Se aqueles `ModeLines` não existem nos drivers, pode ser necessário dar ao Xorg uma pequena dica. Usando o [.filename]#/var/log/Xorg.0.log# pode-se extrair informações suficientes para criar manualmente um `ModeLine` que funcionará. Basta procurar informações semelhantes:

[.programlisting]
....
(II) MGA(0): Supported additional Video Mode:
(II) MGA(0): clock: 146.2 MHz   Image Size:  433 x 271 mm
(II) MGA(0): h_active: 1680  h_sync: 1784  h_sync_end 1960 h_blank_end 2240 h_border: 0
(II) MGA(0): v_active: 1050  v_sync: 1053  v_sync_end 1059 v_blanking: 1089 v_border: 0
(II) MGA(0): Ranges: V min: 48  V max: 85 Hz, H min: 30  H max: 94 kHz, PixClock max 170 MHz
....

Esta informação é chamada de informação EDID. Criar uma `ModeLine` a partir disso é apenas uma questão de colocar os números na ordem correta:

[.programlisting]
....
ModeLine <name> <clock> <4 horiz. timings> <4 vert. timings>
....

Assim, o `ModeLine` na `Section "Monitor"` para este exemplo ficaria assim:

[.programlisting]
....
Section "Monitor"
Identifier      "Monitor1"
VendorName      "Bigname"
ModelName       "BestModel"
ModeLine        "1680x1050" 146.2 1680 1784 1960 2240 1050 1053 1059 1089
Option          "DPMS"
EndSection
....

Agora, tendo completado estes passos simples de edição, o X deve iniciar no seu novo monitor widescreen.

[[compiz-troubleshooting]]
=== Solução de problemas do Compiz Fusion

==== Eu instalei o Compiz Fusion, e depois de executar os comandos que você mencionou, minhas janelas ficaram sem barras de título e botões. O que está errado?

Provavelmente está faltando alguma configuração em [.filename]#/etc/X11/xorg.conf#. Revise este arquivo cuidadosamente e verifique especialmente as diretivas `DefaultDepth` e `AddARGBGLXVisuals`.

==== Quando executo o comando para iniciar o Compiz Fusion, o servidor X trava e eu volto ao console. O que está errado?

Se você verificar o [.filename]#/var/log/Xorg.0.log#, você provavelmente encontrará mensagens de erro durante a inicialização do X. As mais comuns seriam:

[source,shell]
....
(EE) NVIDIA(0):     Failed to initialize the GLX module; please check in your X
(EE) NVIDIA(0):     log file that the GLX module has been loaded in your X
(EE) NVIDIA(0):     server, and that the module is the NVIDIA GLX module.  If
(EE) NVIDIA(0):     you continue to encounter problems, Please try
(EE) NVIDIA(0):     reinstalling the NVIDIA driver.
....

Este é geralmente o caso quando você atualiza o Xorg. Você precisará reinstalar o pacote package:x11/nvidia-driver[] para que o glx seja compilado novamente.
