GTK (Português)

From ArchWiki
Status de tradução: Esse artigo é uma tradução de GTK. Data da última tradução: 2019-08-16. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

Do site do GTK:

GTK, ou o GIMP Toolkit, é um kit de ferramentas multiplataforma para criar interfaces gráficas com o usuário. Oferecendo um conjunto completo de widgets, o GTK é adequado para projetos que variam de pequenas ferramentas únicas a conjuntos completos de aplicativos.

O GTK, o GIMP Toolkit, foi criado inicialmente pelo Projeto GNU para o GIMP, mas agora é um kit de ferramentas muito popular com vinculações para várias linguagens. Este artigo explorará as ferramentas usadas para configurar o tema, o estilo, o ícone, a fonte e o tamanho da fonte do GTK, além de detalhar a configuração manual.

Instalação

Três versões do GTK estão atualmente disponíveis nos repositórios oficiais. Elas podem ser instaladas com os seguintes pacotes:

  • GTK 4.x está disponível com o pacote gtk4.
  • GTK 3.x está disponível com o pacote gtk3.
  • GTK 2.x está disponível com o pacote gtk2.
  • GTK 1.x está disponível com o pacote gtkAUR.

Temas

No GTK 2, o tema padrão é o Raleigh, mas o Arch Linux tem um arquivo de configuração personalizado em /usr/share/gtk-2.0/gtkrc, que define o tema padrão como Adwaita. No GTK 3, o tema padrão é Adwaita, mas os temas HighContrast, HighContrastInverse e Raleigh também estão incluídos.

Para forçar um tema específico, defina as seguintes variáveis de ambiente:

  • Para GTK 2, use GTK2_RC_FILES. Por exemplo, para iniciar o GIMP com o tema Raleigh:
$ GTK2_RC_FILES=/usr/share/themes/Raleigh/gtk-2.0/gtkrc gimp
Dica: gtkrc também pode ser um arquivo personalizado em seu diretório home criado por qualquer uma das #Ferramentas de configuração. Veja #Exemplos.
  • Para GTK 3, use GTK_THEME. Por exemplo, para iniciar a Calculadora do GNOME com a variante escura do Adwaita:
$ GTK_THEME=Adwaita:dark gnome-calculator
Nota: Para aplicar o acima aos atalhos da área de trabalho (ou lançadores), consulte Desktop entries#Modify environment variables.

Mais temas podem ser instalados a partir dos repositórios oficiais ou do AUR. Temas extraídos manualmente vão nos diretórios ~/.themes/ ou ~/.local/share/themes/.

GTK 2 e GTK 3.20 ou mais novos tem suporte em:

  • Adapta — Um tema GTK adaptivo baseado em Material Design Guidelines. Inclui: Adapta, Adapta-Eta, Adapta-Nokto, Adapta-Nokto-Eta
https://github.com/tista500/Adapta || adapta-gtk-theme
  • Arc — Um tema plano com um visual moderno e elementos transparentes. Inclui: Arc, Arc-Dark, Arc-Darker
https://github.com/nicohood/arc-theme || com transparência: arc-gtk-theme, sem transparência: arc-solid-gtk-theme
  • Bluebird — Blue Desktop Suite para o Xfce.
https://github.com/shimmerproject/Bluebird || xfce-theme-bluebirdAUR
  • Breeze — A versão GTK do tema de widgets padrão do KDE. Inclui: Breeze, Breeze-Dark
https://invent.kde.org/plasma/breeze-gtk || breeze-gtk
  • Deepin — Tema padrão para o ambiente Deepin. Inclui: deepin, deepin-dark
https://github.com/linuxdeepin/deepin-gtk-theme || deepin-gtk-theme
  • GNOME Extra Themes — Temas extras para o ambiente GNOME. Inclui: Adwaita, Adwaita-dark, HighContrast
https://gitlab.gnome.org/GNOME/gnome-themes-extra || gnome-themes-extra
  • Greybird — Um tema cinza e azul para o Xfce, usado por padrão no Xubuntu 12.04.
https://github.com/shimmerproject/Greybird || xfce-theme-greybirdAUR
  • Materia — Um tema plano semelhante ao Material Design para GTK3, GTK2 e GNOME-Shell.
