logoalt Hacker News

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

39 pointsby patonwtoday at 4:03 PM11 commentsview on HN

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...


Comments

1970-01-01today 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.

KaiserProtoday at 7:19 PM

Ooo a TUI version of Sequoia view: https://sequoiaview.win.tue.nl/ nice

show 1 reply
ktm5jtoday 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!

rrauenzatoday 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!

show 1 reply
bescob_artoday 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.

show 1 reply
sghiassytoday at 6:04 PM

Really cool.

If possible, being able to “brew install” on a Mac would be killer

azeirahtoday 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.

takencodertoday at 6:12 PM

Nice! The file-type extension partitioning feature is a really smart addition to handle the limitations of block characters.

robertclaustoday at 5:20 PM

Ooh, this is nice. I loved windirstat back in the day.

gorkemyildirimtoday at 6:19 PM

[flagged]