# Inflorescence

A cross-platform native GUI for [Pijul]https://pijul.org aiming for a pleasant UX, heavily inspired by [Magit]https://magit.vc, built using [iced]https://iced.rs.

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

```shell
cargo install --path inflorescence
```

## Add a desktop shortcut

### Linux

```shell
# 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  
```