SaraSort: Flet GUI for configuring SaraSortd

Flowchart of inputs/outputs with editable arrows, service page (status,
controls, autostart, version, logs), config editor (form + raw), templates,
tools (warnings, filename tester, failed files) and settings with
SaraFem-compatible export/import. AppImage build and a SaraSuite manifest
in Packaging/.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
sarahandClaude Opus 5.5 committed 2026-10-07 22:23:36 +02:00
commit f7ed23edf9
22 files changed
+3399

No files matched your search

+64
View File
@@ -0,0 +1,64 @@
# SaraSort
A GUI for configuring [SaraSortd](https://git.srhtnin.garden/sarah/SaraSortd), built with Flet.
SaraSort doesn't sort anything itself: SaraSortd stays the backend, and SaraSort reads and edits its
configs and controls its systemd user service.
Needs SaraSortd **7.1** or newer for arrows with their own patterns (per-entry `ValidInputDirs`).
## Pages
- **Flow**: every input (red), output (blue) and both (purple) directory as a box, with arrows labelled
with the file patterns that travel along them. Click a label to see all of its patterns. Boxes start in
columns and can be dragged (positions are kept in `Layout.toml`).
In **Edit mode**: click a directory, then the one it should sort into, and type the patterns. Each
pattern becomes its own `[[Files]]` entry in the output's config, with its own `ValidInputDirs`, and
the other settings come from `OutputDirConf.toml` (the template). Click a label to add or remove
patterns, remove the arrow, or save it as a template. Click a box to remove it or open its config.
- **Service**: running/stopped, start/stop/restart, start on login, SaraSortd's version (and the
SaraSuite install it came from), and its logs: its own log files or the systemd journal.
- **Configs**: `GlobalConf.toml`, the two templates and every directory's own config, as a form (with
help text, a live NewFileName preview and variable buttons) or as raw TOML. Saving only writes the
values you changed, so SaraSortd's own NextNum/NextChar/LastFile updates aren't overwritten.
- **Templates**: ready-made connections (Pictures, Videos, Music, Documents, Archives, Git repositories,
Logs, 3D printing, Installers, Backup copy) that only ask for an input and an output. Your own templates
are TOML files in `~/.config/SaraSuite/SaraSort/Templates/`.
- **Tools**: warnings about the setup (Unset values, version mismatches, outputs nothing reaches, inputs
without outputs, entries shadowed by a catch-all), a filename tester that shows where a file would go
and why, and the files in FailedDir with a retry button.
- **Settings**: the shared SaraSuite appearance, SaraSort's own settings, where SaraSortd lives, and
export/import in the same file format as SaraFem's (`[SaraSuite]` plus `[SaraSort]`).
After a change to `GlobalConf.toml` (new inputs or outputs) SaraSort restarts SaraSortd, since SaraSortd
only reads that file when it starts. That can be turned off in Settings.
## Where things live
| Path | What |
| --- | --- |
| `~/.config/SaraSuite/Config.toml` | shared SaraSuite settings (theme, font, title bar) |
| `~/.config/SaraSuite/Themes/` | the themes |
| `~/.config/SaraSuite/SaraSort/Config.toml` | SaraSort's own settings |
| `~/.config/SaraSuite/SaraSort/Layout.toml` | where flowchart boxes were dragged to |
| `~/.config/SaraSuite/SaraSort/Templates/` | your own templates |
| `~/.config/SaraSuite/SaraSortd/` | SaraSortd's configs, as SaraSuite installs them (changeable in Settings) |
## Running and building
- From source: `python3 -m venv .venv && .venv/bin/pip install -r requirements.txt`, then `Packaging/Launch.sh`.
- AppImage: `Packaging/BuildAppImage.sh` builds `dist/SaraSort-x86_64.AppImage` (PyInstaller one-file
build + `appimagetool`, like SaraSuite's and SaraFem's).
- SaraSuite: `Packaging/SaraSuite/` is a ready manifest (`Manifest.toml` + `Templates/`) to copy into
SaraSuite's `Programs/SaraSort/`.
## Files
| File | What |
| --- | --- |
| `Main.py` | window, navigation |
| `Core.py` | paths, palette/theme, settings, export/import |
| `Sortd.py` | SaraSortd's configs: the graph, edits, the filename simulator, warnings |
| `Service.py` | systemctl and journalctl |
| `Templates.py` | built-in and your own templates |
| `Widgets.py` | the shared App context and small controls |
| `*Page.py` | one per page |