A lightweight, modern system cleaning utility for Windows — built with Python and CustomTkinter.
Junks Cleaner is an open-source system cleaning tool that helps you reclaim disk space and keep your Windows machine clean. It scans and safely removes temporary files, browser caches, recycle bin contents, and other junk left behind by the OS and applications.
Built with a functionality-first philosophy — every feature is fully working before the next one is added. No half-baked features, no bloat.
- Scans all standard Windows temp locations
- Displays found files in a sortable, scrollable table
- Per-file checkbox selection — choose exactly what to delete
- Background scanning — UI never freezes
- Confirmation dialog before any deletion
- Handles locked/in-use files gracefully
| Phase | Feature |
|---|---|
| 2 | Browser Cache Cleaner (Chrome, Edge, Firefox, Brave) |
| 3 | Recycle Bin Cleaner |
| 4 | Windows Update Cache |
| 5 | Duplicate File Finder |
| 6 | Settings, themes, exclusion lists |
| 7 | Linux support |
(Screenshots will be added after v0.1.0 release)
- Python 3.10 or higher
- Windows 10 / 11
- pip packages listed in
requirements.txt
1. Clone the repository
git clone https://github.com/VadaPavMan/JunksCleaner.git
cd JunksCleaner2. Install dependencies
pip install -r requirements.txt3. Run the setup script (first time only)
python fix_setup.py4. Launch the app
python main.pyNote: Some cleaning targets (e.g.
C:\Windows\Temp) require administrator privileges. Right-click your terminal and choose "Run as administrator" for full access.
JunksCleaner/
├── main.py ← Entry point
├── requirements.txt
├── fix_setup.py ← First-time setup helper
│
├── app/ ← App lifecycle and global state
│ ├── app.py ← CTk window setup
│ └── state.py ← Global state singleton
│
├── ui/ ← All UI code
│ ├── main_window.py ← Root layout
│ ├── sidebar.py ← Navigation panel
│ ├── components/ ← Reusable widgets
│ │ ├── file_table.py
│ │ ├── progress_bar.py
│ │ ├── confirm_dialog.py
│ │ └── status_bar.py
│ └── pages/ ← One file per feature
│ ├── temp_cleaner_page.py
│ ├── browser_cleaner_page.py
│ └── ...
│
├── core/ ← Cleaning logic (no UI imports)
│ ├── base_cleaner.py ← Abstract base class
│ └── temp_cleaner.py
│
├── os_platform/ ← OS-specific paths and APIs
│ ├── detector.py
│ ├── windows/
│ └── linux/
│
├── utils/ ← Shared helpers
│ ├── logger.py
│ ├── thread_worker.py
│ └── file_utils.py
│
└── config/ ← Settings and defaults
├── settings.py
└── default_config.json
The project follows a strict layered architecture:
ui/ → core/ → os_platform/ → utils/
ui/reads fromapp/state.pyto display datacore/writes results toapp/state.pyafter operationscore/never imports fromui/— cleaning logic is fully independentos_platform/isolates all OS-specific code so adding Linux support only touches that layer- Every long-running operation runs on a background thread via
utils/thread_worker.py
Contributions are welcome! Please read CONTRIBUTING.md before submitting a pull request.
Good first issues:
- Adding a new browser to the browser cache cleaner
- Adding Linux temp paths in
os_platform/linux/paths.py - UI improvements and theming
git clone https://github.com/VadaPavMan/JunksCleaner.git
cd JunksCleaner
pip install -r requirements.txt
python main.pyTo run with verbose logging, set log_level to DEBUG in config/default_config.json. Logs are written to logs/junkscleaner.log.
Harsh Rajbhar — @VadaPavMan
Built as a learning project to sharpen Python skills while building something genuinely useful.