Capítulo 7. Sistema GUI (interface gráfica de utilizador)

Índice

7.1. Ambiente de trabalho GUI
7.2. Protocolo de comunicação GUI
7.3. Infraestrutura GUI
7.4. Aplicações GUI
7.5. Diretórios de utilizador
7.6. Fontes
7.6.1. Fontes (tipos de letra) básicas
7.6.2. Rasterização de tipos de letra
7.7. Sandbox
7.8. Área de trabalho remota
7.9. Ligação ao servidor X
7.9.1. Ligação local do servidor X
7.9.2. Ligação remota ao servidor X
7.9.3. Ligação chroot do servidor X
7.10. Área de transferência (Clipboard)

Existem várias escolhas para o ambiente de trabalho GUI completo no sistema Debian.


[Dica] Dica

Os pacotes de dependências selecionados por um meta-pacote de tarefas podem estar fora de sincronia com o último estado de transição de pacotes sob o ambiente Debian unstable//testing. Para task-gnome-desktop, pode ser necessário ajustar as seleções de pacotes como se segue:

  • Inicie aptitude(8) como sudo aptitude -u.

  • Mova o cursor para "Tarefas" e prima "Enter".

  • Mova o cursor para "Utilizador final" e prima "Enter".

  • Mova o cursor para "GNOME" e prima "Enter".

  • Mova o cursor para task-gnome-desktop e prima "Enter".

  • Mova o cursor para "Dependências" e prima "m" (selecionado manualmente).

  • Mova o cursor para "Recomendado" e prima "m" (seleção manual).

  • Mova o cursor para"task-gnome-desktop " e prima "-". (excluir)

  • Ajusta os pacotes selecionados e elimina os pacotes problemáticos que causam conflitos de pacotes.

  • Prima "g" para iniciar a instalação.

Este capítulo irá focar-se principalmente no ambiente de trabalho predefinido de Debian: task-gnome-desktop que oferece o GNOME em wayland.

O protocolo de comunicação GUI utilizado no ambiente de trabalho GNOME pode ser:

Consulte o site freedesktop.org para saber como a arquitetura Wayland é diferente da arquitetura X Window.

Do ponto de vista do utilizador, as diferenças podem ser resumidas coloquialmente como:

  • Wayland é um protocolo de comunicação GUI para o mesmo host: novo, mais simples, mais rápido, sem binário raiz setuid

  • X Window é um protocolo de comunicação GUI com capacidade de rede: tradicional, complexo, mais lento, binário de raiz setuid

Para as aplicações que utilizam o protocolo Wayland, o acesso ao seu conteúdo de visualização a partir de um anfitrião remoto é suportado pelo VNC ou RDP. Ver Secção 7.8, “Área de trabalho remota”

Os servidores X modernos têm a Extensão de Memória Partilhada do MIT e comunicam com os seus clientes X locais utilizando a memória partilhada local. Isso contorna o canal de comunicação interprocessos Xlib transparente da rede e ganha desempenho. Esta situação foi o antecedente da criação do Wayland como um protocolo de comunicação GUI apenas local.

Utilizando o programa xeyes iniciado a partir do terminal GNOME, pode verificar o protocolo de comunicação GUI utilizado por cada aplicação GUI.

 $ xeyes
  • Se o cursor do rato estiver numa aplicação como o "terminal GNOME", que utiliza o protocolo de servidor de visualização Wayland, os olhos não se movem com o cursor do rato.

  • Se o cursor do rato estiver numa aplicação como o "xterm", que utiliza o protocolo central do sistema X Window, os olhos movem-se com o cursor do rato, expondo a natureza não tão isolada da arquitetura do X Window.

A partir de abril de 2021, muitos aplicativos GUI populares, como os aplicativos GNOME e LibreOffice (LO), foram migrados para o protocolo de servidor de exibição Wayland. Vejo que as aplicações xterm, gitk, chromium, firefox, gimp, dia, e KDE ainda utilizam o protocolo central do X Window System.

[Nota] Nota

Tanto para o xwayland no Wayland como para o X Window System nativo, o antigo ficheiro de configuração do servidor X "/etc/X11/xorg.conf" não deve existir no sistema. Os dispositivos gráficos e de entrada são agora configurados pelo kernel com DRM, KMS, e udev. O servidor X nativo foi reescrito para os utilizar. Veja"modedb default video mode support" na documentação do kernel Linux.

Aqui estão os pacotes de infraestrutura GUI notáveis para o ambiente GNOME em Wayland.


Aqui, "[auto]" significa que estes pacotes são instalados automaticamente quando task-gnome-desktop é instalado.

