ii-snap takes complete snapshots of an end-4 illogical-impulse Hyprland setup, every config, font and toggle, and puts it all back exactly as it was when a dothop or a bad edit goes sideways.
Older snapshot tools had to guess which files belonged to a setup by scanning for paths that looked right. ii's installer writes down every file it installs. ii-snap simply reads that list.
Walk your home folder and keep anything whose path contains the setup's name. Misses things, grabs strays, and you never quite know which.
find ~ -path '*caelestia*'Every file listed in the installer's own manifest that exists on disk, plus the few files ii changes at runtime that the installer doesn't list.
~/.config/illogical-impulse/installed_listfileStdlib-only Python, nothing to configure. Snapshots live in ~/Backups/ii-snap.
Anything about to be overwritten is moved aside to .pre-restore-<time> first, with collision-safe names.
Checks a snapshot's own files for corruption, and restore refuses a damaged snapshot unless you insist.
See exactly what changed between a snapshot and your system right now, before touching anything.
Pin a known-good snapshot so it's the default for show, diff and restore.
Things that remember "which file is selected" with a link keep working after a restore.
A systemd user timer takes a snapshot every week and prunes beyond the newest ten.
git clone https://github.com/rusty-workshop/ii-snap && cd ii-snap uv tool install --editable . ii-snap snapshot # first snapshot ii-snap star "$(ii-snap list | tail -1)" # weekly snapshots cp systemd/ii-snap.{service,timer} ~/.config/systemd/user/ systemctl --user enable --now ii-snap.timer