Índice das dicas

X, interfaces, desktops e gerenciadores de login

Por Carlos E. Morimoto em 26 de janeiro de 2009 às 21h02

12

Junto com o kernel, o interpretador de comandos e as bibliotecas básicas do sistema, outro componente base do sistema, usado em todas as distribuições, é o servidor gráfico, o famoso "X". Antes do X, o Linux tinha apenas a velha interface de modo texto, o que explicava o fato de ele ser popular apenas entre programadores e administradores de sistemas.

Diferentemente do que temos no Windows, onde a interface gráfica é um componente essencial do sistema, no Linux o modo gráfico é uma camada independente. Temos um "servidor gráfico", o X, que provê a infra-estrutura necessária. É ele que controla o acesso à placa de vídeo, lê as teclas digitadas no teclado e os clicks do mouse e oferece todos os recursos necessários para os programas criarem janelas e mostrarem conteúdo na tela.

Se você chamar o X sozinho, a partir do modo texto (o que pode ser feito com o comando "X" ou "X :2" caso você queira abrir uma segunda seção do X), você verá apenas uma tela cinza, com um X que representa o cursor do mouse. Ou seja, o X é apenas uma base, ele sozinho não faz muita coisa:

interfaces_html_m6238ca3f

Se você chamá-lo com o comando "xinit" ou "xinit -- :2", você já abrirá junto uma janela de terminal, que poderá ser usada para abrir programas. Porém, ao abrir qualquer programa gráfico, você perceberá que algo está estranho. A janela do programa é aberta, mas fica fixa na tela, você não tem como minimizá-la, alternar para outra janela, nem nenhuma outra opção.

Isto acontece porque estas tarefas são controladas pelo gerenciador de janelas, que (em quase todas as distribuições) não é carregado com o comando xinit. Existem vários gerenciadores de janelas, como o KDE, Gnome, Window Maker, Fluxbox, IceWM e assim por diante. A idéia é que você possa escolher qual lhe agrada mais.

Chamando o X através do comando "startx", ou configurando o sistema para carregar o X automaticamente durante a inicialização (que é o default em praticamente todas as distribuições), finalmente carregamos o conjunto completo, com o X e um gerenciador de janelas rodando sobre ele, um ambiente de trabalho mais produtivo:

interfaces_html_584ced841

Existem inúmeras interfaces (ou gerenciadores de janelas) diferentes para o Linux, uma lista que inclui o FluxBox, Window Maker, XFCE, Enlightenment e muitas outros. Depois deles, temos o KDE e o Gnome, que se enquadram em uma categoria à parte: a dos desktops.

Em vez de se limitarem a serem apenas gerenciadores de janelas, eles incluem um enorme conjunto de componentes e de aplicativos, desenvolvidos de forma a oferecerem um ambiente de trabalho consistente, onde todos os aplicativos se comportam de forma similar, compartilham do mesmo tema visual, utilizam os mesmos atalhos de teclado e assim por diante. Eles incluem também bibliotecas e ferramentas de desenvolvimento, que oferecem um ambiente completo para quem desenvolve aplicativos.

O KDE segue uma abordagem mais configurável, oferecendo um grande volume de opções de configuração e uma interface mais parecida com a do Windows. O Gnome, por outro lado, segue a linha do Mac OS X, oferecendo um ambiente mais simples (porém não necessariamente mais leve), com menos opções de configuração. A vantagem da abordagem do Gnome é que o ambiente é mais amigável para novos usuários, mas, por outro lado, ele acaba desagradando muitos usuários antigos, que sentem falta de um ambiente mais configurável, como no KDE.

A vantagem de ter dois ambientes diferentes é que você pode escolher qual usar, exercitando sua liberdade de escolha. Nada impede também que você rode aplicativos do KDE (como o Konqueror e o K3B) sobre o Gnome, ou vice-versa, utilizando os melhores componentes de cada ambiente.

O problema em misturar aplicativos é que seu ambiente de trabalho deixa de ser consistente, já que os aplicativos do KDE utilizam um conjunto de configurações diferentes das do Gnome. Você acaba tendo que configurar os aplicativos das duas famílias de forma distinta, usando o kcontrol ou o systemsettings para ajustar as configurações dos aplicativos do KDE e o gnome-appearance-properties (e os demais aplicativos do painel de preferencias do Gnome) para ajustar as configurações dos aplicativos do Gnome.

