GTK - GTK

GTK
GTK logo.svg
Gtk4-widget-factory demos.png
GTK versão 4 ( gtk4-widget-factory , uma coleção de exemplos que demonstram muitos dos widgets da GUI )
Autor (es) original (is) Spencer Kimball , Peter Mattis
Desenvolvedor (s) O Projeto GNOME , eXperimental Computing Facility (XCF)
lançamento inicial 14 de abril de 1998 ; 23 anos atrás ( 14/04/1998 )
Versão estável
4.4.0 / 23 de agosto de 2021 ; 57 dias atrás ( 2021-08-23 )
Versão de visualização
4.3.1 / 9 de junho de 2021 ; há 4 meses ( 2021-06-09 )
Repositório
Escrito em C , CSS
Sistema operacional Linux , semelhante ao Unix , macOS , Windows
Modelo Kit de ferramentas de widget
Licença LGPLv2.1 +
Local na rede Internet gtk .org

GTK (anteriormente GIMP ToolKit e depois GTK + ) é um kit de ferramentas de plataforma cruzada gratuito e de código aberto para a criação de interfaces gráficas de usuário (GUIs). Ele é licenciado sob os termos da GNU Lesser General Public License , permitindo o uso de software livre e proprietário . É um dos kits de ferramentas mais populares para os sistemas de janelas Wayland e X11 .

A equipe GTK lança novas versões regularmente. GTK 4 e GTK 3 são mantidos, enquanto GTK 2 é o fim da vida útil.

Arquitetura de software

Arquitetura de software simplificada do GTK . Pango , GDK , ATK , GIO , Cairo e GLib
O GDK contém back-ends para X11 , Wayland , Broadway ( HTTP ), Quartz e GDI e depende do Cairo para a renderização. Seu novo SceneGraph é um trabalho em andamento.

A biblioteca GTK contém um conjunto de elementos gráficos de controle ( widgets ); a versão 3.22.16 contém 186 widgets ativos e 36 obsoletos. GTK é um kit de ferramentas de widget orientado a objetos escrito na linguagem de programação C ; ele usa GObject , que é o sistema de objetos GLib , para a orientação de objetos. Embora GTK seja principalmente para sistemas de janelas baseados em X11 e Wayland , ele funciona em outras plataformas, incluindo Microsoft Windows (com interface com a API do Windows ) e macOS (com interface com Quartz ). Há também um back-end HTML5 chamado Broadway .

GTK pode ser configurado para alterar a aparência dos widgets desenhados; isso é feito usando diferentes mecanismos de exibição. Existem vários mecanismos de exibição que tentam emular a aparência dos widgets nativos na plataforma em uso.

Começando com a versão 2.8, lançada em 2005, GTK começou a transição para usar Cairo para renderizar a maioria de seus widgets de elementos gráficos de controle . Desde GTK versão 3.0, toda a renderização é feita usando Cairo.

Em 26 de janeiro de 2018 no DevConf.cz , Matthias Clasen deu uma visão geral do estado atual do desenvolvimento do GTK 4, incluindo uma explicação de alto nível de como a renderização e a entrada funcionavam no GTK 3, quais mudanças estão sendo feitas no GTK 4 (> 3,90 ), e porque. Em 6 de fevereiro de 2019, foi anunciado que GTK 4 removerá o “+” do nome do projeto.

Kit de desenho GTK (GDK)

O GDK atua como um invólucro em torno das funções de baixo nível fornecidas pelos sistemas gráficos e de janelas subjacentes.

O GDK é encontrado no /gdkdiretório.

Kit de gráfico de cena GTK (GSK)

GSK é a API de renderização e gráfico de cena para GTK. GSK fica entre os elementos de controle gráfico (widgets) e a renderização. A GSK foi finalmente incorporada ao GTK versão 3.90 lançada em março de 2017.

GSK é encontrado no /gskdiretório.

GtkInspector

GtkInspector foi introduzido com a versão 3.14. GtkInspector só pode ser invocado após a instalação do pacote de desenvolvimento libgtk-3-dev / gtk + -devel .

Designers de GUI

Existem vários designers de GUI para GTK. Os seguintes projetos estão ativos a partir de julho de 2011:

  • Glade , suporta GtkBuilder , que é um formato de descrição GUI embutido em GTK.
  • Gazpacho , construtor de GUI para o kit de ferramentas GTK escrito em Python
  • Crow Designer, conta com seu próprio formato GuiXml e biblioteca GuiLoader.
  • Stetic , parte do MonoDevelop , voltado para Gtk # .
  • Gambas desde a versão 2.0 no BASIC
  • Xojo no Linux
  • O padrão do Lazarus no Linux é a interface com GTK 2