https://github.com/nana-4/materia-theme || materia-gtk-theme
  • MATE Themes — Temas padrão para o ambiente MATE. Inclui: BlackMATE, Blue-Submarine, BlueMenta, ContrastHighInverse, Green-Submarine, GreenLaguna, Menta, TraditionalGreen, TraditionalOk
https://github.com/mate-desktop/mate-themes || mate-themes
  • Numix — Um tema plano e leve com um visual moderno (GNOME, Openbox, Unity, Xfce). Inclui: Numix
https://github.com/numixproject/numix-gtk-theme || numix-gtk-theme-gitAUR
  • Vertex — Tema para GTK 3, GTK 2, Gnome-Shell e Cinnamon.
https://github.com/horst3180/vertex-theme || vertex-themesAUR
  • Zuki — Tema para GTK, gnome-shell e mais.
https://github.com/lassekongo83/zuki-themes || zuki-themesAUR

Há vários temas GTK adicionais no AUR. Por exemplo, pesquise por gtk-theme.

GTK e Qt

Se você tem aplicativos GTK e Qt (KDE) em sua área de trabalho, sabe que sua aparência não combina bem. Se você deseja fazer seus estilos de GTK combinarem com seus estilos de Qt, por favor, leia Aparência uniforme para aplicativos em Qt e GTK.

Ferramentas de configuração

A maioria dos grandes ambientes de desktop fornecem ferramentas para configurar o tema GTK, ícones, fonte e tamanho da fonte, e gerenciar essas configurações por XSettings:

  • Se você usa Cinnamon, use a ferramenta Temas (cinnamon-settings themes): vá em Configurações do sistema > Temas.
  • Se você usa Enlightenment: vá em Definições > Tudo > Aparência > Tema das aplicações.
  • Se você usa GNOME, use Ajustes do GNOME (gnome-tweaks): instale gnome-tweaks.
  • Se você usa MATE, use a ferramenta Appearance Preferences (mate-appearance-properties): vá em Sistema > Configurações > Aparência.
  • Se você usa Xfce, use a ferramenta Appearance: vá em Configurações > Aparência.

Outras ferramentas GUI geralmente sobrescrevem os arquivos de configuração.

Suporte a GTK 2 e GTK 3:

  • KDE GTK Configurator — Aplicativo que permite que você altere o estilo e fonte de aplicativos GTK 2 e GTK 3.
https://invent.kde.org/plasma/kde-gtk-config || kde-gtk-config
Após a instalação, kde-gtk-config também pode ser encontrado em Configurações do sistema > Estilo dos aplicativos > GNOME/GTK Application Style.
  • LXAppearance — Ferramenta de configuração de estilo independente para GTK 2 e GTK 3 do projeto LXDE (não requer outras partes da área de trabalho do LXDE).
https://wiki.lxde.org/en/LXAppearance[link inativo 2022-09-18 ⓘ] || lxappearance

Suporte apenas a GTK 2:

  • GTK Change Theme — Um programa pequeno que permite que você altere seu tema GTK 2.0 (considerado uma alternativa melhor ao switch2).
http://plasmasturm.org/code/gtk-chtheme/ || gtk-chtheme
  • GTK Preference Tool — Seletor de temas GTK e alternador de fontes.
http://gtk-win.sourceforge.net/home/index.php/Main/GTKPreferenceTool || gtk2_prefsAUR
  • GTK Theme Switch — Alternador de temas GTK simples.
http://muhri.net/nav.php3?node=gts || gtk-theme-switch2AUR

Configuração

As configurações do GTK podem ser especificadas manualmente nos arquivos de configuração, mas os ambientes e aplicativos de desktop podem substituir essas configurações. Dependendo da versão do GTK, esses arquivos estão localizados em:

  • específico de usuário no GTK 2: ~/.gtkrc-2.0
  • todo o sistema no GTK 2: /etc/gtk-2.0/gtkrc
  • específico de usuário no GTK 3: $XDG_CONFIG_HOME/gtk-3.0/settings.ini, ou $HOME/.config/gtk-3.0/settings.ini se $XDG_CONFIG_HOME não estiver definido
  • todo o sistema no GTK 3: /etc/gtk-3.0/settings.ini
