Thunar - build, test, and debugging suggestions
Building Thunar
First of all, check the Thunar README
Clone the sources (required packages: git):
git clone https://gitlab.xfce.org/xfce/thunar
Enter the cloned folder:
cd thunar
Execute meson (required packages: meson, gobject-introspection):
meson setup build
If any dependencies are missing, meson will tell you. Depending on your distribution, installing the “dev” version of the dependent packages might be sufficient. (e.g. package: libxfc4eutil-2-dev, libxfce4ui-2-dev, … (naming might differ between distributions)) If that does not help, you will need to build and install the dependencies from source as well.
When autogen has finished successfully (all required dependencies have been installed), you can build thunar:
meson compile -C build
For testing only thunar itself, you don't need to install it. You can run it directly from the source folder. (Though if you want to test thunar plugins, you will need to install):
build/thunar/thunar -q;G_MESSAGES_DEBUG=all build/thunar/thunar
Here a workaround to as well test thunar plugin changes (thunar-sbr in this example) without the need to install thunar:
meson compile -C build -Dthunarx-dirs-envvar=true THUNARX_DIRS=~/git/thunar/plugins/thunar-sbr/.libs ./thunar/thunar
Debugging Thunar
For debugging Thunar, I use:
build/thunar/thunar -q; gdb --args build/thunar/thunar
Usually a good idea to bail out on the first warning:
build/thunar/thunar -q; gdb --args build/thunar/thunar --g-fatal-warnings
On a freeze, get a backtrace of all threads via
thread apply all bt
If you want to test thunar-plugins, it is required to install thunar.
You can install Thunar with:
meson install -C build
Note that, per default, Thunar will be installed in parallel to the Thunar of your distribution, into the “/usr” folder. You can uninstall it with:
cd build && ninja uninstall
Thunar Build Flags
Here is a small collection of useful flags which can be passed to meson setup
:
-Dgtk-doc=true : Creates html documentation inside /doc/reference/thunarx/html -Dintrospection=true --buildtype=debug|release|plain
A full list can be found here: https://gitlab.xfce.org/xfce/thunar/-/blob/master/meson_options.txt?ref_type=heads