Differences
This shows you the differences between two versions of the page.
| xfce:4.22:building [2026/10/25 05:54] – created kevinbowen | xfce:4.22:building [2026/11/12 20:07] (current) – sync with changes from main page kevinbowen | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ~~NOTOC~~ | ~~NOTOC~~ | ||
| {{ : | {{ : | ||
| - | ====== Building Xfce from source | + | ~~NOTOC~~ |
| + | ====== Building Xfce from Source | ||
| - | To compile | + | Compiling |
| - | * **[[building# | + | * **[[# |
| - | * **[[building# | + | * **[[# |
| - | * **[[building#Xfce dependencies explained|Xfce dependencies explained]]** | + | * **[[# |
| - | * **[[building# | + | * **[[#From the Code Repository|From the Code Repository]]** |
| - | * **[[building# | + | * **[[# |
| + | * **[[#Build Requirements|Build Requirements]]** | ||
| + | * **[[#Xfce Dependency Chain |Xfce Dependency Chain ]]** | ||
| + | * **[[# | ||
| + | * **[[# | ||
| + | * **[[# | ||
| + | * **[[# | ||
| ---- | ---- | ||
| - | ===== Choosing | + | ===== Choosing |
| - | First you will need to decide on which version of Xfce that you want to compile. Xfce version numbers are constructed like this: 1.2.3 => major.minor.micro. If the minor version is an even number, | + | First you will need to decide on which version of Xfce that you want to compile. Xfce version numbers are constructed like this: '' |
| - | The latest releases | + | It is recommended to keep the '' |
| + | |||
| + | The latest | ||
| ---- | ---- | ||
| - | ===== Obtaining | + | ===== Obtaining Xfce Source Code ===== |
| - | Once you have decided which version that you want to compile, there are a couple of ways to download the source code. You can either choose to build official released packages, or clone the source repositories. | + | Once you have decided which version that you want to compile, there are a couple of ways to download the source code. You can either choose to build official released packages, or clone the source repositories. |
| + | |||
| + | **Buildling from the released packages is the recommended option.** | ||
| + | |||
| + | The source repositories could possibly be broken and are not generally suitable for production environments. However, they always contain the latest features, bug fixes and translations. | ||
| If you are not sure which to choose, it is easiest to begin with the latest stable fat-tarball of a collection release. | If you are not sure which to choose, it is easiest to begin with the latest stable fat-tarball of a collection release. | ||
| - | ==== Released | + | ---- |
| + | |||
| + | ==== Released | ||
| Xfce packages have two types of releases: collection releases and individual releases. Click the links below to open the relevant download location. | Xfce packages have two types of releases: collection releases and individual releases. Click the links below to open the relevant download location. | ||
| - | * [[https:// | + | * [[https:// |
| * [[https:// | * [[https:// | ||
| - | ==== From the code repository | + | ---- |
| + | |||
| + | ==== From the Code Repository | ||
| - | For the latest code, you need to make local copies of the [[https:// | + | For the latest code, you need to make local copies of the [[https:// |
| <note information> | <note information> | ||
| - | You first need to make clones of each GIT repository, like the command below, where '' | + | You first need to make clones of each Git repository, like the command below, where '' |
| git clone https:// | git clone https:// | ||
| - | After the repository is cloned, you will need to choose which branch | + | Once the repository is cloned, you will need to choose which branch to compile. By default, the '' |
| To switch to another branch ('' | To switch to another branch ('' | ||
| Line 50: | Line 67: | ||
| git checkout --track origin/ | git checkout --track origin/ | ||
| - | After this, you can update your local copy of the repository with git pull and switch to another branch with '' | + | After this, you can update your local copy of the repository with the '' |
| [[|Back To Top]] | [[|Back To Top]] | ||
| ---- | ---- | ||
| - | ===== Xfce Dependencies | + | ===== Xfce Dependencies |
| - | ==== Build requirements | + | ==== Build Requirements |
| Before you can start compiling, you need a couple of packages that are required to compile Xfce. Use your distributions package manager to install those packages. Additional packages are required too for some modules, but we'll get to that later. | Before you can start compiling, you need a couple of packages that are required to compile Xfce. Use your distributions package manager to install those packages. Additional packages are required too for some modules, but we'll get to that later. | ||
| Line 63: | Line 80: | ||
| * [[http:// | * [[http:// | ||
| * Gtk+ and Glib headers, in some distributions called the -devel packages | * Gtk+ and Glib headers, in some distributions called the -devel packages | ||
| - | * Xfce 4.20 requires | + | * Xfce 4.22 requires |
| * Same version for gmodule-2.0, | * Same version for gmodule-2.0, | ||
| - | * gdk-pixbuf-2.0 >= 2.42.8 | + | * gdk-pixbuf >= 2.42.10 |
| - | * gobject-introspection >= 1.72 | + | * gobject-introspection >= 1.80.1 |
| - | * wayland 1.20 | + | * wayland |
| - | * wayland-protocols 1.25 | + | * wayland-protocols |
| - | * gtk-layer-shell 0.7.0 | + | * gtk-layer-shell-0 >= 0.8.2 |
| * pkgconfig | * pkgconfig | ||
| - | * meson (Xfce 4.21+) | + | * meson >= 0.61.0 |
| * Coffee or tea | * Coffee or tea | ||
| For history, here are the versions needed for older Xfce releases: | For history, here are the versions needed for older Xfce releases: | ||
| + | * Xfce 4.22 requires Gtk+ 3.24.41 and Glib 2.80.0 | ||
| * Xfce 4.20 requires Gtk+ 3.24 and Glib 2.72 | * Xfce 4.20 requires Gtk+ 3.24 and Glib 2.72 | ||
| * Xfce 4.18 requires Gtk+ 3.24 and Glib 2.66 | * Xfce 4.18 requires Gtk+ 3.24 and Glib 2.66 | ||
| * Xfce 4.16 requires Gtk+ 3.22 and Glib 2.50 | * Xfce 4.16 requires Gtk+ 3.22 and Glib 2.50 | ||
| * Xfce 4.14 requires Gtk+ 3.22 and Glib 2.42 | * Xfce 4.14 requires Gtk+ 3.22 and Glib 2.42 | ||
| - | * Xfce 4.12 requires Gtk+ 2.24 and Glib | + | * Xfce 4.12 requires Gtk+ 2.24 and Glib 2.30 |
| * Xfce 4.10 requires Gtk+ 2.20 and Glib 2.24 | * Xfce 4.10 requires Gtk+ 2.20 and Glib 2.24 | ||
| * Xfce 4.8 requires Gtk+ 2.14 and Glib 2.20 | * Xfce 4.8 requires Gtk+ 2.14 and Glib 2.20 | ||
| * Xfce 4.6 requires Gtk+ 2.10 and Glib 2.12 | * Xfce 4.6 requires Gtk+ 2.10 and Glib 2.12 | ||
| + | ---- | ||
| - | ==== Xfce's dependency chain ==== | + | ==== Xfce Dependency Chain ==== |
| The Xfce packages need to be built in a specific order. If you don't follow this, compile options might not be available or the configure stage will abort because of missing dependencies. | The Xfce packages need to be built in a specific order. If you don't follow this, compile options might not be available or the configure stage will abort because of missing dependencies. | ||
| - | * xfce4-dev-tools (only required if you build with autotools and from GIT) | + | * xfce4-dev-tools (only required if you build with autotools and from Git) |
| * libxfce4util | * libxfce4util | ||
| * xfconf | * xfconf | ||
| Line 98: | Line 117: | ||
| * xfce4-panel, | * xfce4-panel, | ||
| - | ==== Package | + | ---- |
| + | |||
| + | ==== Package | ||
| - | Some core packages in Xfce have additional or optional dependencies, all are listed in the table below for the latest stable version. | + | Some core packages in Xfce have additional, or optional dependencies. They all are listed in the table below for the latest stable version. |
| - | <note tip>Note that some of the package-names may vary between distributions.</ | + | <note tip>Note that some of the package names may vary between distributions.</ |
| - | | ^ Dependency(-ies) | + | | ^ Required Dependencies |
| ^ xfce4-dev-tools | autoconf, automake, intltool, pkgconfig | | | ^ xfce4-dev-tools | autoconf, automake, intltool, pkgconfig | | | ||
| ^ libxfce4util | glib2 | | | ^ libxfce4util | glib2 | | | ||
| Line 123: | Line 144: | ||
| ---- | ---- | ||
| - | + | ===== Building | |
| - | ===== Building | + | |
| <note important> | <note important> | ||
| Line 130: | Line 150: | ||
| Now it is finally time to start compiling the Xfce desktop. Last remaining thing is to choose an installation location. Possible examples are ''/ | Now it is finally time to start compiling the Xfce desktop. Last remaining thing is to choose an installation location. Possible examples are ''/ | ||
| - | ==== Compiling and installing | + | ==== Compiling and Installing |
| Next step is compiling the various packages following the dependency chain above. If you have downloaded the tarballs, you will need to unpack them before going on. Inside each package directory you should run the following command: | Next step is compiling the various packages following the dependency chain above. If you have downloaded the tarballs, you will need to unpack them before going on. Inside each package directory you should run the following command: | ||
| Line 149: | Line 169: | ||
| ---- | ---- | ||
| - | ===== Building the packages (autotools) | + | ===== Finding Additional Help ===== |
| - | <note important> | + | Hopefully everything went fine after reading this guide. More advanced options to build and debug Xfce applications can be found [[https:// |
| - | ==== Installation location and variables ==== | + | If you are still having problems or questions, the following resources are available: |
| - | Now it is finally time to start compiling the Xfce desktop. Last remaining thing is to choose an installation location. Possible examples are '' | + | * **[[https:// |
| + | * **[[https://mail.xfce.org/mailman/listinfo/xfce4-dev|Xfce Developers Mailing List]]** | ||
| + | * **[[https:// | ||
| + | * Distribution-specific questions should be asked on their respective forums and mailing lists. | ||
| - | You need to make sure the '' | + | Have fun building Xfce! |
| - | + | ||
| - | export PKG_CONFIG_PATH=" | + | |
| - | + | ||
| - | You can also set some optimization flags for the compiler. This may speed up Xfce, but can also make debugging impossible on some systems. Even worse, this can also cause gcc to generate broken code, so be careful with this. The line below should be safe for most system. | + | |
| - | + | ||
| - | export CFLAGS=" | + | |
| - | + | ||
| - | If you want a debugging environment, | + | |
| - | + | ||
| - | export CFLAGS="" | + | |
| - | + | ||
| - | ==== Compiling and installing ==== | + | |
| - | + | ||
| - | Next step is compiling the various packages following the dependency chain above. If you have downloaded the tarballs, you will need to unpack them before going on. Inside each package directory you should run the following command: | + | |
| - | + | ||
| - | ./configure --prefix=${PREFIX} && make && make install | + | |
| - | + | ||
| - | To build from GIT you need to install the xfce4-dev-tools package first, all other packages should be installed with this command: | + | |
| - | + | ||
| - | ./ | + | |
| - | + | ||
| - | Specific configure options for each package can be shown with '' | + | |
| - | + | ||
| - | However, if you want to provide backtraces or test new code, no '' | + | |
| - | + | ||
| - | < | + | |
| - | + | ||
| - | If you install the package in a public prefix, for example ''/ | + | |
| - | + | ||
| - | sudo make install | + | |
| - | + | ||
| - | If you want to uninstall the installed files, you can do so by executing: | + | |
| - | + | ||
| - | sudo make uninstall | + | |
| - | + | ||
| - | + | ||
| - | ==== Understanding Debug levels ==== | + | |
| - | + | ||
| - | Most Xfce modules use the m4 macro // | + | |
| - | + | ||
| - | ? no | + | |
| - | ! Cast checks and asserts in the Glib macros are disabled, this might be a tad faster, but it can results in segfaults and unexpected crashes. | + | |
| - | ? minimum | + | |
| - | ! This is the same as '' | + | |
| - | ? yes | + | |
| - | ! A number of '' | + | |
| - | ? full | + | |
| - | ! Same as the level above, including '' | + | |
| [[|Back To Top]] | [[|Back To Top]] | ||
| ---- | ---- | ||
| - | ===== Finding additional Help ===== | ||
| - | Hopefully everything went fine after reading this guide. More advanced options to build and debug Xfce applications can be found [[https:// | + | [[:contribute: |
| - | If you still have problems or questions you can ask on the [[https:// | + | [[: |
| - | + | ||
| - | Have fun building Xfce! | + | |
| - | + | ||
| - | [[|Back To Top]] | + | |
| - | ---- | + | |
| - | [[: | + | |