Existe ainda o problema do desempenho. Misturando aplicativos dos dois ambientes o sistema precisa manter as duas bibliotecas carregadas, o que consome mais memória RAM e processamento. Os próprios aplicativos demoram mais para carregar "fora de casa", pois é preciso primeiro carregar as bibliotecas e outros componentes necessários para depois começar o carregamento do aplicativo em si. Um exemplo clássico é o Konqueror, que abre quase que instantaneamente no KDE, mas pode demorar quase 10 segundos para carregar no Gnome.

Essas dificuldades fazem com que a maioria das distribuições dêem preferência para um dos dois ambientes, dando preferência aos aplicativos e ferramentas de configuração desenvolvidas para ele. Isso explica por que o Ubuntu é centralizado em torno de aplicativos do Gnome enquanto no Kubuntu eles são substituídos por aplicativos similares da família do KDE. Isso acaba pesando na escolha da distribuição: se você prefere o KDE, vai se sentir mais à vontade usando o Mandriva ou o Kubuntu do que usando o Ubuntu ou o Fedora, por exemplo; e vice-versa.

Pesquisando sobre o KDE por aí, você encontrará referências a um problema relacionado à licença da biblioteca QT, que leva muitos a dizerem que o KDE "não é livre" até os dias de hoje. Em 1997, quando o KDE começou a ser desenvolvido, a biblioteca Qt era de uso gratuito, mas não tinha o código aberto, o que gerou uma grande polêmica e levou ao surgimento do Gnome, baseado na biblioteca GTK (que já era largamente utilizada em aplicativos como o Gimp)

Com o crescimento do KDE e a possibilidade de formar uma grande comunidade de desenvolvedores, que impulsionariam o desenvolvimento e o uso da sua biblioteca, a TrollTech resolveu liberar o Qt sob a GPL em setembro de 2000, o que removeu este entrave inicial. Em 2009, a QT foi licenciada sob a LGPL, que é uma licença ainda mais liberal, que permite o uso também em aplicativos de código fechado.

Junto com a briga entre o KDE e o Gnome, temos também a briga entre os gerenciadores de login. Antigamente, era muito comum dar boot em modo texto e deixar para abrir o X manualmente rodando o comando "startx" apenas quando necessário, pois os PCs eram lentos e o X demorava para abrir.

Atualmente, o mais comum é usar um gerenciador de login, como o KDM (do KDE) ou o GDM (do Gnome). A função do gerenciador de login é carregar o X, mostrar uma tela de login gráfica e, a partir dela, carregar o ambiente gráfico.

Em geral, as distribuições que usam o KDE como interface padrão usam o KDM, enquanto as que usam o Gnome preferem o GDM. Isto tem a ver com o problema das bibliotecas: ao carregar apenas um programa baseado nas bibliotecas do KDE dentro do Gnome ou vice-versa, são carregadas todas as bibliotecas correspondentes, não há o que fazer. O programa demora mais para abrir, e no final, o sistema acaba consumindo muito mais memória.

O gerenciador de login é aberto como um serviço de sistema, da mesma forma que o Apache e outros servidores. Você pode parar o KDM e assim fechar o modo gráfico usando o comando "/etc/init.d/kdm stop" e reabri-lo a partir do modo texto com o comando "/etc/init.d/kdm start". No caso do GDM, são usados os comandos "/etc/init.d/gdm stop" e "/etc/init.d/gdm start".

Como sempre, tudo é aberto através de um conjunto de scripts. O KDM guarda a base das configurações no arquivo "/etc/kde3/kdm/kdmrc" (ou "/usr/share/config/kdm/kdmrc", dependendo da distribuição) e coloca um conjunto de scripts de inicialização, um para cada interface instalada, dentro da pasta "/usr/share/apps/kdm/sessions/".

A configuração do kdmrc serve para configurar as opções da tela de login, que vão desde opções cosméticas, até a opção de aceitar que outras máquinas da rede rodem aplicativos remotamente via XDMCP. Ao fazer login, é executado o script correspondente à interface escolhida. Ao usar o Fluxbox, por exemplo, é executado o script "/usr/share/apps/kdm/sessions/fluxbox".

Até mesmo o comando startx é um script, que geralmente vai na pasta "/usr/X11R6/bin/". Você pode alterá-lo para carregar o que quiser, mas normalmente ele carrega o gerenciador especificado no arquivo .xinitrc, dentro da pasta home do usuário.

Naturalmente, tudo isso se aplica apenas a situações onde você quer alterar a configuração do sistema manualmente. Você pode alterar as configurações do KDM através do systemsettings , no "Avançado > Gestor de Autenticação". No Gnome, você pode alterar as configurações do GDM usando o "gdmsetup", disponível no "Sistema > Administração > Janela de início de sessão":

