GTK-4.12.4

Introduction to GTK 4

The GTK 4 package contains libraries used for creating graphical user interfaces for applications.

[Note]

Note

Development versions of BLFS may not build or run some packages properly if LFS or dependencies have been updated since the most recent stable versions of the books.

Package Information

  • Download (HTTP): https://download.gnome.org/sources/gtk/4.12/gtk-4.12.4.tar.xz

  • Download MD5 sum: 3444d68d81583a2c1d04fea0f4144ec0

  • Download size: 16 MB

  • Estimated disk space required: 502 MB (with docs; add 23 MB for tests)

  • Estimated build time: 1.3 SBU (using parallelism=4; with docs; add 0.9 SBU for tests)

GTK 4 Dependencies

Required

FriBidi-1.0.13, gdk-pixbuf-2.42.10, graphene-1.10.8, ISO Codes-4.15.0, libepoxy-1.5.10, libxkbcommon-1.6.0, Pango-1.50.14, PyGObject-3.46.0, and wayland-protocols-1.32

Recommended

Recommended (Required if building GNOME)

Optional

colord-1.4.6, Cups-2.4.7, docutils-0.20.1, FFmpeg-6.1 (built with libvpx-1.13.1), Gi-DocGen-2023.3, Highlight-4.10 (runtime, only used by gtk4-demo for syntax highlighting of demo source code), libcloudproviders-0.3.5, sassc-3.6.2, Tracker-3.6.0, cpdb, sysprof, and vulkan

Installation of GTK 4

Install GTK 4 by running the following commands:

mkdir build &&
cd    build &&

meson setup --prefix=/usr           \
            --buildtype=release     \
            -Dbroadway-backend=true \
            -Dintrospection=enabled \
            .. &&
ninja

If you have Gi-DocGen-2023.3 installed and wish to build the API documentation for this package, issue:

sed "s@'doc'@& / 'gtk-4.12.4'@" -i ../docs/reference/meson.build &&
meson configure -Ddocumentation=true                             &&
ninja

To run the tests, issue: dbus-run-session meson test --setup x11. If you are in a Wayland session, replace x11 with wayland. Nine tests are known to fail if Cantrell fonts are not installed. Many tests will fail if ~/.config/gtk-4.0/settings.ini exists and the gtk-modules line is not commented out. On systems with NVIDIA graphics cards, the tests may take significantly longer than the above test time.

Now, as the root user:

ninja install

Command Explanations

--buildtype=release: Specify a buildtype suitable for stable releases of the package, as the default may produce unoptimized binaries.

-Dbroadway-backend=true: This switch enables the HTML5 GDK backend.

-Dintrospection=enabled: This switch enables using gobject-introspection-1.78.1 to generate GIR bindings of this packages. These bindings are required by GNOME.

-Dcloudproviders=enabled: Use this switch if you have libcloudproviders-0.3.5 installed and wish to enable support for cloud providers in a file chooser window.

-Dtracker=enabled: Use this switch if you have Tracker-3.6.0 installed and wish to use search functionality when running a file chooser.

-Dcolord=enabled: Use this switch if you have colord-1.4.6 installed and wish to use colord with the CUPS printing backend.

-Dman-pages=true: Use this switch if you have docutils-0.20.1 installed and wish to generate the man pages.

-Dsysprof=enabled: Use this switch if you have sysprof installed and wish to enable tracing support for GTK4-based applications.

Configuring GTK 4

Config Files

~/.config/gtk-4.0/settings.ini and /usr/share/gtk-4.0/settings.ini

Configuration Information

GTK 4 themes change the way a GTK 4 application looks. An icon theme can be used to change the icons that appear on the application's toolbar. If you have installed a GTK 4 theme (e.g. the Adwaita theme built in GTK 4), an icon theme (such as oxygen-icons5-5.109.0) and/or a font (Dejavu fonts), you can set your preferences in ~/.config/gtk-4.0/settings.ini, or the default system-wide configuration file (as the root user), in /usr/share/gtk-4.0/settings.ini. For the local user, an example is:

mkdir -pv ~/.config/gtk-4.0
cat > ~/.config/gtk-4.0/settings.ini << "EOF"
[Settings]
gtk-theme-name = Adwaita
gtk-icon-theme-name = oxygen
gtk-font-name = DejaVu Sans 12
gtk-cursor-theme-size = 18
gtk-xft-antialias = 1
gtk-xft-hinting = 1
gtk-xft-hintstyle = hintslight
gtk-xft-rgba = rgb
gtk-cursor-theme-name = Adwaita
EOF

There are many settings keys, some with default values. You can find them at Settings: GTK 4 Reference Manual.

Contents

Installed Programs: gtk4-broadwayd, gtk4-builder-tool, gtk4-demo, gtk4-demo-application, gtk4-encode-symbolic-svg, gtk4-icon-browser, gtk4-launch, gtk4-node-editor, gtk4-print-editor, gtk4-query-settings, gtk4-update-icon-cache, and gtk4-widget-factory
Installed Libraries: libgtk-4.so
Installed Directories: /usr/include/gtk-4.0, /usr/lib/gtk-4.0, and /usr/share/gtk-4.0

Short Descriptions

gtk4-broadwayd

provides support for displaying GTK 4 applications in a web browser using HTML5 and web sockets

gtk4-builder-tool

performs various operations on GtkBuilder .ui files

gtk4-demo

is a simple program that demonstrates some of the tasks that can be done with GTK 4

gtk4-demo-application

is a simple GTK 4 application which is useful for testing

gtk4-encode-symbolic-svg

converts symbolic SVG icons into special PNG files. GTK 4 can load and recolor these PNGs, just like original SVGs, but loading them is much faster

gtk4-icon-browser

is a utility to explore the icons in the current icon theme. It shows icons in various sizes, their symbolic variants when available, as well as a description of the icon and its context

gtk4-launch

launches an application using the given name. The name should match the application .desktop file name (as seen in /usr/share/applications), with or without the '.desktop' extension

gtk4-node-editor

is a utility to show and edit render node files. Such render node files can be obtained e.g. from the GTK inspector

gtk4-print-editor

is a simple program to demonstrate printing using GTK 4 applications

gtk4-query-settings

provides a complete listing of all settings related to GTK 4

gtk4-update-icon-cache

is an icon theme caching utility that creates mmap()able cache files for icon themes

gtk4-widget-factory

is a program to view GTK 4 themes and widgets

libgtk-4.so

contains functions that provide an API to implement graphical user interfaces