GTK
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]
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 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
editarGTK é 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
editarAplicativos
editarAlguns 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
editarVários ambientes de desktop utilizam o GTK como o kit de ferramentas de widgets.
Ativos
editar- 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- 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
editarOs 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
editarExemplo 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- 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
editarReferências
- ↑ «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- Sítio oficial
- «Documentação oficial» (em inglês)
- «Repositório oficial» (em inglês)