Nota:
  • Veja as propriedades de GtkSettings do GTK 3 (e as propriedades do GTK 2) no manual de referência de programação do GTK para a lista completa as opções de configuração de GTK atualmente válidas.
  • Algumas das configurações descritas abaixo (como gtk-icon-size) são obsoletas e ignoradas desde o GTK 3.10.
  • Se você editar seus arquivos de configuração do GTK, apenas os aplicativos recém-iniciados exibirão as alterações.

Configuração básica de tema

Para alterar manualmente o tema, os ícones, a fonte e o tamanho da fonte do GTK, adicione o seguinte aos arquivos de configuração, por exemplo:

  • GTK 2:
~/.gtkrc-2.0
gtk-icon-theme-name = "Adwaita"
gtk-theme-name = "Adwaita"
gtk-font-name = "DejaVu Sans 11"
  • GTK 3:
$XDG_CONFIG_HOME/gtk-3.0/settings.ini
[Settings]
gtk-icon-theme-name = Adwaita
gtk-theme-name = Adwaita
gtk-font-name = DejaVu Sans 11
Nota: O nome do tema do ícone é o nome de seu diretório, não a propriedade de nome em seu index.theme.

Variante escura de tema

Alguns temas do GTK 3 contêm uma variante de tema escuro, mas ela é usada apenas por padrão quando o aplicativo solicita isso explicitamente. Para usar a variante do tema escuro com todos os aplicativos GTK 3, defina:

gtk-application-prefer-dark-theme = true

Atalhos de teclado

Os atalhos de teclado (também conhecidos como aceleradores no GTK) podem ser alterados passando o mouse sobre o respectivo item de menu e pressionando a combinação de teclas desejada. Para ativar esse recurso, defina:

gtk-can-change-accels = 1

Vinculações de teclas Emacs

Para ter associações de teclas do tipo Emacs em aplicativos de GTK, adicione o seguinte:

~/.gtkrc-2.0
gtk-key-theme-name = "Emacs"
~/.config/gtk-3.0/settings.ini
[Settings]
gtk-key-theme-name = Emacs

Para GTK 3, também execute:

$ gsettings set org.gnome.desktop.interface gtk-key-theme "Emacs"

XFCE possui uma configuração similar:

$ xfconf-query -c xsettings -p /Gtk/KeyThemeName -s Emacs

Os arquivos de configuração em /usr/share/themes/Emacs/ determinam quais são as ligações do Emacs e podem ser alteradas. Copiar seções para o arquivo ~/.gtkrc-2.0 permite alterações por usuário.

Atraso no menu do GNOME

Essa configuração controla o atraso entre apontar o mouse em um menu e a abertura do menu. Esse atraso é medido em milissegundos.

gtk-menu-popup-delay = 0

Reduzir tamanhos de widgets

Se você tem uma tela pequena ou simplesmente não gosta de grandes ícones e widgets, pode redimensionar as coisas facilmente.

Para ter ícones sem texto nas barras de ferramentas (valores válidos), use

gtk-toolbar-style = GTK_TOOLBAR_ICONS

Para ícones menores, use uma linha como essa:

gtk-icon-sizes = "panel-menu=16,16:panel=16,16:gtk-menu=16,16:gtk-large-toolbar=16,16\
:gtk-small-toolbar=16,16:gtk-button=16,16"

Ou para remover ícones de botões completamente:

gtk-button-images = 0

Você também pode remover ícones de menus:

gtk-menu-images = 0

Veja também [1] e [2].

Ocultar botões de CSD

Para remover os botões minimizar e maximizar das janelas em gtk3:

gtk-decoration-layout=menu:close

See [3].

Desabilitar colagem com mouse

Para desaligar colagem ao clicar com o botão do meio do mouse (também conhecido como PRIMARY):

gtk-enable-primary-paste=false

Localização inicial do seletor de arquivos

Abra o seletor de arquivos dentro do diretório de trabalho atual e não o local recentes. Normalmente o diretório de trabalho atual é a pasta pessoal.

GTK 3

Altere a configuração com o seguinte comando:

$ gsettings set org.gtk.Settings.FileChooser startup-mode cwd

GTK 2

