A modern, feature‑rich Terminal User Interface (TUI) for Snapper written in Rust. Manage Btrfs/LVM snapshots with speed, safety, and a cyber‑punk aesthetic.
- 🖥️ Modern UI – Cyber‑punk theme with smooth animations.
- 📊 Interactive Dashboard – Sortable, scrollable table of snapshots.
- 🛠️ CRUD Operations
c– Create snapshots with custom description.d– Delete (single or batch via multi‑selection).a– Apply / rollback snapshots.
- 🔎 Search & Filter – Instant filtering (
/) by description, type, user, or ID. - 🔍 Detailed Inspection – View status, metadata, and config of any snapshot.
⚠️ Safety First – Confirmation dialogs for destructive actions.- ⚡ Async Performance – Background processing keeps UI responsive.
- 🖱️ Full Mouse Support – Click, scroll, and select with the mouse.
- Linux system with Snapper installed and configured.
- Root / sudo privileges (required for most snapshot operations).
- Rust toolchain (
rustc&cargo).
# 1️⃣ Install Rust (if not already installed)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# 2️⃣ Clone the repository
git clone https://github.com/ulolol/snapper-TUI-rust.git
cd snapper-TUI-rust
# 3️⃣ Build the binary (release mode)
cargo build --release
# 4️⃣ Run (usually needs sudo)
sudo ./target/release/snapper-TUI-rustsudo ./snapper-TUI-rust
I. Use pre-built binary:
sudo ./snapper-TUI-rust| Key | Action |
|---|---|
q / Q |
Quit application |
c / C |
Create a new snapshot |
d / D |
Delete selected snapshot(s) |
a / A |
Apply (rollback) to selected snapshot |
r / R |
Refresh snapshot list |
s / S |
Get Status of selected snapshot |
/ |
Filter snapshots |
Space |
Toggle Selection (batch ops) |
↑ / ↓ |
Navigate list |
1‑5 |
Sort by column (Number, Type, Date, User, Space) |
Esc |
Cancel popup / Clear filter |
- UI Layer – Powered by
ratatui&crosstermfor terminal rendering.tachyonfxandcolor-to-tuifor visual goodies. - State Management – Central
AppStatestruct holds snapshot list, selection state, and loading overlay. - Async Workers – Snapshot operations run in separate threads, communicating via channels to keep the UI non‑blocking.
- Snapper Wrapper – Thin Rust wrapper around Snapper CLI (
snapper list,snapper create, etc.) handling parsing and error mapping.
# List snapshots (read‑only)
snapper list
# Launch the TUI (requires sudo for write ops)
sudo snapper‑TUI‑rustInside the UI, press c to create a snapshot, d to delete, a to apply, and use / to filter.
Contributions are welcome! Feel free to open issues or submit pull requests.
- Fork the repo.
- Create a feature branch (
git checkout -b feat/awesome-feature). - Open a PR describing your changes.
This project is licensed under the MIT License.
© 2025 Vidish

