Skip to the content.

25. Graphical Environment Libraries


This chapter does not contain libraries that are required to run X. It does contain libraries that enhance X. In some cases the enhancement is as simple as font support. In others it is as complex as libraries that sit between X and applications that run on X whose purpose is to standardize the look and feel and inter-process communications for different applications. They also assist programmers by supplying common elements.

25.1 Amtk-5.6.1


Introduction to Amtk

The Amtk package contains a basic GTKUIManager replacement based on GAction.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

Amtk Dependencies

Required

GTK+-3.24.36

Optional

GTK-Doc-1.33.2 (for documentation) and Valgrind-3.20.0

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/amtk

Installation of Amtk

Install Amtk by running the following commands:

mkdir amtk-build &&
cd    amtk-build &&

meson --prefix=/usr --buildtype=release -Dgtk_doc=false .. &&
ninja

To test the results, issue: ninja test.

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.

-Dgtk_doc=false: This switch prevents the build system from generating and installing the API documentation. Omit this switch if you have GTK-Doc-1.33.2 installed and wish to generate and install the API documentation.

Contents

Installed Programs: None

Installed Libraries: libamtk-5.so

Installed Directories: /usr/include/amtk-5 and /usr/share/gtk-doc/html/amtk-5.0

Short Descriptions

libamtk-5.so provides a basic GTKUIManager replacement API based on GAction.

25.2 Atkmm-2.28.3


Introduction to Atkmm

Atkmm is the official C++ interface for the ATK accessibility toolkit library.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

Atkmm Dependencies

Required

at-spi2-core-2.46.0 and GLibmm-2.66.5

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/atkmm

Installation of Atkmm

Install Atkmm by running the following commands:

mkdir build &&
cd    build &&

meson --prefix=/usr --buildtype=release .. &&
ninja

This package does not come with a test suite.

Now, as the root user:

ninja install

Contents

Installed Programs: None

Installed Library: libatkmm-1.6.so

Installed Directories: /usr/{include,lib}/atkmm-1.6 and /usr/share/{devhelp/books/atkmm-1.6,doc/atkmm-2.28.3}

Short Descriptions

libatkmm-1.6.so contains the ATK API classes.

25.3 at-spi2-core-2.46.0


Introduction to At-Spi2 Core

The At-Spi2 Core package contains a comprehensive accessibility framework for the Assistive Technologies available on the GNOME platform. This includes a set of interfaces which are implemented by other toolkits and applications.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

At-Spi2 Core Dependencies

Required

dbus-1.14.6, GLib-2.74.5, gsettings-desktop-schemas-43.0 (Runtime), and Xorg Libraries

Optional (Required if building GNOME)

gobject-introspection-1.74.0

Optional

GTK-Doc-1.33.2

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/at-spi2-core

Installation of At-Spi2 Core

Install At-Spi2 Core by running the following commands:

mkdir build &&
cd    build &&

meson --prefix=/usr --buildtype=release .. &&
ninja

A session bus address, normally available in an Xorg terminal, is necessary to run the tests. The test suite also requires the glib schemas of the package to be installed already. To test the results, install the package first, then issue: ninja test.

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.

Contents

Installed Programs: None

Installed Library: libatk-1.0.so, libatk-bridge-2.0.so, libatspi.so, and /usr/lib/gtk-2.0/modules/libatk-bridge.so

Installed Directories: /usr/include/atk-1.0, /usr/include/at-spi-2.0, /usr/include/at-spi2-atk, /usr/lib/gnome-settings-daemon-3.0, /usr/share/defaults/at-spi2, and /usr/share/gtk-doc/html/libatspi

Short Descriptions

libatk-1.0.so contains functions that are used by assistive technologies to interact with desktop applications.

libatk-bridge.so contains the Accessibility Toolkit GTK+-2 bridge.

libatk-bridge-2.0.so contains the Accessibility Toolkit GTK+ module.

libatspi.so contains the At-Spi2 API functions.

25.4 Cairo-1.17.6


Introduction to Cairo

Cairo is a 2D graphics library with support for multiple output devices. Currently supported output targets include the X Window System, win32, image buffers, PostScript, PDF and SVG. Experimental backends include OpenGL, Quartz and XCB file output. Cairo is designed to produce consistent output on all output media while taking advantage of display hardware acceleration when available (e.g., through the X Render Extension). The Cairo API provides operations similar to the drawing operators of PostScript and PDF. Operations in Cairo include stroking and filling cubic Bézier splines, transforming and compositing translucent images, and antialiased text rendering. All drawing operations can be transformed by any affine transformation (scale, rotation, shear, etc.).

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

Cairo Dependencies

Required

libpng-1.6.39 and Pixman-0.42.2

Fontconfig-2.14.2, GLib-2.74.5 (required for most GUIs), and Xorg Libraries

Optional

Cogl-1.22.8, ghostscript-10.00.0, GTK+-3.24.36 and GTK+-2.24.33, GTK-Doc-1.33.2, libdrm-2.4.115, librsvg-2.54.5, libxml2-2.10.3, LZO-2.10, Mesa-22.3.5, Poppler-23.02.0, Qt-5.15.8, Valgrind-3.20.0, DirectFB, jbig2dec, libspectre, Skia, and Qt4.

Note

There is a circular dependency between cairo and harfbuzz. If cairo is built before harfbuzz, it is necessary to rebuild cairo after harfbuzz in order to build pango.

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/cairo

Installation of Cairo

Adapt this package for Binutils-2.39 or later:

sed 's/PTR/void */' -i util/cairo-trace/lookup-symbol.c

Fix a pkg-config file that may cause errors later:

sed -e "/@prefix@/a exec_prefix=@exec_prefix@" \
    -i util/cairo-script/cairo-script-interpreter.pc.in

Install Cairo by running the following commands:

./configure --prefix=/usr    \
            --disable-static \
            --enable-tee &&
make

This package does not have a working test suite.

Now, as the root user:

make install

Command Explanations

--enable-tee: This switch enables the experimental tee surface backend which is required if using system-installed Cairo with Mozilla applications.

--disable-static: This switch prevents installation of static versions of the libraries.

--enable-xlib-xcb: This switch enables several experimental Xlib/XCB functions used by some window managers.

--enable-gl: This switch enables Cairo’s experimental OpenGL surface which is required for Wayland compositor and some other packages that are not part of BLFS.

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to create and install the documentation.

Contents

Installed Programs: cairo-trace

Installed Libraries: libcairo.so, libcairo-gobject.so and libcairo-script-interpreter.so

Installed Directories: /usr/{include,lib,share/gtk-doc/html}/cairo

Short Descriptions

cairo-trace generates a log of all calls made by an application to Cairo.

libcairo.so contains the 2D graphics functions required for rendering to the various output targets.

libcairo-gobject.so contains functions that integrate Cairo with Glib’s GObject type system.

libcairo-script-interpreter.so contains the script interpreter functions for executing and manipulating Cairo execution traces.

25.5 libcairomm-1.0 (cairomm-1.14.0)


Introduction to libcairomm-1.0

The libcairomm-1.0 package provides a C++ interface to Cairo.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

libcairomm-1.0 Dependencies

Required

Cairo-1.17.6 and libsigc++-2.12.0

Boost-1.81.0 (for tests)

Optional

Doxygen-1.9.6

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/cairomm-1.0

Installation of libcairomm-1.0

Install Cairomm-1.0 by running the following commands:

mkdir bld &&
cd    bld &&

meson --prefix=/usr       \
      --buildtype=release \
      -Dbuild-tests=true  \
      -Dboost-shared=true \
      ..                  &&
ninja

To run the test suite, run: ninja test.

Now, as the root user:

ninja install

Command Explanations

-Dbuild-tests=true: This switch is for building the unit tests. Remove if you have not installed Boost-1.81.0.

-Dboost-shared=true: This switch has the package use the shared version of boost libraries. It is required if you have not installed the boost static libraries, and you have passed -Dbuild-tests=true.

-Dbuild-documentation=true: This switch builds the html documentation if doxygen is installed.

Contents

Installed Programs: None

Installed Library: libcairomm-1.0.so

Installed Directories: /usr/{lib,include}/cairomm-1.0 and /usr/share/{devhelp/books,doc}/cairomm-1.0 (optional)

Short Descriptions

libcairomm-1.0.so contains the Cairo API classes.

25.6 Cogl-1.22.8


Introduction to Cogl

Cogl is a modern 3D graphics API with associated utility APIs designed to expose the features of 3D graphics hardware using a direct state access API design, as opposed to the state-machine style of OpenGL.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

Cogl Dependencies

Required

Cairo-1.17.6, gdk-pixbuf-2.42.10, GLU-9.0.2, Mesa-22.3.5, Pango-1.50.12, and Wayland-1.21.0

gobject-introspection-1.74.0

Optional

gst-plugins-base-1.22.0, GTK-Doc-1.33.2, SDL-1.2.15, and SDL2-2.26.3

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/cogl

Installation of Cogl

Install Cogl by running the following commands:

Note

This package may occasionally fail when building with multiple processors. See Using Multiple Processors for more information.

./configure --prefix=/usr  \
            --enable-gles1 \
            --enable-gles2 \
            --enable-{kms,wayland,xlib}-egl-platform \
            --enable-wayland-egl-server              &&
make

To test the results, issue: make check. The tests should be run from an X terminal on the hardware accelerated Xorg Server. A few tests will use all CPUs in parallel, regardless of parallellism settings.

Now, as the root user:

make install

Command Explanations

--enable-gles1: This switch enables support for OpenGL ES 1.1.

--enable-gles2: This switch enables support for OpenGL ES 2.0.

--enable-{kms,wayland,xlib}-egl-platform: These switches enable support for KMS, Wayland and Xlib EGL platforms. They are required for GNOME Wayland support.

--enable-wayland-egl-server: This switch enables Cogl’s Wayland Server API which is required for GNOME Wayland support.

--enable-cogl-gst: This switch enables gstreamer support.

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild and install the API documentation.

Contents

Installed Programs: None

Installed Libraries: libcogl-gles2.so, libcogl-pango.so, libcogl-path.so, and libcogl.so, and optional libraries libcogl-gst.so and /usr/lib/gstreamer-1.0/libgstcogl.so

Installed Directories: /usr/include/cogl and /usr/share/cogl

Short Descriptions

libcogl-gles2.so is the OpenGL ES 2.0 integration library for Cogl.

libcogl-pango.so is the Pango integration library for Cogl.

libcogl.so is an object oriented GL/GLES Abstraction/Utility Layer library.

25.7 Clutter-1.26.4


Introduction to Clutter

The Clutter package contains an open source software library used for creating fast, visually rich and animated graphical user interfaces.

This package is known to build and work properly using an LFS 11.3 platform.

Note

Anything built with this toolkit needs hardware 3D acceleration from the graphics driver at runtime. This is provided by Mesa (or by proprietary graphics drivers), but is not available for every graphics card nor for all virtual machines. You may wish to review Checking the DRI installation.

Package Information

Clutter Dependencies

Required

at-spi2-core-2.46.0, Cogl-1.22.8, and JSON-GLib-1.6.6

gobject-introspection-1.74.0, GTK+-3.24.36, libgudev-237, libinput-1.22.1, libxkbcommon-1.5.0, and Wayland-1.21.0

Optional

GTK-Doc-1.33.2 and Tslib

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/clutter

Installation of Clutter

Install Clutter by running the following commands:

./configure --prefix=/usr               \
            --sysconfdir=/etc           \
            --enable-egl-backend        \
            --enable-evdev-input        \
            --enable-wayland-backend    \
            --enable-wayland-compositor &&
make

The test suite is not recommended because some tests may hang forever. If you want to test the results anyway, issue: make -j1 -k check. You must be in an xterm or similar, because it launches some windows.

Now, as the root user:

make install

Command Explanations

--enable-egl-backend: This switch enables the experimental EGL windowing backend.

--enable-evdev-input: This switch enables the experimental Evdev input backend which is required for GNOME Wayland support.

--enable-wayland-backend and --enable-wayland-compositor: These switches enable the experimental Wayland API in Clutter which is required for GNOME Wayland support.

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild and install the API documentation.

Contents

Installed Programs: None

Installed Library: libclutter-1.0.so and libclutter-glx-1.0.so

Installed Directories: /usr/include/clutter-1.0 and /usr/share/gtk-doc/html/{cally,clutter}

