Important
This is a Maintenance Fork!
Following the passing of Yoran Heling (aka Yorhel), the original author of Ncdu, this repository serves as a maintenance fork to keep his project alive.
See the original upstream discussion for more context.
(Just me for now, but co-maintainers are very welcome)
I, BratishkaErik, have some experience
helping upstream
update ncdu to newer Zig versions, so I will (for now) focus on keeping
the Zig branch updated.
I need to properly refresh my C knowledge and skills before I can comfortably maintain the C branch.
If someone more qualified is willing to step up and lead the maintenance, I would be more than happy to assist and hand over this fork.
Original upstream branches are frozen to preserve and honor history. Active development has moved to new branches:
- C version (1.x):
master→c-version - Zig version (2.x):
zig→zig-version
Regarding the hosting: I chose GitHub to avoid the risk of losing the project if the upstream Forgejo instance goes down, and Codeberg can be quite laggy.
Future releases will be tagged and published from the new branches.
I will be writing new changelogs directly in GitHub Releases,
instead of updating ChangeLog file.
Please note that I do not have access to Yorhel's original PGP signing keys, and even if I had, using them IMO would not be appropriate anyway.
I won't use my own personal PGP keys either, as tying verification to a single person again just creates another single point of failure. Instead, new releases will be signed and verified using Sigstore, with GitHub Attestations.
Ncdu is a disk usage analyzer with an ncurses interface. It is designed to find space hogs on a remote server where you don't have an entire graphical setup available, but it is a useful tool even on regular desktop systems. Ncdu aims to be fast, simple and easy to use, and should be able to run in any minimal POSIX-like environment with ncurses installed.
See the ncdu 2 release announcement for information about the differences between this Zig implementation (2.x) and the C version (1.x).
- Zig 0.16
- Some sort of POSIX-like OS
- ncurses (with wide-character support)
- libzstd
Both libraries can be fetched and built automatically by Zig, or you can use your system's installed versions.
You can use the Zig build system if you're familiar with that.
By default, Zig will fetch and build ncurses and libzstd for you.
If you want to use your system package instead, pass the -fsys=[...] flag.
You can mix and match these depending on what you have installed locally:
# Use system versions for both libraries
zig build -fsys=ncurses -fsys=zstd
# Use system ncurses, but let Zig fetch libzstd
zig build -fsys=ncurses -fno-sys=zstdAlternatively, you can use system mode to automatically use system packages for all dependencies:
zig build --system "path/to/downloaded/zig-packages/"There's also a handy Makefile that supports the typical targets. By default,
the Makefile is configured to pass following flags to Zig build:
--release=fast -Dstrip -fsys=zstd -fsys=ncurses.
You can override it with ZIG_FLAGS.
make
sudo make install PREFIX=/usr