Available Languages: | Deutsch | English | Español | Français | 日本語 (Nihongo) | Português | Русский (Russkiy) | 中文 (简) (Simplified Chinese) |

Executando o X11 no Darwin e no Mac OS X

Este documento é sobre a execução do X11 / XFree86 / Xtools nos sistemas Mac OS X e Darwin. Ele começa com uma introdução e histórico do desenvolvimento, seguindo para a descrição da situação atual e as várias opções que você tem para usar o X11 com ou sem o Fink.

Contents

1 Introdução

1.1 O que é o X11?

O Sistema de Janelas X (X Window System) Versão 11, ou simplesmente X11, é um sistema de exibição de gráficos com uma arquitetura cliente-servidor transparente em relação à rede. Ele permite que aplicativos desenhem pixels, linhas, textos, imagens etc em seu monitor. O X11 vem também c om bibliotecas adicionais que permite que os aplicativos desenhem interfaces facilmente, isto é, botões, campos para entrada de texto e assim por diante.

O X11 é o padrão de facto para sistemas gráficos no mundo Unix. Ele faz parte do Linux, dos *BSDs e a maior parte dos sistemas Unix comerciais. Ambientes de área de trabalho como CDE, KDE e GNOME rodam em cima dele.

1.2 O que é o Mac OS X?

O Mac OS X é um sistema operacional produzido pela Apple. Da mesma forma que seus predecessores NeXTStep e OpenStep, ele é baseado em BSD e é portando um membro da família de sistemas operacionais Unix. Entretanto, ele vem com um sistema de exibição de gráficos proprietário. O mecanismo gráfico é chamado Quartz e sua aparência visual é chamada Aqua, ainda que os dois nomes sejam frequentemente usados de forma intercambiável.

1.3 O que é o Darwin?

O Darwin é basicamente uma versão reduzida do Mac OS X que está disponível de forma gratuita e com o código fonte completo. Ele não contém Quartz, Aqua ou qualquer outra tecnologia relacionada. Por padrão, ele oferece apenas um console texto.

1.4 O que é o XFree86?

O XFree86 é uma implementação de código aberto do X11. Ele foi inicialmente desenvolvido para rodar em PCs Intel x86, por isso seu nome. Hoje em dia, ele roda em várias arquiteturas e sistemas operacionais, incluindo OS/2, Darwin, Mac OS X e Windows.

1.5 O que é o Xtools?

O Xtools é um produto da X Tenon Intersystems. É uma versão do X11 para Mac OS X baseada no XFree86.

Observação: O desenvolvimento aparentemente foi interrompido antes de o OS 10.3 ser lançado.

1.6 Cliente e servidor

O X11 tem uma arquitetura cliente-servidor. Há um programa central que faz o desenho em si e coordena o acesso por vários aplicativos; este é o servidor. Um aplicativo que queira desenhar usando o X11 conecta-se ao servidor e lhe diz o que desenhar. Portanto, aplicativos são denominados clientes no mundo X11.

O X11 permite que o servidor e os clientes estejam em máquinas diferentes, o que geralmente resulta em confusão sobre os termos. Em um ambiente com estações de trabalho e servidores, você executará o servidor de exibição do X11 em uma estação de trabalho e os aplicativos (clientes X11) na máquina servidora. Portanto, quando se fala sobre o "servidor", isto significa o programa servidor de exibição do X11 e não a máquina escondida no seu armário.

1.7 O que significa sem raiz (rootless)?

Um pouco de história: o X11 modela a tela como sendo uma hierarquia de janelas contidas umas nas outras. No topo da hierarquia está uma janela especial que possui o tamanho da tela e contém todas as outras janelas. Esta janela contém o fundo da área de trabalho é denominada "janela raiz".

Voltando ao assunto: como qualquer ambiente gráfico, o X11 foi escrito para estar sozinho e ter controle completo da tela. No Mac OS X, o Quartz já está governando a tela, portanto é necessário fazer ajustes para que ambos coexistam.

Uma configuração é permitir que ambos se alternem. Cada ambiente recebe uma tela completa mas apenas um deles está visível em um dado instante de tempo e o usuário pode trocar entre eles. Este modo é denominado tela cheia (full-screen) ou com raiz (rooted). Ele é denominado com raiz porque há uma janela raiz perfeitamente normal na tela do X11 e que funciona como em outros sistemas.

Outra configuração é misturar os dois ambientes janela por janela. Isto elimina a necessidade de alternar entre duas telas. Isto também elimina a janela raiz do X11 porque o Quartz já toma conta do fundo da área de trabalho. Uma vez que não há uma janela raiz (visível), este modo é denominado sem raiz (rootless). É a forma mais confortável de usar o X11 no Mac OS X.

1.8 O que é um gerenciador de janelas?

Na maior parte dos ambientes gráficos, a aparência das bordas de uma janela (barra de título, botão de fechar etc) é definida pelo sistema. No X11 é diferente. Com o X11, as bordas da janela (também chamadas decoração) são fornecidas por um programa separado denominado gerenciador de janelas. Sob vários aspectos, o gerenciador de janelas é apenas outro aplicativo cliente; ele é iniciado da mesma forma e conversa com o servidor X através dos mesmos canais.

Há um grande número de gerenciadores de janelas diferentes para escolher. O site xwinman.org possui uma lista abrangente. Os mais populares permitem que o usuário ajuste a aparência das janelas através de temas. Vários gerenciadores de janelas fornecem também funcionalidades adicionais, como menus pop-up na janela raiz e barras de ícones.

Muitos gerenciadores de janelas foram empacotados no Fink. Aqui está uma lista atualizada.

