About this project
gaur is a TUI (terminal user interface) for Arch Linux package management built in Go. It wraps pacman, an AUR helper (paru or yay), and fzf to provide a single keyboard-driven interface for common package operations.
**Search & install**
- Fuzzy ranking powered by fzf with match highlighting.
- Repo-scoped query prefixes: c: (core), e: (extra), m: (multilib), a: (AUR). Prefixes combine, e.g. ae:firefox searches AUR and Extra.
- Mark multiple packages with Tab and operate on them in one command.
- Live details pane showing repository, version, license, and upstream URL.
**Maintenance**
- Dashboard with package counts, disk usage bars, and repository distribution.
- Full system update or selective update of a hand-picked subset.
- Cache cleaner with keep policies and per-package selective cleaning.
- Orphan detection and one-key removal.
**Interface**
- Eleven built-in themes (Catppuccin variants, Dracula, Gruvbox, Monokai Pro, One Dark, Rose Pine, Solarized Dark, Tokyonight) with live preview while scrolling.
- Custom TOML theme support via --export-themes.
- Mode-specific coloring, centered dialogs, mouse wheel support.
- Settings menu (comma key) to swap theme, AUR helper, and border type without restarting.
**Modes**: install, dashboard, remove, and update, switchable via i/d/r/u keys or Alt+number shortcuts.
**Search filters in remove mode**: t: (all installed), e:/l: (explicitly installed), f:/a: (foreign/AUR packages), o: (orphaned).
**Security approach**: Commands are built as argument arrays, never shell strings. Package names are checked against a strict allowlist, config values are clamped rather than trusted, and CI runs dedicated command-injection, privilege-escalation, and TUI-spoofing tests alongside gosec, CodeQL, and govulncheck.
**How it works**: Repository packages are read once with pacman -Sl and held in memory; typing does not shell out to pacman on each keystroke. Each keystroke pipes the combined repo + AUR list through fzf --filter. AUR queries require a minimum of two characters, avoid duplicate requests, and drop stale responses. Install, removal, and update operations run through tea.ExecProcess so sudo prompts and conflict resolution behave as they would outside gaur.
**Requirements**: Arch Linux or an Arch-based distribution, an AUR helper (paru or yay), fzf, paccache from pacman-contrib, and Go 1.24+ if building from source.
**Installation**: Available on the AUR as gaur-bin (paru -S gaur-bin or yay -S gaur-bin), via go install, or by building from source.
**Configuration**: Writes ~/.config/gaur/config.toml on first run, covering default startup mode, UI theme and border type, AUR helper choice, install/remove flags, cache tool, and debounce timing. Most settings can also be edited live from the in-app settings menu.
Licensed under GPL-3.0.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.