Short Descriptions

libclutter-1.0.so contains the Clutter API functions.

25.8 clutter-gst-3.0.27


Introduction to Clutter Gst

The Clutter Gst package contains an integration library for using GStreamer with Clutter. Its purpose is to implement the ClutterMedia interface using GStreamer.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

Clutter Gst Dependencies

Required

Clutter-1.26.4, gst-plugins-base-1.22.0, and libgudev-237

gobject-introspection-1.74.0 and gst-plugins-bad-1.22.0

Optional

GTK-Doc-1.33.2 and Cgc

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/clutter-gst

Installation of Clutter Gst

Install Clutter Gst by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: None

Installed Library: libclutter-gst-3.0.so and /usr/lib/gstreamer-1.0/libcluttergst3.so

Installed Directories: /usr/include/clutter-gst-3.0 and /usr/share/gtk-doc/html/clutter-gst-3.0

Short Descriptions

libclutter-gst-3.0.so contains the Clutter Gst API functions.

25.9 clutter-gtk-1.8.4


Introduction to Clutter Gtk

The Clutter Gtk package is a library providing facilities to integrate Clutter into GTK+ applications.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

Clutter Gtk Dependencies

Required

Clutter-1.26.4 and GTK+-3.24.36

gobject-introspection-1.74.0

Optional

GTK-Doc-1.33.2

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/clutter-gtk

Installation of Clutter Gtk

Install Clutter Gtk by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild and install the API documentation.

Contents

Installed Programs: None

Installed Library: libclutter-gtk-1.0.so

Installed Directories: /usr/include/clutter-gtk-1.0 and /usr/share/gtk-doc/html/clutter-gtk-1.0

Short Descriptions

libclutter-gtk-1.0.so contains the Clutter Gtk API functions.

25.10 colord-gtk-0.3.0


Introduction to Colord GTK

The Colord GTK package contains GTK+ bindings for Colord.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

Colord GTK Dependencies

Required

colord-1.4.6 and GTK+-3.24.36

gobject-introspection-1.74.0, GTK+-2.24.33, GTK-4.8.3, and Vala-0.56.4

Optional

DocBook-utils-0.6.14 and GTK-Doc-1.33.2

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/colord-gtk

Installation of Colord GTK

Warning

If building the documentation ninja -j1 must be used.

Install Colord GTK by running the following commands:

mkdir build &&
cd    build &&

meson --prefix=/usr       \
      --buildtype=release \
      -Dgtk2=true         \
      -Dgtk4=true         \
      -Dvapi=true         \
      -Ddocs=false        \
      -Dman=false ..      &&
ninja

To test the results, issue: ninja test. The tests need to be run from an X session, and may require a color profile for your primary display.

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.

-Dvapi=true: This switch enables building of the Vala bindings. Remove this switch if you don’t have Vala-0.56.4 installed.

-Dgtk2=true: This switch enables building the GTK+-2 bindings for colord.

-Dgtk4=true: This switch enables building the GTK-4 bindings for colord. Set this option to ‘false’ if you do not have GTK-4.8.3 installed.

-Ddocs=false: This switch disables building gtk-doc based documentation. Even if gtk-doc is installed, you will need the namespaced versions of the Docbook XSL stylesheets.

-Dman=false: This switch disables generating the manual pages for this package. Remove this switch if you have namespaced versions of the Docbook XSL stylesheets installed.

Contents

Installed Programs: cd-convert

Installed Libraries: libcolord-gtk.so, libcolord-gtk2.so, and libcolord-gtk4.so

Installed Directories: /usr/include/colord-1/colord-gtk and /usr/share/gtk-doc/html/colord-gtk

Short Descriptions

cd-convert is a Color Manager Testing Tool.

libcolord-gtk.so contains the Colord GTK+ bindings.

libcolord-gtk2.so contains the Colord GTK+-2 bindings.

libcolord-gtk4.so contains the Colord GTK-4 bindings.

25.11 FLTK-1.3.8


Introduction to FLTK

FLTK (pronounced “fulltick”) is a cross-platform C++ GUI toolkit. FLTK provides modern GUI functionality and supports 3D graphics via OpenGL and its built-in GLUT emulation libraries used for creating graphical user interfaces for applications.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

FLTK Dependencies

Required

Xorg Libraries

hicolor-icon-theme-0.17, libjpeg-turbo-2.1.5.1, and libpng-1.6.39

Optional

alsa-lib-1.2.8, desktop-file-utils-0.26, Doxygen-1.9.6, GLU-9.0.2, Mesa-22.3.5, and texlive-20220321 (or install-tl-unx)

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/fltk

Installation of FLTK

Note

The tar extraction directory is fltk-1.3.8 and not fltk-1.3.8-source as indicated by the tarball name.

Install FLTK by running the following commands:

sed -i -e '/cat./d' documentation/Makefile       &&

./configure --prefix=/usr    \
            --enable-shared  &&
make

If you wish to create the API documentation, issue:

make -C documentation html

The tests for the package are interactive. To execute the tests, run test/unittests. In addition, there are 70 other executable test programs in the test directory that can be run individually.

Now, as the root user:

make docdir=/usr/share/doc/fltk-1.3.8 install

If desired, install some example games built as a part of the tests, extra documentation and example programs. As the root user:

make -C test          docdir=/usr/share/doc/fltk-1.3.8 install-linux &&
make -C documentation docdir=/usr/share/doc/fltk-1.3.8 install-linux

Command Explanations

sed … documentation/Makefile: Avoid installing pages in /usr/share/man/cat*.

Contents

Installed Programs: blocks, checkers, fltk-config, fluid, and sudoku

Installed Libraries: libfltk.{a,so}, libfltk_forms.{a,so}, libfltk_gl.{a,so}, and libfltk_images.{a,so}

Installed Directories: /usr/include/FL and /usr/share/doc/fltk-1.3.8

Short Descriptions

blocks is a FLTK-based block elimination game.

checkers is a FLTK-based version of the game of checkers.

fltk-config is a utility script that can be used to get information about the current version of FLTK that is installed on the system.

fluid is an interactive GUI designer for FLTK.

sudoku is an implementation of the popular Sudoku game.

libfltk.so contains functions that provide an API to implement graphical user interfaces.

25.12 Freeglut-3.4.0


Introduction to Freeglut

Freeglut is intended to be a 100% compatible, completely opensourced clone of the GLUT library. GLUT is a window system independent toolkit for writing OpenGL programs, implementing a simple windowing API, which makes learning about and exploring OpenGL programming very easy.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

Freeglut Dependencies

Required

CMake-3.25.2 and Mesa-22.3.5

GLU-9.0.2

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/freeglut

Installation of Freeglut

Install Freeglut by running the following commands:

mkdir build &&
cd    build &&

cmake -DCMAKE_INSTALL_PREFIX=/usr       \
      -DCMAKE_BUILD_TYPE=Release        \
      -DFREEGLUT_BUILD_DEMOS=OFF        \
      -DFREEGLUT_BUILD_STATIC_LIBS=OFF  \
      -Wno-dev .. &&

make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

-DFREEGLUT_BUILD_DEMOS=OFF: Disable building optional demo programs. Note that if you choose to build them, their installation must be done manually. The demo programs are limited and installation is not recommended.

-DFREEGLUT_BUILD_STATIC_LIBS=OFF: Do not build the static library.

Contents

Installed Programs: None

Installed Library: libglut.so

Installed Directories: /usr/lib/cmake/FreeGLUT

Short Descriptions

libglut.so contains functions that implement the OpenGL Utility Toolkit.

25.13 gdk-pixbuf-2.42.10


Introduction to Gdk Pixbuf

The Gdk Pixbuf package is a toolkit for image loading and pixel buffer manipulation. It is used by GTK+ 2 and GTK+ 3 to load and manipulate images. In the past it was distributed as part of GTK+ 2 but it was split off into a separate package in preparation for the change to GTK+ 3.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

Gdk Pixbuf Dependencies

Required

GLib-2.74.5, libjpeg-turbo-2.1.5.1, libpng-1.6.39, and shared-mime-info-2.2

docutils-0.19, librsvg-2.54.5 (runtime dependency, needed for loading symbolic icons) and libtiff-4.5.0

Optional (Required if building GNOME)

gobject-introspection-1.74.0

Optional

Gi-DocGen-2023.1 (to generate documentation)

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/gdk-pixbuf

Installation of Gdk Pixbuf

Install Gdk Pixbuf by running the following commands:

mkdir build &&
cd    build &&

meson --prefix=/usr --buildtype=release --wrap-mode=nofallback .. &&
ninja

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

sed "/docs_dir =/s@\$@ / 'gdk-pixbuf-2.42.10'@" -i ../docs/meson.build &&
meson configure -Dgtk_doc=true                                         &&
ninja

To test the results, issue: ninja test. The tests make a heavy use of disk.

Now, as the root user:

ninja install

Note

If you installed the package on to your system using a “DESTDIR” method, an important file was not installed and should be copied and/or generated. Generate it using the following command as the root user:

gdk-pixbuf-query-loaders --update-cache

Command Explanations

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

--wrap-mode=nofallback: This switch prevents meson from using subproject fallbacks for any dependency declarations in the build files, stopping it downloading any optional dependency which is not installed on the system.

-Dman=false: Use this option if you do not want to generate manual pages, or if you do not want to install docutils-0.19.

Contents

Installed Programs: gdk-pixbuf-csource, gdk-pixbuf-pixdata, gdk-pixbuf-query-loaders, and gdk-pixbuf-thumbnailer

Installed Libraries: libgdk_pixbuf-2.0.so

Installed Directories: /usr/{include,lib}/gdk-pixbuf-2.0, /usr/libexec/installed-tests/gdk-pixbuf, /usr/share/installed-tests/gdk-pixbuf, /usr/share/gtk-doc/html/gdk-pixbuf, and /usr/share/thumbnailers

Short Descriptions

gdk-pixbuf-csource is a small utility that generates C code containing images, used for compiling images directly into programs.

gdk-pixbuf-pixdata is a tool used to convert GdkPixbuf to GdkPixdata.

gdk-pixbuf-query-loaders collects information about loadable modules for Gdk Pixbuf and writes it to the default cache file location, or to stdout.

gdk-pixbuf-thumbnailer creates thumbnails of pictures for use in other applications.

libgdk_pixbuf-2.0.so contains functions used to load and render images.

25.14 gdk-pixbuf-xlib-2.40.2


Introduction to gdk-pixbuf-xlib

The gdk-pixbuf-xlib package provides a deprecated Xlib interface to gdk-pixbuf, which is needed for some applications which have not been ported to use the new interfaces yet.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

gdk-pixbuf-xlib Dependencies

Required

gdk-pixbuf-2.42.10 and Xorg Libraries

Optional

GTK-Doc-1.33.2

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/gdk-pixbuf-xlib

Installation of gdk-pixbuf-xlib

Install gdk-pixbuf-xlib by running the following commands:

mkdir build &&
cd    build &&

meson --prefix=/usr .. &&
ninja

This package does not come with a test suite.

Now, as the root user:

ninja install

Command Explanations

-Dgtk_doc=true: Use this option if GTK-Doc-1.33.2 is installed and you wish to rebuild and install the API documentation.

Contents

Installed Programs: None

Installed Libraries: libgdk_pixbuf_xlib-2.0.so

Installed Directories: /usr/include/gdk-pixbuf-2.0/gdk-pixbuf-xlib

Short Descriptions

libgdk_pixbuf_xlib-2.0.so provides a Xlib interface to gdk-pixbuf.

25.15 GLEW-2.2.0


Introduction to GLEW

GLEW is the OpenGL Extension Wrangler Library.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

glew Dependencies

Required

Mesa-22.3.5

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/GLEW

Installation of GLEW

Install GLEW by running the following commands:

sed -i 's%lib64%lib%g' config/Makefile.linux &&
sed -i -e '/glew.lib.static:/d' \
       -e '/0644 .*STATIC/d'    \
       -e 's/glew.lib.static//' Makefile     &&
make

This package does not come with a test suite.

Now, as the root user:

make install.all

Command Explanations

sed -i ‘s%lib64%lib%g’ …: This ensures that the library is installed in /usr/lib.

sed -i -e ‘/glew.lib.static:/d’ …: This suppresses the static library.

make install.all: This installs the programs as well as the library.

Contents

Installed Programs: glewinfo and visualinfo

Installed Library: libGLEW.so