1.9 O que são Quartz/Aqua, Gnome e KDE?

São gerenciadores de área de trabalho, e há vários outros. Seu propósito é fornecer um suporte adicional a aplicativos tal que sua aparência, forma de interação e comportamento sejam visualmente consistentes. Por exemplo,

Os limites entre o sistema de exibição gráfica, gerenciador de janelas e de área de trabalho não são muito delimitados porque às vezes uma certa funcionalidade, ou uma funcionalidade similar, pode ser implementada por mais de um deles. Esta é a razão pela qual um gerenciador de janelas em particular pode não poder ser usado com um determinado ambiente de área de trabalho.

Muitos aplicativos são desenvolvidos para serem integrados a uma área de trabalho em particular. De forma geral, instalando as bibliotecas desses ambientes de área de trabalho (e outras bibliotecas subjacentes) para o qual um aplicativo foi desenvolvido, o aplicativo funcionará sem perda de funcionalidade. Como exemplo, a grande quantidade de aplicativos GNOME que podem ser instalados e executados sem rodar o GNOME em si. Infelizmente, ainda não se chegou ao mesmo ponto em relação aos aplicativos KDE.

2 História

[Perdão pela linguagem épica, não consegui resistir...]

2.1 Os primeiros dias

No princípio, havia o vazio. O Darwin ainda estava em seus primeiros passos, O Mac OS X ainda em desenvolvimento e não havia implementação do X11 para ambos.

E eis que chegou John Carmack e portou o XFree86 para o Mac OS X Server, que era o único SO da família Darwin disponível naquele momento. Mais tarde aquele port foi atualizado por Dave Zarzycki para o XFree86 4.0 e o Darwin 1.0. As modificações acabaram por chegar ao repositório CVS do Darwin e lá dormiram, esperando pelo porvir.

2.2 A formação do XonX

Um belo dia, Torrey T. Lyons apareceu e deu a atenção que as modificações do Darwin estavam esperando. Finalmente, ele as levou para um novo lar, o repositório CVS oficial do XFree86. Esta foi a época do Mac OS X Public Beta e Darwin 1.2. O XFree86 4.0.2 funcionou bem no Darwin, mas no Mac OS X era necessário que os usuários saíssem do Aqua e fossem ao console para executarem-no. Então Torrey reuniu o time XonX ao redor de si e juntos partiram em uma viagem para levar o XFree86 ao Mac OS X.

Por volta desta época, a Tenon começou a desenvolver o Xtools usando o XFree86 4.0 como base.

2.3 Raiz ou não raiz

Não se passou muito tempo até o time XonX ter o XFree86 executando em modo de tela cheia paralelamente ao Quartz, divulgando versões de testes para usuários aventureiros. As versões de teste eram denominadas XFree86-Aqua, ou simplesmente XAqua. Como Torrey havia tomado a liderança, as modificações foram diretamente ao repositório CVS do XFree86, o qual esta indo na direção da versão 4.1.0.

Nos primeiros estágios, a interface com o Quartz era feita através de um pequeno aplicativo denominado Xmaster.app (escrito com Carbon e após reescrito com Cocoa). Mais tarde esse código foi integrado ao próprio servidor X, dando à luz o XDarwin.app. Suporte a bibliotecas compartilhadas também foi adicionado ao time (e Tenon foi convencido a usar este conjunto de modificações no lugar das suas para garantir compatibilidade binária). Houve até bom progresso em um modo sem raiz (usando a API Carbon) mas, infelizmente, era muito tarde para colocá-lo no XFree86 4.1.0. E as modificações para usar o modo sem raiz eram gratuitas e livres, e continuaram a flutuar pela rede. Depois de o XFree86 4.1.0 haver sido liberado apenas com o o modo de tela cheia, continuou em andamento o trabalho no modo sem raiz, desta vez usando a API Cocoa. Um modo sem raiz experimental foi colocado no repositório CVS do XFree86.

Enquanto isso, a Apple lançou o Mac OS X 10.0 e o Darwin 1.3, e a Tenon liberou o Xtools 1.0 algumas semanas após.

Continuava o desenvolvimento da integração do modo sem raiz no XFree86, tal que no momento em que o XFree86 4.2.0 foi lançado em janeiro de 2002, a versão do Darwin/Mac OS X havia sido completamente integrada à distribuição principal do XFree86.

3 Obtendo e instalando o X11

3.1 Instalando o X11 via Fink

O Fink permite que você instale o X11 de várias maneiras, dentre as quais pacotes XFree86 providos pelo Fink. Se você usar fink install ..., ele irá baixar o código fonte e compilá-lo em seu computador. Se você usar apt-get install ... ou a interface dselect, ele irá baixar pacotes binários pré-compilados, similar à distribuição oficial do XFree86.

Observações gerais:

Usuários do Mac OS X 10.4:

Você pode instalar a versão 4.5.0-23 do XFree86 a partir do código fonte. Você irá precisar de ambos os pacotes xfree86 e xfree86-shlibs para ter uma instalação completamente funcional.

Você também pode instalar a versão X11 do X.org (atualmente na versão 6.8.2-35) através dos pacotes xorg e xorg-shlibs.

3.2 Binários da Apple

Em 7 de janeiro de 2003, a Apple lançou uma implementação customizada do X11 baseada no XFree86-4.2 incluindo o renderização Quartz e OpenGL acelerado. Uma nova versão foi lançada em 10 de fevereiro de 2003 com funcionalidades adicionais e correções de erros. Uma terceira versão (isto é, Beta 3) foi lançada em 17 de março de 2003 com novas funcionalidades e correções de erros. Esta versão é suficientemente estável para execução no Jaguar.

