Introduction to GTK 4
        
        
          The GTK 4 package contains
          libraries used for creating graphical user interfaces for
          applications.
        
        
          ![[Note]](../images/note.png) 
          
            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.20/gtk-4.20.2.tar.xz
               
- 
              
                Download MD5 sum: 92b636585eb973d66e26f182052c99f1
               
- 
              
                Download size: 15 MB
               
- 
              
                Estimated disk space required: 960 MB (with docs; add 68 MB
                for tests)
               
- 
              
                Estimated build time: 1.7 SBU (using parallelism=4; with
                docs; add 1.9 SBU for tests)
               
 
        
          GTK 4 Dependencies
        
        
          Required
        
        
          gdk-pixbuf-2.44.2, graphene-1.10.8,
          ISO Codes-4.18.0, libepoxy-1.5.10,
          librsvg-2.61.2, libxkbcommon-1.12.2, Pango-1.57.0, PyGObject-3.52.3, and wayland-protocols-1.45
        
        
          Recommended
        
        
          adwaita-icon-theme-48.1 (runtime,
          default for some gtk4 settings keys), gst-plugins-bad-1.26.6, glslc from shaderc-2025.4,
          gst-plugins-good-1.26.6 (runtime,
          built with libvpx-1.15.2), hicolor-icon-theme-0.18 (needed for
          tests and for defaults), and Vulkan-Loader-1.4.328.1
        
        
          Recommended (Required if building GNOME)
        
        
          GLib-2.86.1 (with GObject Introspection)
        
        
          Optional
        
        
          Avahi-0.8 (for some tests), colord-1.4.8,
          Cups-2.4.14, docutils-0.22.2, Gi-DocGen-2025.5, Highlight-4.17 (runtime, only used by
          gtk4-demo for syntax
          highlighting of demo source code), libcloudproviders-0.3.6, sassc-3.6.2, tinysparql-3.9.2, 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-2025.5 installed and wish to build
          the API documentation for this package, issue:
        
        sed "s@'doc'@& / 'gtk-4.20.2'@" -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.9.2 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.2 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.328.1 or glslc from shaderc-2025.4
          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.0.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
                   |