Installed Directory: /usr/include/GL

Short Descriptions

glewinfo provides information about the supported extensions.

visualinfo is an extended version of glxinfo.

libGLEW.so provides functions to access OpenGL extensions.

25.16 GLU-9.0.2


Introduction to GLU

This package provides the Mesa OpenGL Utility library.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

GLU Dependencies

Required

Mesa-22.3.5

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/glu

Installation of GLU

Install GLU by running the following commands:

mkdir build &&
cd    build &&

meson --prefix=$XORG_PREFIX -Dgl_provider=gl --buildtype=release .. &&
ninja

This package does not come with a test suite.

Now, as the root user:

ninja install &&
rm -vf /usr/lib/libGLU.a

Contents

Installed Programs: None

Installed Library: libGLU.so

Installed Directories: None

Short Descriptions

libGLU.so is the Mesa OpenGL Utility library.

25.17 GOffice-0.10.55


Introduction to GOffice

The GOffice package contains a library of GLib/GTK document centric objects and utilities. This is useful for performing common operations for document centric applications that are conceptually simple, but complex to implement fully. Some of the operations provided by the GOffice library include support for plugins, load/save routines for application documents and undo/redo functions.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

GOffice Dependencies

Required

GTK+-3.24.36, libgsf-1.14.50, librsvg-2.54.5, libxslt-1.1.37, and Which-2.21

Optional

gobject-introspection-1.74.0, ghostscript-10.00.0, gsettings-desktop-schemas-43.0, GTK-Doc-1.33.2, Lasem, and libspectre

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/goffice010

Installation of GOffice

Install GOffice by running the following commands:

./configure --prefix=/usr &&
make

If you wish to run the tests, issue: make check.

Now, as the root user:

make install

Command Explanations

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild and install the API documentation.

Contents

Installed Programs: None

Installed Libraries: libgoffice-0.10.so

Installed Directories: /usr/include/libgoffice-0.10, /usr/{lib,share}/goffice, and /usr/share/gtk-doc/html/goffice-0.10

Short Descriptions

libgoffice-0.10.so contains API functions to provide support for document centric objects and utilities.

25.18 Grantlee-5.3.1


Introduction to grantlee

Grantlee is a set of free software libraries written using the Qt framework. Currently two libraries are shipped with Grantlee: Grantlee Templates and Grantlee TextDocument. The goal of Grantlee Templates is to make it easier for application developers to separate the structure of documents from the data they contain, opening the door for theming.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

Grantlee Dependencies

Required

CMake-3.25.2 and Qt-5.15.8

Optional

Doxygen-1.9.6 (for documentation)

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/grantlee

Installation of Grantlee

Install Grantlee by running the following commands:

mkdir build &&
cd    build &&

cmake -DCMAKE_INSTALL_PREFIX=/usr \
      -DCMAKE_BUILD_TYPE=Release  \
      .. &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: none

Installed Libraries: libGrantlee_Templates.so and libGrantlee_TextDocument.so

Installed Directories: /usr/lib/cmake/Grantlee5, /usr/lib/grantlee/5.2, and /usr/include/grantlee

Short Descriptions

libGrantlee_Templates.so contains common documentation templates for separating documents from their structure.

libGrantlee_TextDocument.so contains functions that allow separating the content of text documents from their structure.

25.19 Graphene-1.10.8


Introduction to Graphene

The Graphene package provides a thin layer of types for graphics libraries.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

Graphene Dependencies

Required

GLib-2.74.5 and gobject-introspection-1.74.0

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/graphene

Installation of Graphene

Install Graphene by running the following commands:

mkdir build &&
cd    build &&

meson --prefix=/usr --buildtype=release .. &&
ninja

To test the results, issue: ninja test.

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.

-Dgtk_doc=true: Use this switch if you have GTK-Doc-1.33.2 installed and wish to generate the API documentation.

Contents

Installed Programs: None

Installed Libraries: libgraphene-1.0.so

Installed Directories: /usr/include/graphene-1.0, /usr/lib/graphene-1.0, /usr/{libexec,share}/installed-tests/graphene-1.0

Short Descriptions

libgraphene-1.0.so contains functions that provide a thin layer of types for graphics libraries.

25.20 GTK+-2.24.33


Introduction to GTK+ 2

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

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

GTK+ 2 Dependencies

Required

at-spi2-core-2.46.0, gdk-pixbuf-2.42.10 and Pango-1.50.12

hicolor-icon-theme-0.17

Optional

Cups-2.4.2, DocBook-utils-0.6.14, gnome-themes-extra-3.28 (runtime, for Adwaita and HighContrast themes), gobject-introspection-1.74.0 and GTK-Doc-1.33.2

Note

If gobject-introspection-1.74.0 was installed after at-spi2-core-2.46.0, gdk-pixbuf-2.42.10, and/or Pango-1.50.12, those packages will have to be rebuilt before this package can be built.

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/gtk+2

Installation of GTK+ 2

Install GTK+ 2 by running the following commands:

sed -e 's#l \(gtk-.*\).sgml#& -o \1#' \
    -i docs/{faq,tutorial}/Makefile.in      &&

./configure --prefix=/usr --sysconfdir=/etc &&

make

To test the results, issue: make -k check. Note that you must run the tests from a session with X Window Display capability (i.e., not a text-based terminal/console) as the tests attempt to open an X window, and the tests can take an excessively long time. Using an X Window, the tests should take less than 0.1 SBU. One test, aliasfilescheck.sh, is known to fail.

Now, as the root user:

make install

Note

If you installed the package on to your system using a “DESTDIR” method, an important file was not installed and must be copied and/or generated. Generate it using the following command as the root user:

gtk-query-immodules-2.0 --update-cache

Command Explanations

sed -i ‘s#l (gtk-.*).sgml#& -o \1#’ docs/{faq,tutorial}/Makefile.in: If you have DocBook-utils-0.6.14 installed (specifically, if configure finds db2html) then it will try to use it to rebuild some of its HTML documentation and fail due to bugs in some of the Makefiles. This sed fixes the Makefiles.

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild and install the API documentation.

Configuring GTK+ 2

Config Files

~/.gtkrc-2.0, /etc/gtk-2.0/gtkrc, and /usr/share/gtk-2.0/gtkrc

Configuration Information

GTK+ 2 themes change the way a GTK+ 2 application looks. A GTK+ 2 icon theme can be used to change the icons that appear on the application’s toolbar. If you have installed a GTK+ 2 theme (such as gnome-themes-extra-3.28 or GTK Engines-2.20.2), or a GTK+ icon theme (such as adwaita-icon-theme-43) you can set your preferences in ~/.gtkrc-2.0:

cat > ~/.gtkrc-2.0 << "EOF"
include "/usr/share/themes/Glider/gtk-2.0/gtkrc"
gtk-icon-theme-name = "hicolor"
EOF

There are many more themes available at Gnome-Look.org and other places.

Once you’ve settled on themes you like, you can (as the root user) make them the default system wide:

cat > /etc/gtk-2.0/gtkrc << "EOF"
include "/usr/share/themes/Clearlooks/gtk-2.0/gtkrc"
gtk-icon-theme-name = "elementary"
EOF

LXAppearance-0.6.3 is a GTK+ 2 application that can help you choose the themes you like.

Contents

Installed Programs: gtk-builder-convert, gtk-demo, gtk-query-immodules-2.0, and gtk-update-icon-cache

Installed Libraries: libgailutil.so, libgdk-x11-2.0.so, and libgtk-x11-2.0.so

Installed Directories: /etc/gtk-2.0, /usr/include/{gail-1.0,gtk-2.0,gtk-unix-print-2.0}, /usr/lib/gtk-2.0, /usr/share/doc/gtk+-2.24.33, /usr/share/gtk-2.0, /usr/share/gtk-doc/html/{gail-libgail-util,gdk2,gtk2}, and /usr/share/themes/{Default,Emacs,Raleigh}

Short Descriptions

gtk-builder-convert converts glade files into XML files which can be loaded with GtkBuilder.

gtk-demo demonstrates GTK+ 2 functionality and provides code for the examples.

gtk-query-immodules-2.0 collects information about loadable input method modules for GTK+ 2 and writes it to standard output.

gtk-update-icon-cache creates mmap()able cache files for icon themes. Starting with gtk+-2.24.24, add the flag “–include-image-data” to this command, if you wish previous behavior, with image data in the cache.

libgdk-x11-2.0.so contains functions that act as a wrapper around the low-level drawing and windowing functions provided by the underlying graphics system.

libgtk-x11-2.0.so contains functions that provide an API to implement graphical user interfaces.

25.21 GTK+-3.24.36


Introduction to GTK+ 3

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

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

GTK+ 3 Dependencies

Required

at-spi2-core-2.46.0, gdk-pixbuf-2.42.10, libepoxy-1.5.10, and Pango-1.50.12

adwaita-icon-theme-43 (default for some gtk+3 settings keys, also needed for tests), docbook-xsl-nons-1.79.2 (for generating manual pages), hicolor-icon-theme-0.17 (needed for tests), ISO Codes-4.12.0, libxkbcommon-1.5.0, libxslt-1.1.37 (for generating manual pages), sassc-3.6.2, Wayland-1.21.0, and wayland-protocols-1.31

gobject-introspection-1.74.0

Optional

colord-1.4.6, Cups-2.4.2, GTK-Doc-1.33.2, PyAtSpi2-2.46.0 (for tests), Tracker-3.4.2, and PAPI

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/gtk3

Installation of GTK+ 3

Install GTK+ 3 by running the following commands:

mkdir build &&
cd    build &&
meson setup --prefix=/usr           \
            --buildtype=release     \
            -Dman=true              \
            -Dbroadway_backend=true \
            .. &&
ninja

To test the results you need a graphical session, then issue ninja test. Two tests may fail because the time out setting is too short.

Now, as the root user:

ninja install

Note

If you installed the package on to your system using a “DESTDIR” method, an important file was not installed and must be copied and/or generated. Generate it using the following command as the root user:

gtk-query-immodules-3.0 --update-cache

Note

If you installed the package to your system using a “DESTDIR” method, /usr/share/glib-2.0/schemas/gschemas.compiled was not updated/created. Create (or update) the file using the following command as the root user:

glib-compile-schemas /usr/share/glib-2.0/schemas

Command Explanations

-Dbroadway_backend=true: This switch enables the HTML5 GTK backend.

-Dman=true: This switch allows generating manual pages.

-Dgtk_doc=true: This switch enables building documentation. It requires GTK-Doc-1.33.2.

-Dtracker3=true: This switch enables the search function based on Tracker 3 in the GTK+-3 file chooser dialog. It requires Tracker-3.4.2.

Configuring GTK+ 3

Config Files

~/.config/gtk-3.0/settings.ini and /etc/gtk-3.0/settings.ini

Configuration Information

GTK+ 3 themes change the way a GTK+ 3 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+ 3 theme (e.g. the Adwaita theme built in GTK+ 3), an icon theme (such as oxygen-icons5-5.103.0) and/or a font (Dejavu fonts), you can set your preferences in ~/.config/gtk-3.0/settings.ini, or the default system wide configuration file (as the root user), in /etc/gtk-3.0/settings.ini. For the local user an example is:

mkdir -vp ~/.config/gtk-3.0
cat > ~/.config/gtk-3.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-toolbar-style = GTK_TOOLBAR_BOTH_HORIZ
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+ 3 Reference Manual. There are many more themes available at https://www.gnome-look.org/browse/ and other places.

As part of GTK+-3.0’s redesign, the scroll bar buttons are no longer visible on the scrollbar in many applications. If this functionality is desired, modify the gtk.css file and restore them using the following command:

cat > ~/.config/gtk-3.0/gtk.css << "EOF"
*  {
   -GtkScrollbar-has-backward-stepper: 1;
   -GtkScrollbar-has-forward-stepper: 1;
}
EOF

Contents

Installed Programs: broadwayd, gtk3-demo, gtk3-demo-application, gtk3-icon-browser, gtk3-widget-factory, gtk-builder-tool, gtk-encode-symbolic-svg, gtk-launch, gtk-query-immodules-3.0, gtk-query-settings, and gtk-update-icon-cache

Installed Libraries: libgailutil-3.so, libgdk-3.so, and libgtk-3.so

Installed Directories: /etc/gtk-3.0, /usr/include/{gail,gtk}-3.0, /usr/{lib,share}/gtk-3.0, and /usr/share/themes/{Default,Emacs}/gtk-3.0

