Show HN: Leaves – A text-UI disk usage treemap visualizer

44 points - today at 4:03 PM


GUI disk analyzers are great for figuring out what's filling up your laptop/desktop drive.

On containers or remote servers, the options are limited to purely text based utilities (e.g. du) or list-centric TUIs (e.g. ncdu) which are usually limited to viewing one directory at a time.

I created leaves to fill that gap.

Inspired by classic utilities like WinDirStat and KDirStat, it uses a 2-dimensional treemap^1 visualization to show the entire directory hierarchy with proportionally sized rectangles.

It's performant enough to handle millions of files, thanks to Rust and multi-threading. However, block characters aren't as suited as pixels for resolving a large number of items. Leaves can show file-type summaries per directory or partition the top-level directories by extension, allowing you to see not only where space is being used, but also how.

For instance, I can see the largest chunk of my home directory is taken up by uv caches for python and old Linux ISOs that I could easily re-download if needed. Or in a particular container, +600MB is used by standard Rust documentation and tutorials, and that it is the only location with HTML/JS files, when only the libraries and build tools are needed (note to self: remember to use the minimal profile next time).

^1: https://github.com/shundhammer/qdirstat/blob/master/doc/Tree...

Source

Comments

1970-01-01 today at 7:52 PM
This is the kind of tool that should be baked into the kernel. It's never there when you need it, and when you do need it, it is probably already a full disk and you maybe can't just download it.
douglee650 today at 8:01 PM
Is this faster than diskx inventory or other gui tools?
ktm5j today at 6:46 PM
This is super cool, I've always used ncdu for this kinda thing but I like this a lot better. Thanks for sharing!
KaiserPro today at 7:19 PM
Ooo a TUI version of Sequoia view: https://sequoiaview.win.tue.nl/ nice
bescob_ar today at 4:57 PM
This looks fantastic, reminds me a lot of SpaceSniffer. The focus view or allowing for navigation through chunks is a nice essential inclusion. One desire might be quick actions. Doing size of squares based on the # of packages a dependency installation causes: Helps I guess users hellbent on having their install minimal figure out what they can afford to remove for as few packages on their system as reasonably possible.
rrauenza today at 6:17 PM
I had just been looking for a windirstat like tool for linux the other day.

What I really also want is a way to do an offline index that this reads ... I ended up using duc. Maybe I will fork and add it!

thanks for sharing!

sghiassy today at 6:04 PM
Really cool.

If possible, being able to β€œbrew install” on a Mac would be killer

azeirah today at 6:26 PM
Love it! If this works well I'm going to add it to my basic linux tools toolkit next to htop and the like.
takencoder today at 6:12 PM
Nice! The file-type extension partitioning feature is a really smart addition to handle the limitations of block characters.
robertclaus today at 5:20 PM
Ooh, this is nice. I loved windirstat back in the day.
gorkemyildirim today at 6:19 PM
[flagged]