GTK is a multi-platform toolkit for creating graphical user interfaces.

Related tags

GUI gtk
Overview

GTK — The GTK toolkit

Build status

General information

GTK is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK is suitable for projects ranging from small one-off projects to complete application suites.

GTK is a free and open-source software project. The licensing terms for GTK, the GNU LGPL, allow it to be used by all developers, including those developing proprietary software, without any license fees or royalties.

GTK is hosted by the GNOME project (thanks!) and used by a wide variety of applications and projects.

The official download location

The official web site

The official developers blog

Discussion forum

Nightly documentation can be found at

Nightly flatpaks of our demos can be installed from the GNOME Nightly repository:

  • flatpak remote-add --if-not-exists gnome-nightly https://nightly.gnome.org/gnome-nightly.flatpakrepo
  • flatpak install gnome-nightly org.gtk.Demo4
  • flatpak install gnome-nightly org.gtk.WidgetFactory4
  • flatpak install gnome-nightly org.gtk.IconBrowser4

Building and installing

In order to build GTK you will need:

You will also need various dependencies, based on the platform you are building for:

If you are building the X11 backend, you will also need:

  • Xlib, and the following X extensions:
    • xrandr
    • xrender
    • xi
    • xext
    • xfixes
    • xcursor
    • xdamage
    • xcomposite

If you are building the Wayland backend, you will also need:

  • Wayland-client
  • Wayland-protocols
  • Wayland-cursor
  • Wayland-EGL

Once you have all the necessary dependencies, you can build GTK by using Meson:

$ meson _build .
$ cd _build
$ ninja

You can run the test suite using:

$ meson test

And, finally, you can install GTK using:

$ sudo ninja install

Complete information about installing GTK and related libraries can be found in the file:

docs/reference/gtk/html/gtk-building.html

Or online

Default branch renamed to main

The default development branch of GTK has been renamed to main. To update your local checkout, use:

git checkout master
git branch -m master main
git fetch
git branch --unset-upstream
git branch -u origin/main
git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main

How to report bugs

Bugs should be reported on the issues page.

In the bug report please include:

  • Information about your system. For instance:

    • which version of GTK you are using
    • what operating system and version
    • for Linux, which distribution
    • if you built GTK, the list of options used to configure the build

    And anything else you think is relevant.

  • How to reproduce the bug.

    If you can reproduce it with one of the demo applications that are built in the demos/ subdirectory, on one of the test programs that are built in the tests/ subdirectory, that will be most convenient. Otherwise, please include a short test program that exhibits the behavior. As a last resort, you can also provide a pointer to a larger piece of software that can be downloaded.

  • If the bug was a crash, the exact text that was printed out when the crash occurred.

  • Further information such as stack traces may be useful, but is not necessary.

Contributing to GTK

Please, follow the contribution guide to know how to start contributing to GTK.

If you want to support GTK financially, please consider donating to the GNOME project, which runs the infrastructure hosting GTK.

Release notes

The release notes for GTK are part of the migration guide in the API reference. See:

Licensing terms

GTK is released under the terms of the GNU Lesser General Public License, version 2.1 or, at your option, any later version, as published by the Free Software Foundation.

Please, see the COPYING file for further information.

GTK includes a small number of source files under the Apache license:

  • A fork of the roaring bitmaps implementation in gtk/roaring
  • An adaptation of timsort from python in gtk/timsort
