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 / micromamba, 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/bini93/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, micromamba, 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
--verbose -v off Show each detector's name, package count, and elapsed time
--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 macOS, Linux conda list --json
🐍 mamba / micromamba macOS, Linux mamba list --json / micromamba list --json
🐧 pacman Linux (Arch) pacman -Qe
🐧 yay Linux (Arch AUR) recognized; no active detector
🐧 dnf / yum Linux (Fedora/RHEL) dnf repoquery --userinstalled
🐧 zypper Linux (openSUSE) recognized; no active detector
🐧 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
  • Homebrew Tapbrew install yourname/tap/pkgview

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.5.2.tar.gz (39.4 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.5.2-py3-none-any.whl (38.8 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for pkgview-0.5.2.tar.gz
Algorithm Hash digest
SHA256 08f7d8f6ae7d24fbbf028889663339f14f2e967877bad8c425301a71cce7f975
MD5 954ee99ffe63d2b3e52e7fa492f46350
BLAKE2b-256 253cb7bcaa32b0534cf786bcce8bfeb16a0271223f8a9d8218775961b2e6533f

See more details on using hashes here.

Provenance

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

Publisher: release-please.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.5.2-py3-none-any.whl.

File metadata

  • Download URL: pkgview-0.5.2-py3-none-any.whl
  • Upload date:
  • Size: 38.8 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.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7ac494bede6a1c39795ea953f5fa224abc3f99f96da1ce86d614546acbf1bd61
MD5 fd75cb4784482a713a5bf9c2bc01821b
BLAKE2b-256 802432b513ed98e1196f06d87f7ec5e7e5a2284bb085c99c5d6ae295dc1a2840

See more details on using hashes here.

Provenance

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

Publisher: release-please.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