GTK
| GTK | |
|---|---|
Widget Factory, uma demonstração de widgets do GTK | |
| Autor | Peter Mattis; Spencer Kimball; Josh MacDonald |
| Desenvolvedor | The GNOME Project |
| Plataforma | Multiplataforma |
| Lançamento | 14 de abril de 1998 (27 anos) |
| Versão estável | 4.20.1 (8 de setembro de 2025[1]) |
| Idioma(s) | Mais de 50 idiomas[2] |
| Escrito em | C e Sass[3] |
| Sistema operativo | Multiplataforma |
| Gênero(s) | Toolkit de widgets |
| Licença | GNU LGPLv2.1+ |
| Repositório | gitlab |
| Página oficial | www |
GTK (anteriormente GTK+ e GIMP Toolkit) é um toolkit multiplataforma para a criação de interfaces gráficas. É liberado sob a licença GNU LGPL, permitindo que softwares proprietários e livres o utilizem em sua construção. É um software livre e integra o projeto GNU. Foi desenvolvido inicialmente ao GIMP, por isso foi batizado de GIMP toolkit, com abreviação GTK+. Foi desenvolvido originalmente por Peter Mattis, Spencer Kimball e Josh MacDonald.[4]
GTK e Qt suplantaram outros toolkits; e hoje são os dois conjuntos de widgets mais usados para as plataformas X11[5] e Wayland.[6] O GTK é muito popular, sendo usado em um grande número de aplicações e no ambiente de desktop GNOME (que por sua vez também é muito popular).
Design
[editar | editar código]GTK é escrito na linguagem C e seu design é orientado a objetos com base no sistema de objetos da biblioteca GLib. Existem interfaces para construção de programas GTK para JavaScript, Python, Rust, C++, Vala, entre outras linguagens.[7][8]
É possível customizar a aparência do toolkit por completo através de temas compostos de imagens e CSS. Também é possível alterar a forma com que widgets são desenhados através do uso de engines. Existem engines emulando a aparência de outros populares toolkits ou plataformas como Windows 95, Qt, ou NEXTSTEP.
Usos
[editar | editar código]Aplicativos
[editar | editar código]Alguns aplicativos notáveis que usam ou uma vez usaram o GTK como toolkit de widget incluem:
- GNOME Core Applications – como parte do ambiente de desktop GNOME, desenvolvido em conjunto com o próprio GTK.
- AbiWord – processador de texto
- Anjuta – ambiente de desenvolvimento integrado (IDE)
- Ardour – digital audio workstation
- Chromium – navegador web (até a versão 34, substituída por Aura na versão 35+) [carece de fontes]
- Ekiga (anteriormente GnomeMeeting) - aplicativo de VoIP e videoconferência
- GNU Emacs – um editor de texto; pode usar o GTK quando executado no X11
- Evolution – gerenciador de informações pessoais
- gconfig – utilitário de configuração do código-fonte do núcleo do Linux
- Geany – um editor de texto e IDE multiplataforma baseado no Scintilla
- GIMP – um editor gráfico raster
- Gnumeric – aplicativo de planilha eletrônica
- Gramps – software de genealogia
- Inkscape – editor de gráficos vetoriais para SVG
- LiVES – editor de vídeo
- Midori – navegador web minimalista que usa o WebKitGTK
- Pidgin – aplicativo de mensagens instantâneas
Ambientes de desktop
[editar | editar código]Vários ambientes de desktop utilizam o GTK como o kit de ferramentas de widgets.
Ativos
[editar | editar código]- GNOME, baseado no GTK, o que significa que os programas nativos do GNOME usam o GTK
- Budgie, construído a partir do zero para o sucessor do SolusOS, Solus Operating System
- Cinnamon, um fork do GNOME 3 e usa o GTK+ versão 3
- MATE, um fork do GNOME 2, que foi atualizado para suportar o GTK+ 3
- Xfce, atualmente baseado no GTK+ 2 com suporte e eventuais planos de migração para o GTK+ 3
- Pantheon usa exclusivamente o GTK+ 3, sendo desenvolvido pelo elementary OS
- Sugar, um ambiente de desktop voltado para a educação infantil, que usa o GTK, especialmente PyGTK
- KDE, embora baseado em Qt, tem integração com programas e temas escritos em GTK desde a versão 4.2
Descontinuados
[editar | editar código]- Unity, o antigo ambiente de desktop padrão do Ubuntu
- LXDE (Lightweight X11 Desktop Environment) é baseado no GTK+ 2
- Access Linux Platform (sucessor da plataforma para PDA Palm OS)
- Consort, the GNOME 3.4 Fallback Mode – fork do SolusOS
- GPE, the GPE Palmtop Environment
- ROX Desktop, uma área de trabalho leve, com recursos da GUI do RISC OS
Diversos
[editar | editar código]Os programas GTK podem ser executados em ambientes de desktop baseados em X11 ou gerenciadores de janelas, mesmo aqueles que não são feitos com o GTK, desde que as bibliotecas necessárias estejam instaladas; isso inclui o macOS se o X11.app estiver instalado. O GTK também pode ser executado no Microsoft Windows, onde é usado por alguns aplicativos populares multiplataforma, como o Pidgin e o GIMP. O wxWidgets, um kit de ferramentas de interface multiplataforma, usa o GTK no Linux.[9] Outros portes incluem o DirectFB (usado pelo instalador do Debian, por exemplo) e ncurses.[10]
Exemplo
[editar | editar código]Exemplo de aplicativo na linguagem C:
#include <gtk/gtk.h>
static void on_activate (GtkApplication *app) {
// Cria uma nova janela
GtkWidget *window = gtk_application_window_new (app);
// Cria um novo botão que fecha a janela ao ser clicado
GtkWidget *button = gtk_button_new_with_label ("Olá, Mundo!");
g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_window_close), window);
// Adiciona o botão e apresenta a janela
gtk_window_set_child (GTK_WINDOW (window), button);
gtk_window_present (GTK_WINDOW (window));
}
int main (int argc, char *argv[]) {
// Cria um novo aplicativo
GtkApplication *app = gtk_application_new ("com.example.Hello",
G_APPLICATION_FLAGS_NONE);
// Quando o aplicativo for ativado
g_signal_connect (app, "activate", G_CALLBACK (on_activate), NULL);
return g_application_run (G_APPLICATION (app), argc, argv);
}
E o equivalente em Rust:
use gtk::glib::{self, clone};
use gtk::prelude::*;
fn main() -> glib::ExitCode {
// Cria um novo aplicativo
let app = gtk::Application::builder()
.application_id("com.example.Hello")
.build();
// Quando o aplicativo for ativado
app.connect_activate(|app| {
// Cria uma nova janela
let window = gtk::ApplicationWindow::new(app);
// Cria um novo botão que fecha a janela ao ser clicado
let button = gtk::Button::with_label("Olá, Mundo!");
button.connect_clicked(clone!(
#[weak]
window,
move |_| window.close()
));
// Adiciona o botão e apresenta a janela
window.set_child(Some(&button));
window.present();
});
app.run()
}
E as dependências no arquivo Cargo.toml:
[dependencies.gtk]
version = "0.9.1"
package = "gtk4"
Versões
[editar | editar código]- GTK+ 1
O GTK+ foi originalmente projetado e usado no GNU Image Manipulation Program (GIMP) como um substituto do kit de ferramentas Motif; em algum momento, Peter Mattis ficou desencantado com o Motif e começou a escrever seu próprio kit de ferramentas GUI, chamado GIMP toolkit, e substituiu o Motif pelo GTK no GIMP na versão 0.60.[11] Finalmente, o GTK foi reescrito para ser orientado a objetos e foi renomeado como GTK+.[12] Ele foi usado pela primeira vez na versão 0.99 do GIMP. O GTK+ foi posteriormente adotado para manutenção pela GNOME Foundation, que o utiliza no ambiente de desktop GNOME.
- GTK+ 2
GTK+ 2 é o sucessor do GTK+. Suas novas características incluem o Pango, um novo engine para temas, acessibilidade usando ATK, completa transição para Unicode usando UTF-8 para strings e um API flexível. Entretanto, o GTK+ 2 não é compatível com o GTK+ 1 e suas aplicações precisam ser portadas a ele. O GTK+ 1 é menos complexo que o GTK+ 2.
- GTK+ 3
GTK+ 3 é o sucessor do GTK+ 2. Suas novas características incluem o Cairo (para desenhar elementos gráficos), XI2 (XInput2, para o processamento de eventos de dispositivo de entrada) e etc.[13]
- GTK 4
GTK 4 é o sucessor do GTK+ 3. Suas novas características incluem novas APIs de transferências de dados, controladores de eventos, gerenciadores de layout, nós de renderização, reprodução de mídia, listas escalonáveis, sombreadores e de acessibilidade; suporte a API Vulkan, suporte melhorado ao Windows e ao macOS, melhorias no OpenGL, melhorias no backend HTML5 Broadway, migração do GNU Autotools para Meson.[14]
Ver também
[editar | editar código]Referências
- ↑ «Releases - GNOME / gtk». gitlab.gnome.org (em inglês). 8 de setembro de 2025. Consultado em 18 de setembro de 2025
- ↑ «Estatísticas do módulo: gtk». l10n.gnome.org (em inglês). Consultado em 4 de julho de 2021
- ↑ «The GTK+ Open Source Project» (em inglês). Open Hub. Consultado em 26 de março de 2018
- ↑ «Authors [GTK 2.x]». GNOME Dev Center. Consultado em 6 de novembro de 2022. Arquivado do original em 8 de junho de 2012
- ↑ «Developing X applications». X.Org Foundations (em inglês). 17 de novembro de 2020. Consultado em 6 de novembro de 2022
- ↑ «Toolkits». wayland.freedesktop.org. Freedesktop.org. Consultado em 6 de novembro de 2022 [ligação inativa]
- ↑ «Language Bindings». www.gtk.org (em inglês). Consultado em 30 de março de 2020
- ↑ «Bindings based on GObject-Introspection». gi.readthedocs.io (em inglês). Consultado em 30 de março de 2020
- ↑ «GTK+». WxWidgets Compared To Other Toolkits (em inglês). WxWiki. 19 de outubro de 2018. Consultado em 6 de novembro de 2022
- ↑ «GTK+ TTY Port» (em inglês). Slashdot. 26 de agosto de 2003. Consultado em 6 de novembro de 2022
- ↑ «LinuxWorld - Where did Spencer Kimball and Peter Mattis go?». Consultado em 19 de setembro de 2018. Arquivado do original em 17 de abril de 1999
- ↑ «What is the + in GTK+?». 2011. Consultado em 19 de setembro de 2018. Arquivado do original em 26 de março de 2012
- ↑ «GTK+ 3.0 Released». GTK Development Blog. 10 de fevereiro de 2011. Consultado em 19 de dezembro de 2020
- ↑ «GTK 4.0». GTK Development Blog. 16 de dezembro de 2020. Consultado em 19 de dezembro de 2020
Ligações externas
[editar | editar código]- Sítio oficial
- «Documentação oficial» (em inglês)
- «Repositório oficial» (em inglês)