Em 24 de outubro de 2003, a Apple lançou o Panther (10.3) incluindo uma versão oficial da sua distribuição X11. Essa versão é baseada no XFree86-4.3.

Em 29 de abril de 2005, a Apple lançou o Tiger (10.4) incluindo uma versão oficial do X11 da Apple baseado no XFree86-4.4.

Para usar os binários da Apple, você precisa assegurar-se de que o pacote X11 User esteja instalado, e você deve atualizar o Fink.

Você só precisa instalar o X11 SDK caso queira compilar pacotes a partir do código fonte. Neste caso, mesmo que você não tenha o SDK, haverá os pacotes virtuais system-xfree86 e system-xfree86-shlibs, o último representando as bibliotecas compartilhadas. Se você instalar o SDK, haverá também um pacote system-xfree86-dev representando os arquivos de cabeçalho.

Caso você tenha uma distribuição do XFree86 instalada, seja através do Fink ou de outras formas, você pode seguir as instruções para substituir um pacote X11 por outro. Assegure-se de remover seus pacotes existentes e então instalar o X11 da Apple (e o X11 SDK se necessário ou desejado).

Algumas observações sobre o uso do X11 da Apple:

Para mais informações sobre o uso do X11 da Apple, verifique este artigo no Apple Developer Connection.

3.3 Os binários oficiais

O projeto XFree86 tem uma distribuição oficial de binários do XFree86 4.5.0. Você pode encontrá-lo em seu espelho local do XFree86 no diretório 4.5.0/binaries/Darwin-ppc-6.x. Assegure-se de baixar os tarballs Xprog.tgz e Xquartz.tgz mesmo que estejam marcados como opcionais ("optional"). Se você não estiver certo de o que precisa, baixe todo o diretório. Execute o script Xinstall.sh como root e proceda à instalação. (Você talvez queira ler as instruções oficiais antes de instalar.)

Você terá agora no Mac OS X o XFree86 com um servidor que pode entrar em tela cheia ou sem raiz.

3.4 O código fonte oficial

Se estiver com tempo livre, você pode compilar o XFree86 4.5 a partir do código fonte. Você pode encontrar o código fonte no seu espelho local do XFree86 no diretório 4.5.0/source. Baixe todos os sete tarballs XFree86-4.5.0-src-#.tgz e extraia-os no mesmo diretório. Você pode customizar a compilação colocando definições de macros no arquivo config/cf/hosts.def localizado na árvore do XFree86. Veja config/cf/darwin.cf para algumas dicas. (Observação: somente as macros que tiverem uma verificação #ifndef ao seu redor podem ser sobrescritas no host.def.)

Quando estiver satisfeito com sua configuração, compile e instale o XFree86 através dos seguintes comandos:

make World
sudo make install install.man

Assim como no caso dos binários oficiais, você terá então um XFree86 rodando no Mac OS X com o servidor que pode entrar em tela cheia ou sem raiz.

3.5 O código fonte mais recente

Se você tiver não apenas tempo mas também paciência, você pode obter a última versão de desenvolvimento do XFree86 através do repositório CVS público. Note que o código está sob constante desenvolvimento; o que você baixar hoje geralmente não é o mesmo que você baixou ontem.

Para instalar, siga as instruções do CVS do XFree86 para baixar o módulo xc. Em seguida, siga as instruções acima para compilar o código fonte.

3.6 Substituindo o X11

Caso você já tenha instalado um dos pacotes X11 do Fink mas por alguma razão tenha decidido remover um e substituí-lo por outro, o procedimento é bastante direto. Você precisa forçar a remoção dos pacotes antigos e então instalar os novos para que seu banco de dados dpkg fique consistente.

Há duas formas diferentes de fazê-lo:

  1. Use o FinkCommander

    Caso esteja usando o FinkCommander, você pode forçar a remoção através do menu. Por exemplo, se você tiver o xfree86-rootless instalado mas queira a versão com threads, você pode selecionar os pacotes xfree86-rootless, xfree86-rootless-shlibs, xfree86-base e xfree86-base-shlibs e então executar:

    Source -> Force Remove
  2. Remova manualmente usando a linha de comando

    Para removê-los manualmente, use o dpkg com a opção --force-depends:

    sudo dpkg -r --force-depends xfree86-rootless \
    xfree86-rootless-shlibs xfree86-base xfree86-base-shlibs

    Note que, caso você tenha aplicativos que requeiram o XFree86 com threads, você pode ter problemas com seu banco de dados dpkg caso você o remova forçadamente e instale um pacote XFree86 diferente ou um pacote sinalizador.

Se por outro lado você tiver uma versão do X11 que não foi instalada via Fink, você precisará removê-la via linha de comando:

sudo rm -rf /usr/X11R6 /etc/X11

Isto se aplica para qualquer variante do X11 que você não tenha instalado através do Fink. Você também precisará remover XDarwin.app | X11.app dependendo de qual você houver instalado. Assegure-se de verificar seu .xinitrc caso esteja removendo o X11 da Apple para garantir que você não tente executar o quartz-wm. Você poderá então instalar qualquer X11 que queira, manualmente ou pelo Fink.

3.7 Sumário dos pacotes do Fink

Um rápido sumário das opções de instalação e pacotes do Fink que você deveria instalar:

Tipo de instalaçãoPacotes do Fink
XFree86-4.4.0 ou 4.5.0 (10.3 e 10.4)

xfree86 e xfree86-shlibs

X.org-6.8.2 (10.3 e 10.4)

