Skip to main content

A powerful disk usage analyzer with iCloud support

Project description

reclaimed 🌟

A powerful and user-friendly command-line tool for analyzing disk usage, with special handling for iCloud storage on macOS. Quickly find your largest files and directories with a beautiful, color-coded interface, and manage them with an interactive terminal UI.

Features

  • 🚀 Fast recursive directory scanning, legitimately performant and doesn't look too choppy as it batches progress updates super efficiently
    • I basically kept timing identical runs and adjusting until I found the exact point of re-painting frequency that did not slow results by >5ms total.
    • Separate thread for the clock so it can hum along in real time 😂
  • ☁️ Smart detection & handling of iCloud Drive symlink files vs local storage which is nice on the macbook
  • 📊 Beautiful UI (uses Textualize/rich and Textualize/textual libraries)
    • Textual is dope, you can change the colors and everything - the mouse even works somehow but you can (and I do) drive this keyboard only
    • Real ones who appreciate solarized dark for the masterpiece that it is can leave it on default
  • 🖥️ Interactive terminal UI for browsing and managing files/directories and a worse noninteractive mode that's not worth using unless you're purging files on a headless rpi that's barely hanging on
  • 🗑️ Delete large files and directories directly from the interface (and yes, there's a safety confirmation first)
  • 💾 Export results to JSON for further analysis or batch operations
  • ⚡️ Real-time progress indication
  • 🛡️ Graceful handling of permission issues

https://github.com/user-attachments/assets/1aae04e7-3201-414d-a1e3-6ea5d55bd691

Installation

Prerequisites

  • Python 3.8 or higher
  • pip (Python package installer)
  • Technically not a venv but if you aren't using a venv you're generally doing python wrong

Using pip (preferred)

pip install reclaimed

From Source

git clone https://github.com/taylorwilsdon/reclaimed.git
cd reclaimed
pip install -r requirements.txt
hatch shell

Usage

Basic usage:

reclaimed ~/Documents

Advanced options:

# Show more results
reclaimed ~/Documents --files 20 --dirs 15

# Save results to JSON
reclaimed ~/Documents --output results.json

Options

  • PATH: Directory to scan (default: current directory)
  • -f, --files N: Number of largest files to show (default: 10)
  • -d, --dirs N: Number of largest directories to show (default: 10)
  • -o, --output FILE: Save results to JSON file
  • -i, --interactive: Launch the interactive Textual UI

Output

CLI Mode

The tool provides:

  • A real-time progress indicator showing files scanned and total size
  • Two tables showing the largest files and directories
  • Clear indication of iCloud vs local storage
  • Summary of any access issues encountered

Interactive Mode

The interactive UI provides:

  • Tabbed interface to switch between files and directories views
  • Keyboard navigation (arrow keys) to browse through items
  • Ability to sort items by size, name, or path
  • File/directory deletion with confirmation dialog
  • Refresh capability to update the scan results

Development

This project uses Hatch for development workflow management.

Setup Development Environment

pip install -r requirements.txt
hatch shell

Common Commands

# Run tests
hatch run test

# Run tests with coverage
hatch run test-cov

# Run linting (black, ruff, mypy)
hatch run lint

# Build distribution packages
hatch build

# Run with interactive UI
python -m reclaimed /path/to/scan

Interactive Mode

The interactive mode launches automatically, or with the -i or --interactive flag:

reclaim ~/Documents -i

Non-interactive mode can be enabled (prints a simpler output with very low overhead) with --no-interactive

reclaim ~/Documents --no-interactive

Keyboard Shortcuts

Key Action
F Switch to Files view
D Switch to Directories view
S Sort items
R Refresh scan
Delete Delete selected item
? Show help
Q Quit application
Arrow keys Navigate through items

Features

  • Tabbed Interface: Toggle between Files and Directories views
  • Sorting: Sort items by size (default), name, or path
  • File Management: Delete files and directories with confirmation
  • Solarized Dark Theme: Easy on the eyes for extended use

Contributing

Contributions are welcome! Please see our Contributing Guide for details.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

reclaimed-0.2.0.tar.gz (7.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

reclaimed-0.2.0-py3-none-any.whl (6.4 kB view details)

Uploaded Python 3

File details

Details for the file reclaimed-0.2.0.tar.gz.

File metadata

  • Download URL: reclaimed-0.2.0.tar.gz
  • Upload date:
  • Size: 7.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.5

File hashes

Hashes for reclaimed-0.2.0.tar.gz
Algorithm Hash digest
SHA256 bdad295b2527bfa8764f46bbca819fc5038a6f2c95d8220ea2dd8d35addb269e
MD5 48c8201d01ca287e4e67188386a1e2ac
BLAKE2b-256 a2b8f6e76e7583712927bacf265a5aa35bc3972e7dc42c0baa9c14e901816a52

See more details on using hashes here.

File details

Details for the file reclaimed-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: reclaimed-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 6.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.5

File hashes

Hashes for reclaimed-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 43c7f80bcde99fef33d6670b28e3c0e4275a5598778abf8e2cba7e19422fbca7
MD5 08be9488c5cf45cd25b158490ff78c7f
BLAKE2b-256 856600655229f99344c65bc712b3f13ac8faff19b3f15d13c6c06d81da3933c8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page