Issues
  • broadway: various optimization (trying to make it usable on RPI2)

    broadway: various optimization (trying to make it usable on RPI2)

    Goal is to use broadway to run applications on limited-CPU systems accessible via fast network channel. Consider ARM-based NAS box on intranet.

    1. Added possibility (via command line) to change zlib compression level or to disable zlib at all (including protocol level change - put uncompressed buffer opcode 'B')
    2. Added possibility (via command line) to disable blocks-level comparing. This gave MOST of performance benefit on RPI2.
    3. BroadwayOutput now encodes into GOutputStream instead of gstring. This made possible to write encode/compress directly to output stream without intermediate gstring-s (less memcpy-s)
    4. broadway_output_send_cmd() now issues single send. This improved performance and fixed minor security issue mentioned in FIXME: comments
    opened by elfmz 3
  • Added a file via upload

    Added a file via upload

    Updated the brazilian portuguese translation fixing minor errors such as no use of articles in lots of places as well as serious ones where the translated phrase didnt match whas was written in the source text, also several ortographic errors were fixed from beginning to end.

    opened by Felipefpl 2
  • Fix spelling of occure* in various files.

    Fix spelling of occure* in various files.

    Fix spelling of "occured"/"occurence" in various places; mostly in comments, but also in some variable names. The variables would seem to be local.

    opened by lanurmi 2
  • Primary/ secondary icon resizing to any dimension inside GtkEntry from a...

    Primary/ secondary icon resizing to any dimension inside GtkEntry from a...

    ...pplication

    GtkEntry is a widget used in GTK+ to write text .Icons can be placed at the start and end of GtkEntry . In GtkEntry , only fixed size icon of dimension 16 x 16 can be placed . But applications developer may require to change the icon size according to the size of GtkEntry . This is not possible in latest release of GTK+ . Due to this there is lot of size difference between icon and GtkEntry which does not look good if the size of GtkEntry is much bigger than the size of icon.

    In this patch I provided new feature enhancement in GtkEntry to resize the icon . This feature or interface (gtk_entry_set_icon_from_pixbuf_at_size) allows application developers to change the icon size to any desired dimension from the application source code .

    This allows better look and feel of GtkEntry bar.

    opened by hkishn121 2
  • GtkHeaderBar: Better icon for fallback app menu

    GtkHeaderBar: Better icon for fallback app menu

    process-stop-symbolic causes user confusion as to why a "stop" icon is being used for a menu. open-menu-symbolic is a more semantically-correct option and should be more compatible with more icon themes.

    opened by cassidyjames 1
  • Changed the application menu fallback icon

    Changed the application menu fallback icon

    Changed the fallback application menu icon to use the icon theme's "application-menu-symbolic" icon instead of "process-stop-symbolic". This would make it more obvious that the icon represents an application menu rather than a stop button.

    opened by ArtyomZorin 0
  • Primary/ secondary icon resizing to any dimension inside GtkEntry from a...

    Primary/ secondary icon resizing to any dimension inside GtkEntry from a...

    ...pplication

    GtkEntry is a widget used in GTK+ to write text .Icons can be placed at the start and end of GtkEntry . In GtkEntry , only fixed size icon of dimension 16 x 16 can be placed . But applications developer may require to change the icon size according to the size of GtkEntry . This is not possible in latest release of GTK+ . Due to this there is lot of size difference between icon and GtkEntry which does not look good if the size of GtkEntry is much bigger than the size of icon.

    In this patch I provided new feature enhancement in GtkEntry to resize the icon . This feature or interface ( gtk_entry_set_icon_from_pixbuf_at_size)allows application developers to change the icon size to any desired dimension from the application source code .

    This allows better look and feel of GtkEntry bar.

    opened by hkishn121 0
Owner
GNOME Github Mirror
Contributions sent to this organization will be forwarded automatically to https://gitlab.gnome.org
GNOME Github Mirror
This is a minimal state immediate mode graphical user interface toolkit written in ANSI C and licensed under public domain

This is a minimal state immediate mode graphical user interface toolkit written in ANSI C and licensed under public domain. It was designed as a simple embeddable user interface for application and does not have any dependencies, a default render backend or OS window and input handling but instead provides a very modular library approach by using simple input state for input and draw commands describing primitive shapes as output.

Micha Mettke 13.4k Aug 4, 2022
Gtk - Gui Toolkit Bindings for php

Gtk - Gui Toolkit Bindings for php Gtk written in pure php using FFI_. Development Status: WARNING: API is unstable WARNING: Lots of things are not im

Shubham Chaudhary 5 Mar 22, 2022
Tiny cross-platform webview library for C/C++/Golang. Uses WebKit (Gtk/Cocoa) and Edge (Windows)

