106.2 Lição 1
Certificação: |
LPIC-1 |
---|---|
Versão: |
5.0 |
Tópico: |
106 Interfaces de usuário e áreas de trabalho |
Objetivo: |
106.2 Áreas de trabalho gráficas |
Lição: |
1 de 1 |
Introdução
Os sistemas operacionais baseados em Linux são conhecidos por sua avançada interface de linha de comando, mas ela pode assustar um pouco os usuários sem uma formação mais técnica. Para tornar o uso do computador mais intuitivo, a combinação de telas de alta resolução com dispositivos apontadores deu origem a interfaces de usuário baseadas em imagens. Enquanto a interface de linha de comando exige um conhecimento prévio dos nomes dos programas e suas opções de configuração, a funcionalidade dos programas com interface gráfica do usuário (GUI) pode ser acionada simplesmente clicando-se em elementos visuais familiares, o que torna a curva de aprendizado bem mais suave. Além disso, a interface gráfica é mais adequada para tarefas de multimídia e outras atividades visualmente orientadas.
De fato, a interface gráfica de usuário tornou-se quase um sinônimo de interface de computação. A maioria das distribuições Linux vem com uma interface gráfica instalada por padrão. Não existe, entretanto, um único programa monolítico responsável pelos desktops gráficos completos nos sistemas Linux. Em vez disso, cada área de trabalho gráfica compõe-se, na verdade, de uma grande coleção de programas e suas dependências, que variam segundo as escolhas da própria distribuição ou o gosto pessoal do usuário.
X Window System
No Linux e em outros sistemas operacionais semelhantes ao Unix, o X Window System (também conhecido como X11 ou apenas X) fornece os recursos de baixo nível relacionados à renderização da interface gráfica e à interação do usuário com ela, como:
-
O tratamento dos eventos de entrada, como movimentos do mouse ou pressionamentos de teclas.
-
A capacidade de cortar, copiar e colar conteúdo de texto entre aplicativos separados.
-
A interface de programação usada por outros programas para desenhar os elementos gráficos.
Embora o X Window System seja responsável por controlar a exibição gráfica (o driver de vídeo em si é parte do X), ele não se destina a desenhar elementos visuais complexos por conta própria. Formas, cores, sombras e outros efeitos visuais são gerados pelo aplicativo que roda em cima do X. Esta abordagem dá mais liberdade aos aplicativos para criar interfaces personalizadas, mas também pode levar a sobrecargas de desenvolvimento que vão além do escopo do aplicativo, além de inconsistências na aparência e no comportamento em relação a outras interfaces de programas.
Do ponto de vista do desenvolvedor, a introdução do ambiente de trabalho (ou ambiente de desktop) facilita a programação da GUI durante o desenvolvimento do aplicativo, ao passo que, da perspectiva do usuário, ele oferece uma experiência consistente entre aplicativos distintos. Os ambientes de desktop reúnem interfaces de programação, bibliotecas e programas de suporte que cooperam para entregar conceitos de design tradicionais, mas em constante evolução.
Ambiente de trabalho
A GUI tradicional consiste em diversas janelas — o termo janela refere-se aqui a qualquer área autônoma da tela — associadas aos processos em execução. Como o X Window System sozinho oferece apenas recursos interativos básicos, a experiência completa do usuário depende dos componentes fornecidos pelo ambiente de área de trabalho.
O componente mais importante de um ambiente de área de trabalho é provavelmente o gerenciador de janelas, que controla o posicionamento e as decorações das janelas. É o gerenciador de janelas que adiciona a barra de título à janela, bem como os botões de controle — geralmente associados às ações de minimizar, maximizar e fechar — e gerencia a alternância entre as janelas abertas.
Note
|
Os conceitos básicos empregados na interface gráfica dos computadores pessoais vieram de ideias tiradas de espaços de trabalho de escritório de verdade. Metaforicamente falando, a tela do computador é a escrivaninha na qual colocamos objetos como documentos e pastas. Uma janela de aplicativo com o conteúdo de um documento simula atos físicos, como preencher um formulário ou pintar uma imagem. Como as áreas de trabalho reais, os desktops de computador também contêm acessórios de software como blocos de notas, relógios, calendários, etc., a maioria deles baseados em seus equivalentes “da vida real”. |
Todos os ambientes de desktop incluem um gerenciador de janelas cuja aparência e usabilidade se baseia em um kit de ferramentas de widget. Os widgets são elementos visuais informativos ou interativos, como botões ou campos de entrada de texto, distribuídos dentro da janela do aplicativo. Os componentes padrão da área de trabalho — como o inicializador de aplicativos, a barra de tarefas, etc. — e o próprio gerenciador de janelas dependem desses kits de ferramentas de widget para estruturar suas interfaces.
As bibliotecas de software, como o GTK+ e o Qt, fornecem widgets que os programadores podem usar para construir interfaces gráficas elaboradas para seus aplicativos. Historicamente, os aplicativos desenvolvidos com GTK+ não se assemelhavam aos aplicativos feitos com Qt e vice-versa, mas o melhor suporte a temas dos ambientes de desktop de hoje torna a distinção menos óbvia.
No geral, o GTK+ e o Qt oferecem os mesmos recursos em relação aos widgets. Os elementos interativos simples podem ser indistinguíveis, enquanto os widgets compostos — como a janela de diálogo usada por aplicativos para abrir ou salvar arquivos — podem, no entanto, ter uma aparência bem diferenciada. No entanto, aplicativos construídos com kits de ferramentas distintos podem ser executados simultaneamente, independentemente do kit de ferramentas de widget usado pelos outros componentes da área de trabalho.
Além dos componentes básicos da área de trabalho, que podem ser considerados programas individuais por si sós, os ambientes de área de trabalho seguem a metáfora da escrivaninha, fornecendo um conjunto mínimo de programas acessórios desenvolvidos a partir das mesmas diretrizes de design. Todos os principais ambientes de desktop propõem variações dos seguintes aplicativos:
- Aplicativos relacionados ao sistema
-
Emulador de terminal, gerenciador de arquivos, gerenciador de instalação de pacotes, ferramentas de configuração do sistema.
- Comunicação e Internet
-
Gerenciador de contatos, cliente de email, navegador web.
- Aplicativos de escritório
-
Calendário, calculadora, editor de texto.
Os ambientes de desktop podem incluir muitos outros serviços e aplicativos: a tela de login inicial, o gerenciador de sessão, a comunicação entre processos, o chaveiro, etc. Eles também incorporam recursos fornecidos por serviços de terceiros, como o PulseAudio para som e o CUPS para impressão. Esses recursos não necessitam do ambiente gráfico para funcionar, mas o ambiente de trabalho fornece interfaces gráficas que facilitam sua configuração e operação.
Ambientes de trabalho populares
Muitos sistemas operacionais proprietários suportam oficialmente apenas um único ambiente de desktop, que é vinculado àquela versão específica e não deve ser alterado. Já os sistemas operacionais baseados em Linux suportam diferentes opções de ambiente de trabalho que podem ser usadas em conjunto com o X. Cada ambiente de área de trabalho tem seus próprios recursos, mas eles geralmente compartilham alguns conceitos de design:
-
Um inicializador de aplicativos que lista os aplicativos internos e de terceiros disponíveis no sistema.
-
Regras que definem os aplicativos padrão associados a tipos de arquivos e protocolos.
-
Ferramentas de configuração para personalizar a aparência e o comportamento do ambiente de trabalho.
O Gnome é um dos ambientes de desktop mais populares, sendo a primeira escolha em distribuições como Fedora, Debian, Ubuntu, SUSE Linux Enterprise, Red Hat Enterprise Linux, CentOS, etc. Em sua versão 3, o Gnome recebeu uma grande repaginada em sua aparência e estrutura, afastando-se da metáfora da escrivaninha e apresentando o Gnome Shell como sua nova interface.
O iniciador de tela cheia de uso geral Gnome Shell Activities substituiu o iniciador de aplicativos e a barra de tarefas tradicionais. No entanto, ainda é possível usar o Gnome 3 com a aparência antiga escolhendo a opção Gnome Classic na tela de login.
O KDE é um grande ecossistema de aplicativos e plataforma de desenvolvimento. Sua última versão para o ambiente de desktop, KDE Plasma, é usada por padrão no openSUSE, Mageia, Kubuntu, etc. O emprego da biblioteca Qt é um recurso marcante do KDE, emprestando-lhe sua aparência inconfundível e uma infinidade de aplicativos originais. O KDE fornece, ainda, uma ferramenta de configuração para garantir a coesão visual com os aplicativos GTK+.
O Xfce é um ambiente de desktop que visa ser esteticamente agradável sem consumir muitos recursos da máquina. Sua estrutura é altamente modularizada, permitindo ao usuário ativar e desativar componentes de acordo com suas necessidades e preferências.
Existem muitos outros ambientes de desktop para Linux, geralmente fornecidos por versões alternativas das distribuições. A distribuição Linux Mint, por exemplo, propõe dois ambientes de trabalho originais: o Cinnamon (um fork do Gnome 3) e o MATE (um fork do Gnome 2). O LXDE é um ambiente de desktop adaptado para baixo consumo de recursos, sendo assim uma boa escolha para instalação em equipamentos mais antigos ou computadores de placa única. Embora não ofereça todas as capabilidades dos ambientes de trabalho mais pesados, o LXDE inclui todos os recursos básicos esperados de uma interface gráfica de usuário moderna.
Tip
|
Os atalhos de teclado desempenham um papel importante na interação com o ambiente de trabalho. Alguns atalhos de teclado — como Alt+Tab para alternar entre janelas ou Ctrl+c para copiar texto — são universais nos ambientes de desktop, mas cada ambiente também possui seus próprios atalhos de teclado. Os atalhos de teclado são encontrados na ferramenta de configuração do teclado fornecida pelo ambiente de desktop, onde os atalhos podem ser adicionados ou modificados. |
Interoperabilidade da área de trabalho
A diversidade dos ambientes de desktop nos sistemas operacionais baseados em Linux impõe um desafio: como fazê-los funcionar corretamente com aplicativos gráficos de terceiros ou serviços de sistema sem ser preciso implementar um suporte específico a cada um deles? O compartilhamento de métodos e especificações entre ambientes de desktop melhoram muito a experiência do usuário e resolve muitos problemas de desenvolvimento, já que os aplicativos gráficos precisam interagir com o ambiente de desktop atual, independentemente daquele para o qual foram originalmente projetados. Além disso, é importante manter as configurações gerais da área de trabalho caso o usuário decida alterar sua escolha de ambiente.
Um grande conjunto de especificações para a interoperabilidade de áreas de trabalho é mantido pela organização freedesktop.org. A adoção da especificação completa não é obrigatória, mas muitas regras são amplamente utilizadas:
- Locais dos diretórios
-
Onde as configurações pessoais e outros arquivos específicos do usuário estão localizados.
- Itens da área de trabalho
-
Os aplicativos de linha de comando podem ser executados no ambiente da área de trabalho por meio de qualquer emulador de terminal, mas seria muito confuso disponibilizar todos eles no inicializador de aplicativos. Os itens da área de trabalho são arquivos de texto que terminam com
.desktop
, usados pelo ambiente de desktop para reunir informações sobre os aplicativos de área de trabalho disponíveis e como usá-los. - Início automático de aplicativos
-
Itens da área de trabalho que indicam quais aplicativos devem ser iniciados automaticamente após o usuário efetuar login.
- Arrastar e soltar
-
Como os aplicativos devem lidar com eventos de arrastar e soltar.
- Lixeira
-
A localização comum de arquivos excluídos pelo gerenciador de arquivos, bem como os métodos para armazenar e remover arquivos de lá.
- Temas de ícones
-
O formato comum para bibliotecas de ícones intercambiáveis.
A facilidade de uso oferecida pelos ambientes de desktop tem uma desvantagem em comparação com as interfaces de texto como o shell: a capacidade de fornecer acesso remoto. Embora o ambiente shell de linha de comando de uma máquina remota possa ser facilmente acessado com ferramentas como ssh
, o acesso remoto a ambientes gráficos requer métodos diferentes e o desempenho nem sempre é satisfatório em conexões mais lentas.
Acesso não-local
O X Window System adota um design baseado em displays (telas) autônomos, nos quais o mesmo X display manager (gerenciador de exibição X) pode controlar mais de uma sessão de desktop gráfico ao mesmo tempo. Em essência, um display é análogo a um terminal de texto: ambos se referem a uma máquina ou aplicativo de software usado como um ponto de entrada para estabelecer uma sessão independente do sistema operacional. Embora a configuração mais comum envolva uma única sessão gráfica em execução na máquina local, outras configurações menos convencionais também são possíveis:
-
Alternar entre sessões de desktop gráfico ativas na mesma máquina.
-
Mais de um conjunto de dispositivos de exibição (por exemplo, tela, teclado, mouse) conectados à mesma máquina, cada um controlando sua própria sessão de desktop gráfico.
-
Sessões remotas de desktop gráfico, para as quais a interface gráfica é enviada através da rede para um monitor remoto.
As sessões de desktop remoto são suportadas nativamente pelo X, que emprega o X Display Manager Control Protocol (XDMCP) para se comunicar com monitores remotos. Devido ao alto uso de largura de banda, o XDMCP raramente é usado através da Internet ou em LANs de baixa velocidade. Também há questões de segurança com o XDMCP: o display local se comunica com um gerenciador de exibição X remoto privilegiado para executar procedimentos remotos; portanto, uma eventual vulnerabilidade possibilitaria a execução de comandos privilegiados arbitrários na máquina remota.
Além disso, o XDMCP requer instâncias X em execução em ambas as extremidades da conexão, o que pode inviabilizar seu uso se o X Window System não estiver disponível em todas as máquinas envolvidas. Na prática, outros métodos mais eficientes e menos invasivos são usados para estabelecer sessões remotas de desktop gráfico.
O Virtual Network Computing (VNC) é uma ferramenta não vinculada a uma plataforma que permite visualizar e controlar ambientes de desktop remotos usando o protocolo Remote Frame Buffer (RFB). Por meio dele, os eventos produzidos pelo teclado e mouse locais são transmitidos para a área de trabalho remota, que por sua vez envia de volta quaisquer atualizações de tela para serem exibidas localmente. É possível executar muitos servidores VNC na mesma máquina, mas cada servidor VNC precisa de uma porta TCP exclusiva na interface de rede que aceite solicitações de sessão de entrada. Por convenção, o primeiro servidor VNC deve usar a porta TCP 5900, o segundo deve usar 5901 e assim por diante.
O servidor VNC não precisa de privilégios especiais para ser executado. Um usuário comum pode, por exemplo, fazer login em sua conta remota e iniciar seu próprio servidor VNC a partir de lá. Assim, na máquina local, qualquer aplicativo cliente VNC pode ser usado para acessar a área de trabalho remota (supondo que as portas de rede correspondentes sejam alcançáveis). O arquivo ~/.vnc/xstartup
é um script de shell executado pelo servidor VNC quando ele inicia e pode ser usado para definir qual ambiente de desktop o servidor VNC disponibilizará para o cliente VNC. É importante observar que nativamente o VNC não propõe métodos nativos de criptografia e autenticação modernos, e por isso deve ser usado em conjunto com um aplicativo de terceiros que forneça esses recursos. Com frequência, usam-se métodos que envolvem túneis VPN e SSH para proteger as conexões VNC.
O Remote Desktop Protocol (RDP) é usado sobretudo para acessar remotamente a área de trabalho de um sistema operacional Microsoft Windows por meio da porta de rede TCP 3389. Embora ele empregue o protocolo RDP proprietário da Microsoft, a implementação do cliente usada nos sistemas Linux consiste em programas de código aberto licenciados sob a GNU General Public License (GPL) e não tem restrições legais de uso.
O Simple Protocol for Independent Computing Environments (Spice) compreende um conjunto de ferramentas destinadas a acessar o ambiente de trabalho de sistemas virtualizados, seja na máquina local ou em um local remoto. Além disso, o protocolo Spice oferece recursos nativos para integrar os sistemas locais e remotos, como a capacidade de acessar dispositivos locais (por exemplo, os alto-falantes e os dispositivos USB conectados) da máquina remota e compartilhamento de arquivos entre os dois sistemas.
Existem comandos de cliente específicos para se conectar a cada um desses protocolos de desktop remoto, mas o cliente de desktop remoto Remmina fornece uma interface gráfica integrada que facilita o processo de conexão, com a opção de armazenar as configurações de conexão para uso posterior. O Remmina tem plugins para cada protocolo individual e existem plugins para XDMCP, VNC, RDP e Spice. A escolha da ferramenta certa depende dos sistemas operacionais envolvidos, da qualidade da conexão de rede e dos recursos do ambiente de área de trabalho remoto que devem estar disponíveis.
Exercícios Guiados
-
Que tipo de aplicativo propõe sessões de shell em janelas no ambiente de desktop?
-
Devido à variedade de ambientes de desktop Linux, o mesmo aplicativo pode ter mais de uma versão, sendo cada uma delas adaptada a um determinado kit de ferramentas de widget. Por exemplo, o cliente bittorrent Transmission tem duas versões: transmission-gtk e transmission-qt. Qual dos dois deve ser instalado para garantir a integração máxima com o KDE?
-
Quais ambientes de desktop Linux são recomendados para computadores de baixo custo, de placa única e com pouco poder de processamento?
Exercícios Exploratórios
-
Existem duas maneiras de copiar e colar texto no Sistema X Window: usando os tradicionais atalhos de teclado Ctrl+c e Ctrl+v (também disponíveis no menu da janela) ou pressionar o botão do meio do mouse para colar o texto atualmente selecionado. Qual a maneira apropriada de copiar e colar texto de um emulador de terminal?
-
A maioria dos ambientes de desktop atribuem o atalho de teclado Alt+F2 para a janela Executar programa, onde os programas podem ser executados à maneira de uma linha de comando. No KDE, qual comando executaria o emulador de terminal padrão?
-
Qual protocolo é mais adequado para acessar uma área de trabalho remota do Windows a partir de um ambiente de trabalho Linux?
Resumo
Esta lição é uma visão geral dos desktops gráficos disponíveis para os sistemas Linux. Sozinho, o X Window System fornece apenas recursos de interface simples, de modo que os ambientes de desktop enriquecem a experiência do usuário na interface gráfica de janelas. A lição abrange os seguintes tópicos:
-
Conceitos de interface gráfica e X Window System.
-
Ambientes de desktop disponíveis para Linux.
-
Semelhanças e diferenças entre os ambientes de desktop.
-
Como acessar um ambiente de desktop remoto.
Os conceitos e programas abordados foram:
-
X Window System.
-
Ambientes de trabalho populares: KDE, Gnome, Xfce.
-
Protocolos de acesso remoto: XDMCP, VNC, RDP, Spice.
Respostas aos Exercícios Guiados
-
Que tipo de aplicativo propõe sessões de shell em janelas no ambiente de desktop?
Qualquer emulador de terminal como Konsole, Gnome terminal, xterm, etc., dá acesso a uma sessão local de shell interativo.
-
Devido à variedade de ambientes de desktop Linux, o mesmo aplicativo pode ter mais de uma versão, sendo cada uma delas adaptada a um determinado kit de ferramentas de widget. Por exemplo, o cliente bittorrent Transmission tem duas versões: transmission-gtk e transmission-qt. Qual dos dois deve ser instalado para garantir a integração máxima com o KDE?
O KDE é construído sobre a biblioteca Qt, por isso a versão Qt — transmission-qt — deve ser instalada.
-
Quais ambientes de desktop Linux são recomendados para computadores de baixo custo, de placa única e com pouco poder de processamento?
Ambientes de desktop básicos que não usam muitos efeitos visuais, como Xfce e LXDE.
Respostas aos Exercícios Exploratórios
-
Existem duas maneiras de copiar e colar texto no Sistema X Window: usando os tradicionais atalhos de teclado Ctrl+c e Ctrl+v (também disponíveis no menu da janela) ou pressionar o botão do meio do mouse para colar o texto atualmente selecionado. Qual a maneira apropriada de copiar e colar texto de um emulador de terminal?
As sessões de shell interativas atribuem o atalho Ctrl+c à interrupção de execução dos programas, por isso o método do botão do meio é o mais recomendado.
-
A maioria dos ambientes de desktop atribuem o atalho de teclado Alt+F2 para a janela Executar programa, onde os programas podem ser executados à maneira de uma linha de comando. No KDE, qual comando executaria o emulador de terminal padrão?
O comando
konsole
executa o emulador de terminal do JKDE, mas termos genéricos como terminal também funcionam. -
Qual protocolo é mais adequado para acessar uma área de trabalho remota do Windows a partir de um ambiente de área de trabalho Linux?
O Remote Desktop Protocol (RDP), que é suportado nativamente pelo Windows e pelo Linux.