[Dica] Dica

O gnome-tweaks é o utilitário de configuração indispensável. Por exemplo:

  • Pode forçar a "Sobre-amplificação" do volume do som a partir de "Geral".

  • Pode forçar "Caps" a tornar-se "Esc" em "Teclado e rato" -> "Teclado" -> "Opção de esquema adicional".

[Dica] Dica

As caraterísticas detalhadas do ambiente de trabalho GNOME podem ser configuradas com utilitários iniciados escrevendo "settings", "tweaks", ou "extensions" depois de premir a tecla Super-.

Muitas aplicações GUI úteis estão agora disponíveis em Debian. Instalar pacotes de software como o scribus (KDE) no ambiente de desktop GNOME é bastante aceitável dado que a funcionalidade correspondente não está disponível no ambiente de desktop GNOME. Mas a instalação de demasiados pacotes com funcionalidades duplicadas pode sobrecarregar o seu sistema.

Aqui está uma lista de aplicações que me chamaram a atenção.

Tabela 7.3. Lista de aplicações GUI notáveis

pacote popcon tamanho do pacote tipo descrição
evolution V:30, I:239 486 GNOME Gestor de Informações Pessoais (groupware e email)
thunderbird V:48, I:119 224760 GTK Cliente de correio eletrónico (Mozilla Thunderbird)
kontact V:1, I:12 2208 KDE Gestor de Informações Pessoais (groupware e email)
libreoffice-writer V:117, I:435 31474 LO processador de texto
abiword V:1, I:8 3542 GNOME processador de texto
calligrawords V:0, I:7 6097 KDE processador de texto
scribus V:1, I:16 31345 KDE desktop publishing editor para editar ficheiros PDF
glabels V:0, I:3 1338 GNOME editor de etiquetas
libreoffice-calc V:111, I:432 26009 LO folha de cálculo
gnumeric V:4, I:14 9910 GNOME folha de cálculo
calligrasheets V:0, I:5 11396 KDE folha de cálculo
libreoffice-impress V:69, I:429 2646 LO apresentação
calligrastage V:0, I:5 5339 KDE apresentação
libreoffice-base V:26, I:121 5003 LO gestão de base de dados
kexi V:0, I:1 7118 KDE gestão de base de dados
libreoffice-draw V:72, I:430 10312 LO editor de gráficos vectoriais (desenho)
inkscape V:15, I:112 99800 GNOME editor de gráficos vectoriais (desenho)
karbon V:0, I:6 3610 KDE editor de gráficos vectoriais (desenho)
dia V:2, I:22 3741 GTK editor de fluxogramas e diagramas
gimp V:50, I:252 19304 GTK editor de gráficos bitmap (pintura)
shotwell V:17, I:255 6263 GTK organizador de fotos digitais
digikam V:1, I:9 293 KDE organizador de fotos digitais
darktable V:4, I:13 30554 GTK mesa de luz e câmara escura para fotógrafos
planner V:0, I:4 1394 GNOME gestão de projectos
calligraplan V:0, I:2 19013 KDE gestão de projectos
gnucash V:2, I:8 28928 GNOME contas pessoais
homebank V:0, I:2 1218 GTK contas pessoais
lilypond V:0, I:7 16092 - Máquina de compor música
kmymoney V:0, I:2 13937 KDE contas pessoais
librecad V:1, I:15 8963 Aplicação Qt sistema de desenho assistido por computador (CAD) (2D)
freecad I:18 36 Aplicação Qt sistema de conceção assistida por computador (CAD) (3D)
kicad V:3, I:14 236461 GTK software de desenho de esquemas electrónicos e PCB
xsane V:12, I:144 2339 GTK frontend para digitalizador (scanner)
libreoffice-math V:51, I:432 1898 LO editor de fórmulas/equações matemáticas
calibre V:6, I:28 63385 KDE conversor de e-books e gestor de biblioteca
fbreader V:1, I:9 3783 GTK leitor de e-book
evince V:92, I:314 941 GNOME visualizador de documentos (pdf)
okular V:40, I:123 17728 KDE visualizador de documentos (pdf)
x11-apps V:31, I:463 2460 Aplicação X pura xeyes(1), etc.
x11-utils V:192, I:566 651 Aplicação X pura xev(1), xwininfo(1), etc.

Os nomes predefinidos para as diretorias de utilizador, tais como "~/Desktop", "~/Documents", ..., utilizados pelo ambiente de trabalho dependem da configuração regional utilizada para a instalação do sistema. Pode redefini-los para os nomes ingleses através de:

 $ LANGUAGE=C xdg-user-dirs-update --force 

