# Neodisk: a read-only treemap and sunburst view of your disk usage

> Neodisk is a Swift application for macOS and Linux that draws treemap and sunburst views of disk space, adds a duplicates finder, a changes view between scans and an age heatmap, and never modifies or deletes a file. The core is shared between the two platforms, with the macOS build using SwiftUI and AppKit and the Linux build using GTK 4 and libadwaita.

**tkslucas/Neodisk** — Read-only treemap and sunburst disk space visualizer

- Repository: https://github.com/tkslucas/Neodisk
- Website: https://neodisk.app
- Stars: 623 · Forks: 21
- Language: Swift
- License: GPL-3.0
- Published: 2026-10-22 · Updated: 2026-10-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/tkslucas-neodisk

## Read-only is the product decision, not a limitation

The About section opens with a sentence that explains the whole design. Read-only by design. Neodisk never modifies or deletes your files. Instead, Reveal in Finder, Show in Files on Linux, Open and Copy Path are the only file actions, and the instruction is to delete and clean up safely in your file manager instead. That is a different relationship with a disk analyser than most people expect, because the usual workflow with a treemap tool is to select the big things and press delete. Here the tool shows you the problem and stops there. For a tool that walks a whole filesystem and has a search box, a command palette and a full keyboard navigation model, the read-only guarantee is the thing that makes it safe to run against a home directory without thinking about it, and it is the reason the only actions on offer are the three that cannot lose data.

## One shared core, two native shells

The implementation is described as native on each platform. The scan engine, the tree model, the treemap and sunburst geometry, the statistics and the search are one shared Swift core, and the macOS app is SwiftUI and AppKit while the Linux app is GTK 4 and libadwaita. The architecture document, ARCHITECTURE.md, is referenced for the details, and the repository layout matches the description, with a Sources/ directory, a Tests/ directory, a Packaging/ directory, a Localization/ directory and a Package.swift with a Package.resolved. The credits explain where the core comes from. NeodiskKit, the scan engine and core data model, is derived from Radix by Colin Kim, which is MIT licensed, and the sunburst visualisation is ported from it. The treemap and sunburst interaction follows Disk Inventory X and GrandPerspective, and the sunburst view follows DaisyDisk and SquirrelDisk, with no code from any of those used. The algorithm references are also cited, van Wijk and van de Wetering for cushion treemaps in 1999 and Bruls, Huizing and van Wijk for squarified treemaps in 2000.

## What the treemap and sunburst views give you

The two views answer the same question in different shapes. The treemap is a cushion treemap where area is proportional to size, and you pinch to zoom and scroll to pan. The sunburst is the radial version, where a folder's contents radiate from the centre, and you pinch to drill in and out. Both support the same selection model, and the README lists arrow keys moving the selection in both the treemap and the sunburst, a drill into a folder with the drill-down shortcut and back out with the corresponding one, and clicking folders in the breadcrumb bar. The screenshot captions describe the two additional views that go beyond a size picture. The changes view lists files that grew, shrank, appeared or were deleted since the last scan, which turns the tool into a way of watching disk usage over time rather than a one-off snapshot. The duplicates view groups files with identical content by reclaimable space. The treemap can also be coloured by last-modified date as an age heatmap, there is a file type statistics view, and a find largest files function.

## Search, snapshots and the smaller conveniences

Search is fuzzy, over the entire scan, and bound to the keyboard shortcut for find on macOS, which is what makes the tool usable on a volume with hundreds of thousands of entries rather than only on the handful of directories you can see. Snapshots are the other half of the design: completed scans persist and reopen instantly, so the second look at a disk does not require a second walk of the filesystem. The macOS build adds a few things the Linux build does not yet have. Quick Look on the spacebar shows a file preview, a Show Package Contents option keeps apps and bundles solid like in Finder until you expand them, free and hidden space are counted for volume scans, the sidebar shows a kind-coloured usage bar per volume, and updates arrive through Sparkle. Auto-updates are macOS only. The interface follows the system language, with English, Spanish, French, German, Italian, Brazilian Portuguese, Japanese and Simplified Chinese, and the Localization/ directory at the repository root is where that lives.

## Installing on macOS and on Linux

On macOS you download Neodisk.dmg and drag Neodisk onto the Applications folder, or use Homebrew:

```sh
brew install --cask neodisk
```

The requirement is macOS 14, Sonoma, or later, on either Apple silicon or Intel. On Linux you download the AppImage for x86_64 or ARM64, make it executable and run it, or build from source. The Linux app is a native GTK 4 and libadwaita application needing GTK 4.14 and libadwaita 1.5 or newer, which the README maps to Ubuntu 24.04, Fedora 40, Debian 13 and later. The AppImage bundles those libraries but still needs a system as new as Ubuntu 24.04, which is a real constraint for anyone on an older distribution who expected the AppImage to be self-sufficient. The macOS build requires macOS 14 or later and a Swift 6 toolchain, and the README is specific that no Xcode is needed since the Xcode Command Line Tools are enough.

## Building from source, and how the install script differs from the AppImage

The build is a Swift Package Manager project and the two commands are short. On macOS:

```bash
swift run -c release Neodisk    # build and launch directly
swift test                      # full test suite (engine + treemap + UI)
```