Adicione o seguinte para ~/.config/gtk-2.0/gtkfilechooser.ini:

StartupMode=cwd

Comportamento de rolagem legada

Nota: Essa configuração não é obedecida por todos os aplicativos GTK.
Dica: Comportamento de rolagem legado pode ser alcançado de forma confiável simplesmente usando o botão direito em vez de clicar com o botão esquerdo do mouse.

Antes do GTK 3.6, clicar em um dos lados do controle deslizante na barra de rolagem moveria a barra de rolagem na direção do clique em aproximadamente uma página. Desde o GTK 3.6, o controle deslizante se moverá diretamente para a posição do clique. Esse comportamento pode ser revertido em alguns aplicativos, criando o arquivo com o conteúdo abaixo:

~/.config/gtk-3.0/settings.ini
[Settings]
gtk-primary-button-warps-slider = false

Desabilitar barras de rolagem de sobreposição

Desde o GTK 3.15, as barras de rolagem de sobreposição são ativadas por padrão, o que significa que as barras de rolagem serão mostradas apenas ao passar o mouse nas aplicações do GTK 3. Esse comportamento pode ser revertido pela configuração da seguinte variável de ambiente: GTK_OVERLAY_SCROLLING=0. Veja Variáveis de ambiente#Ambiente gráfico.

O GTK 4 deixará de dar suporte a GTK_OVERLAY_SCROLLING. Ele já foi retirado do ramo mestre. A partir do GTK 4, a natureza de sobreposição das barras de rolagem é parte do kit de ferramentas. A alternância geral foi removida para impedir que os desenvolvedores quebrem aplicativos que não foram testados com ambas as combinações. Para permitir que os desenvolvedores de aplicativos decidam como devem ser seus aplicativos, o kit de ferramentas fornece um mecanismo para desativar ou adicionar uma configuração aos usuários. A função gtk_scrolled_window_set_overlay_scrolling() pode ser usada para ativar/desativar a sobreposição de rolagem em uma base por aplicativo. Os desenvolvedores de aplicativos podem, opcionalmente, usar o GSettings para ter uma configuração de usuário vinculada à propriedade.

Remover indicadores de rolagem de sobreposição

As posições das barras de rolagem de sobreposição são indicadas por linhas tracejadas finas na janela do aplicativo. Essas linhas tracejadas estarão presentes mesmo quando a rolagem de overlay estiver desabilitada usando a variável de ambiente discutida na seção acima. Para remover as linhas do indicador, crie o seguinte arquivo:

~/.config/gtk-3.0/gtk.css
/* Remover linhas tracejadas de aplicativos GTK 3 */
undershoot.top, undershoot.right, undershoot.bottom, undershoot.left { background-image: none; }

Exemplos

Exemplo de configurações do GTK:

Nota: Pode ser ignorado para alguns ambientes de desktop (p.ex., GNOME).
~/.gtkrc-2.0
gtk-theme-name="Arc-Dark"
gtk-icon-theme-name="breeze-dark"
gtk-font-name="Sans 11"
gtk-cursor-theme-name="Breeze_Amber"
gtk-cursor-theme-size=0
gtk-toolbar-style=GTK_TOOLBAR_BOTH_HORIZ
gtk-toolbar-icon-size=GTK_ICON_SIZE_SMALL_TOOLBAR
gtk-button-images=0
gtk-menu-images=0
gtk-enable-event-sounds=0
gtk-enable-input-feedback-sounds=0
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle="hintslight"
gtk-xft-rgba="rgb"
~/.config/gtk-3.0/settings.ini
[Settings]
gtk-theme-name=Arc-Dark
gtk-icon-theme-name=breeze-dark
gtk-font-name=Sans 11
gtk-cursor-theme-name=Breeze_Amber
gtk-cursor-theme-size=0
gtk-toolbar-style=GTK_TOOLBAR_BOTH_HORIZ
gtk-toolbar-icon-size=GTK_ICON_SIZE_SMALL_TOOLBAR
gtk-button-images=0
gtk-menu-images=0
gtk-enable-event-sounds=0
gtk-enable-input-feedback-sounds=0
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle=hintslight
gtk-xft-rgba=rgb
# gtk-decoration-layout=menu:close
# gtk-application-prefer-dark-theme=1

