Skip to the content.

Developers setup

Requirements

Diffuse depends on these projects:

Install the system dependencies

It’s a bit difficult to get the command lines for all the systems, but these examples should be enough to find the packages on most systems.

Debian/Ubuntu ```sh sudo apt install python3-pip libcairo2-dev libgirepository1.0-dev meson flatpak flatpak-builder ``` _Note: Tested on Debian 11 (Buster) and Ubuntu 20.04 (Focal)_
Fedora ```sh sudo dnf install python-pip cairo-devel cairo-gobject-devel meson flatpak flatpak-builder ``` _Note: Tested on Fedora 36_
macOS On Mac, all dependencies can be installed using [Homebrew](https://docs.brew.sh/): ```sh brew install meson python3 py3cairo pygobject3 gtk+3 librsvg ``` _Note: Tested on macOS 12.5 (Monterey)_

Install the project dependencies

To install the requirements just to execute the binary, run:

pip3 install -r requirements.txt

For developer tools, run this one instead (it includes requirements.txt):

pip3 install -r requirements.dev.txt

Install git hooks (optional)

There is a pre-commit git hook that runs some linters on the source code before committing.

To install the git hooks (for the repository only), run this command:

git config --local core.hooksPath ./.githooks

Setup

Setup on Linux using Flatpak

Build, test and install

To build, test and install Diffuse locally:

flatpak install runtime/org.gnome.Sdk/$(uname -m)/46
flatpak-builder --user --install build-flatpak io.github.mightycreak.Diffuse.yml

Run

To run Diffuse through Flatpak:

flatpak run --user io.github.mightycreak.Diffuse

Uninstall

To uninstall Diffuse:

flatpak remove --user io.github.mightycreak.Diffuse

Setup on Linux using Meson

Build and test

Diffuse is using Meson as its build system.

To build and test Diffuse:

meson setup build
meson compile -C build
meson test -C build

Install on system and run

To install Diffuse on your system (e.g. /usr/local/):

meson install -C build  # requires admin privileges

To run Diffuse:

diffuse

Install in a custom directory and run

Meson allows to change the default installation directories, see command-line documentation.

To install Diffuse in a custom directory (e.g. ~/bin/diffuse):

meson install -C build --destdir ~/bin/diffuse

To run Diffuse:

export PYTHONPATH=$HOME/bin/diffuse/usr/local/share/diffuse
cd ~/bin/diffuse/usr/local/bin
./diffuse

Uninstall

To uninstall Diffuse afterwards:

sudo ninja uninstall -C build
sudo rm -v /usr/local/share/locale/*/LC_MESSAGES/diffuse.mo

Setup on macOS

Build and test

Diffuse is using Meson as its build system, this is the only supported system on macOS.

To build and test Diffuse:

meson setup build
meson compile -C build
meson test -C build

Install on system and run

To install Diffuse on your system (e.g. /Applications/ and /opt/homebrew/ or /usr/local/):

meson install -C build  # requires admin privileges

To run Diffuse:

diffuse

Note: The diffuse command can be used to launch Diffuse as a native Mac app that is installed into /Applications/Diffuse.app.

Setup on Windows (deprecated)

Note: The Windows port is not maintained and would need some love. Contributions are very welcome! 😉

The windows-installer directory contains scripts for building an installable package for Windows that includes all dependencies.

Diffuse can be packaged as a portable application by copying the installation directory to a pen drive and creating a front end that sets the XDG_CONFIG_HOME and XDG_DATA_DIR environment variables prior to launching Diffuse. The XDG_CONFIG_HOME and XDG_DATA_DIR environment variables indicate where Diffuse should store persistent settings (eg. the path to a writable directory on the pen drive).