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.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
149fa2776e9e21474401d3b1ff387a2f1d0fd3308f5bd4737b1a39e15c048fdf
|
|
| MD5 |
5a9443b45be35f21c5dd6dd54fe14a93
|
|
| BLAKE2b-256 |
c53ad6281cfbc6a0ecdaca3c6d4a79a7fde79b492488149797a57eb9983bcf3e
|
Provenance
The following attestation bundles were made for diskuh-0.1.5.tar.gz:
Publisher:
publish.yml on matplo/diskuh
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
diskuh-0.1.5.tar.gz -
Subject digest:
149fa2776e9e21474401d3b1ff387a2f1d0fd3308f5bd4737b1a39e15c048fdf - Sigstore transparency entry: 2743757191
- Sigstore integration time:
-
Permalink:
matplo/diskuh@155eed2369c7c53458814ccd5e7e45a83c85f736 -
Branch / Tag:
refs/tags/v0.1.5 - Owner: https://github.com/matplo
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@155eed2369c7c53458814ccd5e7e45a83c85f736 -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
74f574a949e9dae7a347c073526f46486868df7ffa9fa798208eaaa7ac7267c5
|
|
| MD5 |
13cb195a381af6d2125c72601aace6c9
|
|
| BLAKE2b-256 |
ed4e86c1d619fb7642cd3d5a9eda3adbc210569a57573f476863374f4f9587c4
|
Provenance
The following attestation bundles were made for diskuh-0.1.5-py3-none-any.whl:
Publisher:
publish.yml on matplo/diskuh
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
diskuh-0.1.5-py3-none-any.whl -
Subject digest:
74f574a949e9dae7a347c073526f46486868df7ffa9fa798208eaaa7ac7267c5 - Sigstore transparency entry: 2743757210
- Sigstore integration time:
-
Permalink:
matplo/diskuh@155eed2369c7c53458814ccd5e7e45a83c85f736 -
Branch / Tag:
refs/tags/v0.1.5 - Owner: https://github.com/matplo
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@155eed2369c7c53458814ccd5e7e45a83c85f736 -
Trigger Event:
push
-
Statement type: