An open API service indexing awesome lists of open source software.

https://github.com/qdenka/maccleancli

๐Ÿš€ MacCleanCLI is a sleek, powerful, and interactive command-line application designed specifically for macOS, providing efficient disk cleanup, system optimization, and an outstanding user experience directly from your terminal.
https://github.com/qdenka/maccleancli

cache-cleaner cleaner cleanup cli command-line console-application disk-cleaner disk-space macos optimization performance productivity python storage system-cleaner system-utility terminal

Last synced: about 2 months ago
JSON representation

๐Ÿš€ MacCleanCLI is a sleek, powerful, and interactive command-line application designed specifically for macOS, providing efficient disk cleanup, system optimization, and an outstanding user experience directly from your terminal.

Awesome Lists containing this project

README

          

# ๐ŸŽ macOS Cleaner

macOS Cleaner Interface

**A beautiful and powerful console application for cleaning and optimizing macOS systems**

[![Python Version](https://img.shields.io/badge/python-3.10%2B-blue?style=flat-square)](https://www.python.org/downloads/)
[![License](https://img.shields.io/badge/license-MIT-green?style=flat-square)](LICENSE)
[![Platform](https://img.shields.io/badge/platform-macOS-lightgrey?style=flat-square)](https://www.apple.com/macos/)
[![GitHub Stars](https://img.shields.io/github/stars/QDenka/MacCleanCLI?style=flat-square)](https://github.com/QDenka/MacCleanCLI/stargazers)
[![GitHub Issues](https://img.shields.io/github/issues/QDenka/MacCleanCLI?style=flat-square)](https://github.com/QDenka/MacCleanCLI/issues)
[![GitHub Forks](https://img.shields.io/github/forks/QDenka/MacCleanCLI?style=flat-square)](https://github.com/QDenka/MacCleanCLI/network/members)

[Features](#-features) โ€ข [Installation](#-installation) โ€ข [Usage](#-usage) โ€ข [Documentation](#-documentation) โ€ข [Contributing](#-contributing)

---

## โœจ Features

### ๐Ÿ” **Smart Scanning**
- Multi-threaded intelligent file scanning across 19+ categories
- Real-time progress tracking with detailed statistics
- **NEW:** Preview detailed file list before cleaning with pagination
- Pattern-based file identification with safety checks
- Configurable minimum file size filters

### ๐Ÿงน **Safe Cleaning**
- Priority-based cleaning (HIGH, MEDIUM, LOW, OPTIONAL)
- Built-in protection for system-critical files
- Optional backup system with configurable retention
- **NEW:** Show exactly what will be deleted with file paths and sizes
- Batch operations with parallel processing
- Dry-run mode for safe preview

### โšก **System Optimization**
- Memory purging for performance boost
- DNS cache flushing for network optimization
- Startup items management (LaunchAgents/Daemons/LoginItems)
- Spotlight index rebuilding
- Disk verification utilities

### ๐ŸŽจ **Beautiful UI**
- Rich console interface with colors and animations
- Interactive menu system with keyboard shortcuts
- Real-time progress bars and status updates
- Comprehensive scan results visualization
- User-friendly file detail preview with pagination

### ๐Ÿ›ก๏ธ **Safety First**
- Protected system paths and directories
- Confirmation prompts for destructive operations
- Automatic backup before deletion (configurable)
- Post-cleaning verification
- Comprehensive error handling and logging

---

## ๐Ÿ“‹ Supported Cleaning Categories

### System Categories
- ๐Ÿ—„๏ธ **System Cache** - System-level cache files (HIGH priority)
- ๐Ÿ‘ค **User Cache** - User application cache files (HIGH priority)
- ๐Ÿ“ **Temporary Files** - System temporary files (HIGH priority)
- ๐Ÿ“ **Log Files** - System and application logs (MEDIUM priority)
- ๐Ÿ—‘๏ธ **Trash** - Empty system trash bin (MEDIUM priority)

### Browser Data
- ๐ŸŒ **Browser Cache** - Safari, Chrome, Firefox, Brave, Edge, Opera, Vivaldi (MEDIUM priority)

### Developer Tools โšก NEW
- ๐Ÿ”จ **Xcode Derived Data** - Build artifacts and indexes (HIGH priority)
- ๐Ÿ—๏ธ **Xcode Archives** - Old app archives (MEDIUM priority)
- ๐Ÿณ **Docker Data** - Containers, images, volumes (MEDIUM priority)
- ๐Ÿบ **Homebrew Cache** - Package manager cache (MEDIUM priority)
- ๐ŸŸข **Node.js Modules** - node_modules directories (LOW priority)
- ๐Ÿ **Python Cache** - __pycache__ and .pyc files (LOW priority)

### File Management
- ๐Ÿ“ฅ **Downloads** - Old downloads folder files (OPTIONAL)
- ๐Ÿ“‹ **Duplicate Files** - Identical files detection (OPTIONAL)
- ๐Ÿ“Š **Large Files** - Files over 100MB (OPTIONAL)
- ๐Ÿ•ฐ๏ธ **Old Files** - Files not accessed in 6+ months (OPTIONAL)
- ๐Ÿ“ฆ **App Leftovers** - Files from uninstalled apps (MEDIUM priority)

---

## ๐Ÿš€ Installation

### Prerequisites
- macOS 10.15 (Catalina) or later
- Python 3.10 or higher
- pip package manager

### Quick Install

```bash
# Clone the repository
git clone https://github.com/QDenka/MacCleanCLI.git
cd MacCleanCLI

# Install with pip (development mode)
pip install -e .
```

### Verify Installation

```bash
# Check if commands are available
macos-cleaner --help
mclean --help
```

### System Permissions

For full functionality, grant Terminal **Full Disk Access**:

1. Open **System Settings** โ†’ **Privacy & Security** โ†’ **Full Disk Access**
2. Click the **+** button and add your Terminal app
3. Restart Terminal and rerun the application

---

## ๐Ÿ“– Usage

### Interactive Mode (Recommended)

```bash
# Run with full interface
macos-cleaner

# Or use the short alias
mclean
```

**Interactive Workflow:**
1. **Scan System** - Choose categories to scan
2. **Review Results** - See detailed file list with sizes
3. **Clean Files** - Select items to delete
4. **Optimize System** - Run system optimizations

### Command Line Options

```bash
# Scan only (no cleaning)
macos-cleaner --scan-only

# Automatic mode (clean recommended items)
macos-cleaner --auto

# Use custom config file
macos-cleaner --config ~/custom-config.json

# Enable verbose output
macos-cleaner --verbose

# Dry run mode (preview only)
macos-cleaner --dry-run

# Combine options
macos-cleaner --scan-only --verbose
```

### Python Direct Execution

```bash
# Run directly with Python
python main.py

# With options
python main.py --scan-only
python main.py --auto --verbose
```

---

## ๐ŸŽฎ Interactive Menu Guide

### Main Menu
```
[1] ๐Ÿ” Scan System - Scan for cleanable files
[2] ๐Ÿงน Clean Files - Remove scanned files
[3] โšก Optimize System - System optimization tasks
[4] โš™๏ธ Settings - Configure application
[q] ๐Ÿšช Quit - Exit application
```

### Scan Menu
```
[a] All Categories - Scan everything
[1-9] Specific Category - Select individual category
[q] Back - Return to main menu
```

### New Feature: File Detail Preview โœจ

When cleaning, you can now preview exactly what will be deleted:

```
Show detailed file list before cleaning? [Y/n]: y

๐Ÿ“ System Cache Files
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Path: ~/Library/Caches/com.apple.Safari/Cache.db โ”‚
โ”‚ Size: 45.2 MB โ”‚
โ”‚ Safe: โœ… Yes โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ ... (showing 1-20 of 156 files) โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Continue to next page? [Y/n]:
```

---

## โš™๏ธ Configuration

### Config File Location
`~/.MacCleanCLI/config.json`

### Default Configuration

```json
{
"dry_run": false,
"enable_backup": true,
"verify_cleaning": true,
"remove_empty_dirs": true,
"max_workers": 4,
"backup_retention_days": 7,
"min_file_size_mb": 0.001,
"scan_hidden_files": false,
"protected_extensions": [".dmg", ".pkg", ".app"],
"protected_directories": [
"/System",
"/Library/System",
"/private/var/db"
]
}
```

### Configuration Options

| Option | Type | Default | Description |
|--------|------|---------|-------------|
| `dry_run` | bool | `false` | Preview mode without deletion |
| `enable_backup` | bool | `true` | Backup files before cleaning |
| `verify_cleaning` | bool | `true` | Verify files are deleted |
| `remove_empty_dirs` | bool | `true` | Remove empty directories |
| `max_workers` | int | `4` | Parallel processing threads |
| `backup_retention_days` | int | `7` | Days to keep backups |
| `min_file_size_mb` | float | `0.001` | Minimum file size (1KB) |
| `scan_hidden_files` | bool | `false` | Include hidden files |

---

## ๐Ÿ›ก๏ธ Safety Features

### Protected Paths
The following paths are **never** touched:
- `/System/*` - System files
- `/Library/System/*` - System libraries
- `/private/var/db/*` - System databases
- `/usr/bin/*`, `/usr/sbin/*` - System binaries
- User home directory root files

### Safety Mechanisms
- โœ… Pre-flight safety checks
- โœ… User confirmation for all destructive operations
- โœ… Optional automatic backup system
- โœ… Post-cleaning verification
- โœ… Dry-run mode for risk-free preview
- โœ… Comprehensive error handling and logging

### Backup System
```bash
# Backups stored in
~/.macos-cleaner/backups/

# Structure
backups/
โ”œโ”€โ”€ 2024-10-06_170000/ # Timestamp-based folders
โ”‚ โ”œโ”€โ”€ Caches/
โ”‚ โ””โ”€โ”€ manifest.json # Backup metadata
โ””โ”€โ”€ 2024-10-05_120000/
```

---

## ๐Ÿ—๏ธ Project Architecture

### Directory Structure
```
MacCleanCLI/
โ”œโ”€โ”€ main.py # Application entry point
โ”œโ”€โ”€ core/ # Core business logic
โ”‚ โ”œโ”€โ”€ scanner.py # Multi-threaded file scanning
โ”‚ โ”œโ”€โ”€ cleaner.py # Safe file deletion engine
โ”‚ โ””โ”€โ”€ optimizer.py # System optimization utilities
โ”œโ”€โ”€ models/ # Data models and types
โ”‚ โ””โ”€โ”€ scan_result.py # Result structures and enums
โ”œโ”€โ”€ ui/ # User interface layer
โ”‚ โ”œโ”€โ”€ interface.py # Interactive menu system
โ”‚ โ””โ”€โ”€ components.py # Reusable UI components
โ”œโ”€โ”€ utils/ # Utility modules
โ”‚ โ”œโ”€โ”€ config.py # Configuration management
โ”‚ โ”œโ”€โ”€ logger.py # Logging system
โ”‚ โ”œโ”€โ”€ backup.py # Backup management
โ”‚ โ””โ”€โ”€ exceptions.py # Custom exceptions
โ””โ”€โ”€ tests/ # Test suite (87 tests)
โ”œโ”€โ”€ test_scanner.py
โ”œโ”€โ”€ test_cleaner.py
โ”œโ”€โ”€ test_integration.py
โ”œโ”€โ”€ test_optimizer.py
โ””โ”€โ”€ test_new_categories.py
```

### Design Principles
- **SOLID Principles** - Clean, maintainable code architecture
- **Type Safety** - Full type hints with dataclasses
- **Error Handling** - Comprehensive exception handling
- **Testing** - 87 tests with 41% coverage
- **Performance** - Multi-threaded parallel processing
- **Safety** - Multiple layers of protection

---

## ๐Ÿ”ง Development

### Setup Development Environment

```bash
# Clone and navigate
git clone https://github.com/QDenka/MacCleanCLI.git
cd MacCleanCLI

# Create virtual environment (recommended)
python -m venv venv
source venv/bin/activate

# Install in development mode
pip install -e .

# Install development dependencies
pip install pytest pytest-cov black flake8 mypy
```

### Running Tests

```bash
# Run all tests
pytest

# Run with coverage report
pytest --cov=. --cov-report=html

# Run specific test file
pytest tests/test_scanner.py

# Run specific test
pytest tests/test_scanner.py::TestSystemScanner::test_scan_user_cache

# Generate coverage report
pytest --cov=. --cov-report=term-missing
```

**Current Test Stats:**
- โœ… 87 tests passing
- ๐Ÿ“Š 41% overall coverage
- ๐ŸŽฏ Core modules: 52-87% coverage

### Code Quality

```bash
# Format code with Black
black . --line-length 100

# Check linting with flake8
flake8 . --max-line-length=100

# Type checking with mypy
mypy . --ignore-missing-imports

# Run all quality checks
make lint
```

### Project Commands

```bash
# Available make commands
make install # Install package
make install-dev # Install with dev dependencies
make test # Run tests
make coverage # Generate coverage report
make lint # Run all linters
make clean # Clean build artifacts
```

---

## ๐Ÿ“Š Performance

### Optimization Strategies
- **Multi-threading** - Parallel file scanning using ThreadPoolExecutor
- **Batch Operations** - Group operations by directory for efficiency
- **Memory Efficiency** - Stream large files instead of loading into RAM
- **Smart Caching** - Cache file metadata to avoid redundant I/O
- **Progress Tracking** - Real-time updates without blocking operations

### Benchmarks (Typical macOS System)
- **Scan Speed**: ~500-1000 files/second
- **Memory Usage**: 50-100 MB during scan
- **Clean Speed**: ~200-400 files/second
- **Thread Count**: Configurable (default: 4 workers)

---

## ๐Ÿค Contributing

We welcome contributions! Here's how to get started:

### Contribution Process

1. **Fork the Repository**
```bash
# Click "Fork" on GitHub
git clone https://github.com/YOUR_USERNAME/MacCleanCLI.git
```

2. **Create Feature Branch**
```bash
git checkout -b feature/amazing-feature
```

3. **Make Changes**
- Write clean, documented code
- Follow existing code style
- Add tests for new features
- Update documentation

4. **Run Tests**
```bash
pytest
black . --check
flake8 .
```

5. **Commit Changes**
```bash
git add .
git commit -m "Add amazing feature"
```

6. **Push and Create PR**
```bash
git push origin feature/amazing-feature
# Open Pull Request on GitHub
```

### Contribution Guidelines

- โœ… Follow PEP 8 style guide
- โœ… Write meaningful commit messages
- โœ… Add tests for new features
- โœ… Update documentation
- โœ… Keep PRs focused and atomic
- โœ… Respond to review feedback

### Areas for Contribution

- ๐Ÿ› Bug fixes and error handling
- โœจ New cleaning categories
- ๐ŸŽจ UI improvements
- ๐Ÿ“ Documentation enhancements
- ๐Ÿงช Test coverage expansion
- โšก Performance optimizations
- ๐ŸŒ Localization/translations

---

## ๐Ÿ“„ License

This project is licensed under the **MIT License** - see the [LICENSE](LICENSE) file for details.

**TL;DR**: You can freely use, modify, and distribute this software with attribution.

---

## ๐Ÿ™ Acknowledgments

### Built With
- **[Rich](https://github.com/Textualize/rich)** - Beautiful terminal formatting and UI components
- **[psutil](https://github.com/giampaolo/psutil)** - Cross-platform system and process utilities
- **[pytest](https://github.com/pytest-dev/pytest)** - Testing framework

### Inspiration
- macOS maintenance utilities
- CleanMyMac concepts
- Unix philosophy of doing one thing well

### Special Thanks
- All contributors and issue reporters
- The Python and open-source community
- macOS power users providing feedback

---

## ๐Ÿ“ž Support & Community

### Get Help
- ๐Ÿ“– **Documentation**: [QUICKSTART.md](QUICKSTART.md) โ€ข [TROUBLESHOOTING.md](TROUBLESHOOTING.md)
- ๐Ÿ› **Bug Reports**: [GitHub Issues](https://github.com/QDenka/MacCleanCLI/issues)
- ๐Ÿ’ฌ **Discussions**: [GitHub Discussions](https://github.com/QDenka/MacCleanCLI/discussions)
- ๐Ÿ“ง **Contact**: denis@kaban.dev

### Stay Updated
- โญ Star this repo to show support
- ๐Ÿ‘๏ธ Watch for updates and releases
- ๐Ÿ”” Enable notifications for new versions

---

## โš ๏ธ Disclaimer

**Use at Your Own Risk**

This software is provided "as-is" without warranty of any kind. While extensive safety measures are in place, always:

1. โœ… **Backup Important Data** - Use Time Machine or other backup solutions
2. โœ… **Review Before Cleaning** - Check what will be deleted
3. โœ… **Start with Scan Only** - Test before actual cleaning
4. โœ… **Enable Backup Mode** - Use the built-in backup feature

The authors are not responsible for data loss or system issues. Always maintain regular backups of your system.

---

## ๐Ÿ“ˆ Project Stats

![GitHub last commit](https://img.shields.io/github/last-commit/QDenka/MacCleanCLI?style=flat-square)
![GitHub commit activity](https://img.shields.io/github/commit-activity/m/QDenka/MacCleanCLI?style=flat-square)
![GitHub code size](https://img.shields.io/github/languages/code-size/QDenka/MacCleanCLI?style=flat-square)

**Made with โค๏ธ for macOS users**

---

**If this project helped you, consider giving it a โญ!**