Skip to main content

diskuh

du, but with attractive human-readable output — numeric sizes plus a proportional graphical bar per entry — and an optional full-screen TUI.

Install (dev)

henv --name duh-dev -x python -m pip install -e ".[dev]"

Usage

diskuh [PATH]                 # human-readable sizes + bars, sorted by size desc
                               # (top-level entries only by default: depth 1)
diskuh --depth 2 [PATH]       # go deeper (sizes are always accurate regardless of depth)
diskuh --depth 0 [PATH]       # unlimited depth: every directory, recursively (the old default)
diskuh --head 10 [PATH]       # show only the 10 largest entries
diskuh --tail 10 [PATH]       # show only the 10 smallest entries
diskuh --terse [PATH]         # plain "size<TAB>path" output, script/pipe friendly
diskuh --no-cache [PATH]      # bypass the cache; force a fresh full scan
diskuh --tui [PATH]           # launch the full-screen TUI
diskuh --tui --depth 5 [PATH] # launch the TUI showing 5 levels deep at once (default: 3)
diskuh-tui [PATH]             # same TUI, dedicated entry point
diskuh-tui --depth 0 [PATH]   # same TUI, unlimited depth from the start

dhx [PATH]                    # short alias for diskuh (identical, same flags)
dhx-tui [PATH]                # short alias for diskuh-tui

Scan results are cached in a SQLite database at ~/.diskuh/cache.sqlite3, keyed on a per-directory metadata fingerprint (name/type/size/mtime of each directory's immediate children) so repeat scans skip re-reading unchanged subtrees. See src/diskuh/cache.py for the exact staleness algorithm and its documented limitations.

In the TUI, press d on a selected entry to delete it (after confirmation). Deletion is permanent — there is no trash/undo. Press i to toggle Modified/Created date columns for every visible entry. Created works via st_birthtime on macOS/BSD, and via the statx() syscall on Linux (kernel 4.11+/glibc or musl since ~2018) — shows only where neither is available (very old Linux, or a filesystem that doesn't track a birth time at all, e.g. some network filesystems). Press n to set how many entries to show per directory level, and l to set how many levels deep to show at once — both accept blank for unlimited. --depth's short flag is -l (for "depth-level"), not -d, to avoid any mnemonic overlap with the TUI's d (delete) binding.

Development

henv --name duh-dev -x pytest -v

Releasing

Published to PyPI via GitHub Actions using Trusted Publishing (OIDC) — no API tokens involved. To cut a release:

  1. Bump version in both pyproject.toml and src/diskuh/__init__.py.
  2. Commit, then tag and push:
    git tag -a vX.Y.Z -m "vX.Y.Z: <summary>"
    git push origin vX.Y.Z
    
  3. .github/workflows/publish.yml builds, validates with twine check, and publishes automatically. Watch it at gh run watch --repo matplo/diskuh or the Actions tab.

PyPI's installable index can lag its own JSON API by up to ~30s after a publish — a pip install that briefly shows the previous version doesn't mean the release failed; retry after a short wait.

Download files

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

Source Distribution

diskuh-0.1.5.tar.gz (34.9 kB view details)

Uploaded Source

Built Distribution

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

diskuh-0.1.5-py3-none-any.whl (28.2 kB view details)

Uploaded Python 3

File details

Details for the file diskuh-0.1.5.tar.gz.

File metadata

  • Download URL: diskuh-0.1.5.tar.gz
  • Upload date:
  • Size: 34.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for diskuh-0.1.5.tar.gz
Algorithm Hash digest
SHA256 149fa2776e9e21474401d3b1ff387a2f1d0fd3308f5bd4737b1a39e15c048fdf
MD5 5a9443b45be35f21c5dd6dd54fe14a93
BLAKE2b-256 c53ad6281cfbc6a0ecdaca3c6d4a79a7fde79b492488149797a57eb9983bcf3e

See more details on using hashes here.

Provenance

The following attestation bundles were made for diskuh-0.1.5.tar.gz:

Publisher: publish.yml on matplo/diskuh

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

File details

Details for the file diskuh-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: diskuh-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 28.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for diskuh-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 74f574a949e9dae7a347c073526f46486868df7ffa9fa798208eaaa7ac7267c5
MD5 13cb195a381af6d2125c72601aace6c9
BLAKE2b-256 ed4e86c1d619fb7642cd3d5a9eda3adbc210569a57573f476863374f4f9587c4

See more details on using hashes here.

Provenance

The following attestation bundles were made for diskuh-0.1.5-py3-none-any.whl:

Publisher: publish.yml on matplo/diskuh

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

Release history Release notifications | RSS feed

This release

0.1.5 This release

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page