GtkBuilder

GtkBuilder permite que interfaces de usuário sejam projetadas sem escrever código. A interface é descrita em um arquivo Extensible Markup Language (XML), que é então carregado no tempo de execução e os objetos criados automaticamente. O Glade Interface Designer permite a criação da interface do usuário de uma maneira o que você vê é o que obtém ( WYSIWYG ). A descrição da interface do usuário é independente da linguagem de programação que está sendo usada.

Ligações de linguagem

As ligações de linguagem estão disponíveis para usar GTK a partir de linguagens diferentes de C, incluindo C ++ , Genie , JavaScript , Perl , Python , Vala e outras .

GtkSharp, não deve ser confundido com Gtk #, suporta GTK 3.

Gtk #

Gtk #
Gtk Sharp Logo.png
Desenvolvedor (s) Xamarin
lançamento inicial 12 de março de 2004 ; 17 anos atrás ( 12/03/2004 )
Versão estável
2.12.41 / 22 de setembro de 2016 ; 5 anos atrás ( 22/09/2016 )
Versão de visualização
2.99.3 (para GTK3) / 6 de junho de 2014 ; 7 anos atrás ( 06/06/2014 )
Repositório
Escrito em C # , XML , Perl , C
Sistema operacional Windows , macOS , Linux
Modelo Kit de ferramentas de widget
Licença GNU Lesser General Public License
Local na rede Internet mono-projeto .com / GtkSharp

Gtk # é um conjunto de vínculos do .NET Framework para o kit de ferramentas de interface gráfica do usuário (GUI) GTK e diversas bibliotecas GNOME . A biblioteca facilita a construção de aplicativos gráficos GNOME usando Mono ou qualquer outro Common Language Runtime (CLR) compatível . Gtk # é um sistema orientado a eventos como qualquer outra biblioteca de janelas moderna, onde cada widget permite associar métodos de tratamento, que são chamados quando certos eventos ocorrem.

Os aplicativos construídos com Gtk # serão executados em muitas plataformas, incluindo Linux , Windows e macOS . Os pacotes Mono para Windows incluem GTK, Gtk # e um tema nativo para fazer os aplicativos parecerem aplicativos nativos do Windows. A partir do Mono 1.9, a execução de aplicativos Gtk # no macOS não requer mais a execução de um servidor X11 .

O Glade Interface Designer pode ser usado com as ligações Glade # para criar aplicativos GUI facilmente. Um designer de GUI chamado Stetic é integrado ao ambiente de desenvolvimento integrado (IDE) MonoDevelop .

Além de oferecer suporte à pilha GTK / GNOME padrão de ferramentas de desenvolvimento, a montagem gtk-dotnet.dll fornece uma ponte para consumir a funcionalidade disponível na pilha .NET. Neste ponto, isso inclui a funcionalidade de usar System.Drawing para desenhar em um widget.

Em setembro de 2020, o suporte Gtk # para Gtk3 permanece na fase de visualização e projetos bifurcados, como GtkSharp , foram fundados para fornecer suporte Gtk3 completo para C # e outras linguagens CLI. A falta de uma versão lançada do Gtk # com suporte para Gtk3 foi citada como uma razão para remover o reprodutor de mídia Banshee no Ubuntu 12.04.

Desenvolvimento

GTK é desenvolvido principalmente pelo Projeto GNOME , que também desenvolve a Plataforma de Desenvolvimento GNOME e o Ambiente de Trabalho GNOME.

O desenvolvimento do GTK é gerenciado livremente. A discussão ocorre principalmente em várias listas de discussão públicas. Os desenvolvedores e usuários do GNOME se reúnem em uma reunião anual GUADEC da Conferência Europeia de Usuários e Desenvolvedores do GNOME para discutir o estado atual e a direção futura do GNOME. GNOME incorpora padrões e programas de freedesktop.org para melhor interoperar com outros desktops.

GTK é escrito principalmente em C . Muitas ligações de linguagem estão disponíveis .

