- Go 97.2%
- Shell 2.8%
Go + Ebitengine desktop app that defragments an imaginary, randomly generated late-90s drive: Select Drive dialog, simple and details views with an animated cluster map, Legend and completion dialogs, in a borderless retro window that moves, resizes and maximizes natively. Release builds via scripts/build.sh (Windows resources, macOS .app). Pre-commit gate: /qa 16x PASS, /security-audit 15x SECURE; review warnings fixed. Deferred with sign-off (follow-ups): - macOS CFBundleIdentifier is the placeholder local.clusterneat - no automated tests for OS-driven mouse/drag/resize/maximize handling - "Drive C" is hard-coded by design (the only imaginary drive) - tools/mkicons keeps parallel kinds/sizes slices (style only) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
|---|---|---|
| assets | ||
| internal | ||
| packaging/macos | ||
| scripts | ||
| tools/mkicons | ||
| .gitignore | ||
| CHANGELOG.md | ||
| CLAUDE.md | ||
| go.mod | ||
| go.sum | ||
| main.go | ||
| README.md | ||
ClusterNeat
A disk defragmenter for a disk that doesn't exist.
ClusterNeat brings back the late-90s experience of watching tiny coloured boxes shuffle around a cluster map, in the style of the Windows 98 Disk Defragmenter. The drive is imaginary and randomly generated on every run, and nothing is read from or written to your real disks. It's a nostalgia piece, a screensaver, and a way to look busy.
Status: first playable version.
What you'll see
- Select Drive. A small dialog asks which drive to defragment. The dropdown has exactly one entry, Drive C — Physical drive. Under it are copyright lines from entirely real companies such as Microsquish Corporation, Semi-Antic Corporation and the Inertia Application Launch Decelerator. OK starts, Exit quits, and Settings… is shown greyed out.
- Simple view. The Defragmenting Drive C window has an animated icon, a progress bar that moves at a random pace, and N% Complete. Stop aborts and returns to Select Drive. Pause lets a write in progress finish, then freezes everything, and turns into Resume.
- Details view. Show Details enlarges the window to show the cluster map, a status line,
the progress bar and the Stop / Pause / Legend / Hide Details buttons. The status
goes through three phases:
- Checking drive for errors…: the map is still empty.
- Reading drive information…: the map fills up with the disk's clusters.
- Defragmenting file system…: the actual show (see below).
- Legend. Explains the box colours, and the run carries on behind it while it's open.
- Done. Defragmentation of drive C is complete. Do you want to quit ClusterNeat? Yes quits. No returns to Select Drive, where OK starts over with a fresh random disk.
Each of these is a borderless window with a retro title bar. Drag the title bar to move it, _ minimizes and × quits. The details window can also be resized by its edges and maximized with □ or a double-click on the title bar, and the cluster map reflows to fill it. Legend and the completion dialog open inside the main window.
Every button works with the mouse or its underlined letter. Enter presses the outlined default button and Esc cancels. The mouse wheel, the scroll arrows (hold them to keep scrolling), a click on the track and dragging the thumb all move the cluster map, which goes back to following the activity after a few seconds.
The cluster map
Each box represents one disk cluster.
| Box | Meaning |
|---|---|
| Bright cyan | Unoptimized data that belongs at the beginning (the bulk of the disk) |
| Grey-teal | Unoptimized data that belongs in the middle |
| Dark grey | Unoptimized data that belongs at the end |
| Blue | Optimized (defragmented) data |
| White | Free space |
| White, red corner | Data that will not be moved |
| White, red hatch | Bad (damaged) area of the disk |
| Green | Data currently being read |
| Red | Data currently being written |
How the imaginary disk looks
Every run generates a new layout that looks like a well-used drive from around 1998:
- Mostly bright cyan, with smaller amounts of middle and end data.
- Always a few larger blocks of data that won't be moved (system files, the swap file).
- Free space scattered as small gaps and a few bigger holes.
- Bad clusters are rare and few, and most runs have none.
How the defragmentation plays out
- Data is read (green) and then written (red). Sometimes that's a single cluster at a time, sometimes a whole chunk shown as several boxes at once.
- Finished clusters turn blue. The blue region grows from the start of the drive.
- Unmovable data and bad areas stay where they are, and the process works around them.
- The pace is slow and uneven on purpose, like a 90s IDE drive, so a full run takes a good while.
Building
Needs Go (see go.mod for the version). ClusterNeat is built on
Ebitengine and compiles to a single binary.
On Linux, install Ebitengine's system dependencies first (Debian/Ubuntu):
sudo apt install libc6-dev libgl1-mesa-dev libxcursor-dev libxi-dev libxinerama-dev \
libxrandr-dev libxxf86vm-dev libasound2-dev pkg-config
Then:
go run . # run from source
go build -o dist/clusterneat . # native binary
Release builds for all three platforms come from one script, best run on Linux (the Linux binary needs cgo; Windows and macOS are cross-built):
VERSION=1.0.0 scripts/build.sh
| Output | What it is |
|---|---|
dist/clusterneat |
Linux binary |
dist/ClusterNeat.exe |
Windows, with name, version and icon embedded |
dist/macos/ClusterNeat.app |
macOS app bundle for Apple Silicon, with its icon |
The macOS app is not signed or notarized, so Gatekeeper asks for confirmation the first time it opens (right-click → Open).
Disclaimer
ClusterNeat is a parody and is not affiliated with or endorsed by Microsoft, Symantec or Intel. It's inspired by the look of a 1998 utility but contains none of its code, artwork or fonts. Windows is a trademark of Microsoft Corporation.
The UI font is Pixel Operator by Jayvee Enaguas, released under CC0 1.0.