A GTK front-end for setting up snapper + grub-btrfs on a btrfs root. Works with either the Mint/Ubuntu-desktop @/@home subvolume layout, or a flat top-level subvolume root (subvolid=5, subvol=/), as used by curtin/Ubuntu Server autoinstall.
Once set up, every apt transaction gets automatic pre/post snapshots, a timeline of hourly/daily/weekly snapshots is kept and pruned automatically, and the GRUB boot menu grows a "Btrfs snapshots" submenu so you can boot straight into any snapshot if something goes wrong.
- A btrfs root filesystem, already mounted (this doesn't touch partitioning, run it after the OS install is complete)
- GTK 3 + PyGObject (
python3-gi, usually already installed on GNOME desktops) polkit(for thepkexecauthentication prompt)- Ubuntu/Mint-based (uses
apt)
Grab the latest .deb from Releases and install it:
sudo apt install ./snapperer_*_all.debThis installs a snapperer launcher on your PATH and adds it to your applications menu.
python3 snapperer.pyThe app checks your root filesystem on launch, if it isn't btrfs, the Run button is disabled and it tells you why. Confirm (or override) the user .snapshots should be owned by, then click Run Setup. That triggers a pkexec authentication prompt, then streams the setup's own progress into a live checklist and log as it:
- Installs
snapper,inotify-tools,git,make,gawk - Sets
gawkas the defaultawk(mawkbreaks grub-btrfs's UUID parsing) - Builds
grub-btrfsfrom source (not packaged for Ubuntu/Mint) - Creates the snapper
rootconfig - Fixes
.snapshotspermissions - Enables the snapper timeline + cleanup timers
- Enables
grub-btrfsd(auto-updates the GRUB menu on new snapshots) - Regenerates the GRUB config
- Verifies everything actually took
setup-snapper-grub-btrfs.sh also runs standalone (sudo ./setup-snapper-grub-btrfs.sh) without the GUI, same as before. The GUI just calls it with an explicit --target-user= flag instead of relying on $SUDO_USER, since pkexec (unlike sudo) doesn't set that variable.
Reboot afterward and check the GRUB menu for the "Btrfs snapshots" submenu to confirm.