Sobre#
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:
Nota
Essas são as linguagens suportadas oficialmente, contudo 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 bliblioteca 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çao 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.