xorg e xorg-shlibs

X11 da Apple (todas as versões)

system-xfree86 e system-xfree86-shlibs (+system-xfree86-dev para compilar pacotes baseados no X11)

Binários oficiais do XFree86-4.x

system-xfree86 e system-xfree86-shlibs (+system-xfree86-dev para compilar pacotes baseados no X11)

XFree86-4.x compilado a partir do fonte ou último fonte do CVS

system-xfree86 e system-xfree86-shlibs (+system-xfree86-dev para compilar pacotes baseados no X11)

4 Iniciando o X11

4.1 Darwin

No Darwin puro, o XFree86 se comporta da mesma forma que em qualquer outro Unix. A forma usual de iniciá-lo é através de startx no console, iniciando o servidor e alguns clientes iniciais como o gerenciador de janelas e um emulador de terminal com um shell. No Darwin puro não é necessário especificar quaisquer parâmetros portanto você pode digitar apenas:

startx

Você pode customizar o que é iniciado através de vários arquivos em seu diretório home. .xinitrc controla quais clientes são iniciados. .xserverrc controla opções do servidor e pode até mesmo iniciar um servidor diferente. Se você estiver tendo problema (por exemplo, a tela fica completamente em branco ou o XFree86 termina e volta direto pro console), você pode iniciar um procedimento de resolução de problemas movendo estes arquivos para outro lugar. Quando o startx não encontra esses arquivos, ele usará opções padrões seguras que devem funcionar sempre.

De forma alternativa, você pode iniciar o servidor diretamente com uma das opções XDMCP tais como:

X -query remotehost

Detalhes sobre isto podem ser encontrados na página de manual do Xserver.

Finalmente, há a opção de configurar o xdm; leia sua página de manual para detalhes.

Observação: você não pode iniciar o XFree86 a partir da janela de console do Mac OS X.

4.2 Mac OS X + XFree86 4.x.y

Há basicamente duas formas de iniciar o XFree86 no Mac OS X. Uma é dar um duplo clique no aplicativo XDarwin.app em seu diretório Aplicativos (Applications), o que lhe permitirá escolher, através de uma janela de diálogo apresentado na inicialização, dentre modo de tela cheia ou sem raiz. Você pode desabilitar a janela de diálogo e configurar o XDarwin para usar sempre o modo de sua preferência através da caixa de diálogo Preferências (Preferences).

Antes da versão 4.2.0 ele sempre abria em tela cheia e não havia como escolher o modo sem raiz através de um duplo clique na aplicação.

A outra forma de iniciar o XFree86 no Mac OS X é através de startx no Terminal.app. Se você iniciar o servidor desta forma, você precisa dizer-lhe para executar em paralelo com o Quartz. Isto é feito através da opção -fullscreen:

startx -- -fullscreen

Isto iniciará o servidor em modo de tela cheia assim como os clientes enumerados no seu arquivo .xinirc.

Observação: antes da versão 4.2, a opção -quartz era usada para o modo de tela cheia.

Você pode iniciá-lo em modo sem raiz através da opção -rootless:

startx -- -rootless

A opção -quartz não mais seleciona o modo de tela cheia mas sim usa o modo padrão definido nas preferências.

A partir da versão 4.2, você pode usar startx sem argumentos; a caixa de diálogo aparecerá na inicialização.

4.3 Iniciando o X.org

O X.org funciona de forma idêntica ao XFree86, sob todos os aspectos.

4.4 Iniciando o X11 da Apple

