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:
- Bump
versionin bothpyproject.tomlandsrc/diskuh/__init__.py. - Commit, then tag and push:
git tag -a vX.Y.Z -m "vX.Y.Z: <summary>" git push origin vX.Y.Z
.github/workflows/publish.ymlbuilds, validates withtwine check, and publishes automatically. Watch it atgh run watch --repo matplo/diskuhor 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.
Metadata
Release files for diskuh 0.1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| diskuh-0.1.5.tar.gz | 34.9 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| diskuh-0.1.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 63.1 kB
Release files / diskuh-0.1.5.tar.gz
| Download URL | diskuh-0.1.5.tar.gz |
|---|---|
| Size | 34.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
149fa2776e9e21474401d3b1ff387a2f1d0fd3308f5bd4737b1a39e15c048fdf
|
|
BLAKE2b-256 checksum How to use checksums |
c53ad6281cfbc6a0ecdaca3c6d4a79a7fde79b492488149797a57eb9983bcf3e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 6, 2026.
Transparency logRelease files / diskuh-0.1.5-py3-none-any.whl
| Download URL | diskuh-0.1.5-py3-none-any.whl |
|---|---|
| Size | 28.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
74f574a949e9dae7a347c073526f46486868df7ffa9fa798208eaaa7ac7267c5
|
|
BLAKE2b-256 checksum How to use checksums |
ed4e86c1d619fb7642cd3d5a9eda3adbc210569a57573f476863374f4f9587c4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 6, 2026.
Transparency logSecurity for diskuh 0.1.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for diskuh-0.1.5.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 6, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.