Depois mova manualmente todos os dados para os diretórios mais recentes. Veja xdg-user-dirs-update(1).

Pode também defini-los com qualquer nome editando "~/.config/user-dirs.dirs". Veja user-dirs.dirs(5).

Muitas fontes escaláveis úteis estão disponíveis para os utilizadores em Debian. A preocupação do utilizador é como evitar a redundância e como configurar partes das fontes instaladas para serem desativadas. Caso contrário, as opções de tipos de letra inúteis podem sobrecarregar os menus das aplicações GUI.

O sistema Debian usa a biblioteca FreeType 2.0 para rasterizar muitos formatos de fontes escaláveis para ecrã e impressão:

A tabela que se segue foi compilada na esperança de ajudar os utilizadores a escolherem fontes escaláveis adequadas com uma compreensão clara da compatibilidade métrica e da cobertura de glifos. A maioria das fontes cobre todos os caracteres latinos, gregos e cirílicos. A escolha final das fontes ativadas também pode ser afetada pela sua estética. Estas fontes podem ser utilizadas para a visualização no ecrã ou para a impressão em papel.

Tabela 7.4. Lista de tipos de letra notáveis TrueType e OpenType

pacote popcon tamanho sans serif mono nota sobre o tipo de letra
fonts-cantarell V:216, I:306 572 59 - - Cantarell (GNOME 3, ecrã)
fonts-noto I:153 31 61 63 40 Noto fonts (Google, multilingue com CJK)
fonts-dejavu I:421 35 58 68 40 DejaVu (GNOME 2, MCM:Verdana, estendida Bitstream Vera)
fonts-liberation2 V:130, I:427 15 56 60 40 Liberation fonts para LibreOffice (Red Hat, MCMATC)
fonts-croscore V:20, I:40 5274 56 60 40 Chrome OS: Arimo, Tinos e Cousine (Google, MCMATC)
fonts-crosextra-carlito V:21, I:131 2696 57 - - Chrome OS: Carlito (Google, MCM:Calibri )
fonts-crosextra-caladea I:128 347 - 55 - Chrome OS: Caladea (Google, MCM:Cambria ) (Latin only )
fonts-freefont-ttf V:76, I:218 14460 57 59 40 GNU FreeFont (estendida URW Nimbus)
fonts-quicksand V:123, I:438 392 56 - - Debian task-desktop, Quicksand (ecrã, apenas Latin)
fonts-hack V:24, I:120 2508 - - 40 P Um tipo de letra concebido para o código fonte Hack (Facebook)
fonts-sil-gentiumplus I:32 14345 - 54 - Gentium SIL
fonts-sil-charis I:27 6704 - 59 - Charis SIL
fonts-urw-base35 V:167, I:472 15560 56 60 40 URW Nimbus (Nimbus Sans, Roman No. 9 L, Mono L, MCAHTC)
fonts-ubuntu V:2, I:5 4339 58 - 33 P Ubuntu fonts (ecrã)
fonts-terminus V:0, I:3 452 - - 33 Tipos de letra para terminais retro
ttf-mscorefonts-installer V:1, I:49 85 56? 60 40 Descarregador de tipos de letra não gratuitos da Microsoft (ver abaixo)

Aqui:

  • "MCM" significa "métrica compatível com os tipos de letra fornecidos pela Microsoft"

  • "MCMATC" significa "métrica compatível com os tipos de letra fornecidos pela Microsoft: Arial, Times New Roman, Courier New"

  • "MCAHTC" significa "métrica compatível com os tipos de letra fornecidos pela Adobe: Helvética, Times, Courier"

  • Os números nas colunas de tipo de letra representam a largura "M" relativa aproximada para o mesmo tamanho de letra.

  • O "P" em colunas de tipo de letra mono representa a sua facilidade de utilização para a programação, com "0"/"O" e "1"/"I"/"l" claramente distinguíveis.

  • O pacote ttf-mscorefonts-installer descarrega as"Core fonts for the Web" da Microsoft e instala Arial, Times New Roman, Courier New, Verdana, ... . Estes dados de fontes instalados são dados não livres.

Muitos tipos de letra latinos gratuitos têm a sua linhagem na família URW Nimbus ou Bitstream Vera.

[Dica] Dica

Se a sua localidade precisa de tipos de letra que não estão bem cobertos pelos tipos de letra acima, por favor utilize o aptitude para verificar os pacotes de tarefas listados em "Tarefas" -> "Localização". Os pacotes de fontes listados como "Dependências:" ou "Recomendados:" nos pacotes de tarefas de localização são os principais candidatos.