Em 1 de setembro de 2016, uma postagem no blog de desenvolvimento do GTK denotou, entre outras coisas, o futuro esquema de numeração do GTK. A versão 3.22 do GTK do outono de 2016 será a última versão 3.x. A versão 3.24 foi introduzida no outono de 2018 com o atraso do GTK 4. Depois disso, todos os recursos serão movidos para a série de desenvolvimento GTK 4 com os nomes de versão 3.90, 3.92, etc. Mesmo quando a série 4.x entra em desenvolvimento, aplicativos notáveis ​​ainda usam GTK 2.xe não foram portados para 3.22. Em relação ao futuro do software legado usando GTK , não havia um projeto coletivo para portar o software GTK 2.x para 3.22. A versão 3.24 tem suporte de longo prazo e é a base real e futura de programas como o gimp 3.0 e o Inkscape 1.0. Portanto, para os desenvolvedores é a escolha GTK 3.24 estável com correção de bug ou GTK 4 com mudanças e novos recursos em desenvolvimento futuro.

Automação de compilação

GTK (e GNOME, GLib, etc.) anteriormente utilizava o GNU Build System (denominado Autotools) como o sistema de automação de compilação preferido.

Desde 14 de agosto de 2017, o branch master do GTK foi construído com o Meson , e os arquivos do sistema de compilação do Autotools foram descartados.

Crítica

A crítica mais comum ao GTK é a falta de compatibilidade com versões anteriores nas principais atualizações, principalmente na interface de programação de aplicativos (API) e nos temas.

As quebras de compatibilidade entre versões menores durante o ciclo de desenvolvimento do GTK 3.x foram explicadas por Benjamin Otte como devido a fortes pressões para inovar, como fornecer os recursos que os usuários modernos esperam e suportar o protocolo de servidor de exibição Wayland cada vez mais influente . Com o lançamento do GTK 4, a pressão da necessidade de inovar terá sido liberada e o equilíbrio entre estabilidade e inovação tenderá para a estabilidade. Da mesma forma, as mudanças recentes nos temas têm como objetivo específico melhorar e estabilizar essa parte da API, o que significa que algum investimento agora deve ser recompensado mais tarde.

  • Dirk Hohndel, codeveloper da Subsurface e membro do Open-Source Technology Center da Intel , criticou os desenvolvedores GTK por serem abrasivos e ignorarem a maioria dos pedidos da comunidade.
  • Hong Jen Yee, desenvolvedor do LXDE (a versão GTK do qual foi abandonada e todos os esforços focados na porta Qt ), expressou desdém pela versão 3 das mudanças radicais de API do kit de ferramentas GTK e aumento do uso de memória, e portou o PCMan File Manager (PCManFM) para Qt . O PCManFM está sendo desenvolvido com um GTK e com um backend Qt ao mesmo tempo.
  • O Audacious music player mudou para o Qt na versão 3.6. As razões declaradas pelos desenvolvedores para isso incluem uma transição para decorações de janela do lado do cliente, que eles afirmam fazer com que o aplicativo pareça " GNOME e fora do lugar."
  • O Wireshark mudou para o Qt devido a não ter uma boa experiência com o suporte multiplataforma do GTK.

Usar

O suporte GTK para Wayland , co-requisitos de aplicativos a serem adaptados ao Wayland também
Captura de tela do GIMP 2.8 - GTK é responsável por gerenciar os componentes da interface do programa, incluindo os menus, botões e campos de entrada.

Formulários

Alguns aplicativos notáveis ​​que usam ou já usaram GTK como um kit de ferramentas de widget incluem:

Ambientes de desktop

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

Atual

  • GNOME , baseado em GTK, o que significa que os programas nativos do GNOME usam GTK
  • Budgie , construído do zero para o sucessor do SolusOS, o Sistema Operacional Solus
  • Cinnamon , um fork do GNOME 3 que usa GTK versão 3
  • MATE , um fork do GNOME 2 que usa GTK 3 desde a versão 1.18
  • Xfce , baseado em GTK 3 desde a versão 4.14
  • Pantheon usa GTK 3 exclusivamente, sendo desenvolvido por elementary OS
  • Sugar , um ambiente de desktop para educação primária para jovens , que usa GTK, especialmente PyGTK
  • O KDE , embora baseado em Qt , tem integração com programas e temas escritos em GTK desde a versão 4.2
  • Phosh , uma IU móvel projetada para PureOS

Inativo

Diversos

