Universal Linux Application Uninstaller & Deep-Clean Residual Purger
Technical Overview
When software is uninstalled using conventional Linux package managers (pacman -R, apt remove, dnf remove, flatpak uninstall, snap remove), only package-managed system files (/usr/bin, /usr/share) are modified. User-space and container storage directories remain orphaned on disk:
~/.config/<app>(user configuration state & credentials)~/.cache/<app>(accumulated runtime caches, shader caches, webview stores)~/.local/share/<app>(local databases, media, and state)~/.local/state/<app>(session histories and temporary state)~/.var/app/<app>(Flatpak sandboxed data)~/snap/<app>(Snap snapshots and application state)/var/log/<app>and systemd journal archives
Over time, unmanaged leftovers consume gigabytes of valuable storage. Modern Linux setups also suffer from package fragmentation across native repositories, universal containers, and developer toolchains.
VEET bridges this gap: it scans all installed targets across 17+ package managers concurrently, stages candidate residual paths for interactive inspection, and executes atomic uninstalls with batched, single-prompt privilege elevation.
Comparison Matrix
| Feature | pacman -R / apt |
flatpak uninstall |
bleachbit |
veet |
|---|---|---|---|---|
| Binary Removal | Yes | Yes | No | Yes (17+ Sources) |
User Config Cleanup (~/.config) |
No | No | Partial | Yes (Inspected & Staged) |
User Cache Cleanup (~/.cache) |
No | No | Yes | Yes (Inspected & Staged) |
Sandbox Cleanup (~/.var/app, ~/snap) |
No | Partial | No | Yes (Deep detection) |
| Universal Multi-Source Aggregator | No | No | No | Yes (Native, Containers, CLI tools) |
| Orphaned Dependency Pruning | Manual query | No | No | Yes (Live detection) |
| Portable Binary Scanner (AppImage) | No | No | No | Yes (Auto-discovered) |
| Interactive Terminal UI (TUI) | No | No | GTK Only | Yes (7 Themes, Streaming Scan Matrix) |
Advanced Query Syntax (@source, >size) |
No | No | No | Yes (Full modifier support) |
| Pre-execution Dry-run Inspection | Partial | Partial | Yes | Yes (Full path inspection & --dry-run) |
| Batched Sudo Elevation | Per command | N/A | Full root required | Yes (Single prompt per batch) |
Core Capabilities
Installation
Option 1: Arch Linux (AUR)
Install via your preferred AUR helper:
yay -S veet
# or
paru -S veet
For the latest development git build:
yay -S veet-git
Option 2: Automated Script Installation (Recommended)
Downloads, compiles with binary optimizations (-ldflags="-s -w"), installs to ~/.local/bin/veet, and configures shell autocompletions:
# Install latest release
curl -sSL https://raw.githubusercontent.com/swadhinbiswas/veet/main/install.sh | bash
# Or install a specific pinned release tag (e.g. v1.1.0)
curl -sSL https://raw.githubusercontent.com/swadhinbiswas/veet/v1.1.0/install.sh | VEET_VERSION=v1.1.0 bash
Or from a local clone:
./install.sh
Option 3: Go Package Manager
Install directly via the standard Go toolchain (requires Go 1.24+):
go install github.com/swadhinbiswas/veet@latest
Option 4: Manual Compilation via Makefile
git clone https://github.com/swadhinbiswas/veet.git
cd veet
make build
make install
[!NOTE] Ensure
~/.local/binis present in your environment$PATH. If not, addexport PATH="$PATH:$HOME/.local/bin"to your~/.bashrcor~/.zshrc.
Usage
Interactive Terminal Dashboard (TUI)
Launch the full-featured interactive terminal user interface:
veet
Headless Command Line Interface (CLI)
VEET exposes non-interactive headless subcommands for automation, scripting, and system auditing:
# Output installed application inventory table to stdout
veet scan
# Export machine-readable JSON inventory
veet scan --json
# Deep-clean uninstall one or multiple applications (interactive confirmation)
veet clean app1 app2
# Inspect staged paths without deleting anything
veet clean <package-name> --dry-run
# Non-interactive deep-clean removal with auto-confirmation
veet clean <package-name> --yes
# Detect and prune orphaned packages
veet orphans --clean --yes
# Inspect and purge leftover caches and directories
veet cache --clean --yes
# View or clear uninstallation audit history
veet history
veet history --clear
Search Syntax
Press / in the TUI to focus the search bar. VEET supports powerful query modifiers:
| Syntax | Example | Description |
|---|---|---|
@<source> |
@flatpak, @aur, @snap, @brew, @nix |
Filter by specific package manager |
><size> |
>100M, >1G, >500K |
Filter applications larger than specified size |
<<size> |
<50M, <10M |
Filter applications smaller than specified size |
protected:<bool> |
protected:true, protected:false |
Filter by protected component status |
<name> |
gimp, code, node |
Fuzzy-match application name |
[!TIP] Combine Modifiers:
@flatpak >200M gimpfilters for Flatpak apps larger than 200MB matching "gimp".
Theming
VEET features 7 hand-crafted color palettes to seamlessly integrate with your terminal setup. Configure your theme in ~/.config/veet/config.yaml:
theme: catppuccin # Options: cyan, catppuccin, nord, dracula, gruvbox, tokyo-night, monokai
| Theme | Preview Description |
|---|---|
cyan (Default) |
High-contrast neon cyan & indigo accents |
catppuccin |
Warm pastel Catppuccin Mocha palette with mauve highlights |
nord |
Clean arctic Nord blues with frost cyan accents |
dracula |
Iconic Dracula purple & cyan palette |
gruvbox |
Earthy retro Gruvbox amber & warm brown tones |
tokyo-night |
Sleek Tokyo Night deep navy & vibrant cyan |
monokai |
Classic Monokai bright magenta & green accents |
Keybinding Reference
Configuration
VEET supports optional user configuration via YAML. Create ~/.config/veet/config.yaml to customize your visual palette, icon rendering mode, and register protected components:
# Visual theme palette: cyan, catppuccin, nord, dracula, gruvbox, tokyo-night, monokai
theme: catppuccin
# Icon glyph set: auto (default), nerd, unicode, or ascii
# - auto: uses Nerd Fonts unless running in a raw Linux console (TTY) or dumb terminal
# - nerd: always use full Nerd Font symbols (e.g. , , , )
# - unicode: standard universal Unicode symbols (e.g. ◎, ▲, ◆, ▣, ✓, ✗)
# - ascii: pure ASCII text labels with zero font requirements (e.g. [pac], [aur], [v], [x])
icons: auto
# Packages that VEET will refuse to stage or select for deletion
protected_packages:
- custom-kernel-module
- my-critical-service
- proprietary-driver
veet/
├── main.go # Cobra CLI entrypoint (scan, clean, orphans, cache, history, tui)
├── internal/
│ ├── model/ # Data types: AppInfo, RemovableFiles, Config, SourceMeta
│ ├── detector/ # Parallel detector engine (17+ source handlers)
│ ├── uninstaller/ # Staging engine, sudo batching & filesystem removal (Afero)
│ ├── history/ # Append-only audit logger (~/.local/share/veet/history.log)
│ └── ui/ # Bubble Tea & Lip Gloss TUI components with theme engine
├── aur/ # Arch User Repository (AUR) PKGBUILD definitions
├── assets/ # Brand assets & custom vector icons
├── Makefile # Build automation targets
├── install.sh # Automated Bash installer
└── uninstall.sh # Uninstaller script
Uninstallation
From Cloned Source Repository
./uninstall.sh
Manual Removal (Binary & Completions)
# Remove executable binary
rm -f ~/.local/bin/veet
# Remove shell autocompletions
rm -f ~/.local/share/bash-completion/completions/veet
rm -f ~/.local/share/zsh/site-functions/_veet
rm -f ~/.config/fish/completions/veet.fish
# Optionally remove audit logs and configurations
rm -rf ~/.local/share/veet ~/.config/veet
Contributing
Contributions are welcome! Please refer to CONTRIBUTING.md for local development setup, detector implementation guides, and testing protocols.
License
VEET is open-source software licensed under the MIT License.
About
Universal Linux Application Uninstaller & Deep-Clean Residual Purger
- appimage
- bubbletea
- bubbletea-tui
- cleanup
- cli
- debian
- disk-space
- disk-usage
- flatpak
- go
- golang
- linux
- lipgloss
- package-manager
- pacman
- system-cleaner
- terminal
- tui-app
- uninstaller
- uninstaller-tools
Languages
- Go 93.7%
- Shell 6.3%