# 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.0 * `gettext`, the tooling to compile translations. Required. >= 1.0.0 * `just` to 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 require `sudo`. * `just uninstall` - removes installed files To install to a different prefix: `just install prefix=/opt/map` ## 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` ## Distributing Available package formats: deb, rpm, tar.gz, flatpak. ### Main Targets * `just package` - creates all package types for the current architecture (no upload) * `just distribute` - signs and uploads existing packages * `just release` - full workflow (package + distribute) ### Individual Targets For more control, use individual package or distribute targets: * `just package-deb-all` - create .deb packages * `just package-rpm-all` - create .rpm packages * `just package-arch` - create .pkg.tar.gz package * `just package-appimage` - create .AppImage archive * `just package-flatpak` - create .flatpak bundle * `just distribute-deb-all` - sign and upload .deb * `just distribute-rpm-all` - sign and upload .rpm * `just distribute-arch` - sign and upload .pkg.tar.gz package * `just distribute-appimage` - sign and upload .AppImage * `just distribute-flatpak` - sign and upload .flatpak For `.deb` targets we build for `trixie` and `forky`, 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` ### 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. ## 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][map]. [map]: https://map.tranquil.systems/wmap-language