Os programas GTK podem ser executados em ambientes de desktop baseados em X11 e Wayland, ou gerenciadores de janela mesmo aqueles não feitos com GTK, desde que as bibliotecas necessárias estejam instaladas; isso inclui o macOS se o X11.app estiver instalado. GTK também pode ser executado no Microsoft Windows , onde é usado por alguns aplicativos populares de plataforma cruzada como Pidgin e GIMP. wxWidgets , um kit de ferramentas de interface de usuário de plataforma cruzada, usa GTK no Linux por padrão. Outras portas incluem DirectFB (usado pelo instalador Debian , por exemplo) e ncurses .

Gerenciadores de janela

Os seguintes gerenciadores de janela usam GTK:

GtkSourceView

Para realçar a sintaxe,GtkSourceView , "widget de edição de código-fonte". GtkSourceView é mantido pelo GNOME separadamente do GTK como uma biblioteca: gtksourceview . Existem planos de renomear para GSV.

GtkSpell

GtkSpell é uma biblioteca separada do GTK. GtkSpell depende do GTK e do Enchant . Enchant é um wrapper para ispell, hunspell , etc, o motor / software corretor ortográfico real . GtkSpell usa o widget GtkTextView do GTK para destacar palavras com erros ortográficos e oferecer substituição.

Exemplo

A documentação está disponível aqui:

Os seguintes presentes de código de um GTK gráfica Olá mundo programa na linguagem de programação C . Este programa possui uma janela com o título "Olá, mundo!" e uma etiqueta com texto semelhante.

// helloworld.c
#include <gtk/gtk.h>

/* Callback that will be called when the application is activated */
static void
activate_callback(GApplication *app, gpointer user_data)
{
    GtkWidget *window;
    GtkWidget *label;

    /* Create the main, top level window */
    window = gtk_window_new();

    /* Give it the title */
    gtk_window_set_title(GTK_WINDOW(window), "Hello, world!");

    /* Set the window's default size */
    gtk_window_set_default_size(GTK_WINDOW(window), 200, 100);

    /* Assign the variable "label" to a new GTK label,
     * with the text "Hello, world!" */
    label = gtk_label_new("Hello, world!");

    /* Plot the label onto the main window */
    gtk_window_set_child(GTK_WINDOW(window), label);

    /* Make the application aware of the window.
     * The application process will continue to run until all
     * windows are closed */
    gtk_application_add_window(GTK_APPLICATION(app), GTK_WINDOW(window));

    /* Make sure that everything, window and label, are visible */
    gtk_widget_show(window);
}

int main (int argc, char *argv[])
{
    /* Create our test application */
    GtkApplication *application = gtk_application_new("org.wikipedia.gtktest", 0);

    /* Connect our handler to the "activate" callback, which will be called
     * when the application is activated by the user, e.g. on first start */
    g_signal_connect(application, "activate", G_CALLBACK(activate_callback), NULL);

    /* Run the application and return its status */
    return g_application_run(G_APPLICATION(application), argc, argv);
}

Precisa instalar as bibliotecas primeiro no Debian ou derivados: $ sudo apt-get install libgtk-4-dev

Usando pkg-config em um shell Unix , este código pode ser compilado com o seguinte comando: $ cc -Wall $(pkg-config --cflags --libs gtk4) helloworld.c -o helloworld

Chame o programa: $ ./helloworld

História

Linux

GTK foi originalmente projetado e usado no GNU Image Manipulation Program (GIMP) como uma substituição do kit de ferramentas Motif ; em algum ponto, Peter Mattis ficou desencantado com o Motif e começou a escrever seu próprio kit de ferramentas GUI chamado GIMP toolkit e substituiu com sucesso o Motif pela versão 0.60 do GIMP. Finalmente GTK foi reescrito para ser orientado a objetos e foi renomeado GTK +. Isso 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 usa no ambiente de desktop GNOME.

A série de lançamento GTK 2.0.0 introduziu novos recursos que incluem renderização de texto aprimorada usando Pango , um novo mecanismo de tema , acessibilidade aprimorada usando o Kit de Ferramentas de Acessibilidade , transição para Unicode usando strings UTF-8 e uma API mais flexível. A partir da versão 2.8, GTK 2 depende da biblioteca gráfica Cairo para renderizar gráficos vetoriais.

O GTK versão 3.0.0 incluiu manipulação revisada do dispositivo de entrada, suporte para temas escritos com sintaxe semelhante a CSS e a capacidade de receber informações sobre outros aplicativos GTK abertos.

O '+' foi abandonado, voltando a simplesmente 'GTK' em fevereiro de 2019 durante um Hackathon .

Mac OS

Com Quartz -Backend GTK está disponível no macOS .