Short Descriptions

broadwayd provides support for displaying GTK+ 3 applications in a web browser, using HTML5 and web sockets.

gtk3-demo is a simple program that demonstrates some of the tasks that can be done with GTK+ 3.

gtk3-demo-application is a simple GTK+ 3 application.

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

gtk3-widget-factory is a program to view GTK+ 3 themes and widgets.

gtk-builder-tool performs various operations on GtkBuilder .ui files.

gtk-encode-symbolic-svg converts symbolic SVG icons into specially prepared PNG files. GTK+ 3 can load and recolor these PNGs, just like original SVGs, but loading them is much faster.

gtk-launch launches an application using the given name. The name should match the application desktop file name, as residing in /usr/share/applications, with or without the ‘.desktop’ suffix.

gtk-query-immodules-3.0 collects information about loadable input method modules for GTK+ 3 and writes it to the default cache file location, or to standard output.

gtk-query-settings provides a complete listing of all settings related to GTK+ 3.

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

libgailutil-3.so contains functions that implement the accessibility interfaces defined by the GNOME Accessibility Toolkit.

libgdk-3.so contains functions that act as a wrapper around the low-level drawing and windowing functions provided by the underlying graphics system.

libgtk-3.so contains functions that provide an API to implement graphical user interfaces.

25.22 GTK-4.8.3


Introduction to GTK 4

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

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

GTK 4 Dependencies

Required

FriBidi-1.0.12, gdk-pixbuf-2.42.10, graphene-1.10.8, ISO Codes-4.12.0, libepoxy-1.5.10, libxkbcommon-1.5.0, Pango-1.50.12, PyGObject-3.42.2, and wayland-protocols-1.31

adwaita-icon-theme-43 (default for some gtk4 settings keys), gst-plugins-bad-1.22.0, gst-plugins-good-1.22.0 (runtime, built with libvpx-1.13.0), hicolor-icon-theme-0.17 (needed for tests and for defaults), and librsvg-2.54.5

gobject-introspection-1.74.0

Optional

colord-1.4.6, Cups-2.4.2, docutils-0.19, FFmpeg-5.1.2 (built with libvpx-1.13.0), Gi-DocGen-2023.1, Highlight-4.4 (runtime, only used by gtk4-demo for syntax highlighting of demo source code), libcloudproviders-0.3.1, sassc-3.6.2, Tracker-3.4.2, and vulkan

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/gtk4

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 \
            .. &&
ninja

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

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

To run the tests, issue: meson test –setup x11. If you are in a Wayland session, replace x11 with wayland. A few tests may fail.

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.

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

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

-Dtracker=enabled: Use this switch if you have Tracker-3.4.2 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.

-Dgtk_doc=true: Allow building this package without Gi-DocGen-2023.1 installed. If you have Gi-DocGen-2023.1 installed and you wish to rebuild and install the API documentation, a meson configure command will reset this option.

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

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.103.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.

25.23 GTK Engines-2.20.2


Introduction to GTK Engines

The GTK Engines package contains eight themes/engines and two additional engines for GTK2.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

GTK Engines Dependencies

Required

GTK+-2.24.33

Optional

Lua-5.4.4 and Which-2.21 (required for test suite)

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/gtk-engines

Installation of GTK Engines

Install GTK Engines by running the following commands:

./configure --prefix=/usr &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Command Explanations

--enable-lua --with-system-lua: Use these switches if you installed Lua and want to build Lua theming engine.

Contents

Installed Programs: None

Installed Libraries: libclearlooks.so, libcrux-engine.so, libglide.so, libhcengine.so, libindustrial.so, libmist.so, libredmond95.so and libthinice.so (GTK-2 engines libraries)

Installed Directories: /usr/lib/gtk-2.0/2.10.0/engines, /usr/share/gtk-engines, /usr/share/themes/Clearlooks, /usr/share/themes/Crux, /usr/share/themes/Industrial, /usr/share/themes/Mist, /usr/share/themes/Redmond and /usr/share/themes/ThinIce

Installed Themes: Clearlooks, Crux, Industrial, Mist, Redmond and ThinIce

Short Descriptions

engine libraries are manager systems for specific themes.

25.24 Gtkmm-3.24.7


Introduction to Gtkmm

The Gtkmm package provides a C++ interface to GTK+ 3.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

Gtkmm Dependencies

Required

Atkmm-2.28.3, GTK+-3.24.36, and Pangomm-2.46.3

Optional

Doxygen-1.9.6

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/gtkmm3

Installation of Gtkmm

Install Gtkmm by running the following commands:

mkdir gtkmm3-build &&
cd    gtkmm3-build &&

meson --prefix=/usr --buildtype=release .. &&
ninja

To test the results, issue: ninja test. Note that you must be in a graphical environment, as the tests try to open some windows.

Now, as the root user:

ninja install

If you have built the documentation (see Command Explanations below) it was installed to /usr/share/doc/gtkmm-3.0. For consistency, move it to a versioned directory as the root user:

mv -v /usr/share/doc/gtkmm-3.0 /usr/share/doc/gtkmm-3.24.7

Command Explanations

-Dbuild-documentation=true: If you have installed Doxygen-1.9.6 this define will build and install the documentation.

Contents

Installed Programs: None

Installed Libraries: libgdkmm-3.0.so and libgtkmm-3.0.so

Installed Directories: /usr/include/gdkmm-3.0, /usr/include/gtkmm-3.0, /usr/lib/gdkmm-3.0, /usr/lib/gtkmm-3.0, and optionally /usr/share/{devhelp/books/gtkmm-3.0,doc/gtkmm-3.24.7}

Short Descriptions

libgdkmm-3.0.so contains the GDK API classes.

libgtkmm-3.0.so contains the GTK+ 3 API classes.

25.25 gtk-vnc-1.3.1


Introduction to Gtk VNC

The Gtk VNC package contains a VNC viewer widget for GTK+. It is built using coroutines allowing it to be completely asynchronous while remaining single threaded.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

Gtk VNC Dependencies

Required

GnuTLS-3.8.0, GTK+-3.24.36, and libgcrypt-1.10.1

gobject-introspection-1.74.0 and Vala-0.56.4

Optional

Cyrus SASL-2.1.28 and PulseAudio-16.1

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/gtk-vnc

Installation of Gtk VNC

Install Gtk VNC by running the following commands:

mkdir build &&
cd    build &&

meson --prefix=/usr --buildtype=release .. &&
ninja

This package does not come with a test suite.

Now, as the root user:

ninja install

Command Explanations

-Dwith-vala=false: This switch disables building of the Vala bindings. Add this if you decide to build gtk-vnc without vala installed.

Contents

Installed Program: gvnccapture

Installed Libraries: libgtk-vnc-2.0.so, libgvnc-1.0.so and libgvncpulse-1.0.so

Installed Directories: /usr/include/gtk-vnc-2.0, /usr/include/gvnc-1.0 and /usr/include/gvncpulse-1.0

Short Descriptions

gvnccapture is used to capture image from VNC server.

libgtk-vnc-2.0.so contains the GTK+ 3 bindings for Gtk VNC.

libgvnc-1.0.so contains the GObject bindings for Gtk VNC.

libgvncpulse-1.0.so is the PulseAudio bridge for Gtk VNC.

25.26 gtksourceview-3.24.11


Introduction to GtkSourceView

The GtkSourceView package contains libraries used for extending the GTK+ text functions to include syntax highlighting.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

GtkSourceView Dependencies

Required

GTK+-3.24.36

gobject-introspection-1.74.0

Optional

Vala-0.56.4, Valgrind-3.20.0, GTK-Doc-1.33.2, itstool-2.0.7, fop-2.8 (or dblatex), and Glade

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/gtksourceview

Installation of GtkSourceView

Install GtkSourceView by running the following commands:

./configure --prefix=/usr &&
make

To test the results, issue make check. The tests need to be run in a graphical environment.

Now, as the root user:

make install

Command Explanations

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild and install the API documentation.

Contents

Installed Programs: None

Installed Library: libgtksourceview-3.0.so

Installed Directories: /usr/{include,share,share/gtk-doc/html}/gtksourceview-3.0

Short Descriptions

libgtksourceview-3.0.so contains function extensions for the GtkTextView widget.

25.27 gtksourceview4-4.8.4


Introduction to GtkSourceView

The GtkSourceView package contains libraries used for extending the GTK+ text functions to include syntax highlighting.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

GtkSourceView Dependencies

Required

GTK+-3.24.36

gobject-introspection-1.74.0 and libxml2-2.10.3

Optional

Vala-0.56.4, Valgrind-3.20.0, GTK-Doc-1.33.2, itstool-2.0.7, fop-2.8 (or dblatex), and Glade

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/gtksourceview4

Installation of GtkSourceView

Install GtkSourceView by running the following commands:

mkdir build &&
cd    build &&

meson --prefix=/usr --buildtype=release .. &&
ninja

To test the results, issue ninja test. The tests need to be run in a graphical environment.

Now, as the root user:

ninja install

Command Explanations

-Dgtk_doc=true: This option is normally used if GTK-Doc is installed and you wish to rebuild and install the API documentation.

Contents

Installed Programs: None

Installed Library: libgtksourceview-4.so

Installed Directories: /usr/{include,share,share/gtk-doc/html}/gtksourceview-4

Short Descriptions

libgtksourceview-4.so contains function extensions for the GtkTextView widget.

25.28 gtksourceview5-5.6.2


Introduction to GtkSourceView

The GtkSourceView package contains a library used for extending the GTK text functions to include syntax highlighting.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

GtkSourceView Dependencies

Required

GTK-4.8.3 and pcre2-10.42

gobject-introspection-1.74.0 and libxml2-2.10.3

Optional

GTK-Doc-1.33.2, sysprof-3.46.0, Vala-0.56.4, and Valgrind-3.20.0

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/gtksourceview5

Installation of GtkSourceView

Install GtkSourceView by running the following commands:

mkdir build &&
cd    build &&

meson --prefix=/usr --buildtype=release .. &&
ninja

To test the results, issue: ninja test.

Now, as the root user:

ninja install

Command Explanations

-Dgtk_doc=true: Use this switch if you have GTK-Doc-1.33.2 installed and wish to generate the API documentation.

-Dsysprof=true: Use this switch if you have sysprof-3.46.0 installed and wish to build with sysprof profiler support.

Contents

Installed Programs: None

Installed Libraries: libgtksourceview-5.so

Installed Directories: /usr/include/gtksourceview-5 and /usr/share/gtksourceview-5

Short Descriptions

libgtksourceview-5.so contains function extensions for the GtkTextView widget.

25.29 imlib2-1.9.1


Introduction to imlib2

imlib2 is a graphics library for fast file loading, saving, rendering and manipulation.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

imlib2 Dependencies

Required

Xorg Libraries

giflib-5.2.1

Optional

Doxygen-1.9.6 (for API documentation), libpng-1.6.39, libjpeg-turbo-2.1.5.1, libtiff-4.5.0, x265-20230215, and libid3tag

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/imlib2

Installation of imlib2

Install imlib2 by running the following commands:

./configure --prefix=/usr --disable-static &&
make

This package does not come with a test suite.

Now, as the root user:

make install

If you generated the API documentation, install it as the root user:

install -v -m755 -d            /usr/share/doc/imlib2-1.9.1/html &&
install -v -m644    doc/html/* /usr/share/doc/imlib2-1.9.1/html

Command Explanations

--disable-static: This switch prevents installation of static versions of the libraries.

--enable-doc-build: This switch generates the API documentation. Doxygen-1.9.6 must be installed.

Contents

Installed Programs: imlib2_bumpmap, imlib2_colorspace, imlib2_conv, imlib2_grab, imlib2_poly, imlib2_show, imlib2_test, and imlib2_view

Installed Libraries: libImlib2.so and various filters and image loader modules.

Installed Directories: /usr/lib/imlib2, /usr/share/doc/imlib2-1.9.1, and /usr/share/imlib2

Short Descriptions

imlib2_bumpmap is to test the imlib2 bumpmap function.

imlib2_colorspace is to test the imlib2 colorspace function.

imlib2_poly is to test the imlib2 poly function.

imlib2_conv converts images between formats.

imlib2_grab takes screenshots.

imlib2_show is an imlib2 program test.

imlib2_test is an imlib2 program test.

imlib2_view displays image files.

libImlib2.so provides the functions for programs to handle various image data formats.

25.30 kColorPicker-0.2.0


Introduction to kColorPicker

kColorPicker is a QToolButton library with a color popup menu, which lets you select colors. The popup menu features a color dialog button which can be used to add custom colors to the popup menu.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

kColorPicker Dependencies

Required

CMake-3.25.2 and Qt-5.15.8

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/kcolorpicker

Installation of kColorPicker

Install kColorPicker by running the following commands:

mkdir build &&
cd    build &&

cmake -DCMAKE_INSTALL_PREFIX=/usr \
      -DCMAKE_BUILD_TYPE=Release  \
      .. &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: None

Installed Libraries: libkColorPicker.a

Installed Directories: /usr/lib/cmake/kColorPicker

25.31 kImageAnnotator-0.6.0


Introduction to kImageAnnotator

kImageAnnotator is a tool for annotating images.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

kImageAnnotator Dependencies

Required

kcolorpicker-0.2.0

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/kimageannotator

Installation of kImageAnnotator

Install kImageAnnotator by running the following commands:

mkdir build &&
cd    build &&

cmake -DCMAKE_INSTALL_PREFIX=/usr \
      -DCMAKE_BUILD_TYPE=Release  \
      .. &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: None

Installed Libraries: libkImageAnnotator.a

Installed Directories: /usr/include/kImageAnnotator, /usr/lib/cmake/kImageAnnotator, and /usr/share/kImageAnnotator

25.32 keybinder-0.3.1


Introduction to keybinder

The keybinder package contains a utility library registering global X keyboard shortcuts.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

keybinder Dependencies

Required

GTK+-2.24.33

gobject-introspection-1.74.0 and PyGTK-2.24.0

Optional

GTK-Doc-1.33.2 and Lua-5.4.4 (currently broken because an older lua version is required)

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/keybinder

Installation of keybinder

Install keybinder by running the following commands:

./configure --prefix=/usr --disable-lua &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--disable-lua: Use this switch to disable Lua-5.4.4 bindings (currently broken, because older lua version is required).

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild and install the API documentation.

Contents

Installed Programs: None

Installed Library: libkeybinder.so and /usr/lib/python2.7/site-packages/keybinder/_keybinder.so

Installed Directories: /usr/lib/python2.7/site-packages/keybinder and /usr/share/gtk-doc/html/keybinder

Short Descriptions

libkeybinder.so is the library that registers global X keyboard shortcuts.

25.33 keybinder-3.0-0.3.2


Introduction to keybinder-3.0

The keybinder-3.0 package contains a utility library registering global X keyboard shortcuts for GTK+-3.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

keybinder-3.0 Dependencies

Required

GTK+-3.24.36

gobject-introspection-1.74.0

Optional

GTK-Doc-1.33.2

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/keybinder-3.0

Installation of keybinder-3.0

Install keybinder-3.0 by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild and install the API documentation.

Contents

Installed Programs: None

Installed Library: libkeybinder-3.0.so

Installed Directories: /usr/include/keybinder-3.0 and /usr/share/gtk-doc/html/keybinder-3.0

Short Descriptions

libkeybinder-3.0.so is the library that registers global X keyboard shortcuts.

25.34 libadwaita-1.2.2


Introduction to libadwaita

The libadwaita package provides additional GTK4 UI widgets for use in developing user interfaces. It is used primarily for GNOME applications.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

libadwaita Dependencies

Required

GTK-4.8.3

Vala-0.56.4

Optional

Gi-DocGen-2023.1

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libadwaita

Installation of libadwaita

Install libadwaita by running the following commands:

mkdir build &&
cd    build &&

meson setup --prefix=/usr --buildtype=release .. &&
ninja

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

sed "s/apiversion/'1.2.2'/" -i ../doc/meson.build &&
meson configure -Dgtk_doc=true                    &&
ninja

To test the results, issue: ninja test. The tests must be run from a graphical session.

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.

Contents

Installed Programs: adwaita-1-demo

Installed Libraries: libadwaita-1.so

Installed Directories: /usr/include/libadwaita-1

Short Descriptions

adwaita-1-demo provides an example of how to use the libadwaita library.

libadwaita-1.so provides additional GTK widgets for use in creating user interfaces.

25.35 libdazzle-3.44.0


Introduction to libdazzle

libdazzle is a companion library to GObject and GTK+ that adds APIs for special graphical effects.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

libdazzle Dependencies

Required

GTK+-3.24.36

Vala-0.56.4

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libdazzle

Installation of libdazzle

Install libdazzle by running the following commands:

mkdir build &&
cd    build &&

meson --prefix=/usr --buildtype=release .. &&
ninja

To test the results, issue: ninja test.

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.

Contents

Installed Program: dazzle-list-counters

Installed Library: libdazzle-1.0.so

Installed Directory: /usr/include/libdazzle-1.0

Short Descriptions

dazzle-list-counters lists counters that are in use by a process.

libdazzle-1.0.so contains API functions for graphical effects.

25.36 libhandy-1.8.1


Introduction to libhandy

The libhandy package provides additional GTK UI widgets for use in developing user interfaces.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

libhandy Dependencies

Required

GTK+-3.24.36

Vala-0.56.4

Optional

GTK-Doc-1.33.2 and Glade

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libhandy1

Installation of libhandy

Install libhandy by running the following commands:

mkdir build &&
cd    build &&

meson --prefix=/usr --buildtype=release .. &&
ninja

To test the results, issue: ninja test. The tests must be run from a graphical session.

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.

-Dgtk_doc=true: Use this option if you have GTK-Doc-1.33.2 installed and wish to install the documentation.

Contents

Installed Programs: handy-1-demo

Installed Libraries: libhandy-1.so

Installed Directories: /usr/include/libhandy-1

Short Descriptions

handy-1-demo provides an example of how to use the libhandy library.

libhandy-1.so provides additional GTK widgets for use in creating user interfaces.

25.37 Libdrm-2.4.115


Introduction to Libdrm

Libdrm provides a userspace library for accessing the direct rendering manager (DRM) on operating systems that support the ioctl interface. Libdrm is a low-level library, typically used by graphics drivers such as the Mesa DRI drivers, the X drivers, libva and similar projects.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

libdrm Dependencies

Xorg Libraries (for Intel KMS API support required by Mesa)

Optional

Cairo-1.17.6 (for tests), CMake-3.25.2 (could be used to find dependencies without pkgconfig files), docbook-xml-4.5, docbook-xsl-nons-1.79.2, docutils-0.19, and libxslt-1.1.37 (to build manual pages), libatomic_ops-7.6.14 (required by architectures without native atomic operations), Valgrind-3.20.0, and CUnit (for AMDGPU tests)

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libdrm

Installation of Libdrm

Install libdrm by running the following commands:

mkdir build &&
cd    build &&

meson setup  --prefix=$XORG_PREFIX \
             --buildtype=release   \
             -Dudev=true           \
             -Dvalgrind=disabled   &&
ninja

To check the results, issue ninja test.

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.

-Dudev=true: This parameter enables support for using Udev instead of mknod.

-Dvalgrind=disabled: This parameter disables building libdrm with valgrind support. This fixes building sysprof and other packages that use libdrm. Change this parameter to “enabled” (or remove it) if you need support for valgrind.

Contents

Installed Programs: None

Installed Libraries: libdrm_amdgpu.so, libdrm_intel.so, libdrm_nouveau.so, libdrm_radeon.so, and libdrm.so

Installed Directories: /usr/include/libdrm and /usr/share/libdrm

Short Descriptions

libdrm_amdgpu.so contains the AMDGPU specific Direct Rendering Manager functions.

libdrm_intel.so contains the Intel specific Direct Rendering Manager functions.

libdrm_nouveau.so contains the open source nVidia (Nouveau) specific Direct Rendering Manager functions.

libdrm_radeon.so contains the AMD Radeon specific Direct Rendering Manager functions.

libdrm.so contains the Direct Rendering Manager API functions.

25.38 libepoxy-1.5.10


Introduction to libepoxy

libepoxy is a library for handling OpenGL function pointer management.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

libepoxy Dependencies

Required

Mesa-22.3.5

Optional

Doxygen-1.9.6 (for documentation)

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libepoxy

Installation of libepoxy

Install libepoxy by running the following commands:

mkdir build &&
cd    build &&

meson --prefix=/usr --buildtype=release .. &&
ninja

To test the results, issue: ninja test.

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.

-Ddocs=true: If you have Doxygen-1.9.6 installed, add this option to generate additional documentation.

Contents

Installed Programs: None

Installed Libraries: libepoxy.so

Installed Directories: /usr/include/epoxy

Short Descriptions

libepoxy.so contains API functions for handling OpenGL function pointer management.

25.39 libglade-2.6.4


Introduction to libglade

The libglade package contains libglade libraries. These are useful for loading Glade interface files in a program at runtime.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

libglade Dependencies

Required

libxml2-2.10.3 and GTK+-2.24.33

Optional

Python-2.7.18 and GTK-Doc-1.33.2

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libglade

Installation of libglade

Install libglade by running the following commands:

sed -i '/DG_DISABLE_DEPRECATED/d' glade/Makefile.in &&
./configure --prefix=/usr --disable-static &&
make

To test the results, issue: make check. One of the tests, test-convert, is known to fail.

Now, as the root user:

make install

Command Explanations

sed -i ‘/DG_DISABLE_DEPRECATED/d’: Some of the glib functions that libglade uses were declared deprecated in glib-2.30. This sed removes the G_DISABLE_DEPRECATED CFLAG.

--disable-static: This switch prevents installation of static versions of the libraries.

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild and install the API documentation.

Contents

Installed Program: libglade-convert (requires python)

Installed Library: libglade-2.0.so

Installed Directories: /usr/{include/libglade-2.0/glade,share/{gtk-doc/html/libglade, xml/libglade}}

Short Descriptions

libglade-convert is used to convert old Glade interface files to Glade-2.0 standards

libglade-2.0.so contains the functions necessary to load Glade interface files.

25.40 libnotify-0.8.1


Introduction to libnotify

The libnotify library is used to send desktop notifications to a notification daemon, as defined in the Desktop Notifications spec. These notifications can be used to inform the user about an event or display some form of information without getting in the user’s way.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

libnotify Dependencies

Required

GTK+-3.24.36

Optional (Required if building GNOME)

gobject-introspection-1.74.0

Optional

GTK-Doc-1.33.2 and xmlto-0.0.28

Required (runtime)

notification-daemon-3.20.0 or xfce4-notifyd-0.8.1

Note

GNOME Shell and KDE KWin provide their own notification daemons.

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libnotify

Installation of libnotify

Install libnotify by running the following commands:

mkdir build &&
cd    build &&

meson --prefix=/usr       \
      --buildtype=release \
      -Dgtk_doc=false     \
      -Dman=false .. &&
ninja

This package does not come with a test suite.

Now, as the root user:

ninja install &&
mv -v /usr/share/doc/libnotify{,-0.8.1}

Command Explanations

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

-Dgtk_doc=false: Remove this parameter if GTK-Doc is installed and you wish to rebuild and install the API documentation.

Contents

Installed Program: notify-send

Installed Library: libnotify.so

Installed Directories: /usr/include/libnotify and /usr/share/gtk-doc/html/libnotify

Short Descriptions

notify-send is a command used to send notifications.

libnotify.so contains the libnotify API functions.

25.41 libxklavier-5.4


Introduction to libxklavier

The libxklavier package contains a utility library for X keyboard.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

libxklavier Dependencies

Required

GLib-2.74.5, ISO Codes-4.12.0, libxml2-2.10.3 and Xorg Libraries

gobject-introspection-1.74.0

Optional

GTK-Doc-1.33.2 and Vala-0.56.4

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libxklavier

Installation of libxklavier

Install libxklavier by running the following commands:

./configure --prefix=/usr --disable-static &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--disable-static: This switch prevents installation of static versions of the libraries.

--enable-gtk-doc: This parameter is normally used if GTK-Doc is installed and you wish to rebuild and install the API documentation. It is broken for this package due to the use of a long deprecated gtk-doc program that is no longer available.

Contents

Installed Programs: None

Installed Library: libxklavier.so

Installed Directories: /usr/include/libxklavier and /usr/share/gtk-doc/html/libxklavier

Short Descriptions

libxklavier.so contains XKB utility functions.

25.42 Pango-1.50.12


Introduction to Pango

Pango is a library for laying out and rendering text, with an emphasis on internationalization. It can be used anywhere that text layout is needed, though most of the work on Pango so far has been done in the context of the GTK+ widget toolkit.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

Pango Dependencies

Required

Fontconfig-2.14.2 (must be built with FreeType-2.13.0 using HarfBuzz-7.0.0), FriBidi-1.0.12, and GLib-2.74.5

Cairo-1.17.6, gobject-introspection-1.74.0 (Required if building GNOME), and Xorg Libraries

Optional

Cantarell fonts (for tests), sysprof-3.46.0, Gi-DocGen-2023.1 (to generate documentation), help2man, and libthai

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/pango

Installation of Pango

Install Pango by running the following commands:

mkdir build &&
cd    build &&

meson --prefix=/usr --buildtype=release --wrap-mode=nofallback .. &&
ninja

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

sed "/docs_dir =/s@\$@ / 'pango-1.50.12'@" -i ../docs/meson.build &&
meson configure -Dgtk_doc=true                                    &&
ninja

To test the results, issue: ninja test. Two tests, test-font and test-layout are known to fail.

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.

-Dintrospection=disabled: Use this switch if you do not want to use gobject-introspection-1.74.0.

--wrap-mode=nofallback: This switch prevents meson from using subproject fallbacks for any dependency declarations in the build files, stopping it downloading any optional dependency which is not installed on the system.

Configuring Pango

Config Files

/etc/pango/pangorc, ~/.pangorc and the file specified in the environment variable PANGO_RC_FILE

Contents

Installed Programs: pango-list, pango-segmentation, and pango-view

Installed Libraries: libpango-1.0.so, libpangocairo-1.0.so, libpangoft2-1.0.so, and libpangoxft-1.0.so

Installed Directories: /usr/include/pango-1.0 and /usr/share/doc/pango-1.50.12 (if gi-docgen is available)

Short Descriptions

pango-list displays a list of fonts that Pango can use that are currently installed on the system.

pango-segmentation shows text segmentation as determined by Pango.

pango-view renders a given text file through Pango for viewing purposes.

libpango-1.0.so contains low level layout rendering routines, a high level driver for laying out entire blocks of text, and routines to assist in editing internationalized text.

25.43 Pangomm-2.46.3


Introduction to Pangomm

The Pangomm package provides a C++ interface to Pango.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

Pangomm Dependencies

Required

libcairomm-1.14.0, GLibmm-2.66.5 and Pango-1.50.12

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/pangomm

Installation of Pangomm

Install Pangomm by running the following commands:

mkdir build &&
cd    build &&

meson --prefix=/usr --buildtype=release .. &&
ninja

This package does not come with a test suite.

Now, as the root user:

ninja install

Contents

Installed Programs: None

Installed Library: libpangomm-1.4.so

Installed Directories: /usr/include/pangomm-1.4, /usr/lib/pangomm-1.4, and /usr/share/{devhelp/books/pangomm-1.4,doc/pangomm-2.46.3}

Short Descriptions

libpangomm-1.4.so contains the Pango API classes.

25.44 Qt-5.15.8


Introduction to Qt5

Qt5 is a cross-platform application framework that is widely used for developing application software with a graphical user interface (GUI) (in which cases Qt5 is classified as a widget toolkit), and also used for developing non-GUI programs such as command-line tools and consoles for servers. One of the major users of Qt is KDE Frameworks 5 (KF5).

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

Additional Downloads

Qt5 Dependencies

Required

Xorg Libraries

alsa-lib-1.2.8, make-ca-1.12, Cups-2.4.2, double-conversion-3.2.1, GLib-2.74.5, gst-plugins-base-1.22.0 (QtMultimedia backend), HarfBuzz-7.0.0, ICU-72.1, JasPer-4.0.0, libjpeg-turbo-2.1.5.1, libmng-2.0.3, libpng-1.6.39, libtiff-4.5.0, libwebp-1.3.0, libxkbcommon-1.5.0, Mesa-22.3.5, mtdev-1.1.6, pcre2-10.42, SQLite-3.40.1, Wayland-1.21.0 (Mesa must be built with Wayland EGL backend), xcb-util-image-0.4.1, xcb-util-keysyms-0.4.1, xcb-util-renderutil-0.3.10, and xcb-util-wm-0.4.2

Optional

BlueZ-5.66 (for sdpscanner, and at runtime for QtConnectivity module), ibus-1.5.27, libinput-1.22.1, MariaDB-10.6.12 or MySQL, pciutils-3.9.0, PostgreSQL-15.2, PulseAudio-16.1, SDL2-2.26.3, unixODBC-2.3.11, assimp, Flite, Firebird, FreeTDS, libproxy, OpenAL, speech-dispatcher, tslib, and Vulkan

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/qt5

Setting the installation prefix

Installing in /opt/qt5

The BLFS editors recommend installing Qt5 in a directory other than /usr, ie /opt/qt5. To do this, set the following environment variable:

export QT5PREFIX=/opt/qt5

Tip

Sometimes, the installation paths are hardcoded into installed files. This is the reason why /opt/qt5 is used as installation prefix instead of /opt/qt-5.15.8. To create a versioned Qt5 directory after the installation is complete, you may rename the directory and create a symlink:

mkdir -pv /opt/qt-5.15.8
ln -sfnv qt-5.15.8 /opt/qt5

Later on, you may want to install other versions of Qt5. To do that, just remove the symlink and use /opt/qt5 as the prefix again. Which version of Qt5 you use depends only on where the symlink points.

Note

If qca-2.3.5 has been installed and you are reinstalling or updating this package, then qca will need to be reinstalled.

Installation of Qt5

Warning

If Qt5 is being reinstalled into the same directory as an existing instance, run the commands done by root, such as make install, from a console or non-Qt5 based window manager. It overwrites Qt5 libraries that should not be in use during the install process.

Caution

If you did not install some of the recommended dependencies, examine ./configure –help output to check how to disable them or use internal versions bundled in the source tarball.

Note

The build time and space required for the full Qt5 is quite long. The instructions below do not build the tutorials and examples. Removing the -nomake line will create a complete build.

Note

The BLFS editors do not recommend installing Qt5 into the /usr hierarchy because it becomes difficult to find components and to update to a new version. If you do want to install Qt5 in /usr, the directories need to be specified explicitly. In this case, set QT5PREFIX=/usr and add the following to the configure arguments below:

            -archdatadir    /usr/lib/qt5                \
            -bindir         /usr/bin                    \
            -plugindir      /usr/lib/qt5/plugins        \
            -importdir      /usr/lib/qt5/imports        \
            -headerdir      /usr/include/qt5            \
            -datadir        /usr/share/qt5              \
            -docdir         /usr/share/doc/qt5          \
            -translationdir /usr/share/qt5/translations \
            -examplesdir    /usr/share/doc/qt5/examples

First apply a patch to pull in the fixes curated by kde for those modules which are required by packages mentioned in this book:

patch -Np1 -i ../qt-everywhere-opensource-src-5.15.8-kf5-1.patch

The patch is supposed to be used in a git repository, because the behavior of the configure command below is changed in this case. It is enough to create a .git directory in the qmake directory, where the configure script is run:

mkdir -pv qtbase/.git

Install Qt5 by running the following commands:

./configure -prefix $QT5PREFIX                        \
            -sysconfdir /etc/xdg                      \
            -confirm-license                          \
            -opensource                               \
            -dbus-linked                              \
            -openssl-linked                           \
            -system-harfbuzz                          \
            -system-sqlite                            \
            -nomake examples                          \
            -no-rpath                                 \
            -journald                                 \
            -skip qtwebengine                         &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Remove references to the build directory from installed library dependency (prl) files by running the following command as the root user:

find $QT5PREFIX/ -name \*.prl \
   -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \;

Install images and create the menu entries for installed applications. The QT5BINDIR variable is used here to point to the directory for the executable programs. If you have changed the bindir above, QT5BINDIR will need to be adjusted below. Be sure that the QT5BINDIR variable is defined in root’s environment and as the root user:

QT5BINDIR=$QT5PREFIX/bin

install -v -dm755 /usr/share/pixmaps/                  &&

install -v -Dm644 qttools/src/assistant/assistant/images/assistant-128.png \
                  /usr/share/pixmaps/assistant-qt5.png &&

install -v -Dm644 qttools/src/designer/src/designer/images/designer.png \
                  /usr/share/pixmaps/designer-qt5.png  &&

install -v -Dm644 qttools/src/linguist/linguist/images/icons/linguist-128-32.png \
                  /usr/share/pixmaps/linguist-qt5.png  &&

install -v -Dm644 qttools/src/qdbus/qdbusviewer/images/qdbusviewer-128.png \
                  /usr/share/pixmaps/qdbusviewer-qt5.png &&

install -dm755 /usr/share/applications &&

cat > /usr/share/applications/assistant-qt5.desktop << EOF
[Desktop Entry]
Name=Qt5 Assistant
Comment=Shows Qt5 documentation and examples
Exec=$QT5BINDIR/assistant
Icon=assistant-qt5.png
Terminal=false
Encoding=UTF-8
Type=Application
Categories=Qt;Development;Documentation;
EOF

cat > /usr/share/applications/designer-qt5.desktop << EOF
[Desktop Entry]
Name=Qt5 Designer
GenericName=Interface Designer
Comment=Design GUIs for Qt5 applications
Exec=$QT5BINDIR/designer
Icon=designer-qt5.png
MimeType=application/x-designer;
Terminal=false
Encoding=UTF-8
Type=Application
Categories=Qt;Development;
EOF

cat > /usr/share/applications/linguist-qt5.desktop << EOF
[Desktop Entry]
Name=Qt5 Linguist
Comment=Add translations to Qt5 applications
Exec=$QT5BINDIR/linguist
Icon=linguist-qt5.png
MimeType=text/vnd.trolltech.linguist;application/x-linguist;
Terminal=false
Encoding=UTF-8
Type=Application
Categories=Qt;Development;
EOF

cat > /usr/share/applications/qdbusviewer-qt5.desktop << EOF
[Desktop Entry]
Name=Qt5 QDbusViewer
GenericName=D-Bus Debugger
Comment=Debug D-Bus applications
Exec=$QT5BINDIR/qdbusviewer
Icon=qdbusviewer-qt5.png
Terminal=false
Encoding=UTF-8
Type=Application
Categories=Qt;Development;Debugger;
EOF

Some packages such as VLC-3.0.18 look for certain executables with a -qt5 suffix. Run the following command as the root user to create the necessary symlinks:

for file in moc uic rcc qmake lconvert lrelease lupdate; do
  ln -sfrvn $QT5BINDIR/$file /usr/bin/$file-qt5
done

Command Explanations

sed …: Allows using Python 3 instead of Python 2. This command destroys the build for QtWebEngine, so do not use it if you remove the -skip qtwebengine switch.

-confirm-license: Accept license without prompting user during configuration.

-opensource: Install the opensource version of Qt.

-nomake examples: This switch disables building of the example programs included in the source tarball. Remove it if you want to build them.

-system-sqlite: This switch enables use of the system version of SQLite.

-dbus-linked -openssl-linked: These switches enable explicit linking of the D-Bus and OpenSSL libraries into Qt5 libraries instead of dlopen()-ing them.

-journald: This switch allows to send Qt messages to the journald logging system.

-skip qtwebengine: This switch disables building the QtWebEngine. The BLFS editors have chosen to build qtwebengine-5.15.12 separately.

-system-harfbuzz: This switch enables use of the system version of Harfbuzz.

Configuring Qt5

Configuration Information

If Sudo-1.9.13p1 is installed, QT5DIR should be available to the super user as well. Execute the following commands as the root user:

cat > /etc/sudoers.d/qt << "EOF"
Defaults env_keep += QT5DIR
EOF

If you installed Qt5 in /usr

If you installed Qt5 in /usr, create an environment variable needed by certain packages. As the root user:

cat > /etc/profile.d/qt5.sh << "EOF"
# Begin /etc/profile.d/qt5.sh

QT5DIR=/usr
export QT5DIR
pathappend $QT5DIR/bin

# End /etc/profile.d/qt5.sh
EOF

If you did not install Qt5 in /usr

If you installed Qt5 in a location other than /usr, you need to update the following configuration files so that Qt5 is correctly found by other packages and system processes.

As the root user, update the /etc/ld.so.conf file and the dynamic linker’s run-time cache file:

cat >> /etc/ld.so.conf << EOF
# Begin Qt addition

/opt/qt5/lib

# End Qt addition
EOF

ldconfig

As the root user, create the /etc/profile.d/qt5.sh file:

cat > /etc/profile.d/qt5.sh << "EOF"
# Begin /etc/profile.d/qt5.sh

QT5DIR=/opt/qt5

pathappend $QT5DIR/bin           PATH
pathappend $QT5DIR/lib/pkgconfig PKG_CONFIG_PATH

export QT5DIR

# End /etc/profile.d/qt5.sh
EOF

Contents

Installed Programs: assistant, balsam, canbusutil, designer, fixqt4headers.pl, lconvert, linguist, lprodump, lrelease, lrelease-pro, lupdate, lupdate-pro, meshdebug, moc, pixeltool, qcollectiongenerator, qdbus, qdbuscpp2xml, qdbusviewer, qdbusxml2cpp, qdistancefieldgenerator, qdoc, qgltf, qhelpgenerator, qlalr, qmake, qml, qmlcachegen, qmleasing, qmlformat, qmlimportscanner, qmllint, qmlmin, qmlplugindump, qmlpreview, qmlprofiler, qmlscene, qmltestrunner, qmltime, qmltyperegistrar, qscxmlc, qtattributionscanner, qtdiag, qtpaths, qtplugininfo, qtwaylandscanner, qvkgen, rcc, repc, sdpscanner, syncqt.pl, tracegen, uic, xmlpatterns, and xmlpatternsvalidator

Installed Libraries: libQt53DAnimation.so, libQt53DCore.so, libQt53DExtras.so, libQt53DInput.so, libQt53DLogic.so, libQt53DQuick.so, libQt53DQuickAnimation.so, libQt53DQuickExtras.so, libQt53DQuickInput.so, libQt53DQuickRender.so, libQt53DQuickScene2D.so, libQt53DRender.so, libQt5AccessibilitySupport.a, libQt5Bluetooth.so, libQt5Bodymovin.so, libQt5Bootstrap.a, libQt5Charts.so, libQt5Concurrent.so, libQt5Core.so, libQt5DataVisualization.so, libQt5DBus.so, libQt5DesignerComponents.so, libQt5Designer.so, libQt5DeviceDiscoverySupport.a, libQt5EdidSupport.a, libQt5EglFSDeviceIntegration.so, libQt5EglFsKmsSupport.so, libQt5EglSupport.a, libQt5EventDispatcherSupport.a, libQt5FbSupport.a, libQt5FontDatabaseSupport.a, libQt5Gamepad.so, libQt5GlxSupport.a, libQt5Gui.so,libQt5Help.so, libQt5InputSupport.a, libQt5KmsSupport.a, libQt5LinuxAccessibilitySupport.a, libQt5Location.so, libQt5Multimedia.so, libQt5MultimediaGstTools.so, libQt5MultimediaQuick.so, libQt5MultimediaWidgets.so, libQt5Network.so, libQt5NetworkAuth.so, libQt5Nfc.so, libQt5OpenGLExtensions.a, libQt5OpenGL.so, libQt5PacketProtocol.a, libQt5PlatformCompositorSupport.a, libQt5Positioning.so, libQt5PositioningQuick.so, libQt5PrintSupport.so, libQt5Purchasing.so, libQt5Qml.so, libQt5QmlDebug.a, libQt5QmlDevTools.a, libQt5QmlModels.so, libQt5QmlWorkerScript.so, libQt5Quick.so, libQt5Quick3D.so, libQt5Quick3DAssetImport.so, libQt5Quick3DRender.so, libQt5Quick3DRuntimeRender.so, libQt5Quick3DUtils.so, libQt5QuickControls2.so, libQt5QuickParticles.so, libQt5QuickShapes.so, libQt5QuickTemplates2.so, libQt5QuickTest.so, libQt5QuickWidgets.so, libQt5RemoteObjects.so, libQt5Script.so, libQt5ScriptTools.so, libQt5Scxml.so, libQt5Sensors.so, libQt5SerialBus.so, libQt5SerialPort.so, libQt5ServiceSupport.a, libQt5Sql.so, libQt5Svg.so, libQt5Test.so, libQt5TextToSpeech.so, libQt5ThemeSupport.a, libQt5UiTools.a, libQt5VirtualKeyboard.so, libQt5WaylandClient.so, libQt5WaylandCompositor.so, libQt5WebChannel.so, libQt5WebSockets.so, libQt5WebView.so, libQt5Widgets.so, libQt5X11Extras.so, libQt5XcbQpa.so, libQt5XkbCommonSupport.a, libQt5Xml.so, libQt5XmlPatterns.so, and several plugins under /opt/qt5/{plugins,qml}

Installed Directories: /usr/include/qt5, /usr/lib/qt5, /usr/share/doc/qt5, and /usr/share/qt5 OR /opt/qt5 and /opt/qt-5.15.8

Short Descriptions

assistant is a tool for presenting on-line documentation.

balsam is a tool to convert 3D scenes from various creation tools to QML format, for use by the new QtQuick 3D library.

canbustil is a tool to deal with arbitrary CAN bus frames. A Controller Area Network (CAN) is a vehicle bus standard designed to allow microcontrollers and devices to communicate with each other in applications without a host computer.

designer is a full-fledged GUI builder. It includes powerful features such as preview mode, automatic widget layout, support for custom widgets, and an advanced property editor.

fixqt4headers.pl is a script to replace all Qt 4 style includes with Qt 5 includes.

lconvert is part of Qt5’s Linguist tool chain. It can be used as a standalone tool to convert and filter translation data files.

linguist provides support for translating applications into local languages.

lrelease is a simple command line tool. It reads XML-based translation file in TS format and produces message files used by the application.

lrelease-pro extracts project information from qmake projects and passes it to lrelease.

lupdate finds the translatable strings in the specified source, header and Qt Designer interface files, and stores the extracted messages in translation files to be processed by lrelease.

lupdate-pro reads a Qt project file, an passes the collected information to lupdate.

meshdebug displays information about qtquick-3d mesh files.

moc generates Qt meta object support code.

pixeltool is a desktop magnifier and as you move your mouse around the screen it will show the magnified contents in its window.

qcollectiongenerator processes and converts Qt help files.

qdbuscpp2xml takes a C++ source file and generates a D-Bus XML definition of the interface.

qdbus lists available services, object paths, methods, signals, and properties of objects on a bus.

qdbusviewer is a graphical D-Bus browser.

qdbusxml2cpp is a tool that can be used to parse interface descriptions and produce static code representing those interfaces,

qdistancefieldgenerator allows a font cache to be pregenerated for Text.QtRendering to speed up an application’s startup if the user interface has a lot of text, or multiple fonts, or a large amount of distinct characters, e.g. in CJK writing systems.

qdoc is a tool used by Qt Developers to generate documentation for software projects.

qgltf imports a a variety of 3D model formats and exports into fast-to-load, optimized glTF assets embedded into Qt resource files.

qhelpgenerator is a tool used to generate a Qt compressed help file.

qlalr is a tool used to generate code from grammar specifications.

qmake uses information stored in project files to determine what should go in the makefiles it generates.

qml executes a QML file.

qmlcachegen supports the creation of cache files at build time.

qmleasing is a tool used to define the easing curves using an interactive curve editor.

qmlformat formats QML files according to the QML coding conventions.

qmlimportscanner is a tool used to import QML files from a directory.

qmllint is a syntax checker for QML files.

qmlmin removes comments and layout characters from a QML file.

qmlplugindump is a tool to create a qmltypes file.

qmlpreview is a tool used to analyze QML applications.

qmlprofiler is a tool which watches QML and JavaScript files on disk and updates the application live with any changes.

qmlscene is a utility that loads and displays QML documents even before the application is complete.

qmltestrunner is a tool used to make tests.

qscxml converts an input.scxml file to a header and cpp file.

qtattributionsscanner processes qt_attribution.json files in Qt sources.

qtdiag is a tool for reporting diagnostic information about Qt and its environment.

qtpaths is a tool to query Qt path information.

qtplugininfo dumps meta-data about Qt plugins in JSON format.

qtwaylandscanner converts Wayland specfiles to C++ headers and code needed for QtWayland.

qvkgen converts Vulkan specfiles to C++ headers and code.

rcc is a resource compiler used in conjunction with designer.

repc is the Replica Compiler, which generates QObject header files based on an API definition file.

sdpscanner performs a Session Description Protocol scan on a remote device, using the SDP server represented by the local Bluetooth device.

syncqt.pl is a script to create the forwarding headers in the include directories. It is an internal development tool.

tracegen is a trace generator for LTTng or ETW.

uic is a Qt user interface compiler.

xmlpatterns provides support for XPath, XQuery, XSLT, and XML Schema validation.

xmlpatternsvalidator is a tool used to validate XML documents.

25.45 QtWebEngine-5.15.12


Introduction to QtWebEngine

QtWebEngine integrates chromium’s web capabilities into Qt. It ships with its own copy of ninja which it uses for the build if it cannot find a system copy, and various copies of libraries from ffmpeg, icu, libvpx, and zlib (including libminizip) which have been forked by the chromium developers.

This package and browsers using it may be useful if you need to use a website designed for google chrome, or chromium, browsers.

Warning

QtWebEngine uses a forked copy of chromium, and is therefore vulnerable to many issues found there. The Qt developers have always preferred to make releases at the same time as the rest of Qt (rather than adding emergency fixes), but with stable versions getting released after the current development version. Now that they are keen to move to Qt6, the 5.15.3 and later Qt-5.15 releases are initially only available to paying customers. QtWebEngine is something of an exception because of its LGPL licence, but getting the git sources (with the forked chromium submodule) to a position where they will successfully build on a current BLFS system can take a lot of effort and therefore updates to the book may be delayed.

It seems likely that future 5.15-series versions will also be released long after the chromium vulnerabilities are known, but fixes for QtWebEngine can be found in git and the editors take the view that known vulnerabilities in browsers should be fixed.

The tarball linked to below was created from the 5.15 git branch and the 87-branch of the chromium submodule (which is forked from chromium). See the GIT-VERSIONS file in the tarball for details of the latest commits.

This package is known to build and work properly using an LFS 11.3 platform.

Warning

By default, ninja will use all online CPUs +2 (if at least 4 exist), even if they are not available to the current task because the build terminal has been restricted with ‘taskset’. In BLFS, this package takes more time to build than than any other. In one example, the build of this package crashed at about the 90 percent point due to an out of memory problem on a system with 24 cores and 32 GB of memory.

To work around this, see the Command Explanations below.

Note

If you are upgrading and have installed a newer version of ICU-72.1 since you last installed Qt-5.15.8, you will need to reinstall Qt5 before upgrading, otherwise the final link of this package will fail with a warning that the version of icu libraries needed by libQt5Core.so may conflict with the version used for this package.

Unusually, the shipped GN build system (used to create the Ninja files) requires a static libstdc++.a although the installed libraries correctly use the shared version. If that static library is not present, the build will fail quite quickly. Please note that if you try to build webengine as part of Qt and the static library is not available, that build will either complete without installing webengine, or else fail during the install (both variants were observed in 5.12.0).

Package Information

Additional Downloads

qtwebengine Dependencies

Required

nodejs-18.14.1, nss-3.88.1, pciutils-3.9.0, and Qt-5.15.8

Note

If these packages are not installed, the build process will compile and install its own (perhaps older) version, with the side effect of increasing build and installed disk space and build time.

either alsa-lib-1.2.8 or PulseAudio-16.1 (or both), FFmpeg-5.1.2, ICU-72.1 (built before libxml2-2.10.3) , libwebp-1.3.0, libxslt-1.1.37, and Opus-1.3.1

Optional

libevent-2.1.12, MIT Kerberos V5-1.20.1, pipewire-0.3.66, Poppler-23.02.0, jsoncpp, libsrtp, snappy

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/qtwebengine

Installation of qtwebengine

Apply a patch to fix several issues that can prevent the build from completing, and to force it to use python3:

patch -Np1 -i ../qtwebengine-5.15.12-build_fixes-1.patch

Apply a patch that resolves problems when building with ffmpeg-5:

patch -Np1 -i ../qtwebengine-5.15.12-ffmpeg5_fixes-1.patch

Although the build_fixes patch has ensured that git is not invoked during the build, the build system has labyrinthine rules of byzantine complexity, and in particular trying to build without two .git directories will lead to it eventually falling into unexpected and unbuildable code which references a private header that has not been created. Avoid this by creating the required directories:

mkdir -pv .git src/3rdparty/chromium/.git

Because this version of qtwebengine is aimed at a later release than the current public releases, change it to build for qt-5.15.8 using a sed:

sed -e '/^MODULE_VERSION/s/5.*/5.15.8/' -i .qmake.conf

