A terminal user interface for winget (Windows Package Manager), built with Go and the Charmbracelet TUI libraries.
Browse, search, install, upgrade, and manage Windows packages without leaving the terminal. WinTUI features a split-panel workspace, batch operations with a single UAC prompt, and a headless CLI mode for scripting.
Requirements: Windows 10/11 with winget installed.
winget install kts982.WinTUIOr install manually:
# Run a release binary
.\wintui.exe
# Or build/install with Go 1.26+
go install github.com/kts982/wintui@latest
# Or clone and build from source
git clone https://github.com/kts982/wintui.git
cd wintui
go build -o wintui.exe .Pre-built binaries are available on GitHub Releases — both .exe and .zip for Windows amd64 and arm64:
gh release download --repo kts982/wintui --pattern '*windows_amd64.exe'Unified Packages Screen
- Split-panel layout — package list on the left, detail summary on the right
- Bordered sections — Updates Available, Installed, Search Results, and Install Queue with package counts and active focus highlighting
- Normalized package actions — press
Spaceto stage the focused package,gto apply staged changes, or usei/u/xfor direct install, upgrade, and uninstall accelerators - Search & Install — press
sto search the winget catalog,Spaceto queue packages,ito install the focused result or the full install queue - Upgrade / Uninstall — stage packages across sections, then apply them together, or use
u/xon the focused package or current selection - Package Details — press
Enteror→for a full detail overlay with version picker (v), homepage (o), release notes (nwhen available), and scrollable metadata - Batch Execution Modal — review selected packages, watch live progress with per-package spinners, view compact results with
Ctrl+Eelevated retry - Version Selection — pick a specific version to install or upgrade to from the detail panel
- Self-upgrade handoff — upgrading
kts982.WinTUInow restarts through a temporary helper so the running.execan be replaced cleanly - Headless CLI — use
--check,--list, and--jsonfor scripts, Task Scheduler, or CI without launching the TUI
System Utilities
- Health Check — shells, dev tools, runtimes, package managers, disk space, Defender, developer mode
- Temp Cleanup — scan and delete temp files older than 7 days
- Settings — persistent config for winget options (scope, architecture, silent/interactive, force, purge, etc.)
UX
- Disk-persistent cache — instant startup from cached data, background refresh for always-fresh results, per-package incremental updates after actions
- Update count badge in the tab bar — see available updates at a glance before winget finishes refreshing
- 4-tab layout: Packages, Cleanup, Health, Settings
- Boxed tab bar with animated gradient ASCII logo
- Context-sensitive help bar that adapts to the active section
- Full help panel on
?with grouped keybindings - Fuzzy filter (
/) on the installed package list - Per-tab screen state preserved across tab switches
- Built-in elevated helper — silent + auto-elevate runs everything elevated upfront, avoiding UAC popups from installers
Ctrl+Eelevated retry on the result modal when auto-elevate is off- Responsive layout — detail panel hides on narrow terminals, compact header on small screens
.\wintui.exeTip: Some operations require administrator privileges. The subtitle bar shows
● admin/● userstatus. Enable Silent mode + Auto Elevate in Settings for hands-off elevated operations, or pressCtrl+Eon the result modal when a package fails. When WinTUI upgrades itself, the result modal will offer a restart handoff to finish the replacement and relaunch the app.
# Human-readable upgrade check
.\wintui.exe --check
# Exit code 1 when updates are available
.\wintui.exe --check || echo "Updates available"
# Machine-readable output
.\wintui.exe --check --json
.\wintui.exe --list --json > packages.jsonFurther documentation:
| Key | Action |
|---|---|
↑↓ / j/k |
Navigate |
Space |
Stage package / queue search result |
Enter / → / l |
Open package details |
← / Esc / h |
Close details / cancel |
s |
Search & install (search winget catalog) |
/ |
Filter installed packages |
g |
Apply staged changes |
u |
Upgrade selected or focused package |
x |
Uninstall selected or focused package |
i |
Install queued packages or focused search result |
a |
Stage all available updates |
v |
Pick version (in detail view) |
c |
Reset to latest version (in detail view) |
o |
Open homepage (in detail view) |
n |
Open release notes URL (in detail view, when available) |
r |
Refresh package data |
Ctrl+E |
Retry failed packages elevated (result modal) |
? |
Toggle full help panel |
| Key | Action |
|---|---|
1-4 |
Switch tabs |
Tab / Shift+Tab |
Cycle tabs |
q |
Quit |
Configurable from the Settings tab, stored in %APPDATA%\wintui\settings.json:
| Setting | Options |
|---|---|
| Install Scope | user / machine / auto |
| Action Mode | auto / silent / interactive |
| Architecture | x64 / x86 / arm64 / auto |
| Default Source | winget / msstore / auto |
| Force | skip non-security issues |
| Allow Reboot | permit reboots during install |
| Skip Dependencies | don't process dependencies |
| Purge on Uninstall | delete all package files |
| Include Unknown Versions | show packages with unknown versions |
| Auto Elevate | automatically request admin rights |
Action Mode: Silent + Auto Elevate runs all install/upgrade/uninstall operations through the elevated helper upfront, avoiding UAC popups from installers that elevate themselves.
Auto Elevate (without silent mode) retries automatically on hard permission errors. When a batch finishes with failures, the result modal offers Ctrl+E to retry only the failed elevation-candidate packages.
For deeper behavior details and examples, see:
# Run the full validation suite
.\scripts\check.ps1 -Mode full
# Optional: enable git hooks
git config core.hooksPath .githooksThe validation suite runs gofmt, go test, go vet, staticcheck, and go build.
Optional Git hooks are included in .githooks/pre-commit and .githooks/pre-push.
Maintainers can regenerate demo.gif from demo.cast with agg.
- Bubble Tea — TUI framework
- Bubbles — TUI components
- Lip Gloss — Terminal styling
- Harmonica — Spring-physics animations
MIT