janelas

  • Após GTK 2.24.10 e 3.6.4, o desenvolvimento do Windows com instalador foi fechado pelo Gnome. A instalação do MSYS2 no Windows é uma boa maneira de usar o GTK real.
  • GTK 2.24.10 e 3.6.4 estão disponíveis na Internet, mas são muito problemáticos e limitados em relação às versões reais.
  • Uma versão para Windows de 64 bits foi preparada por Tom Schoonjans com 2.24.33 (real como Linux) e 3.24.24 (real como Linux) de janeiro de 2021 disponíveis.
  • O Fall Creators Update do Windows 10 inclui o Windows Subsystem for Linux (WSL). Com distribuições Linux como Ubuntu ou Debian disponíveis na Windows Store e um servidor X como Xming ou VcXsvr, milhares de programas como GTK 2 ou 3 podem ser executados com X ou suporte para terminal.

OpenVMS

A HP afirmou que seu objetivo era mesclar as alterações necessárias do OpenVMS no fluxo de desenvolvimento do GTK Versão 1.3, no entanto, isso nunca se materializou. A versão mais recente do GTK para OpenVMS é a versão 1.2.10.

GTK 4

Uma das novidades principais implementadas durante o ciclo de desenvolvimento GTK 4 (ou seja, GTK 3.92, etc.) foi a delegação de funcionalidade a objetos auxiliares em vez de codificá-la nas classes básicas fornecidas pelo GTK.

  • o tratamento de eventos dos manipuladores de sinais descritos por GtkWidget é delegado aos controladores de eventos
  • a renderização é delegada a objetos GtkSnapshot
  • o mecanismo de layout de GtkWidget é delegado a GtkLayoutManager

Em 26 de janeiro de 2018 em DevConf.cz Matthias Clasen deu uma visão geral do estado atual do desenvolvimento do GTK 4, incluindo uma explicação de alto nível de como a renderização e a entrada funcionavam no GTK 3, quais mudanças estavam sendo feitas no GTK 4, e as razões para essas mudanças. Exemplos de coisas que se tornaram possíveis com GTK 4 também foram dados.

Lançamentos

Lenda:
Versão antiga
Versão mais antiga, ainda mantida
Última versão
Versão de visualização mais recente
Lançamento futuro
Série de lançamento lançamento inicial Principais melhorias Última versão secundária
Versão antiga, não mais mantida: 1.0 13/04/1998 Primeira versão estável 1.0.6
Versão antiga, não mais mantida: 1,2 25/02/1999 Novos widgets :
  • GtkFontSelector
  • GtkPacker
  • GtkItemFactory
  • GtkCTree
  • Gtk Invisível
  • GtkCalendar
  • GtkLayout
  • GtkPlug
  • GtkSocket
1.2.10
Versão antiga, não mais mantida: 2.0 11/03/2002 GObject

Suporte geral para UTF-8

2.0.9
Versão antiga, não mais mantida: 2,2 22/12/2002 Suporte multihead 2.2.4
Versão antiga, não mais mantida: 2,4 16/03/2004 Novos widgets:
  • GtkFileChooser
  • GtkComboBox
  • GtkComboBoxEntry
  • GtkExpander
  • GtkFontButton
  • GtkColorButton
2.4.14
Versão antiga, não mais mantida: 2,6 16/12/2004 Novos widgets:
  • GtkIconView
  • GtkAboutDialog
  • GtkCellView

O último a suportar Windows 98 / Me

2.6.10
Versão antiga, não mais mantida: 2,8 13/08/2005 A maioria dos widgets são renderizados pelo Cairo 2.8.20
Versão antiga, não mais mantida: 2,10 03/07/2006 Novos widgets:
  • GtkStatusIcon
  • GtkAssistant
  • GtkLinkButton
  • GtkRecentChooser

Suporte para impressão: GtkPrintOperation

2.10.14
Versão antiga, não mais mantida: 2,12 14/09/2007 GtkBuilder 2,12,12
Versão antiga, não mais mantida: 2,14 04-09-2008 Suporte para carregamento de JPEG 2000 2,14,7
Versão antiga, não mais mantida: 2,16 13/03/2009 Novo widget: GtkOrientable

Aviso de Caps Lock na entrada de senha

Melhorias em GtkScale, GtkStatusIcon, GtkFileChooser

2.16.6
Versão antiga, não mais mantida: 2,18 23/09/2009 Novo widget: GtkInfoBar

Melhoria no seletor de arquivos, impressão

