#### Beyond Linux® From Scratch (systemd Edition) - Version r13.0-491

### Chapter 25. Graphical Environment Libraries

- Prev

  GTK-3.24.52

- Next

  Gtkmm-3.24.10

- Up
- Home

# GTK-4.22.4

## Introduction to GTK 4

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

### 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.22/gtk-4.22.4.tar.xz

- Download MD5 sum: 2420b9b289937c1c9f97332470db1889

- Download size: 17 MB

- Estimated disk space required: 1.4 GB (with docs and tests)

- Estimated build time: 1.5 SBU (using parallelism=4; with docs; add 2.1 SBU for tests)

### GTK 4 Dependencies

#### Required

gdk-pixbuf-2.44.6, graphene-1.10.8, ISO Codes-4.20.1, libepoxy-1.5.10, librsvg-2.62.1, libxkbcommon-1.13.1, Pango-1.57.1, PyGObject-3.56.2, and wayland-protocols-1.48

#### Recommended

adwaita-icon-theme-50.0 (runtime, default for some gtk4 settings keys), gst-plugins-bad-1.28.2, glslc from shaderc-2026.2, gst-plugins-good-1.28.2 (runtime, built with libvpx-1.16.0), hicolor-icon-theme-0.18 (needed for tests and for defaults), and Vulkan-Loader-1.4.341.0

#### Recommended (Required if building GNOME)

GLib-2.88.0 (with GObject Introspection)

#### Optional

Avahi-0.8 (for some tests), colord-1.4.8, Cups-2.4.19, docutils-0.22.4, Evince-48.1 (runtime for the print previewer), Gi-DocGen-2026.1, Highlight-4.19 (runtime, only used by gtk4-demo for syntax highlighting of demo source code), libcloudproviders-0.3.6, sassc-3.6.2, tinysparql-3.11.1, accesskit-c, cpdb, pydbus (for some tests), and sysprof

## Kernel Configuration

Some GTK-4 features need the following options in the kernel configuration. It's also needed by the test suite.

    Device Drivers --->
      DMABUF options --->
        [*] userspace dmabuf misc driver                                   [UDMABUF]

## Installation of GTK 4

Install GTK 4 by running the following commands:

    mkdir build &&
    cd    build &&

    meson setup --prefix=/usr            \
                --buildtype=release      \
                -D broadway-backend=true \
                -D introspection=enabled \
                -D vulkan=enabled        \
                .. &&
    ninja

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

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

To run the tests, issue:

    env -u{GALLIUM_DRIVER,MESA_LOADER_DRIVER_OVERRIDE}          \
        LIBGL_ALWAYS_SOFTWARE=1 VK_LOADER_DRIVERS_SELECT='lvp*' \
        dbus-run-session meson test --setup x11                 \
                                    --no-suite=headless

If you are in a Wayland session, replace the one occurrence of `x11` with `wayland`. Many tests will fail if `~/.config/gtk-4.0/settings.ini` exists and the gtk-modules line is not commented out. Several other tests may fail for unknown reasons. On systems with NVIDIA graphics cards, the tests may take significantly longer.

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.

`-D broadway-backend=true`: This switch enables the HTML5 GDK backend.

`-D introspection=enabled`: This switch enables using GObject Introspection to generate GIR bindings of this packages. These bindings are required by GNOME.

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

`-D tracker=enabled`: Use this switch if you have tinysparql-3.11.1 installed and wish to use search functionality when running a file chooser.

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

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

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

`-D vulkan=disabled`: Use this switch instead of `-D vulkan=enabled` if you don't have Vulkan-Loader-1.4.341.0 or glslc from shaderc-2026.2 installed. It will disable the Vulkan backend that the upstream prefers to use on Wayland-based graphical environments.

`LIBGL_ALWAYS_SOFTWARE=1` and `VK_LOADER_DRIVERS_SELECT='lvp*'`: Force the test suite to use the softpipe or llvmpipe Gallium driver and the lavapipe Vulkan driver from Mesa. The test suite is so sensitive that the minor differences caused by a different Mesa driver can trigger test failures.

env -u{GALLIUM_DRIVER,MESA_LOADER_DRIVER_OVERRIDE}: Unset variables which may conflict with `LIBGL_ALWAYS_SOFTWARE=1`.

`--no-suite=headless`: Disable the tests requiring the external dependency pydbus.

## 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-icons-6.1.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-image-tool, gtk4-launch, gtk4-node-editor, gtk4-path-editor, gtk4-print-editor, gtk4-query-settings, gtk4-rendernode-tool, 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-image-tool | performs various operations on images, including comparisons, conversions, listing information on the images, relabeling the images, and showing the images
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-path-tool | performs various tasks on paths, including decompositions, reversals, restrictions, rendering, displaying the path, and listing information about the paths
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-rendernode-tool | performs various tasks on GTK render nodes, including benchmarks, comparisons, extracting data URLs, displaying information about the nodes, displaying the nodes, and taking screenshots of nodes
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

- Prev

  GTK-3.24.52

- Next

  Gtkmm-3.24.10

- Up
- Home