Funcionalmente, o X11 da Apple trabalha de forma similar ao XFree86 (por exemplo, usando um arquivo .xinitrc para controlar quais clientes são executados na inicialização). A forma usual de executá-lo é através de um duplo clique no ícone X11.app (cuja localização padrão é /Aplicativos/Utilitários (/Applications/Utilities). Você pode usar startx também mas não há uma opção de linha de comando para definir o modo de exibição; o X11.app iniciará no modo que foi previamente definido através das Preferências (Preferences).

Se você não configurou um gerenciador de janelas diferente, você estará rodando o gerenciador de janelas quartz-wm da Apple. As Preferências (Preferences) do X11.app permitem trocar entre os modos de tela cheia e sem raiz sem precisar reiniciar. Entretanto, isto não funciona para o quartz-wm; é necessário escolher um gerenciador de janelas diferente (por exemplo, no arquivo .xinitrc).

4.5 O pacote applex11tools

O pacote applex11tools do Fink permite que você use o X11.app e o quartz-wm no OS 10.3 e mais recentes com o XFree86 4.4 ou mais recentes ou o X.org.

Para instalar este pacote, você precisa habilitar a árvore unstable e ter o arquivo X11User.pkg em algum lugar dentro de /Users ou /Volumes. O X11.app será instalado no diretório Applications dentro da sua árvore do Fink. Você poderá então usar tanto X11.app quanto XDarwin.app.

4.6 O arquivo .xinitrc

Caso um arquivo chamado .xinitrc exista em seu diretório home, ele será usado para iniciar alguns clientes X iniciais, por exemplo o gerenciador de janelas e alguns xterms ou um ambiente de área de trabalho como o GNOME. O arquivo .xinitrc é um script de shell que contém os comandos para fazer isto. Não é necessário colocar o tradicional #!/bin/sh na primeira linha e ligar o bit de execução no arquivo; o xinit irá de qualquer forma executá-lo através de um shell.

Caso não exista um arquivo .xinitrc em seu diretório home, o X11 usa seu arquivo padrão, /private/etc/X11/xinit/xinitrc. Você pode usar o arquivo padrão como um ponto de partida para seu próprio .xinitrc:

cp /private/etc/X11/xinit/xinitrc ~/.xinitrc

Caso esteja usando o Fink, você precisa incluir (através do comando .) o script /sw/bin/init.sh bem no começo para garantir que o ambiente seja configurado corretamente.

Você pode colocar comandos arbitrários em um .xinitrc mas há algumas restrições. Em primeiro lugar, o shell que interpreta o arquivo possui o comportamento padrão de esperar por todo programa encerrar antes de iniciar o próximo. Se você quer que vários programas rodem em paralelo, você precisa dizer ao shell para colocá-los em segundo plano (background) através de & ao final de cada linha.

Em segundo lugar, o xinit espera pelo script .xinitrc encerrar, interpretando este evento como "a sessão terminou, posso encerrar o servidor X também". Isto significa que o último comando de seu .xinitrc não pode ser executado em segundo plano e deve ser um programa que fique em execução por bastante tempo. Normalmente o gerenciador de janelas é usado para este fim. De fato, a maior parte dos gerenciadores de janelas pressupõem que o xinit esteja esperando que eles terminem e usam isto para fazer funcionar a opção de menu "Sair" ("Log out"). (Observação: para economizar memória e ciclos de CPU, você pode colocar um exec antes da última linha como nos exemplos abaixo).

Um exemplo simples que inicia o GNOME no XFree86 ou X.org:

. /sw/bin/init.sh
exec gnome-session

Um exemplo mais complexo para usuários bash que desliga a campainha do X11, inicia alguns clientes e finalmente executa o gerenciador de janelas Enlightenment:

. /sw/bin/init.sh

xset b off

xclock -geometry -0+0 &
xterm &
xterm &

exec enlightenment

Para iniciar o GNOME 2.4 e mais recentes no X11 da Apple:

. /sw/bin/init.sh
quartz-wm --only-proxy &
exec gnome-session

Para iniciar o KDE 3.2 (versão < 3.2.2-21) no X11 da Aple:

. /sw/bin/init.sh
export KDEWM=kwin
quartz-wm --only-proxy &
/sw/bin/startkde >/tmp/kde.log 2>&1

E finalmente para iniciar a versão instável mais recente do KDE no X11 da Apple:

. /sw/bin/init.sh
/sw/bin/startkde >/tmp/kde.log 2>&1

4.7 OroborOSX

O OroborOSX é uma alternativa para servidores de exibição X11.app e XDarwin. Ele requer uma instalação do X11 pré-existente para funcionar. O X11.app ou o XDarwin.app também continuam a funcionar.

Ao ser executado, o OroborOSX inicia sem próprio gerenciador de janelas que é sempre sem raiz e não lê nem o arquivo xinitrc do sistema nem o .xinitrc do usuário. Após iniciar, ele tem uma opção de menu para executar o .xinitrc. Entretanto, ele tem seu próprio método para configurar aplicações que sejam executadas quando ele inicia. Ele também fornece um mecanismo para iniciar aplicativos X11 a partir do Finder via scripts de inicialização.

Para mais informações, visite o site do OroborOSX.

5 Xtools

5.1 Instalando o Xtools

Obtenha o instalador, dê um duplo clique nele e siga as instruções. Assegure-se de escolher o volume de inicialização quando solicitado.

Caso esteja usando o Fink, você deve instalar o pacote system-xtools após haver instalado o Xtools. Este pacote não instalará arquivos quaisquer, mas verfiicará que as bibliotecas etc existem, funcionando como um sinalizador no sistema de dependências do Fink.

5.2 Executando o Xtools

Para executar o Xtools, dê um duplo clique em Xtools.app no seu diretório Aplicativos (Applications). Da mesma forma que o XFree86, o Xtools executará os clientes que você especificar em seu arquivo .xinitrc. Além disso, o Xtools permite que você inicie clientes através do menu.

5.3 Observações sobre OpenGL

O Xtools incorpora aceleração OpenGL em hardware no modo sem raiz e vem com as bibliotecas que a suportam. Enquanto que a biblioteca libGL principal está ok, as bibliotecas libGLU e libglut estão presentes apenas como bibliotecas estáticas, o que não é suficiente para compatibilidade binária total com o XFree86. Além disso, alguns arquivos de cabeçalho estão faltando. O Fink, no presente momento, não oferece uma solução alternativa. Esperamos que isto seja corrigido no Xtools 1.1 quando for lançado.

6 Outras possibilidades de X11

6.1 VNC

O VNC é um sistema de exibição gráfica com suporte a rede similar em projeto ao X11. Entretanto, ele trabalha em um nível mais baixo, tornando sua implementação mais fácil. Com o servidor Xvnc e um cliente de exibição Mac OS X, é possível executar aplicações X11 com o Mac OS X. A página do Xvnc de Jeff Whitaker possui mais informações a respeito.

6.2 WiredX

O WiredX é um servidor X11 escrito em Java. Também suporta modo sem raiz. Um pacote Installer.app está disponível no site.

6.3 eXodus

De acordo com o site, o eXodus 8, desenvolvido pela Powerlan USA, roda nativamente no Mac OS X. Não se sabe a partir de que código ele foi desenvolvido e se/como ele provê suporte a clientes locais. Por causa disto, não há suporte especial ao eXodus no Fink. Se você tiver mais informações, envie-nos.

7 Resolução de problemas com o XFree86

7.1 Quando inicio o XDarwin, ele termina ou falha quase que de imediato

Em primeiro lugar: não entre em pânico! Há várias coisas que podem dar errado com o XFree86 e um bom número delas podem causar falhas de inicialização. Além disso, não é incomum que o XDarwin falhe quando apresenta problemas de inicialização. Esta seção tenta fornecer uma lista abrangente de problemas pelos quais você talvez passe. Mas antes você precisa obter duas informações importantes:

A versão do XDarwin. Você pode encontrar a versão do XDarwin no Finder clicando uma única vez no ícone XDarwin e então escolhendo a opção "Obter Informações" ("Show Info") no menu. A versão só é incrementada quando uma versão binária de teste é feita pelo projeto XonX, então "1.0a1" pode na verdade ser qualquer versão entre 1.0a1 e 1.0a2.

Mensagens de erro. São fundamentais para identificar precisamente o problema pelo qual você está passando. A forma como você recebe as mensagens de erro depende de como você iniciou o XDarwin. Se você executou startx em uma janela do Terminal, você terá as mensagens ali nessa janela. Lembre-se de que você pode navegar para cima. Se você iniciou o XDarwin através de um duplo clique no ícone, as mensagens acabam indo para o log do sistema, o qual você pode acessar através do aplicativo Console no diretório Utilitários. Assegure-se de escolher o conjunto correto de mensagens, isto é, o último.

Começamos por uma lista de mensagens que você possa encontrar:

_XSERVTransmkdir: Owner of /tmp/.X11-unix should be set to root
_IceTransmkdir: Owner of /tmp/.ICE-unix should be set to root

Classe: não causa danos. O X11 cria diretórios escondidos em /tmp e armazena "arquivos" de sockets para conexões locais. Por razões de segurança, o X11 prefere que esses diretórios tenham root como proprietário mas, como esses arquivos têm permissão de escrita para todos os usuários, o X11 rodará sem problemas. (Observação: é razoavelmente difícil que esses diretórios tenham root como proprietário já que o Mac OS X zera o diretório /tmp quando é reiniciado e o XDarwin não executa (nem precisa executar) com privilégio de root.)

QuartzAudioInit: AddIOProc returned 1852797029
-[NSCFArray objectAtIndex:]: index (2) beyond bounds (2)
kCGErrorIllegalArgument : CGSGetDisplayBounds (display 35434400)
No core keyboard

Classe: falso. Esses são erros que surgem quando o servidor tenta reiniciar-se após um erro prévio. Durante este processo, uma outra cópia da mensagem de inicialização é exibida, seguida por uma ou mais das mensagens acima porque a reinicialização do servidor não funciona de fato nas versões do XDarwin afetadas. Então quando você vir mensagens como estas, pagine para na janela do Console/Terminal e procure por um outro conjunto de mensagem de inicialização e mensagens. Isto afeta todas as versões até XDarwin 1.0a3 inclusive; foi corrigido após a versão 1.0a3 ser lançada.

cat: /Users/chrisp/.Xauthority: No such file or directory

Classe: em geral, não causa danos. Não se sabe de onde vêm essas mensagens e elas aparentam não ter impacto nas operações. Você pode livrar-se delas executando touch .Xauthority no seu diretório home.

Gdk-WARNING **: locale not supported by C library

Classe: não causa danos. Isto apenas significa o que diz -- local não suportado pela biblioteca C -- e não fará com que a aplicação deixe de funcionar. Para mais informações, veja abaixo.

Gdk-WARNING **: locale not supported by Xlib, locale set to C
Gdk-WARNING **: can not set locale modifiers

Classe: ruim, mas não fatal. Estas mensagens podem aparecer em complemento às acima. Isto indica que os arquivos de dados de localização do XFree86 não estão presentes. Aparentemente isto acontece quando se compila o XFree86 a partir do código fonte, mas não é reproduzível. A maior parte das aplicações ainda funciona mas o GNU Emacs é uma exceção notável.

Unable to open keymapping file USA.keymapping.
Reverting to kernel keymapping.

Classe: geralmente fatal. Isto pode acontecer com o XDarwin 1.0a1 e a opção de mapeamento de teclado "Load from file" habilitada. Essa versão precisa de um caminho completo quando o arquivo a ser carregado é definido pela caixa de diálogo Preferências (Preferences), mas procura automaticamente quando é passado pela linha de comando. A mensagem será geralmente seguida pela mensagem "assert" mostrada abaixo. Para corrigir este problema, siga as instruções abaixo.

Fatal server error:
assert failed on line 454 of darwinKeyboard.c!
Fatal server error:
Could not get kernel keymapping! Load keymapping from file instead.

Classe: fatal. Mudanças que a Apple fez no Mac OS X 10.1 quebraram o código do XFree86 que lê o leiaute de teclado no núcleo do sistema operacional; a mensagem acima é o resultado disso. Você precisa usar a opção de mapeamento de teclado "Load from file" no Mac OS X 10.1. A configuração é feita na caixa de diálogo Preferências (Preferences) do XDarwin. Assegure-se de que um arquivo haja sido selecionado (isto é, use o botão "Escolher arquivo", "Pick file") - simplesmente ativar a caixa de verificação pode não ser suficiente em algumas versões do XDarwin. Caso você não consiga abrir a caixa de diálogo Preferências porque o XDarwin a fecha antes que você consiga usá-la, rode-o a partir do Terminal através do comando startx -- -quartz -keymap USA.keymapping. Isto geralmente permite que o XDarwin inicie e então você pode fazer a escolha permanente na caixa de diálogo Preferências.

Fatal server error:
Could not find keymapping file .

Class: Fatal (as it says). This error is due to the absence of the keymapping files under Panther. You need to install xfree86-4.3.99-16 or later, since these versions don't need the keymapping files.

Warning: no access to tty (Inappropriate ioctl for device).
Thus no job control in this shell.

Classe: em geral, não causa danos. O XDarwin 1.0a2 e posteriores abrem um shell interativo por debaixo dos panos para rodar seu arquivo de inicialização do cliente (.xinitrc). Isto foi feito para que você não tenha que adicionar comandos para configuração de PATH nesse arquivo. Alguns shells reclamam que não estão conectados a um terminal real mas isto pode ser ignorado pois essa instância do shell não é usada para qualquer coisa que requeira controle de jobs ou similares.

Fatal server error:
failed to connect as window server!

Classe: fatal. Isto significa que o servidor em modo console (para o Darwin puro) foi iniciado enquanto você estava logado no Aqua. Normalmente isto acontece quando você instala uma distribuição binária oficial do XFree86 e esquece o tarball Xquartz.tgz. Isto também pode acontecer quando os links simbólicos em /usr/X11R6/bin estão bagunçados ou quando você executa o comando XDarwin em uma janela de Terminal para iniciar o servidor (você deveria usar startx; veja Iniciando o XFree86.).

De qualquer forma, você pode executar ls -l /usr/X11R6/bin/X* e verificar a saída. Você deveria ver quatro entradas relevantes: X, um link simbólico apontando para XDarwinStartup; XDarwin, um arquivo executável (esse é o servidor em modo console); XDarwinQuartz, um link simbólico apontando para /Applications/XDarwin.app/Contents/MacOS/XDarwin; e XDarwinStartup, um arquivo executável pequeno. Se algum desses estiver faltando ou apontando para arquivos diferentes, você precisa corrigir. Como fazê-lo depende do método usado para instalar o XFree86. Se você instalou o XFree86 com o Fink então você precisa reinstalar o pacote xfree86 (ou xfree86-rootless para o OS 10.2 e anteriores). Se foi instalado por você mesmo, então obtenha os arquivos a partir de uma cópia de Xquartz.tgz.

The XKEYBOARD keymap compiler (xkbcomp) reports:
> Error:            Can't find file "unknown" for geometry include
>                   Exiting
>                   Abandoning geometry file "(null)"
Errors from xkbcomp are not fatal to the X server

Classe: em geral, não causa danos. Como a própria mensagem diz, não é um erro fatal. Até onde eu saiba, o XDarwin não chega a usar extensões XKB. Provavelmente algum programa cliente tentou usá-las...

startx: Command not found.

Classe: fatal. Isto pode acontecer com o XDarwin 1.0a2 e 1.0a3 quando seus arquivos de inicialização do shell não foram configurados para adicionar /usr/X11R6/bin à variável PATH. Caso você use o Fink e não haja mudado seu shell padrão, adicionar a linha source /sw/bin/init.csh ao arquivo .cshrc em seu diretório home (conforme recomendado pelas instruções do Fink) deve ser suficiente.

_XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
_XSERVTransMakeAllCOTSServerListeners: server already running
Fatal server error:
Cannot establish any listening sockets - Make sure an X server isn't already
running

Classe: fatal. Isto pode acontecer quando você executa acidentalmente várias instâncias do XDarwin de uma vez, ou talvez após uma finalização problemática (isto é, uma folha) do XDarwin. Pode ser também um problema com permissão de arquivo com os sockets para conexões locais. Você pode tentar limpá-los com rm -rf /tmp/.X11-unix.. Reiniciar o computador também ajuda na maior parte dos casos (o Mac OS X limpa automaticamente o diretório /tmp quando é iniciado, e a pilha de rede é reiniciada).

Xlib: connection to ":0.0" refused by server
Xlib: Client is not authorized to connect to Server

Classe: fatal. Os programas clientes não conseguem se conectar ao servidor de exibição (XDarwin) porque usam dados de autenticação falsos. Isto é causado por algumas instalações do VNC, por rodar o XDarwin através do sudo, e provavelmente outros acidentes estranhos. A correção usual é apagar o arquivo .Xauthority (o qual armazena dados de autenticação) no seu diretório home e recriá-lo em branco:

cd
rm .Xauthority
touch .Xauthority

Outra causa comum de erro na inicialização do XFree86 é um arquivo .xinitrc incorreto. O que acontece é que .xinitrc é executado e por alguma razão termina quase que de imediato. O xinit interpreta isto como "a sessão do usuário terminou" e encerra o XDarwin. Veja a seção sobre o .xinitrc para mais detalhes. Lembre-se de configurar sua variável PATH e ter um programa que execute indefinidamente e que não seja iniciado em segundo plano. É uma boa idéia adicionar exec xterm como uma garantia caso seu gerenciador de janelas ou similar não possa ser encontrado.

7.2 Ícones pretos no painel do GNOME ou no menu de um aplicativo GNOME

Um problema comum é ícones ou outras imagens sendo exibidos como retângulos pretos ou contornos pretos. Em última instância, isto é causado por limitações do núcleo do sistema operacional. O problema foi relatado para a Apple mas até agora eles aparentam não querer corrigi-lo: veja o relatório de erro para detalhes.

A situação atual é que a extensão MIT-SHM do protocolo X11 é praticamente impossível de user usada no Darwin e no Mac OS X. Há duas formas de desligar esta extensão de protocolo: no servidor ou nos clientes. Os servidores XFree86 instalados pelo Fink (isto é, os pacotes xfree86-server e xfree86-rootless) já a desligaram. O GIMP e o painel do GNOME também já foram inoculados. Se você encontrar ícones pretos em outra aplicação, inicie a aplicação com a opção de linha de comando --no-xshm.

7.3 O teclado não funciona no XFree86

Este é um problema conhecido que até agora aparenta afetar apenas os laptops (PowerBook, iBook). Para contorná-lo, a opção de mapeamento de teclado "Load from file" foi implementada. Hoje em dia tornou-se o padrão porque o método antigo (ler o mapeamento do núcleo do SO) parou de funcionar com o Mac OS X 10.1. Se você ainda não habilitou esta opção, você pode fazê-lo na caixa de diálogo de Preferências do XDarwin. Marque a caixa de verificação "Load from file" e escolha o arquivo de mapeamento de teclado a ser carregado. Após reiniciar o XDarwin, seu teclado deveria funcionar de forma geral (veja abaixo).

Caso esteja iniciando o XFree86 a partir da linha de comando, você pode passar o nome do arquivo de mapeamento de teclado a ser carregado como uma opção:

startx -- -quartz -keymap USA.keymapping

7.4 A tecla Backspace não funciona

Isto pode acontecer quando se usa a opção "Load from file" acima. Os arquivos de mapeamento descrevem a tecla backspace como "Delete" e não como "Backspace". Você pode corrigir isto coloando a seguinte linha no seu arquivo .xinitrc:

xmodmap -e "keycode 59 = BackSpace"

Se estou lembrando corretamente, o XDarwin 1.0a2 e posteriores já têm código que mapeia correta e automaticamente a tecla Backspace.

7.5 "Warning: locale not supported by C library"

Estas mensagens são relativamente comuns mas não causam dano. Elas significam exatamente o que dizem - internacionalização não é suportada através da biblioteca C padrão, o programa usará as mensagens padrão, formatos de data etc em inglês. Há várias formas de lidar com isto:

8 Dicas de uso

8.1 Execução aplicativos X11 a partir do Terminal.app

Para iniciar um aplicativo X11 a partir de uma janela do Terminal.app, você precisa definir a variável de ambiente "DISPLAY". Essa variável diz aos aplicativos onde encontrar o servidor de janelas X11. Na configuração padrão - o XDarwin roda na mesma máquina -, você pode definir a variável como segue:

Uma boa configuração é ter o XDarwin.app iniciado quando você se logar (pode ser definido no painel Login das Preferências de Sistema no Mac OS 10.2, no painel Contas, Inicialização no Mac OS 10.3):

Isto faz com que a variável DISPLAY seja definida automaticamente em todo shell. Ela não sobrescreve o valor atual caso a variável DISPLAY já esteja definida. Desta forma, você ainda consegue executar aplicativos do X11 remotamente ou através de ssh com tunelamento X11.

8.2 Executando aplicativos Aqua a partir do xterm

Uma forma de executar aplicativos Aqua a partir do xterm (ou de qualquer outro shell) é através do comando open. Alguns exemplos:

open /Applications/TextEdit.app
open SomeDocument.rtf
open -a /Applications/TextEdit.app index.html

O segundo exemplo abre o documento no aplicativo que esteja lhe esteja associado; o terceiro exemplo diz explicitamente qual aplicativo deve ser usado.

8.3 Copiar e colar

Copiar e colar geralmente funciona entre ambientes Aqua e X11. Ainda há alguns erros. Há relatos de o Emacs ter problemas com a seleção atual. Copiar e colar de Classic para X11 não funciona.

De qualquer forma, o truque é usar os métodos respectivos do ambiente em que esteja. Para transferir texto do Aqua para X11, use Cmd-C no Aqua, traga a janela de destino para frente e use o "botão do meio do mouse", isto é, Option-click em um mouse com um único botão (isto pode ser configurado nas Preferências do XDarwin) para colar. Para transferir texto do X11 para Aqua, simplesmente selecione o texto com o mouse no X11 e então use Cmd-V no Aqua para colá-lo.

O sistema X11 tem na verdade vários clipboards separados (denominados "cut buffers" no léxico do X11) e alguns aplicativos têm visões estranhas sobre qual deve ser usado. Em particular, colar dentro do GNU Emacs ou XEmacs não funciona às vezes por causa disso. O programa autocutsel pode ajudar; ele sincroniza automaticamente os dois principais cut buffers. Para executá-lo, instale o pacote autocutsel do Fink e adicione a seguinte linha ao seu .xinitrc:

autocutsel &

(Assegure-se de que esteja antes da linha que executa o gerenciador de janelas e que nunca retorna! Não a adicione simplesmente ao fim, ela não será executada.) E lembre-se de que isto não é mais necessário para o X11 da Apple. (veja Algumas observações sobre o uso do X11 da Apple).

Caso esteja usando o X11 da Apple, você pode usar Command-C ou Editar->Copiar (Edit->Copy), como é de praxe nos aplicativos Mac, para copiar texto para o clipboard, e usar o botão do meio do mouse ou Command-V para colar do clipboard para o X11 da Apple.

De qualquer forma, caso encontre problemas ao copiar e colar do Aqua para X11 e vice-versa, você pode primeiro tentar colar duas vezes (pode ser que o copiar não ocorra de imediato). Você também pode usar aplicativos intermediários, por exemplo TextEdit ou Terminal.app no lado do Aqua, nedit ou xterm no lado do X11. Em minha experiência, sempre há uma solução.


Copyright Notice

Copyright (c) 2001 Christoph Pfisterer, Copyright (c) 2001-2015 The Fink Project. You may distribute this document in print for private purposes, provided the document and this copyright notice remain complete and unmodified. Any commercial reproduction and any online publication requires the explicit consent of the author.


Generated from $Fink: x11.pt.xml,v 1.2 2012/11/11 15:20:18 gecko2 Exp $