Skip to main content

CLI tool to list all installed programs and their package manager

Project description

pkgview

A CLI tool that lists all programs installed on your system and shows whether each one is managed by a package manager (brew, npm, pip, cargo, apt, snap, flatpak) or was installed manually — and therefore needs to be maintained by you.

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━┓
┃ Name                          ┃ Manager        ┃ Version    ┃ Type  ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━┩
│ git                           │ 🍺 brew        │ 2.54.0     │ cli   │
│ k9s                           │ 🍺 brew        │ 0.50.18    │ cli   │
│ firebase-tools                │ 📦 npm         │ 15.8.0     │ cli   │
│ black                         │ 🐍 pip         │ 24.3.0     │ cli   │
│ docker                        │ ⚠  manual      │ –          │ cli   │
│ code                          │ ⚠  manual      │ –          │ cli   │
└───────────────────────────────┴────────────────┴────────────┴───────┘

Total: 75 programs  │  57 managed  │  18 manual

Features

  • Detects programs from: brew, brew-cask, npm (global), pip, pipx, cargo, apt, snap, flatpak, conda / mamba, pacman, dnf / yum, apk, nix, gem, composer, winget, scoop, chocolatey, nvm, asdf, pyenv
  • Scans /Applications and ~/Applications on macOS for GUI apps
  • Marks everything not tracked by a package manager as manual
  • Correctly ignores macOS/Linux system binaries (/bin, /usr/bin, etc.)
  • Correctly ignores Homebrew sub-binaries (e.g. dart from the flutter cask)
  • All detectors run in parallel — fast even with many package managers installed
  • Outputs a color-coded table or raw JSON (--json)
  • Check for available updates with --outdated
  • Export snapshots to JSON or CSV with --export

Requirements

  • Python 3.9+ (already present on macOS and most Linux distros)
  • No other runtime required

Installation

Recommended – install with pipx (no venv needed)

pipx installs CLI tools in an isolated environment automatically.

# Install pipx once (macOS)
brew install pipx
pipx ensurepath

# Install pkgview directly from GitHub
pipx install git+https://github.com/yourname/pkgview.git

The pkgview command is immediately available system-wide.

Update to the latest version:

pipx upgrade pkgview

Alternative – with pip (once published on PyPI)

pip install pkgview
# or
uv tool install pkgview

For development setup, project structure, and contribution guidelines, see DEVELOPMENT.md.

Usage

pkgview [OPTIONS]
Flag Short Default Description
--filter TEXT -f Show only programs from one manager.
Values: brew, brew-cask, npm, pip, pipx, cargo, apt, snap, flatpak, conda, mamba, pacman, yay, dnf, yum, zypper, apk, nix, gem, composer, winget, scoop, chocolatey, nvm, asdf, pyenv, manual
--sort TEXT -s manager Sort column: name, manager, version
--json -j off Output raw JSON instead of a table
--paths -p off Add a Path column to the table
--outdated -o off Check for available updates; highlight outdated packages in red
--export PATH -e Save snapshot to file (.csv → CSV, everything else → JSON)
--no-apps off Exclude GUI apps (/Applications)
--no-manual off Hide manually installed programs
--version -V Show version and exit
--help Show help and exit

Examples

# List everything, sorted by manager (default)
pkgview

# Show only manually installed programs (needs attention)
pkgview --filter manual

# Show only Homebrew formulas, sorted by name
pkgview --filter brew --sort name

# Show with full paths
pkgview --paths

# Export as JSON (e.g. for backups or scripting)
pkgview --json > programs.json

# Hide noise: no system apps, no manual tools
pkgview --no-apps --no-manual

Supported Package Managers

Icon Manager Platform Detection method
🍺 brew macOS, Linux brew list --versions
🍺 brew-cask macOS brew list --cask
📦 npm macOS, Linux npm list -g --depth=0 --json
🐍 pip macOS, Linux pip list --format=json
🐍 pipx macOS, Linux pipx list --json
🦀 cargo macOS, Linux cargo install --list
🐧 apt Linux (Debian/Ubuntu) apt-mark showmanual
🐧 snap Linux snap list
🐧 flatpak Linux flatpak list --app
🐍 conda / mamba macOS, Linux conda list --json / mamba list --json
🐧 pacman Linux (Arch) pacman -Qe
🐧 dnf / yum Linux (Fedora/RHEL) dnf repoquery --userinstalled
🐧 apk Linux (Alpine) apk list --installed
nix macOS, Linux nix-env -q
💎 gem macOS, Linux gem list --no-verbose
🎵 composer macOS, Linux composer global show --format=json
🪟 winget Windows winget list --source winget
🪟 scoop Windows scoop list
🍫 chocolatey Windows choco list --local-only
🟩 nvm macOS, Linux scans ~/.nvm/versions/node/
🔧 asdf macOS, Linux scans ~/.asdf/installs/
🐍 pyenv macOS, Linux scans ~/.pyenv/versions/
manual macOS, Linux PATH scan (cross-referenced)

Missing package managers are silently skipped — no errors.

Roadmap

  • pkgview --outdated — highlight packages with available updates
  • pkgview --export — save snapshot as JSON/CSV for system backups
  • nvm / asdf / pyenv detector
  • Windows support (winget, scoop, chocolatey)
  • conda / mamba detector
  • pacman / dnf / apk / nix / gem / composer detectors
  • TUI mode with Textual (pkgview --tui)
  • Docker Desktop, VS Code extension detection
  • Publish to PyPIpipx install pkgview without GitHub URL (workflow ready, pending first release)
  • Homebrew Tapbrew install yourname/tap/pkgview (formula template in packaging/homebrew/)

License

GPL-3.0-or-later — see LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pkgview-0.3.0.tar.gz (29.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pkgview-0.3.0-py3-none-any.whl (36.0 kB view details)

Uploaded Python 3

File details

Details for the file pkgview-0.3.0.tar.gz.

File metadata

  • Download URL: pkgview-0.3.0.tar.gz
  • Upload date:
  • Size: 29.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pkgview-0.3.0.tar.gz
Algorithm Hash digest
SHA256 1a622aa54c011fb8d008b23b703cd649369b802c58893ee604b7b9587bdf9a6a
MD5 30ed9a7320c99c587545646cc5bee79e
BLAKE2b-256 0509453144f64fbffda1f6d4399351a797174dc10b8e78238e7b178d43caa826

See more details on using hashes here.

Provenance

The following attestation bundles were made for pkgview-0.3.0.tar.gz:

Publisher: publish.yml on bini93/pkgview

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pkgview-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: pkgview-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 36.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pkgview-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 59bc2b4475260d434c6f039fb91bed52959864ee2ab1bb51b9445bc6cc313d10
MD5 d4e35825f55b44f052dc15b7a5ff9155
BLAKE2b-256 985d0b01ae3e27f5a07025c2cf7e3f77fa23a8a39c543a1cfaabb44338ed08e0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pkgview-0.3.0-py3-none-any.whl:

Publisher: publish.yml on bini93/pkgview

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page