Correndo aplicações remotas com o X11
    ArticleCategory: [Choose a category, do not translate
    this]
    UNIX Basics 
    AuthorImage:[Here we need a little image from you]
    
 
    TranslationInfo:[Author + translation history. mailto: or
    http://homepage]
    original in en Guido
    Socher
    en to pt Bruno Sousa
    AboutTheAuthor:[A small biography about the author]
    O Guido gosta do Linux não só por ser interessante compreender como
    é que os sistemas operativos trabalham mas também pelas pessoas
    envolvidas no seu desenho.
    Abstract:[Here you write a little summary]
    Nos primeiros tempos os utilizadores de Linux pensam que o desktop
    gráfico sob o Linux é um outro sistema "Windows" onde pode iniciar
    aplicações e estas aparecem em janelas separadas. Algumas pessoas
    apercebem-se que podem ter vários desktops e é isto que se parece.
    O Sistema Linux X Window (X11) é muito mais do que isto! É um sistema
    de janelas em rede. Veremos quais as novas e poderosas possibilidades
    que oferece. 
    ArticleIllustration:[This is the title picture for your
    article]
    
 
    ArticleBody:[The article body]
    O conceito de display
    Qualquer aplicação gráfica X Window lê ao iniciar a variável de
    ambiente DISPLAY para descobrir o ecrã para onde deve enviar os
    gráficos. Isto, juntamente, com as capacidades de rede do X Window
    torna possível as aplicações gráficas correrem remotamente. Ou seja,
    utiliza a capacidade de processamento de uma máquina enquanto tem a
    aplicação a rodar a partir de outra. Toda a GUI (graphical user
    interface - interface gráfica do utilizador) aparece na máquina onde
    está a operar. Nem se dá conta que está a utilizar 2 computadores.
    A velocidade da rede é, claro, uma questão importante, mas uma ligação
    normal de 10Mbit/s na sua rede local é mais que suficiente.
 
    
      
    
    
     
    Porque é que quereria fazer isto?
    Existem imensas aplicações destes "gráficos de rede". Companhias
    utilizam-nas para administrarem o equipamento remotamente, que pode
    estar a milhares de quilómetros de distância e você pode utilizar a
    mesma aplicação para administrar como se estivesse no site localmente.
    Pode ter 2 computadores uma máquina rápida a 1 Ghz e um velho Pentium a
    133Mhz. Pode apreciar a velocidade da sua nova máquina mesmo que não
    esteja sentado á frente dela. Provavelmente, a sua irmã está sentada à
    frente da nova máquina e tem uma sessão aberta. Mas isto não importa
    pois continua a poder beneficiar dela.
    
    Como é que trabalha?
    Todas as aplicações X window, podendo-se chamar gimp, xterm, konquerer,
    netscape, ... são clientes de rede reais que se ligam a um servidor, o
    servidor X. A tarefa do servidor X é falar com o hardware de gráficos,
    desenhar as figuras no seu ecrã, ler os dados de entrada do rato e do
    teclado. Os clientes (os seus programas como o gimp, netscape...)
    enviam instruções ao servidor como desenhar as frames e botões. Em
    troca recebem do servidor os eventos de rato e teclado. Obviamente, que
    precisa de uma espécie de autenticação, caso contrário toda a gente
    podia-se confundir com o ecrã de toda a gente. Existem dois programas
    para controlar o acesso:
    - xhost: utilizando este programa pode dar permissões a qualquer
    utilizador numa dada máquina para escrever gráficos para o seu display.
    Exemplo: está sentado à frente de uma máquina chamada philosophus. Para
    permitir o acesso a qualquer programa na máquina movietux para o seu
    display em philosophus você digitaria o comando:
    xhost +movietux
    Isto deve ser digitado numa shell em philosophus
    
    - xauth: Este é um cookie à base de autenticação e muito mais
    sofisticado. Aqui pode, realmente, dar acesso individual às pessoas. É
    muito mais seguro que o xhost. A autenticação utiliza um cookie
    armazenado no ficheiro .Xauthority no directório de trabalho dos
    utilizadores. Se a máquina remota tiver um cookie válido neste ficheiro
    então o acesso é concedido. Para copiar o cookie da máquina onde está
    sentado (philosophus) para a máquina onde quer iniciar o programa
    (movietux) pode utilizar um dos seguintes métodos:
    xauth extract - philosophus:0.0 | ssh movietux
    /usr/X11R6/bin/xauth merge
ou
    scp ~/.Xauthority movietux:
    
    O procedimento que acontece no arranque de um programa (cliente) é o
    seguinte:
    
      - O cliente verifica a variável de ambiente DISPLAY para descobrir
      o servidor, caso contrário liga-se ao servidor da máquina local.
 
      - O servidor verifica se é permitido enviar "imagens" para o
      cliente. Se o cliente está autorizado, então o servidor desenhará a
      imagem no ecrã.
 
    
    A variável de ambiente DISPLAY tem a seguinte sintaxe:
    bash:export
    DISPLAY=hostname:displaynumber.screennumber
    tcsh:setenv DISPLAY hostname:displaynumber.screennumber
    Não falarei aqui, acerca do displaynumber e do screennumber.
    Normalmente é somente 0:0. Um exemplo para a bash seria:
    export DISPLAY=philosophus:0.0
    Iniciando uma aplicação remota
    Após toda a teoria, um exemplo prático. Tente-o somente. Estamos
    novamente sentados no computador chamado philosophus e queremos iniciar
    algo remotamente a partir de movietux.
    
      - Diga ao servidor X que os clientes de movietux têm permissões
      para desenhar imagens no seu ecrã:
      xhost +movietux 
      - Faça login na máquina remota movietux:
      slogin -l username movietux 
      - Agora está ligado a movietux e todos os comandos que corre são
      executados no movietux.
 
      - export DISPLAY=philosophus:0.0
 
      - inicie o programa. Por exemplo:
      netscape & 
    
    Se o movietux for uma máquina poderosa então notará que a renderização
    das páginas html no netscape é muito mais rápida de quando o corre
    localmente. Ao mesmo tempo não se apercebe, do ponto de vista de
    utilização, o netscape não é inicializado localmente visto que interage
    como ele do mesmo modo, com o rato e teclado.
    Fascinante, não é?
    Levando o display comigo
    Apesar de ser fácil correr uma aplicação remotamente existe ainda
    alguma digitação extra, necessária para definir o DISPLAY. É possível
    automatizar isto:
    
      - Se está a utilizar o ssh para se ligar à máquina remota então o
      DISPLAY é definido automaticamente. Existem, também outros programas
      de login remotos que suportam o DISPLAY mas o ssh é muito comum.
 
      - 
      Se está a utilizar o slogin ou outros comandos então pode instalar as
      seguintes scripts na máquina remota.
      Para a tcsh: 
        # take your display with you at remote
        login:
        # Put it into your ~/.login file
        set whoami=`who -ml`
        set remhost=`expr "$whoami" : '.*(\(.*\))'`
        if ( "$remhost" != "" ) then
         setenv DISPLAY "$remhost":0.0
        endif
        A script trabalha obtendo o nome da máquina remota a partir do
        comando "who -ml". Este comando devia retornar algo do tipo 
        >who -ml
        movietux!guido pts/3 Oct 26 21:55 (philosophus.tux.org)
        Se estiver a utilizar a bash então precisa da seguinte script: 
        # take your display with you at remote
        login:
        # Put it into your ~/.bash_profile
        whoami=`who -ml`
        remhost=`expr "$whoami" : '.*(\(.*\))'`
        if [ -n "$remhost" ]; then
         DISPLAY="$remhost":0.0
         export DISPLAY
        fi
        OpenGL
        Enquanto que as possibilidades de rede do Sistema X window são
        muito boas os gráficos são um pouco mais lentos devido ao facto de
        enviar os dados por cima de um protocolo de rede. Normalmente, não
        notará nenhuma diferença mas existem aplicações bastante rápidas e
        jogos com gráficos intensivos onde a velocidade é
        importante.
 Estes jogos, no geral, são baseados nas
        bibliotecas equivalentes OpenGL (Open Graphics Library) e GLX
        (OpenGL Extension para o sistema X Windows). Estas bibliotecas
        fornecem interfaces de programação independentes que fornecem
        acesso directo ao hardware de aceleração 3D das placas gráficas. Ou
        seja, a aplicação envia a descrição de um objecto na forma de
        pontos, linhas e polígonos à placa gráfica e toda a renderização é
        feita dentro do hardware gráfico. Isto fornece gráficos bastante
        rápidos.
 
        Correntemente a maioria dos drivers das placas gráficas (servidores
        X) não suportam a aceleração por hardware GLX/OpenGL para
        aplicações remotas. Suportam a aceleração por hardware para
        aplicações locais. O efeito é que remotamente as aplicações OpenGL
        iniciadas muito dificilmente arrancam e são muito lentas. Uma
        excepção são os drivers NVidia fechados. Eles têm uma interface de
        renderização directa que suporta renderização indirecta para
        aplicações remotas.
        Conclusão
        Utilizando o poder de computação a sua rede com o X11 é muito
        fácil. Pode trabalhar com aplicações remotas do mesmo modo que
        localmente. A única diferença que encontrará é que verá os
        ficheiros e directórios de trabalho da máquina remota. Contudo com
        o NFS e o NIS instalado pode até esconder esta pequena diferença e
        utilizar todo o poder de processamento das máquinas mais rápidas
        nas suas redes sem pensas nisso.
        Ligações
        X11 system, x.org
        xfree86.org o sistema X11
        utilizado no Linux