Backend do GDK

O GDK (a camada de abstração subjacente do GTK) possui suporte a vários backends para exibir aplicativos GTK. O backend padrão é x11.

Backend do Broadway

O backend do GDK Broadway fornece suporte para a exibição de aplicativos GTK em um navegador da Web, usando HTML5 e soquetes da web. [4]

Ao usar broadwayd, especifique o número de exibição a ser usado, prefixado com caractere de dois pontos, semelhante a X. O número de exibição padrão é 1.

$ display_number=:5

Inicie-o.

$ broadwayd $display_number

Porta usada por padrão

port = 8080 + $display_number

Aponte seu navegador para http://127.0.0.1:port

Para iniciar aplicativos

$ GDK_BACKEND=broadway BROADWAY_DISPLAY=$display_number <<app>>

Alternativamente, você pode definir endereço e porta

$ broadwayd --port $port_number --address $address $display_number

Backend do Wayland

O backend GDK do Wayland pode ser ativado definindo a variável de ambiente GDK_BACKEND=wayland.

Dica: Para desabilitar as decorações de janela do GTK no Wayland, instale o pacote gtk3-optional-csdAUR[link quebrado: package not found] e defina a variável de ambiente GTK_CSD=0.

Solução de problemas

Temas diferentes entre aplicativos GTK 2 e GTK 3

Em geral, se um tema selecionado tiver suporte ao GTK 2 e ao GTK 3, o tema será aplicado a todos os aplicativos GTK 2 e GTK 3. Se um tema selecionado tiver suporte apenas ao GTK 2, ele será usado para aplicativos do GTK 2 e o tema padrão do GTK será usado para aplicativos do GTK 3. Se o tema selecionado tiver suporte apenas ao GTK 3, ele será usado para aplicativos do GTK 3 e o tema padrão do GTK será usado para aplicativos do GTK 2. Assim, para a consistência do tema da aplicação, é melhor usar um tema que tenha suporte ao GTK 2 e o GTK 3.

Você poderia encontrar quais temas instalados em seu sistema possuem uma versão GTK 2 e GTK 3 usando este comando (não funciona com nomes que contenham espaços):

find $(find ~/.themes /usr/share/themes/ -wholename "*/gtk-3.0" | sed -e "s/^\(.*\)\/gtk-3.0$/\1/") -wholename "*/gtk-2.0" | sed -e "s/.*\/\(.*\)\/gtk-2.0/\1"/

Tema não aplicado para aplicativos de root

Como arquivos de tema de usuário ($XDG_CONFIG_HOME/gtk-3.0/settings.ini, ~/.gtkrc-2.0) não são lidos por outras contas, o tema selecionado não será aplicado a aplicativos X sendo executados como root. Possíveis soluções incluem:

  • Criar links simbólicos, p.ex.:
# ln -s /home/[username]/.gtkrc-2.0 /etc/gtk-2.0/gtkrc
# ln -s /home/[username]/.config/gtk-3.0/settings.ini /etc/gtk-3.0/settings.ini
  • Configurar arquivos de temas para todo sistema: /etc/gtk-3.0/settings.ini (GTK 3) ou /etc/gtk-2.0/gtkrc (GTK 2)
  • Ajustar o tema como root
# sudo lxappearance
  • Usar o daemon de configurações (é isso que a maioria dos ambientes desktop fazem). Uma variante agnóstica a desktop usando XSettings está disponível sob nome xsettingsd-gitAUR.

Decorações do lado do cliente

O GTK 3.12 introduziu decorações para cliente, que move a barra de cabeçalho para fora do gerenciador de janela. Isso pode apresentar problemas como barras de título duplas, nenhuma barra de título ou sombras duplas com composição habilitada.

Para remover a sombra e o espaço em torno das janelas (por exemplo, em combinação com um gerenciador de janela de tiling), crie o seguinte arquivo:

~/.config/gtk-3.0/gtk.css
.window-frame, .window-frame:backdrop {
 box-shadow: 0 0 0 black;
 border-style: none;
 margin: 0;
 border-radius: 0;
}

.titlebar {
 border-radius: 0;
}

.window-frame.csd.popup {
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(0, 0, 0, 0.13);
}

