GTK

O GTK é um toolkit de desenvolvimento de interface gráfica do usuário (GUI - Graphical User Interface) multiplataforma, escrito na linguagem de programação C.

A sigla GTK significa GIMP Toolkit, foi originalmente desenvolvido como parte do software de edição de imagens GIMP (GNU Image Manipulation Program), mas agora é usado em muitos outros projetos.

O GTK foi lançado pela primeira vez em 1998 como parte do GIMP 1.2 e se tornou um projeto independente em 1999, com a versão 1.0. Desde então, o GTK tem sido usado para desenvolver muitos outros aplicativos, como o GNOME (GNU Network Object Model Environment), um ambiente de desktop popular para sistemas Linux.

O GTK é escrito em C e é distribuído sob a Licença Pública Geral GNU LGPL, que permite seu uso e distribuição livre e gratuita.

Ele também possui bindings para outras linguagens de programação:

Linguagens suportadas oficialmente. Existem bindings não oficiais.

Bibliotecas

O kit de ferramentas (toolkit) GTK tem um design modular, entre suas principais bibliotecas temos e módulos temos:

GTK

A biblioteca GTK constrói o núcleo do kit de ferramentas e contém todos os widgets.

GDK

O GDK fornece uma interface para desenhar gráficos em uma variedade de plataformas, incluindo X11, Wayland, Microsoft Windows e macOS. Ele oferece suporte a recursos como janelas, eventos, gráficos 2D, imagens e manipulação de cores.

GdkPixbuf

A biblioteca GdkPixbuf permite o carregamento e manipulação de imagens (PNG, JPEG, GIF e etc).

GObject

A biblioteca GObject fornece uma API para programação orientada a objetos (OOP) na linguagem de programação C.

GLib

GLib é uma biblioteca de baixo nível que forma a base do GTK.

Ele fornece manipulação de estrutura de dados para C, wrappers de portabilidade e interfaces para funcionalidade de tempo de execução como um loop de eventos, threads, carregamento dinâmico e um sistema de objetos.

GIO

A biblioteca GIO implementa suporte a operações de entrada e saída (I/O, networking, IPC e etc).

GSK

A biblioteca GSK é utilizada para otimizar o desenho e a atualização do widget.

Graphene

A biblioteca Graphene implementa o suporte a gráficos, vetores e matrizes.

ATK

A biblioteca ATK implementa o suporte a leitores de tela, ampliadores de texto (lupas) e dispositivos de entrada alternativos.

Cairo

Cairo é uma biblioteca para gráficos 2D com suporte para vários dispositivos de saída (incluindo o X Window System, Win32) ao mesmo tempo em que produz uma saída consistente em todas as mídias, aproveitando a aceleração do hardware de exibição quando disponível.

pango

Pango é uma biblioteca para layout e renderização de texto com ênfase na internacionalização. Ele forma o núcleo do manuseio de texto e fonte para GTK.

OpenGL e Vulkan

As bibliotecas OpenGL e Vulkan permitem a utilização da GPU.

Para sistemas Linux, existe mais uma camada de abstração entre o kit de ferramentas GTK e o hardware do computador, chamada Wayland.

Wayland é um protocolo de comunicação que especifica a comunicação entre um servidor de exibição e seus clientes, bem como uma implementação da biblioteca C desse protocolo. Alguns sistemas Linux mais antigos ainda podem usar, em vez do moderno Wayland, o legado X Window System, que às vezes era chamado apenas de X11 ou X.