Skip to content

owldisk/owldisk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OwlDisk

A fast, open-source disk space analyzer for macOS. Built with Go and Wails.

Features

  • Fast parallel scanning — uses 64 concurrent goroutines to scan your disk quickly
  • Interactive sunburst visualization — drill down into directories by clicking arcs
  • Accurate size reporting — matches macOS Finder and About This Mac figures
  • Drag to trash — drop files and folders onto the trash zone to free up space
  • Full Disk Access detection — warns you when permissions are limiting scan accuracy
  • Universal binary — runs natively on both Apple Silicon and Intel Macs

Screenshots

Disk Selection Scan Results
Home Scan Results

Installation

Download

Download the latest .dmg from the Releases page.

Build from Source

Prerequisites:

# Clone the repo
git clone https://github.com/owldisk/owldisk.git
cd owldisk

# Install dependencies
make setup

# Run in development mode
make dev

# Build the .app bundle
make build

# Build a DMG installer
make dmg

Usage

  1. Grant Full Disk Access for accurate results:

    • Open System Settings → Privacy & Security → Full Disk Access
    • Add OwlDisk.app
    • Restart the app
  2. Select a disk from the main screen, or choose "Select a folder to scan"

  3. Explore the sunburst chart:

    • Each ring represents one level of directory depth (3 levels visible)
    • Arc size is proportional to the folder/file size
    • Click an arc to drill down
    • Click the center circle to go back up
  4. Manage files:

    • Drag items from the file list to the trash zone to delete them
    • Click "Reveal" to open the file in Finder

Architecture

owldisk/
├── app.go              # Wails app bindings (scan, trash, finder)
├── main.go             # App entry point and Wails config
├── scanner/
│   ├── scanner.go      # Parallel directory walker
│   ├── diskinfo.go     # Disk enumeration via statfs
│   ├── diskinfo_darwin_cgo.go  # macOS NSURL available capacity (CGO)
│   └── tree.go         # FileNode tree structure and pruning
├── frontend/
│   ├── src/
│   │   ├── App.tsx     # Main disk selection screen
│   │   └── components/
│   │       ├── DiskDetail.tsx    # Scan progress and results view
│   │       ├── SunburstChart.tsx # D3 sunburst visualization
│   │       ├── FileList.tsx      # Navigable file list panel
│   │       └── TrashDrop.tsx     # Drag-to-delete zone
│   └── wailsjs/        # Auto-generated Go bindings for frontend
├── build/
│   ├── appicon.png     # App icon source
│   └── darwin/         # macOS build resources (Info.plist, icon.icns)
└── docs/               # GitHub Pages website (owldisk.com)

How It Works

  1. Disk enumeration: Uses statfs + macOS NSURL API (via CGO) to get disk info including purgeable space
  2. Parallel scan: Walks the directory tree with 64 concurrent goroutines, collecting file sizes
  3. Tree pruning: For quick scans, removes items below 0.05% of total to keep the JSON manageable
  4. Visualization: Frontend receives the tree via Wails events and renders it with D3's partition layout

Requirements

  • macOS 11.0 (Big Sur) or later
  • Full Disk Access recommended for accurate results

License

MIT

Releases

Contributors

Languages