interfaces_html_188941ed

Ele permite ativar o login automático, liberar o login como root (o que não é aconselhável do ponto de vista da segurança, mas acaba sendo uma questão de honra para alguns), alterar o aspecto visual ou mesmo ativar o uso do XDMCP, um sistema de acesso remoto suportado nativamente pelo X. Embora tenha caído em popularidade devido ao uso do SSH, ele é ainda bastante usado.

12 comentáriosPor Carlos E. Morimoto. Revisado 23 de março de 2011 às 11h20

Comentários

 
por Artus (anônimo) em 1 de fevereiro de 2009 às 17h06
Baixei o Slim no Ubuntu 8.10, download cerca de 400KB instalação 800KB, ainda não tive tempo de testa-lo.
 
por Artus (anônimo) em 1 de fevereiro de 2009 às 17h03
Bom dia!
Se estever errado por favor me corrijam, mas, os programas que só dependam das bibliotecas do X, rodaram sempre com velocidade de aplicação nativa pois, estas bibliotecas são sempre as primeiras carregadas seja qual for o ambiente utilizado. A diferença fica na aparencia, pois eles não são afetados pelas personalizações do ambiente, e os aplicativos baseados em X geralmente deixam a desejar no quesito aparencia. Mas são muito leves em compensação. Existem gerenciadores de janelas que utilizam apenas as libs do X, como FVWM, Fluxbox e etc. Eu uso um desses atualmente, o JWM, que ocupa cerca de 90KB no HD.
 
por Kevin-Moc (anônimo) em 28 de janeiro de 2009 às 10h33
@Guilherme Gall
Obrigado pela resposta.

E quanto as diferenças entre programas que usam apenas bibliotecas do X? Teriam mesmo desempenho em Kde e Gnome ou teriam melhore desempenho apenas em outro gerenciadores tipo xfce?
 
por Guilherme Gall (anônimo) em 27 de janeiro de 2009 às 23h46
@Kevin-Moc

Você pode filtrar a saída do comando ldd para descobrir se um programa usa Qt ou GTK. Por exemplo:

$ ldd /usr/bin/amarok | egrep "lib(qt|gtk)"
libqt-mt.so.3 => /usr/lib/qt-3.3.8b/lib/libqt-mt.so.3 (0xb73ec000)

$ ldd /usr/bin/pidgin | egrep "lib(qt|gtk)"
libgtkspell.so.0 => /usr/lib/libgtkspell.so.0 (0xb7d61000)
libgtk-x11-2.0.so.0 => /usr/lib/libgtk-x11-2.0.so.0 (0xb78d7000)
 
por nilsantana (anônimo) em 27 de janeiro de 2009 às 21h52
uma dúvida que tenho, é se é o kdm quem gerencia o ksplash, de alguma forma , estive lendo os arquivos de configuração do kdm e kde , pensei que eu poderia assim configurar um splash para o boot e outro para o logoff.
como dizem acima são firulas, mas tem usuários que gostam de firulas, jogos e coisas assim que tornam a vida divertida, no entanto , não identifiquei qual deles faz essa função
 
por Rodrigo Zimmermann (anônimo) em 27 de janeiro de 2009 às 17h24
Eu utilizo o KDE pelo fato deste nunca dizer para mim: este aplicativo é GTK. Muito pelo contrário, o KDE integra muito bem os aplicativos GTK, inclusive estes aplicativos quando rodando pelo KDE podem compartilhar da mesma aparência de programas do KDE.

Resumindo, no KDE não importa se um programa é QT ou se é GTK, você nem sente diferença alguma! Os ícones, os botões e tudo é semelhante ao tema do KDE.
 
por Emanuel (anônimo) em 27 de janeiro de 2009 às 11h05
Eu gosto das firulas do KDE.

Morimoto, o consumo de banda do XDMCP é semelhante ao que temos quando executamos um aplicativo gráfico via SSH?
 
por Marco Tulio (anônimo) em 27 de janeiro de 2009 às 10h52
Olá Morimoto, você pode escrever um artigo sobre monitoração de performance em servidores Linux?
 
por Marcio Vasconcelos (anônimo) em 27 de janeiro de 2009 às 10h12
Nunca usei o kde 4, mas ele está indo em direção ao "menos é mais", está indo para um bom caminho. Pelo menos para mim, que não gosto de muitas firulas.
 
por mad_butcher (anônimo) em 27 de janeiro de 2009 às 10h02
Uma opção de gerenciador de login para quem não usa um dos Desktops citados ( e também para que usa, por que não?) é o slim. É um gerenciador simples mas altamente configurável.