A terminal user interface (TUI) for managing Arch Linux system updates, installed packages, orphans, and rebuild issues.
Arch updates are easy until they aren't — a Python upgrade breaks half your AUR packages, an orphan you forgot about pulls in a dependency chain, and the news post you didn't read needed manual intervention. upkeep puts all of that in one TUI so you can see what's broken, what's stale, and what needs attention before you hit Enter.
- Updates Tab - View and install pending pacman and AUR updates
- Installed Tab - Browse explicitly installed packages, uninstall or reinstall
- Orphans Tab - Find and remove packages no longer needed as dependencies
- Rebuilds Tab - Detect and fix ABI/version mismatch issues (e.g., after Python/Qt updates) and track custom-patched packages against upstream
- Search Tab - Search and install packages from official repos and AUR
- News Tab - View Arch Linux news with smart highlighting:
!(yellow) - Items requiring manual intervention*(blue) - Items related to your installed packages
- Info Pane - Toggle detailed package/article info with
?key (works on all tabs) - Filtering - Filter package lists by name on Updates and Installed tabs
- Batch Operations - Select multiple packages with Space, select all/none with a/n
yay -S upkeep-gitDownload from GitHub Releases:
tar -xzf upkeep-v*.tar.gz
sudo mv upkeep /usr/local/bin/git clone https://github.com/jakeb-grant/upkeep.git
cd upkeep
cargo build --release
sudo cp target/release/upkeep /usr/local/bin/- An AUR helper (
yayby default, configurable) pacman-contrib— providescheckupdates(update checking) andpaccache(cache cleanup)wl-clipboardorxclip(optional) — clipboard export of package lists
upkeep| Key | Action |
|---|---|
Tab / Shift+Tab |
Switch tabs |
j / k or ↓ / ↑ |
Navigate list |
Space |
Toggle selection |
a / n |
Select all / none |
f |
Enter filter mode (Updates/Installed) |
F or Esc |
Exit filter mode |
? |
Toggle info pane |
r |
Refresh current tab |
q |
Quit |
| Key | Action |
|---|---|
u |
Update selected packages |
Enter |
Update all packages |
c |
Clean package cache |
| Key | Action |
|---|---|
d |
Remove package(s) |
D |
Remove with dependencies |
i |
Reinstall package(s) |
I |
Reinstall from source (AUR rebuild) |
c |
Export package lists to files |
C |
Copy package list to clipboard |
| Key | Action |
|---|---|
d |
Remove package(s) |
D |
Remove with dependencies |
| Key | Action |
|---|---|
Enter |
Run rebuild command |
| Key | Action |
|---|---|
Type |
Search packages |
Enter |
Install selected |
Esc |
Clear search |
| Key | Action |
|---|---|
Shift+↑ / Shift+↓ |
Scroll article |
PgUp / PgDn |
Scroll article (fast) |
r |
Refresh news |
Configuration files are stored in ~/.config/upkeep/.
# AUR helper to use (default: yay)
aur_helper = "yay"Define rebuild checks for applications that break after system updates:
# Error-pattern check: runs a command and looks for error strings in stderr
[[check]]
name = "obs-studio"
command = ["timeout", "3", "obs", "--help"]
error_patterns = ["ABI mismatch", "symbol lookup error"]
rebuild = "yay -S --rebuild obs-studio"You can also track custom-patched packages against their upstream counterparts. When the upstream version is newer than your installed version, the check triggers:
# Version-track check: compares installed version against official repo
[[check]]
name = "libadwaita-custom"
tracks = "libadwaita"
rebuild = "libadwaita-rebuild bump"All configured checks are shown in the Rebuilds tab with their current status (passing or triggered).
MIT