Map for Linux
A wardley mapping tool for linux: Write some text, get a diagram.
Building
Dependencies
This project uses the following:
rust, the language the project is written in. Required. >= 1.92.meson, the build system used to compile everything. Required. >= 1.0.0gettext, the tooling to compile translations. Required. >= 1.0.0justto run tasks. Recommended if you plan on doing anything more complex than compiling.appstream-util, work with and validate appstream. Required.desktop-file-utils, work with and validate desktop file. Required.- You will need the development libraries for
glib-2.0 >= 2.84.0,gio-2.0 >= 2.84.0,gtk4 >= 4.18.0,libadwaita-1 >= 1.7.0,gtksourceview-5 >= 5.16.0. podman, if you plan on building appimage, rpm, deb, or arch packages.
Compiling
For default settings useful for development, just build
Installing
For a quick local install without packaging:
just install- installs using meson's install command. Might requiresudo.just uninstall- removes installed files
To install to a different prefix use the meson tooling directly.
Code Quality
Testing
Run just test
Formatting and Linting
- To format:
just format - To lint:
just lint
Notes for Developers.
meson.build is the source of truth for the version. To sync versions to
Cargo.toml, rpm spec, etc. use just sync-versions
The convention in this project is to use directories starting with _ for
generated ones to distinguish them from the source more easily. They are all
configurable via the justfile. The defaults are:
_build: The meson build directory._dist: The location where built distributable packages are placed._vendor: The default location in which to output vendored cargo files._repo: The flatpak repo_flatpak: The flatpak build directory
Distributing
Available package formats: deb, rpm, arch pkg.tar.gz, flatpak, and AppImage.
Main Targets
just package- creates all package types for the current architecture (no upload)just distribute- signs and uploads existing packagesjust release- full workflow (package + distribute)
Individual Targets
For more control, use individual package or distribute targets:
just package-deb-all- create .deb packagesjust package-rpm-all- create .rpm packagesjust package-arch- create .pkg.tar.gz packagejust package-appimage- create .AppImage archivejust package-flatpak- create .flatpak bundle
For .deb targets we build for trixie, forky, and sid while for .rpm
targets we build for fedora43, fedora44, and fedora-rawhide. You can build
individual packages by running just package-deb DISTRO or
just package-rpm DISTRO
just distribute-deb- sign and upload .debjust distribute-rpm- sign and upload .rpmjust distribute-arch- sign and upload .pkg.tar.gz packagejust distribute-appimage- sign and upload .AppImagejust distribute-flatpak- sign and upload .flatpak
Flatpak Notes
Since flatpak expects offline building, we use flatpak-cargo-generator to
generate the sources. This will be done every time you run just package-flatpak.
The project assumes flatpak-cargo-generator.py lives in
~/projects/vendor/flatpak-builder-tools/cargo, but you can override this with
the variable flatpak_cargo_generator (eg.
just flatpak_cargo_generator=~/your/path/to/flatpak_cargo_generator package-flatpak
). It expects this directory to have the poetry configuration, as it enables the
virtualenv using poetry.
Uploading
The URL and path of the upload are controlled using two environment variables:
$DISTRIBUTION_HOST and $DISTRIBUTION_PATH. To use them, you can use the
env.dist included, copy it to .env
Localization / Internationalization
This project uses gettext for translations. You can update the template files with:
just extract_strings
This updates the available POTFILES by checking for the presence of the tr!
macro or gettext, and extracts the strings to the template file.
You can then edit the strings using a tool like Poedit.
The wmap language
Learn more about the language at map.tranquil.systems.