A tiny cross-platform webview library for C/C++/Golang to build modern cross-platform GUIs. Also, there are Rust bindings, Python bindings, Nim bindings, Haskell, C# bindings and Java bindings available.

webview 10.3k Aug 4, 2022
Library for writing text-based user interfaces

Termbox for RT-Thread 中文说明文档 This repository forks from nullgemm/termbox_next Getting started Termbox's interface only consists of 12 functions: tb_in

Meco Jianting Man 5 May 25, 2022
A small C library for building user interfaces with C, XML and CSS

LCUI A small C library for building user interfaces with C, XML and CSS. Table of contents Table of contents Introduction Features Screenshots Related

Liu 3.8k Aug 7, 2022
A simple/fast stacking box layout library. It's useful for calculating layouts for things like 2D user interfaces.

A simple/fast stacking box layout library. It's useful for calculating layouts for things like 2D user interfaces. It compiles as C99 or C++. It's tested with gcc (mingw64), VS2015, and clang/LLVM. You only need one file to use it in your own project: layout.h.

Andrew Richards 683 Aug 9, 2022
Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies

Dear ImGui (This library is available under a free and permissive license, but needs financial support to sustain its continued improvements. In addit

omar 40.3k Aug 5, 2022
ROS_Melodic_Qt_GUI_Template is a Graphical User Interface programmed with Qt framework.

This is a GUI template for ros to control your robot and read data from sensors.

null 26 Jul 16, 2022
AnUI is a powerful Graphical User Interface framework made for people that actually care about design!

What's AuUI ** Project is not finished ** AuUI, an abbreviation for "Actual Understandable User Interface" is a graphical user interface framework to

Goat 4 Jun 17, 2022
My color picker in GTK, based very heavily on the MS Powertoys color picker

My color picker in GTK, based very heavily on the MS Powertoys color picker

contribuewwt 11 Jun 29, 2022
This is gtkmm, the C++ API for GTK.

This is gtkmm, the C++ API for GTK.

GNOME Github Mirror 129 Jul 23, 2022
A minimalist andf platform-agnostic application layer for writing graphical applications, with a strong emphasis on simplicity and ease of use.

SlimApp A minimalist(*) and platform-agnostic application layer for writing graphical applications. Available as either a single header file or a dire

Arnon Marcus 32 Jul 29, 2022
A library for creating native cross-platform GUI apps

Yue A library for creating native cross-platform GUI apps. Getting started Documentations FAQ Development Examples Sample apps (with screenshots) Muba

Yue 2.8k Aug 9, 2022
FLTK - Fast Light Tool Kit - a cross-platform C++ GUI toolkit for UNIX(r)/Linux(r) (X11)

FLTK - Fast Light Tool Kit - a cross-platform C++ GUI toolkit for UNIX(r)/Linux(r) (X11)

The FLTK Team 945 Aug 4, 2022
ZIAPI repository which contains the interfaces and concrete implementations that make up our Epitech Zia project API proposal.

ZIAPI Welcome to the ZIAPI repository which contains the interfaces and concrete implementations that make up our Epitech Zia project API proposal. ZI

Martin Olivier 29 Mar 17, 2022
An efficient graphical Minecraft seed finder and map viewer.

Cubiomes Viewer provides a graphical interface for the efficient and flexible seed-finding utilities provided by cubiomes and a map viewer for the Minecraft biomes and structure generation.

null 320 Aug 3, 2022
FlatUI is a immediate mode C++ GUI library for games and graphical applications.

FlatUI is a immediate mode C++ GUI library for games and graphical applications. Go to our landing page to browse our documentation.

Google 605 Aug 5, 2022
Material Design GUI Toolkit

GUI toolkit in Material Design style

Maks Makuta 3 Apr 23, 2022
AttoUI – minimalistic C UI toolkit for Wayland

AttoUI – minimalistic UI toolkit for Wayland AttoUI is library that makes creating GUI programs for Wayland in C as simple and bloatless as it can. Th

MasFlam 5 Jan 8, 2022