Ir para o conteúdo

GTK

Origem: Wikipédia, a enciclopédia livre.
(Redirecionado de GTK+)
GTK
AutoresPeter Mattis; Spencer Kimball; Josh MacDonald
DesenvolvedorThe GNOME Project
Lançamento inicial14 de abril de 1998 (28 anos)
Lançamento estável
4.22.4 / 29 de abril de 2026; há 5 meses (2026-04-29)[1]
Versão beta
4.23.2 / 27 de junho de 2026; há 3 meses (2026-06-27)[1]
Repositóriogitlab.gnome.org/GNOME/gtk
Escrito emC e Sass[2]
Sistema
operacional
Multiplataforma
PlataformaMultiplataforma
Disponível emMais de 50 idiomas[3]
TipoToolkit de widgets
LicençaGNU LGPLv2.1+
Websitewww.gtk.org

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).

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.

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.

Ambientes de desktop

[editar | editar código]

Vários ambientes de desktop utilizam o GTK como o kit de ferramentas de widgets.

  • 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]

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 de aplicativo na linguagem C:

#include 

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.11.3"
package = "gtk4"
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

  1. 1 2 «Lançamentos - GNOME / gtk». gitlab.gnome.org (em inglês). 27 de junho de 2026. Consultado em 13 de julho de 2026. Cópia arquivada em 6 de julho de 2026
  2. ↑ «The GTK+ Open Source Project» (em inglês). Open Hub. Consultado em 26 de março de 2018. Cópia arquivada em 9 de maio de 2026
  3. ↑ «Estatísticas do módulo: gtk». l10n.gnome.org (em inglês). Consultado em 4 de julho de 2021. Cópia arquivada em 9 de maio de 2026
  4. ↑ «Authors [GTK 2.x]». GNOME Dev Center. Consultado em 6 de novembro de 2022. Arquivado do original em 8 de junho de 2012
  5. ↑ «Developing X applications». X.Org Foundations (em inglês). 17 de novembro de 2020. Consultado em 6 de novembro de 2022. Cópia arquivada em 17 de maio de 2026
  6. ↑ «Toolkits». wayland.freedesktop.org. Freedesktop.org. Consultado em 6 de novembro de 2022. Arquivado do original em 17 de setembro de 2024
  7. ↑ «Language Bindings». www.gtk.org (em inglês). Consultado em 30 de março de 2020. Cópia arquivada em 14 de maio de 2026
  8. ↑ «Bindings based on GObject-Introspection». gi.readthedocs.io (em inglês). Consultado em 30 de março de 2020. Cópia arquivada em 23 de março de 2026
  9. ↑ «GTK+». WxWidgets Compared To Other Toolkits (em inglês). WxWiki. 19 de outubro de 2018. Consultado em 6 de novembro de 2022
  10. ↑ «GTK+ TTY Port» (em inglês). Slashdot. 26 de agosto de 2003. Consultado em 6 de novembro de 2022. Cópia arquivada em 19 de novembro de 2025
  11. ↑ «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
  12. ↑ «What is the + in GTK+?». 2011. Consultado em 19 de setembro de 2018. Arquivado do original em 26 de março de 2012
  13. ↑ «GTK+ 3.0 Released». GTK Development Blog. 10 de fevereiro de 2011. Consultado em 19 de dezembro de 2020. Cópia arquivada em 18 de setembro de 2025
  14. ↑ «GTK 4.0». GTK Development Blog. 16 de dezembro de 2020. Consultado em 19 de dezembro de 2020. Cópia arquivada em 3 de maio de 2026

Ligações externas

[editar | editar código]
O Wikilivros tem um livro chamado GTK+