.header-bar {
  background-image: none;
  background-color: #ededed;
  box-shadow: none;
}
/* You may want to use this if you don't like the double title.
GtkLabel.title {
    opacity: 0;
}*/

Para ajustar os botões na barra de cabeçalho, use a configuração gtk-decoration-layout[5]. Os exemplos abaixo removem todos os botões:

~/.config/gtk-3.0/settings.ini
gtk-decoration-layout=menu:

Cedilha ç/Ç em vez de ć/Ć

Veja [6] e [7] para uma a solução de contorno usando Xcompose (layout EUA internacional).

Suprimir aviso sobre barramento de acessibilidade

Se você não usa nenhuma recurso do Acesso Universal do GNOMe, você pode receber avisos com:

WARNING **: Couldn't connect to accessibility bus:

Para suprimir esses avisos, execute programas com NO_AT_BRIDGE=1 ou defina isso como uma variável de ambiente global.

Incompatibilidade de cor de fundo da barra de título

Se você estiver usando um gerenciador de janela que usa um tema de decoração de janelas que imita a cor de fundo do tema GTK, você pode descobrir que a cor da barra de título não combina mais com a cor do aplicativo em alguns aplicativos do GTK 3. Como solução alternativa, crie o seguinte arquivo:

~/.config/gtk-3.0/gtk.css
/* Sempre usa cor de plano de fundo */
GtkWindow {
    background-color: @theme_bg_color;
}

/* Corrige substituição de plano de fundo da dica de ferramenta */
.tooltip {
    background-color: rgba(0, 0, 0, 0.8);
}

.tooltip * {
    background-color: transparent;
}

/* Corrige substituição de plano de fundo da janela da área de trabalho do Nautilus */
NautilusWindow {
     background-color: transparent;
}

Eventos de foco incorretos com gerenciadores de janela tiling

Nota: Isso desabilita suporte a touchscreen e rolagem suave para aplicativos GTK3. [8]

Defina GDK_CORE_DEVICE_EVENTS=1 para usar entrada no estilo GTK2 em vez de xinput2. [9]

Suporte a miniaturas para diálogo de arquivos GTK 2

Instale gtk2-patched-filechooser-icon-viewAUR para ter a opção para ver arquivos como miniaturas em vez de lista no seletor de arquivos GTK.

Botão e ícones de menu

Para algumas aplicações na sessão Wayland do GNOME. Seu arquivo ~/.config/gtk-3.0/settings.ini está desconfigurado. Isso pode acontecer se você tentar outros ambientes de área de trabalho baseados em GTK. Estes são os valores ofensivos:

~/.config/gtk-3.0/settings.ini
[Settings]
gtk-button-images=1
gtk-menu-images=1

Basta defini-los como 0 ou remover o arquivo inteiro para usar os padrões do GNOME.

GTK 3 sem polkit

O GTK 3 depende do polkit através do colord, que é necessário para impressão. No entanto, a impressão funciona bem sem o polkit instalado; pelo menos com uma impressora monocromática e versões de pacote gtk3-print-backends=3.22.19-2 e colord=1.4.1-1.

Alguns temas de GTK 2 só alteram a paleta de cores da UI

Dependendo do tema de escolha do suporte para o GTK 2, os controles da interface do usuário ainda podem ter a aparência padrão do Raleigh, possivelmente com uma paleta de cores diferente. Isso se deve a esses temas que exigem o mecanismo Murrine GTK 2, que está faltando (programas GTK 2 devem reclamar sobre isso em sua saída de erro padrão). Instale o pacote gtk-engine-murrine.

Aplicando patch no seletor de arquivos GTK para usar a digitação adiantada normal

O seletor de arquivos GTK usa o mesmo recurso de busca por digitação antecipada do GNOME/Files. Isso pode ser muito chocante e não se encaixa muito bem com outros ambientes de desktop.

Alguns aplicativos possuem suporte ao XDG-desktop-portal, que permite que o aplicativo use o seletor de arquivo nativo. Se isso não funcionar, você pode restaurar a funcionalidade de digitação antecipada usando um GTK com patch aplicado como, por exemplo, gtk3-mushroomsAUR[link quebrado: package not found].

Veja também