Why pkgtui
The everyday basics of browsing, searching and acting on packages — done once, done well, for both backends at once.
●Two backends, one dashboard
Dedicated tabs for apt and snap, each with its own state. Search, filter, sort by size, view reverse dependencies.
▲Real live output
Install/remove/upgrade run in a real pseudo-terminal, shown live in a bordered box. sudo prompts and debconf dialogs work exactly as they would from the command line.
▲Upgrade all, with a preview
See exactly which packages will change, security updates called out separately, before you confirm anything.
◆11 built-in themes
From classic Dracula, Nord and Gruvbox to Catppuccin, Tokyo Night and Ubuntu's own palette. Browse them live, no restart needed.
○Rebind every key
Change any shortcut from inside the app, live, with a one-key reset back to defaults if it goes sideways.
●PPA & changelog aware
Manage third-party repositories and read a package's changelog before upgrading it, without leaving the TUI.
Beyond wrapping apt and snap
Neither apt nor snap's own tooling answers these on its own — pkgtui does, from the same dashboard.
Old kernel packages apt's own autoremove deliberately leaves behind, leftover config files from already-removed packages, disabled snap revisions nobody ever revisits — with total reclaimable space and a direct purge.
Manual install or pulled in as a dependency, plus a navigable tree of reverse dependencies — drill into any of them to ask the same question again.
Packages installed via both backends at once, and snaps that haven't been refreshed in 6+ months — using the snap's own on-disk file timestamp, not locale-dependent text.
Whether silent background upgrades are enabled, what the last automatic run actually touched, and when the next one is scheduled — normally visible only by digging through log files by hand.
Pick from every version apt-cache madison knows about across your configured repos — useful right after an upgrade turns out to be the one you wanted to avoid.
Snap's own idiomatic undo, from inside the TUI: restores the previous revision's binary and its data/config, not just an older version number.
In action
Searching, inspecting and installing an apt package, live.
Same flow on snap, including the channel picker (c to cycle stable/candidate/beta/edge).
Installation
No verification/store required — grab the asset that fits and install it locally.
# replace <version> with the latest release number, no leading "v"
curl -fLO https://github.com/padovanl/pkgtui/releases/latest/download/pkgtui_<version>_amd64.deb
sudo apt install ./pkgtui_<version>_amd64.deb
# side-loaded, classic confinement — not on the Snap Store
curl -fLO https://github.com/padovanl/pkgtui/releases/latest/download/pkgtui_<version>_amd64.snap
sudo snap install --dangerous --classic pkgtui_<version>_amd64.snap
curl -fLO https://github.com/padovanl/pkgtui/releases/latest/download/pkgtui_<version>_linux_amd64.tar.gz tar -xzf pkgtui_<version>_linux_amd64.tar.gz sudo mv pkgtui /usr/local/bin/
git clone https://github.com/padovanl/pkgtui.git cd pkgtui go build -o pkgtui . sudo mv pkgtui /usr/local/bin/
Full instructions, checksums and arm64 builds on the releases page.
Every key, one dashboard
The complete keybinding reference — also available in-app any time with ?.
| Key | Action |
|---|---|
| ← / → | Switch backend (apt / snap) |
| tab | Switch view (Installed / Upgradable / Orphaned* / Search) |
| / | Search the full apt/snap catalog, then enter to run it |
| f | Filter the packages currently shown, live as you type |
| ↑/↓, j/k | Navigate the list (mouse wheel and clicks work too) |
| enter | Show details for the selected package |
| space | Tag/untag the selected package for a batch action |
| i | Install the selected package, or all tagged packages |
| d | Remove the selected package, or all tagged packages |
| u | Upgrade the selected package |
| U | Upgrade all packages, with a preview first |
| S | Sort the current view by installed size |
| c | Cycle the install channel (while confirming a snap install) |
| H | Hold/unhold the selected package (apt) |
| C | View the selected package's changelog (apt) |
| P | Manage third-party repositories / PPAs (apt) |
| s | Sync the cache (apt-get update; no-op on snap) |
| K | Disk cleanup: old kernels, leftover configs, disabled revisions |
| W | Why is the selected package installed (manual vs. dependency, reverse-dep tree) |
| A | Unattended-upgrades status (apt) |
| O | apt + snap overlap: duplicate installs, stale snaps |
| V | Install a specific version / downgrade (apt); revert (snap) |
| y / n | Confirm / cancel a pending action |
| esc | Go back |
| , | Open settings (theme, keybindings) |
| ? | Toggle the in-app help screen |
| ctrl+l | Force a full screen redraw |
| q | Quit |