Debian usa FreeType para rasterizar as fontes. A sua infraestrutura de escolha de fontes é fornecida pela biblioteca de configuração de fontes Fontconfig.


[Dica] Dica

Alguns pacotes de tipos de letra, como o fonts-noto*, instalam demasiados tipos de letra. Poderá também querer manter alguns pacotes de tipos de letra instalados mas desactivados numa situação de utilização normal. Os glifos múltiplos são esperados para alguns pontos de código Unicode devido à unificação Han e os glifos indesejados podem ser escolhidos pela biblioteca Fontconfig não configurada. Um dos casos mais incómodos é "U+3001 IDEOGRAPHIC COMMA" e "U+3002 IDEOGRAPHIC FULL STOP" entre os países CJK. Pode evitar facilmente esta situação problemática configurando a disponibilidade dos tipos de letra utilizando a GUI do gestor de tipos deletra (font-manager).

Pode verificar informação de configuração de tipos de letra pelo seguinte.

  • "fc-match" para o tipo de letra predefinido do fontconfig

  • "fc-list(1)" para tipos de letra disponíveis fontconfig

Pode configurar o estado de configuração da fonte a partir do editor de texto mas isto não é trivial. Veja fonts.conf(5).

Muitas das aplicações GUI em Linux estão disponíveis em formatos binários a partir de fontes não-Debian.

[Atenção] Atenção

Os binários destes sítios podem incluir pacotes de software proprietário não-livre.

Existe alguma razão de ser para estas distribuições em formato binário para os aficionados do Software Livre que usam Debian, uma vez que estas podem acomodar um conjunto limpo de bibliotecas usadas para cada aplicação pelo respetivo programador original, independentemente das fornecidas por Debian.

O risco inerente de executar binários externos pode ser reduzido usando o ambiente sandbox que aproveita os recursos modernos de segurança do Linux (veja Secção 4.7.5, “Caraterísticas de segurança do Linux”).

  • Para binários do AppImage e de alguns sites upstream, execute-os no firejail com configuração manual.

  • Para binários do FLATHUB, execute-os no Flatpak . (Não é necessária nenhuma configuração manual.)

  • Para binários do snapcraft, execute-os no Snap . (Não é necessária configuração manual. Compatível com programas daemon.)

O pacote xdg-desktop-portal fornece uma API padronizada para recursos comuns de desktop. Veja xdg-desktop-portal (flatpak) e xdg-desktop-portal (snap) .


Esta tecnologia de espaço isolado "sandbox" é muito semelhante às aplicações no sistema operativo dos telefones inteligentes, em que as aplicações são executadas com acessos controlados aos recursos.

Algumas aplicações GUI grandes tais como navegadores web em Debian também usam a tecnologia de ambiente sandbox internamente para torná-los mais seguros.

Tabela 7.7. Lista de servidores de acesso remoto notáveis


Existem várias formas de ligar uma aplicação num anfitrião remoto ao servidor X, incluindo o xwayland no anfitrião local.


O acesso ao servidor X local por parte das aplicações locais que utilizam o protocolo X core pode ser ligado localmente através de um socket de domínio UNIX local. Isto pode ser autorizado pelo ficheiro de autoridade que contém o cookie de acesso. A localização do ficheiro de autoridade é identificada pela variável de ambiente "$XAUTHORITY" e o ecrã X é identificado pela variável de ambiente "$DISPLAY". Uma vez que estas são normalmente definidas automaticamente, não é necessária nenhuma ação especial, e.g. "gitk" como o seguinte.

username $ gitk
[Nota] Nota

Para xwayland, XAUTHORITY tem um valor como "/run/user/1000/.mutter-Xwaylandauth.YVSU30".

O acesso ao ecrã do servidor X local a partir das aplicações remotas que utilizam o protocolo central X é suportado através da utilização da funcionalidade de reencaminhamento X11.

Este método pode mostrar o resultado de um cliente X remoto como se ele estivesse ligado localmente através de um socket de domínio UNIX local.

Veja Secção 6.3, “O servidor de acesso remoto e utilitários (SSH)” para SSH/SSHD.

[Atenção] Atenção

Uma ligação TCP/IP remota ao servidor X está desativada por omissão no sistema Debian por razões de segurança. Não as ative definindo simplesmente "xhost +" nem ativando a ligação XDMCP, se o puder evitar.

Para recortar texto para a área de transferência, ver Secção 1.4.4, “Operações com o rato”.

Para recortar gráficos para a área de transferência, consulte Secção 11.6, “Ferramentas de dados gráficos”.

Alguns comandos CLI também podem manipular a área de transferência de caracteres (PRIMARY e CLIPBOARD).