Para remover muito do IPC necessário entre o aplicativo X11 e o servidor X11, o GDK foi reescrito (principalmente por Alexander Larsson) para usar "janelas do lado do cliente", ou seja, o GdkWindow, que todo widget deve ter, agora pertence ao cliente

2,18,9
Versão antiga, não mais mantida: 2,20 23/03/2010 Novos widgets:
  • GtkSpinner
  • GtkToolPalette
  • GtkOffscreenWindow

Melhoria no seletor de arquivos, manuseio do teclado, GDK

Os dados de introspecção agora estão incluídos no GTK

2.20.1
Versão antiga, não mais mantida: 2,22 23/09/2010 GdkPixbuf movido para módulo separado

A maioria dos desenhos GDK são baseados no Cairo

Muitos dados internos agora são privados e podem ser lacrados na preparação para GTK 3

2.22.1
Versão antiga, não mais mantida: 2,24 30/01/2011 Novo widget: GtkComboBoxText

O backend de impressão do CUPS pode enviar trabalhos de impressão como PDF

GtkBuilder ganhou suporte para tags de texto e botões de ferramentas de menu e muitas correções de anotação de introspecção foram adicionadas

Migrando de GTK + 2.x para GTK + 3

2.24.32
(08/01/2018)
Versão antiga, não mais mantida: 3,0 10/02/2011 O desenvolvimento e design da versão GTK 3 do kit de ferramentas começou em fevereiro de 2009 durante o GTK Theming Hackfest realizado em Dublin
  • O primeiro rascunho do roteiro de desenvolvimento foi lançado em 9 de abril de 2009

Concluiu principalmente o Projeto Ridley

  • a tentativa de consolidar várias bibliotecas externas ao GTK +
  • incluindo libgnome, libgnomeui, libgnomeprint22, libgnomeprintui22, libglade, libgnomecanvas, libegg, libeel, gtkglext, elibsexy

Toda a renderização é feita usando Cairo

GDK tornou-se mais agnóstico para o X11

XInput2, a API do tema é baseada em Cascading Style Sheets (CSS), piorando o desempenho alcançável para taxas de quadro de 60 Hz

3.0.12
Versão antiga, não mais mantida: 3,2 25/09/2011 Novos widgets:
  • GtkLockButton
  • GtkOverlay

Nova janela de seleção de fonte

Novos back-ends experimentais:

3.2.4
Versão antiga, não mais mantida: 3,4 26/03/2012 Suporte de menu em GtkApplication

Um novo seletor de cores

Adicionado suporte para dispositivos de toque

Adicionado suporte para rolagem suave

GtkScrolledWindow fará rolagem cinética com dispositivos de toque

Suporte para macOS melhorado

Esta é a primeira versão do GTK 3 que funciona bem no Windows

O back-end do Wayland foi atualizado para a versão atual do Wayland

Os botões giratórios receberam um novo visual

Acessibilidade: o suporte acessível para treeview foi reescrito

Suporte mais completo a temas CSS

3.4.4
Versão antiga, não mais mantida: 3,6 24/09/2012 Novos widgets:
  • GtkSearchEntry
  • GtkMenuButton
  • GtkLevelBar

Botões giratórios verticais

Animações CSS, sombras desfocadas

Suporte para cross-fading e transições em temas

3.6.5
Versão antiga, não mais mantida: 3,8 25/03/2013 Suporte estável para Wayland 1.0

Suporte para o servidor broadwayd

Temas aprimorados

Melhor gerenciamento de geometria

Melhorias de toque

Suporte com o gerenciador de janelas para o protocolo de sincronização de quadros

GdkFrameClock adicionado

3.8.9
Versão antiga, não mais mantida: 3,10 23/09/2013 Novos widgets:
  • GtkHeaderBar
  • GtkPlacesSidebar
  • GtkStack
  • GtkStackSwitcher
  • GtkRevealer
  • GtkSearchBar
  • GtkListBox

Suporte para Wayland 1.2

  • maximização
  • cursores animados
  • monitores múltiplos
  • definições
  • superfícies personalizadas
  • sincronização de quadros

Adicionado:

  • decorações do lado do cliente
  • suporte de saída escalonada em telas de alto dpi
  • modo de ajuste fino para rolagem

Removido:

  • suporte para o protocolo Motif DND
  • suporte para várias telas por monitor
  • gdk_window_get_display
  • gtk_widget_push_composite_child

Itens de menu destacáveis, além de muitas configurações GTK

O modelo de desenho GTK moderno