Now, ensure that the local headers are available when not building as part of the complete Qt-5.15.8:

find -type f -name "*.pr[io]" |
  xargs sed -i -e 's|INCLUDEPATH += |&$$QTWEBENGINE_ROOT/include |'

Next, allow the pulseaudio library to be linked at build time, instead of run time. This also prevents an issue with newer pulseaudio:

sed -e '/link_pulseaudio/s/false/true/' \
    -i src/3rdparty/chromium/media/media_options.gni

Next, fix the build tools so they can be run with Python-3.11+:

sed -e 's/\^(?i)/(?i)^/' \
    -i src/3rdparty/chromium/tools/metrics/ukm/ukm_model.py &&
sed -e "s/'rU'/'r'/" \
    -i src/3rdparty/chromium/tools/grit/grit/util.py

Finally, fix a change in the build system which allows its developers to pass e.g. -j20 to make (for quick tests of some areas) but breaks the build with LFS’s use of the NINJAJOBS environment variable:

sed -i 's/NINJAJOBS/NINJA_JOBS/' src/core/gn_run.pro

Install qtwebengine by running the following commands:

mkdir build &&
cd    build &&
qmake .. -- -system-ffmpeg -proprietary-codecs -webengine-icu &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Remove references to the build directory from installed library dependency (prl) files by running the following commands as the root user:

find $QT5DIR/ -name \*.prl \
   -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \;

Command Explanations

qmake: This will build the included copy of ninja if it is not already installed and use it to configure the build.

– -system-ffmpeg -proprietary-codecs -webengine-icu: If any options are passed to qmake they must come after ‘–’ which must follow ‘..’ that points to the main directory. The options here cause it to use system ffmpeg and system icu. The ‘-proprietary-codecs’ option allows ffmpeg to decode H264 and H265 codecs. If built as part of full Qt5, the system icu is automatically used (only) by Qt5Core if it is available, but unless this option is used webengine will always use its shipped copy of icu, adding time and space to the build.

-webengine-jumbo-build 0: If this is added to the qmake command it will cause the ‘Jumbo Build Merge Limit’ to be reported as ‘no’ instead of 8. That turns off the jumbo build. Some distros do that to get a smaller build on some architectures such as MIPS. On x86_64 it might save a little space in the build, but the build time will increase by a very large amount.

-webengine-kerberos: Add this if you have installed MIT Kerberos V5-1.20.1 and wish to connect from a browser using QtWebEngine to a webserver which requires you to connect via kerberos.

NINJAJOBS=4 make: If you patched system ninja in LFS to recognize the NINJAJOBS environment variable, this command will run system ninja with the specified number of jobs (i.e. 4). There are several reasons why you might want to use options like this this:

Configuring QtWebEngine

Configuration Information

If you are upgrading from an older minor version of this application, for some webpages to load you may need to clear the browser caches, e.g. for falkon they will be found in ~/.cache/falkon/. You will need to do this if the browser starts to render the page and then changes to a blank tab with a message that something went wrong, and a button to Retry. Even after removing the old caches, you may need to retry a few times for each affected tab.

If a browser using this package fails to run and when run from a term it reports ‘Trace/breakpoint trap’ that is probably a kernel configuration issue - there is no need to rebuild QtWebEngine, see the next section, recompile the kernel and reboot to the new kernel.

Kernel Configuration

This package does not require any of the optional kernel namespace items, but if User namespace is enabled (as happens in some unit files, for hardening) PID namespace must also be enabled. In that case enable the following options in the kernel configuration and recompile the kernel if necessary:

General setup --->
    -*- Namespaces support --->
        [ ]     User namespace                    [CONFIG_USER_NS]
        [*]     PID namespace                     [CONFIG_PID_NS]

Contents

Installed Programs: qtwebengine_convert_dict and QtWebEngineProcess (in $QT5DIR/libexec)

Installed Libraries: libQt5Pdf.so, libQt5PdfWidgets.so, libQt5WebEngineCore.so, libQt5WebEngine.so, and libQt5WebEngineWidgets.so

Installed Directories: $QT5DIR/include/QtPdf, $QT5DIR/include/QtPdfWidgets, $QT5DIR/include/QtWebEngine, $QT5DIR/include/QtWebEngineCore, $QT5DIR/include/QtWebEngineWidgets, $QT5DIR/qml/QtWebEngine, and $QT5DIR/translations/qtwebengine_locales

Short Descriptions

qtwebengine_convert_dict converts hunspell dictionaries (.dic) to chromium format (.bdic).

QtWebEngineProcess is a libexec program which runs a zygote process (one that listens for spawn requests from a master process and will fork itself in response).

libQtWebEngine.so provides QML types for rendering web content within a QML application.

libQtWebEngineCore.so provides public API shared by both QtWebEngine and QtWebEngineWidgets.

libQtWebEngineWidgets.so provides a web browser engine as well as C++ classes to render and interact with web content.

25.46 startup-notification-0.12


Introduction to startup-notification

The startup-notification package contains startup-notification libraries. These are useful for building a consistent manner to notify the user through the cursor that the application is loading.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

startup-notification Dependencies

Required

Xorg Libraries and xcb-util-0.4.1

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/startup-notification

Installation of startup-notification

Install startup-notification by running the following commands:

./configure --prefix=/usr --disable-static &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -m644 -D doc/startup-notification.txt \
    /usr/share/doc/startup-notification-0.12/startup-notification.txt

Command Explanations

--disable-static: This switch prevents installation of static versions of the libraries.

Contents

Installed Programs: None

Installed Library: libstartup-notification-1.so

Installed Directories: /usr/include/startup-notification-1.0 and /usr/share/doc/startup-notification-0.12

Short Descriptions

libstartup-notification-1.so provides the functions to assist applications in communicating with the cursor system to provide feedback to the user that the application is loading.

25.47 Tepl-6.4.0


Introduction to Tepl

The Tepl package contains a library that eases the development of GtkSourceView-based text editors and IDEs.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

Tepl Dependencies

Required

amtk-5.6.1, gtksourceview4-4.8.4, ICU-72.1, and uchardet-0.0.8

Optional

GTK-Doc-1.33.2 (for documentation) and Valgrind-3.20.0

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/tepl

Installation of Tepl

Install Tepl by running the following commands:

mkdir tepl-build &&
cd    tepl-build &&

meson setup --prefix=/usr       \
            --buildtype=release \
            -Dgtk_doc=false     \
            .. &&
ninja

To test the results, issue: ninja test.

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.

-Dgtk_doc=false: Disables building the API documentation. Remove if you have GTK-Doc-1.33.2 installed and wish to build the API documentation.

Contents

Installed Programs: None

Installed Libraries: libtepl-6.so

Installed Directories: /usr/include/tepl-6 and /usr/share/gtk-doc/html/tepl-6.0

Short Descriptions

libtepl-6.so contains convenience functions for GtkSourceView4-based programs.

25.48 WebKitGTK-2.38.5


Introduction to WebKitGTK

The WebKitGTK package is a port of the portable web rendering engine WebKit to the GTK+ 3 and GTK 4 platforms.

This package is known to build and work properly using an LFS 11.3 platform.

Package Information

WebKitGTK Dependencies

Required

Cairo-1.17.6, CMake-3.25.2, gst-plugins-base-1.22.0, gst-plugins-bad-1.22.0, GTK+-3.24.36, ICU-72.1, Little CMS-2.14, libgudev-237, libsecret-0.20.5, libsoup-3.2.2, libtasn1-4.19.0, libwebp-1.3.0, Mesa-22.3.5, OpenJPEG-2.5.0, Ruby-3.2.1, SQLite-3.40.1, Which-2.21, and wpebackend-fdo-1.14.0

enchant-2.3.3, GeoClue-2.7.0, gobject-introspection-1.74.0, and hicolor-icon-theme-0.17

Optional

bubblewrap-0.7.0, Gi-DocGen-2023.1, GTK-4.8.3, HarfBuzz-7.0.0, Wayland-1.21.0, WOFF2-1.0.2, ccache, Hyphen, libavif, libmanette, and xdg-dbus-proxy

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/webkitgtk

Installation of WebKitGTK

Installation of WebKitGTK

Install WebKitGTK by running the following commands:

mkdir -vp build &&
cd        build &&

cmake -DCMAKE_BUILD_TYPE=Release  \
      -DCMAKE_INSTALL_PREFIX=/usr \
      -DCMAKE_SKIP_RPATH=ON       \
      -DPORT=GTK                  \
      -DLIB_INSTALL_DIR=/usr/lib  \
      -DUSE_LIBHYPHEN=OFF         \
      -DENABLE_GAMEPAD=OFF        \
      -DENABLE_MINIBROWSER=ON     \
      -DENABLE_DOCUMENTATION=OFF  \
      -DUSE_WOFF2=OFF             \
      -DUSE_WPE_RENDERER=ON       \
      -DENABLE_BUBBLEWRAP_SANDBOX=OFF \
      -Wno-dev -G Ninja ..        &&
ninja

This package does not have a working test suite. However, there is a usable basic graphical web browser in the build directory, build/bin/MiniBrowser. If launching it fails, there is a problem with the build.

Now, as the root user:

ninja install

As the -DENABLE_DOCUMENTATION=OFF option is used, the documentation is not rebuilt nor installed now. If you need the documentation, you can either install Gi-DocGen-2023.1 and remove this option from the cmake command, or install the pre-built documentation instead:

install -vdm755 /usr/share/gtk-doc/html/{jsc-glib,webkit2gtk{,-web-extension}}-4.1 &&
install -vm644  ../Documentation/jsc-glib-4.1/*              \
                /usr/share/gtk-doc/html/jsc-glib-4.1         &&
install -vm644  ../Documentation/webkit2gtk-4.1/*            \
                /usr/share/gtk-doc/html/webkit2gtk-4.1       &&
install -vm644  ../Documentation/webkit2gtk-web-extension-4.1/* \
                /usr/share/gtk-doc/html/webkit2gtk-web-extension-4.1

Command Explanations

-DUSE_LIBHYPHEN=OFF: This switch disables the default automatic hyphenation implementation. You need to install Hyphen if you wish to enable it (replacing OFF with ON or just removing the switch).

-DENABLE_DOCUMENTATION=OFF: This switch disables regenerating the documentation. Remove this switch if you have Gi-DocGen-2023.1 installed and wish to regenerate the documentation.

-DENABLE_GAMEPAD=OFF: This switch disables gamepad support. Remove this switch if you have libmanette installed and wish to enable it.

-DENABLE_MINIBROWSER=ON: This switch enables compiling and installing the MiniBrowser.

-DUSE_WPE_RENDERER=ON: This switch uses the WPE renderer, which is recommended by upstream.

-DENABLE_BUBBLEWRAP_SANDBOX=OFF: Remove this switch if the optional packages bubblewrap-0.7.0 and xdg-dbus-proxy are installed.

-DUSE_SYSTEM_MALLOC=ON: This switch enables building against the system installed malloc.

-DENABLE_GEOLOCATION=OFF: Use this switch if you don’t want to install GeoClue-2.7.0.

-DUSE_WOFF2=ON: Use this switch if the optional package WOFF2-1.0.2 is installed. This adds additional support for fonts.

Contents

Installed Program: WebKitWebDriver

Installed Libraries: libjavascriptcoregtk-4.1.so and libwebkit2gtk-4.1.so

Installed Directories: /usr/include/webkitgtk-4.1, /usr/lib{,exec}/webkit2gtk-4.1, and /usr/share/gtk-doc/html/{jsc-glib,webkit2gtk{,-web-extension}}-4.1

Short Descriptions

WebKitWebDriver allows debugging and automation of web pages and browsers.

libjavascriptcoregtk-4.1.so contains core JavaScript API functions used by jsc and libwebkit2gtk-4.1.

libwebkit2gtk-4.1.so contains the WebKit2 API functions.