A cross-platform desktop utility that automatically organizes your Downloads folder based on configurable rules. Features a system tray interface with an intuitive GUI for managing file sorting rules, drag-and-drop rule reordering, and customizable sorting intervals.
- Automatic file organization: Runs silently in the background and sorts files at customizable intervals
- System tray integration: Clean, unobtrusive interface with easy access to all features
- Configurable rules: Create custom rules based on file extensions and filename keywords
- Modern GUI: User-friendly interface built with ttkbootstrap for managing sorting rules
- Drag-and-drop reordering: Easily reorganize rule priority by dragging rule cards
- Flexible destinations: Sort files into Downloads subfolders or absolute paths
- Smart file handling: Automatically handles duplicate filenames with incremental numbering
- Adjustable intervals: Customize how frequently the organizer scans for new files
- Quick actions: Manual sort and default folder creation buttons
- Comprehensive logging: Detailed logs stored in system AppData directory
- Visit the Releases Page
- Download the latest
download-organizer-setup.exefile - Run the installer and follow the setup wizard
- The application will automatically start after installation
Requirements:
- Python 3.12+
- Inno Setup (Windows only, for installer creation)
Steps:
-
Clone the repository:
git clone https://github.com/Cervini/organizer.git cd organizer -
Install dependencies:
Windows:
pip install -r requirements.txt
macOS/Linux:
# Remove Windows-specific dependencies sed '/pywin32-ctypes/d' requirements.txt | pip install -r /dev/stdin
Additional Linux dependencies:
- Ubuntu/Debian:
sudo apt-get install python3-gi gir1.2-gtk-3.0 - Fedora:
sudo dnf install python3-gobject gtk3 - Arch Linux:
sudo pacman -S python-gobject gtk3
- Ubuntu/Debian:
-
Create executable:
pyinstaller --windowed --onefile source/main.py
-
Create installer (Windows only):
- Open
installer_script.issin Inno Setup - Click Build → Compile
- Find the installer in the
Output/folder
- Open
Once installed, Download Organizer runs automatically in the system tray. Look for the broom icon in your system tray area.
Right-click the tray icon to access:
- Configure Rules: Open the main configuration window
- Exit: Close the application
The configuration window provides several tools:
Top Toolbar:
- Add New Rule: Create custom sorting rules
- Sort Downloads folder: Manually trigger organization
- Create default folders: Set up common file type folders
- Interval setting: Adjust scanning frequency (in minutes)
Rule Management:
- Drag and drop: Reorder rules by dragging rule cards (higher rules have priority)
- Edit: Modify existing rules
- Delete: Remove unwanted rules
Each rule can specify:
| Field | Description | Example |
|---|---|---|
| Name | Rule identifier | "PDF Documents" |
| Extensions | File types to match | .pdf, .doc, .docx |
| Keywords | Filename patterns | invoice, receipt, contract |
| Destination | Target folder | Documents\PDFs\ |
| Subfolder | Create within Downloads | ✓ (recommended) |
Rule Logic:
- Files matching either extensions or keywords will be moved
- Rules are processed in order (top to bottom)
- First matching rule wins
Organize by file type:
Name: Images
Extensions: .jpg, .png, .gif, .webp
Destination: Images\
Subfolder: ✓Organize by content:
Name: Invoices
Keywords: invoice, bill, receipt
Destination: Documents\Invoices\
Subfolder: ✓Organize to absolute path:
Name: Work Documents
Extensions: .docx, .xlsx, .pptx
Destination: C:\Work\Documents\
Subfolder: ✗organizer/
├── source/ # Application source code
│ ├── main.py # Entry point and system tray logic
│ ├── gui.py # User interface components
│ └── utils.py # File operations and configuration
├── resources/ # Application resources
│ ├── config.yaml # Default configuration and rules
│ ├── broom.ico # Windows icon
│ └── broom.png # Cross-platform icon
├── installer_script.iss # Inno Setup script
├── requirements.txt # Python dependencies
└── README.md
The application ships with sensible defaults:
| Rule | Extensions | Destination |
|---|---|---|
| Documents | .pdf, .docx, .txt |
Documents\ |
| Images | .jpg, .png, .gif, .webp, .ico, .svg |
Images\ |
| Archives | .zip, .rar, .7z, .gz |
Archives\ |
| Installers | .msi, .exe |
Installers\ |
Rules are stored in resources/config.yaml:
interval: 2 # Minutes between scans
rules:
- name: Documents
extensions: [.pdf, .docx, .txt]
keywords: []
destination: Documents\
sub: trueLogs are automatically created in:
- Windows:
%APPDATA%\Organizer\organizer.log - macOS/Linux:
~/.organizer/organizer.log
Features rotating logs (5MB max, 5 backups) with detailed operation tracking.
Built with:
- Python 3.12+ - Core application logic
- pystray - System tray integration
- ttkbootstrap - Modern GUI framework
- PyYAML - Configuration management
- Pillow - Image processing
- PyInstaller - Executable creation
Platform Support:
- Windows - Full support with installer
- macOS - Compatible (build from source)
- Linux - Compatible (build from source)
Contributions are welcome! See the CONTRIBUTING file for details.
- Auto-updater functionality
- Advanced rule conditions (file size, date, etc.)
- Multiple folder monitoring
- Rule templates and sharing
- Statistics and usage analytics
This project is licensed under the MIT License. See the LICENSE file for details.
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: Contact via GitHub
Made with 🍬🍬🍬 by Simone Cervini