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 (26 anos) |
Versão estável | 4.16.3 (4 de outubro de 2024[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+ |
Página oficial | www |
Repositório | gitlab |
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-fonte]GTK é escrito em 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 Python, JavaScript, C++, Rust, 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-fonte]Aplicativos
[editar | editar código-fonte]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 pode usar o GTK quando executado no X.
- 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 em GTK multiplataforma baseado no Scintilla.
- GIMP – 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 GTKWebKit como motor de renderização e GTK como conjunto de ferramentas de widget
- Pidgin – Aplicativo de mensagens instantâneas
Ambientes de desktop
[editar | editar código-fonte]Vários ambientes de desktop utilizam o GTK como o kit de ferramentas de widgets.
Ativos
[editar | editar código-fonte]- 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-fonte]- 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-fonte]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-fonte]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-fonte]- 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-fonte]- ↑ «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-fonte]- Sítio oficial
- «Documentação oficial» (em inglês)
- «Repositório oficial» (em inglês)