On Linux you need a Swift 6.4 toolchain and the GTK development packages, and the install script for Debian and Ubuntu installs into your home directory with a menu entry and an icon:

```bash
sudo apt install libgtk-4-dev libadwaita-1-dev libzstd-dev pkg-config   # Debian/Ubuntu
sudo dnf install gtk4-devel libadwaita-devel libzstd-devel               # Fedora

swift run -c release neodisk        # build and launch directly
swift test                          # core, shared model and treemap suites
Packaging/linux/install.sh          # install to ~/.local (menu entry, icon)
```

There is a detail in that script that matters after installation. The install.sh links the Swift runtime statically, so the installed app needs only GTK 4 and libadwaita and not a Swift toolchain, which is a different situation from the AppImage, where the GTK libraries are bundled instead. The two distribution routes solve the dependency problem in different ways, and a Linux user picking one over the other is choosing between a self-contained AppImage that still needs a recent base system and an installed binary that needs a toolchain to build but a lighter runtime afterwards.

## Where the platform split bites, and what is not here yet

The feature difference between the two platforms is the main thing to know before you adopt it. The Linux app covers the core views, which are the treemap, the sunburst, the outline, the largest files, the kind and age statistics, search, saved scans and keyboard navigation. The duplicates and changes tabs and incremental rescans are macOS-only for now, and the reason given is that Linux has no persistent file-change journal, so every rescan there is a full scan. That is a hardware and kernel limitation rather than an implementation choice, and it means the changes view, which is arguably the most interesting of the additions, is simply unavailable on Linux. The second limit is platform coverage. Windows is on the planned list, described as a native WinUI app over the same core, and Flatpak packaging is planned for Linux along with the duplicates and changes tabs, so the project is not finished. Third, the licensing is GPL-3.0-or-later with Radix attribution preserved in the LICENSE file, which is fine for a tool you run but is a factor if you intend to redistribute it.

## Where the project stands

The release history is unusual and worth reading before you pin a version. There is a nightly tag, Neodisk Nightly, and the stable tags are 2.83.2 from 2026-10-11 and 2.71.0 from 2026-07-26, with the last push to the repository on 2026-10-19. Two observations follow. The version numbering is in the 2.x range and climbing, which suggests a project that releases often and does not treat a minor bump as a breaking change for a read-only viewer, and the presence of a nightly build channel alongside stable releases means the recent commits are ahead of what the stable tag contains. The repository also carries an AGENTS.md and a CLAUDE.md at the root, which is a sign that the project expects machine-written contributions to be part of its normal workflow, alongside CONTRIBUTING.md, SECURITY.md and ARCHITECTURE.md. The homepage is neodisk.app, and the badge for the latest version points at the GitHub releases page.

## Conclusion

Neodisk suits someone who wants to see where their disk space actually went, in a picture rather than a sorted list, and who wants a tool that physically cannot delete anything, since the only file actions are Reveal in Finder, Open and Copy Path. It is the wrong tool if you need it to clean up, because the README is explicit that you should delete and clean up safely in your file manager instead, and it is the wrong tool on Linux if you depend on the duplicates or changes tabs, which are macOS-only for now. Verify first which platform you are on, because the feature lists differ, note that the Linux AppImage needs a system as new as Ubuntu 24.04 even though it bundles GTK 4.14 and libadwaita 1.5, and expect the newest tagged release to be behind the nightly builds.

## FAQ

### Does Neodisk ever delete or modify files?

No. The README states that Neodisk is read-only by design and never modifies or deletes your files. Reveal in Finder, Show in Files on Linux, Open and Copy Path are the only file actions, and cleanup is left to your file manager.

### How do I install Neodisk on macOS and Linux?

On macOS, download Neodisk.dmg and drag it to Applications, or run brew install --cask neodisk, with macOS 14 or later required. On Linux, download the x86_64 or ARM64 AppImage, make it executable and run it, needing GTK 4.14 and libadwaita 1.5 or newer.

### Which features are missing on Linux?

The duplicates and changes tabs and incremental rescans are macOS-only for now, because Linux has no persistent file-change journal, so every rescan there is a full scan. The core views, treemap, sunburst, outline, largest files, statistics, search and saved scans are covered on both.

### How do I build Neodisk from source?

With swift run -c release Neodisk on macOS, which needs macOS 14 or later and a Swift 6 toolchain with only the Xcode Command Line Tools. On Linux you need a Swift 6.4 toolchain and the GTK development packages, and Packaging/linux/install.sh installs the app to your home directory with a menu entry and icon.

### What is Neodisk built on?

A shared Swift core holding the scan engine, tree model, treemap and sunburst geometry, statistics and search, with a SwiftUI and AppKit app on macOS and a GTK 4 and libadwaita app on Linux. The scan engine and core data model are derived from Radix, and the sunburst visualisation is ported from it.

## Sources

- [License: GPL-3.0](https://github.com/tkslucas/Neodisk/blob/main/LICENSE)
- [Project website](https://neodisk.app)
- [README](https://github.com/tkslucas/Neodisk/blob/main/README.md)
- [Releases](https://github.com/tkslucas/Neodisk/releases)
- [tkslucas/Neodisk on GitHub](https://github.com/tkslucas/Neodisk)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/tkslucas-neodisk
