Inflorescence
A cross-platform native GUI for Pijul aiming for a pleasant UX, heavily inspired by Magit, built using iced.
The core principles are:
- Quick and easy to navigate and to execute common actions
- Everything can be done with keyboard only (though mouse is also supported)
- Show a menu of possible commands to aid exploration
- Be responsive (use async)
- Logic separated from UI implemention to allow reuse to build e.g. TUI, Emacs or other integrations
Feature highlights:
- Watches over the active files (respecting
.ignore filter) to always show up-to-date state
- Shows diffs in context (currenly only supported in changed files, recorded changes diffs don't yet have it)
- Can compare local against a remote repository
- Interactive recording change selection
- You can keep editing files with some to-record selection (these are the toggles next to changed files and hunks)
- Allows to toggle individual files and hunks
- Note that the state of toggles is currently not persisted (selects all on app restart)
- Project finder with support for Git repo import
- Automatically searches sub directories for Pijul and Git repositories
- Previously managed projects are persisted (ordered by last closed timestamp)
- Can render images tracked in Pijul (currently only able to show the latest version)
- You can inspect logs and diffs of other channels without switching to them
This project is developed and tested on Linux, but it should work elsewhere too. Issue reports are welcome!
Config
Known projects are stored in ~/.config/inflorescence/projects.toml.
Key bindings are not yet configurable (though you can change them in the source in inflorescence_model/src/action.rs).
Install
cargo install --path inflorescence
Add a desktop shortcut
Linux
# Copy the .desktop file
cp contrib/holonyte-inflorescence.desktop ~/.local/share/applications/
# Copy the app icon
cp assets/icon.png ~/.local/share/icons/inflorescence.png