3.10.9
Versão antiga, não mais mantida: 3,12 25/03/2014 Decorações do lado do cliente

Suporte para Wayland 1.5

Novo widget: GtkPopover (uma alternativa para menus e diálogos)

3.12.2
Versão antiga, não mais mantida: 3,14 22/09/2014 GtkInspector (uma cópia do gtkparasite) introduzido

Melhor suporte para gestos / multi-touch fundiu

Descontinuada:

  • GtkMisc
  • GtkAlignment
  • GtkArrow
  • GdkColor
  • Regiões de estilo
  • suporte para arquivos .icon
  • gdk_window_flush
  • desenho fora da pintura de início / fim

A maioria dos widgets convertidos para usar gestos internamente

Wayland suporta o modo clássico GNOME Shell

3.14.15
Versão antiga, não mais mantida: 3,16 22/03/2015 GDK suporta renderização de janelas usando OpenGL para X11 e Wayland usando libepoxy

Novos widgets:

  • GtkGLArea
  • GtkStackSidebar
  • GtkModelButton
  • GtkPopoverMenu

Rolagem revisada ( barra de rolagem oculta por padrão)

Experimental Mir backend

3.16.7
Versão antiga, não mais mantida: 3,18 23/09/2015 Adicionar infraestrutura de nó CSS

Mais atualização de design de filechooser e melhor pesquisa de filechooser

Suspensão do suporte ao Windows XP

Suporte de modelo para lista e caixa de fluxo

Rolagem cinética do touchpad

Gestos do touchpad (Wayland)

utilitário gtk-builder-tool

Janelas apenas de saída

3,18,9
Versão antiga, não mais mantida: 3,20 21/03/2016 Integração adicional de nós CSS

Mova arrastar e soltar para GDK

Novo widget: GtkShortcutsWindow (mostra atalhos de teclado e gestos de um aplicativo)

3.20.10
Versão antiga, não mais mantida: 3,22 21/09/2016 Última versão 3.x

Suporte para tablet Wayland foi mesclado, suporte para tablets gráficos é considerado recurso completo

GTK 3.22 deve ser tão estável como rocha (e, portanto, "chato") quanto GTK 2

por 3+ anos
3.22.29
Versão mais antiga, mas ainda mantida: 3,24 03/09/2018 3.22 deveria ser a última versão da série GTK 3

Aumentos de dependência - exigem:

  • libepoxy 1.4
  • pango 1,41

Novos recursos do seletor de fontes:

  • permitir a configuração de recursos de fonte OpenType
  • mostrar exemplos de recursos de fonte OpenType
  • permite selecionar variações de fonte OpenType
  • níveis de suporte de detalhes para seleção

Novos recursos de Emoji:

  • apoiar um pop-up de conclusão para Emoji
  • solte o atalho Ctrl-Shift-e

Outras novas APIs: gdk_window_move_to_rect

Wayland: use memória compartilhada anônima no FreeBSD

Controladores de eventos com backport do GTK 4:

  • GtkEventControllerScroll
  • GtkEventControllerMotion
  • GtkEventControllerKey
  • GtkGestureStylus

Suspenda algumas APIs que não existem mais no GTK 4:

  • cadeias de foco em GtkContainer
  • sensibilidade passo a passo em GtkRange
3.23.0
3.23.1
3.23.2
3.23.3
3.24.0
3.24.5
3.24.14

3.24.29

Versão antiga, não mais mantida: 3,90 31-03-2017 GTK Scene Graph Kit (GSK) mesclado

Remova qualquer API marcada como obsoleta

Desenvolvimento pesado

  • quebrar API e ABI

Um novo renderizador Vulkan aumenta o antigo renderizador Cairo

3,89,1

3,89,2
3,89,4
3,89,5
3,90

Versão antiga, não mais mantida: 3,92 18/10/2017 Como o GNOME 3.26 foi lançado em 13 de setembro de 2017, ele não era baseado no GTK 3.92.

GNU autotools foi substituído pelo Meson .

3,91,0

3.91.1
3.91.2
3.92.1

Versão antiga, não mais mantida: 3,94 26/06/2018 3,93
  • GdkScreen, GdkVisual removido
  • GdkDeviceManager substituído por GdkSeat
  • O manuseio da área de transferência foi movido de GTK para GDK
  • GdkEvent é convertido em um GObject opaco
  • o renderizador GL em GSK está substancialmente concluído e agora está no mesmo nível do renderizador Vulkan
  • o uso de GdkPixbuf em APIs é reduzido
    • e o objeto GskTexture é movido para GDK como GdkTexture, para tomar seu lugar
  • o backend do Wayland agora implementa o protocolo de decoração do lado do servidor KDE
  • Broadway é portado para GSK.

