A pastel, WizTree-style treemap disk visualizer that lives in your terminal.
Theme: Catppuccin Mocha · Font: JetBrains Mono · Recorded with VHS
- 🌸 Pastel treemap: every file type gets its own hue, ranked by size so the types you have are the most distinct
- 🪆 Nested mosaic: regions are recursively subdivided (WizTree-style), so a big folder reads as a map of its contents, not an empty box
- ⚡ Fast concurrent scanning: bounded-parallel walker measuring real on-disk allocation, with hardlink dedup so shared data counts once
- 🌳 Dual-pane tree view: a WizTree-style tree with size bars alongside the map, plus an extension color legend
- 🗑️ Safe delete: ctrl+x sends to Trash by default; permanent delete always requires typing it out
- 👀 Quick Look & open: space previews (macOS), enter opens files in their default app
- 🖱️ Mouse included: click to select, click again to open; scroll either pane
- 🪶 Single static binary: Go all the way down, no dependencies
diskbloom supports macOS and Linux. A truecolor terminal is recommended for the full palette.
brew install Zingzy/tap/diskbloomgo install github.com/Zingzy/diskbloom@latestPrebuilt binaries for macOS (arm64/amd64) and Linux (amd64/arm64) are on the releases page.
Build from source
Requires Go 1.26+.
git clone https://github.com/Zingzy/diskbloom
cd diskbloom
go build -o diskbloom .diskbloom # scan the current directory
diskbloom ~/Movies # scan a specific pathReading the map:
- Area is size on disk: a tile twice as big takes twice the space (allocated blocks, like WizTree, so it matches what deleting actually frees)
- Color is file type: the legend (bottom-left) maps extensions to hues; folders take the color of their dominant content
- Nesting is structure: the mosaic inside a region is that folder's contents, three levels deep
- Brightness is share: bigger slices of the parent glow brighter, so the heavy stuff pops
Press ? inside diskbloom for the full list.
| Key | Action |
|---|---|
| ←↑↓→ / hjkl | Move spatially between regions |
| enter | Drill into a folder · open a file |
| esc / backspace | Go up a level |
| space | Quick Look preview (macOS) |
| ctrl+x | Delete: enter Trash · shift+enter permanent |
| tab | Switch focus between treemap and tree pane |
| t | Toggle the tree pane |
| m | Toggle the extension color map |
| r | Rescan |
| q / ctrl+c | Quit |
A concurrent os.ReadDir walker measures on-disk allocation and dedups
hardlinks by {dev, ino} (internal/scan); the
squarified treemap algorithm with
cell-aspect correction keeps tiles visually square despite terminal cells being
~2× taller than wide (internal/treemap); a renderer fuses adjacent rounded
borders into single lines and recursively subdivides regions
(internal/render); per-extension hues are stepped by the golden angle so the
palette spreads itself out (internal/theme). Glued together with
Bubble Tea v2.
- WizTree (Windows GUI), the inspiration for the nested treemap and color map
- diskonaut (Rust), terminal treemap whose spatial navigation this follows
- gdu (Go), ncdu-style list and the reference fast scanner
- dust (Rust), du with a bar chart
- dua-cli (Rust), interactive list-based analyzer
- ncdu (C/Zig), the classic
- macOS
getattrlistbulkfast path (batches name+size+type per syscall) - live-updating treemap that grows while scanning
- aggregated "small files" tile + zoom, instead of hiding tiny entries
- half-block (
▀) rendering mode for double-resolution density
Issues and pull requests are welcome! To report a bug, simply open a new issue.
Built with 🌸 and Bubble Tea · Lip Gloss · VHS