GdkWindow renomeado para GdkSurface

Nova abstração para conteúdo drawable: GdkPaintable

Há suporte para exibição de mídia com:

  • GtkVideo
  • GtkMediaFile
  • GtkMediaStream
  • GtkMediaControls
3,93
3,94,0
Versão antiga, não mais mantida: 3,96 07/05/2019 O comando gtk4-builder-tool simplify ganhou a --3to4opção de converter arquivos ui GTK3 para GTK4; embora com menus AMTK, barras de ferramentas ou outros objetos como GtkShortcutsWindow sejam criados programaticamente (não com um arquivo * .ui), mas com APIs convenientes.

GtkWidget agora pode usar um GtkLayoutManager para alocação de tamanho

  • gerenciadores de layout podem, opcionalmente, usar filhos de layout contendo propriedades de layout
  • GtkBinLayout, GtkBoxLayout, GtkGridLayout, GtkFixedLayout e GtkCustomLayout estão atualmente disponíveis
  • mais implementações de gerenciador de layout aparecerão no futuro

O tratamento do foco foi reescrito e a geração de eventos de mudança de foco foi unificada com os eventos de cruzamento

Os eventos foram simplificados e são usados ​​apenas para entrada:

  • os eventos de exposição foram substituídos por um sinal GdkSurface :: render
  • os eventos de configuração foram substituídos por um sinal GdkSurface :: size-changed
  • os eventos do mapa foram substituídos por uma propriedade GdkSurface :: mapped
  • gdk_event_handler_set foi substituído por um sinal GdkSurface :: event
  • os principais eventos não contêm mais uma string
  • eventos em widgets não mapeados são ignorados
3,96,0
Versão antiga, não mais mantida: 3,98 10/02/2020
  • Melhorias de desempenho
  • Arrastar e soltar refatoração
  • Movendo GDK em direção a Wayland
  • Remoções
    • GtkMenu, GtkToolbar e classes semelhantes foram substituídos por GMenu.
  • Aditivos
    • Selecionador de Emoji
    • Widgets de texto agora têm pilhas de desfazer
    • Um novo gerenciador de layout
3,98,5
Versão antiga, não mais mantida: 3,99,0 31-07-2020
  • Apresentado o sucessor do Kit de Ferramentas de Acessibilidade (ATK) . A nova abordagem implementará WAI-ARIA (Iniciativa de Acessibilidade do World Wide Web Consortium (W3C) - Accessible Rich Internet Applications).
  • Cabeçalhos atualizados para usar tipos C padrão em vez de tipos GLib
  • Novos widgets
  • Correções e melhorias
3,99,4
Versão antiga, não mais mantida: 4,0 16-12-2020 4.0.2
Versão antiga, não mais mantida: 4,2 2021-03-30
Versão estável atual: 4,4 2021-08-23

Veja também

  • Decoração do lado do cliente
  • Lista de kits de ferramentas de widget
  • GDK - o GIMP Drawing Kit fica entre o xlib e a biblioteca GTK, lidando com a renderização básica, como primitivos de desenho, gráficos raster (bitmaps), cursores, fontes, bem como eventos de janela e funcionalidade de arrastar e soltar
  • gtkmm - ligações C ++ para GTK
  • Qt - framework de plataforma cruzada e kit de ferramentas
  • Xojo - ferramenta de desenvolvimento de plataforma cruzada e estrutura
  • Bibliotecas Enlightenment Foundation (EFL) - kit de ferramentas de widget escrito para o gerenciador de janelas Enlightenment
  • FLTK - um kit de ferramentas de widget leve, multiplataforma e não nativo
  • FOX toolkit - um kit de ferramentas de widget multiplataforma, rápido e de código aberto
  • IUP - um kit de ferramentas multiplataforma para construir interfaces gráficas de usuário nativas
  • Ultimate ++
  • Biblioteca de componentes visuais (VCL)
  • Vala - uma linguagem de programação orientada a objetos com um compilador auto-hospedado que gera código C e usa o sistema GObject.
  • wxWidgets - um kit de ferramentas de interface de usuário de plataforma cruzada cujo objetivo é usar diretamente a API gráfica nativa de cada plataforma sempre que possível.

Referências

Bibliografia

links externos