S-Organizer
Automatic file organization with PyQt6 GUI.
Features
- Real-time monitoring - Watch folders and auto-organize files as they appear
- Rule-based sorting - Define rules to move, copy, rename, or delete files
- Flexible matching - Match by extension, name pattern, size, age, or content keywords
- Content-aware sorting - Search within PDF, DOCX, XLSX, CSV, TXT, and image EXIF data
- Undo support - Reverse any file operation from history (persisted across sessions)
- Duplicate detection - Find and handle duplicate files with CSV export
- Rule templates - Browse pre-built templates when creating new rules
- JSON rules - Easy to create, share, and version control rules
- Dark theme - Switch between light and dark themes
- System tray - Minimize to tray with notifications for file operations
- One-shot scan - Scan a folder once without continuous monitoring
- Log to file - Configurable file logging with rotation
- CLI mode - Command-line interface for headless scanning
- Auto-update - Built-in check for updates (Help menu in GUI)
- Windows Installer - Proper installer that registers in Control Panel
Installation
Option 1: Windows Installer (Recommended)
- Go to Releases
- Download
S-Organizer-0.4.0-Setup.exe - Run the installer — it registers in Control Panel > Programs and Features for easy uninstall
- Windows Defender Warning: If you see a false positive warning, click "More info" → "Run anyway" or add an exclusion for the file
Option 2: Standalone EXE (Windows)
- Go to Releases
- Download
S-Organizer.exe - Windows Defender Warning: If you see a false positive warning, click "More info" → "Run anyway" or add an exclusion for the file
Option 3: Install with pip
pip install s-organizer
Option 4: From source
git clone https://github.com/Shrestha7/S-Organizer.git
cd s-organizer
pip install -r requirements.txt
# Or install in development mode
pip install -e ".[dev,content]"
Usage
GUI Mode (Default)
python -m src.main
# Or simply double-click the exe/installed shortcut
CLI Mode
# One-time scan of a folder
python -m src.main --scan ~/Downloads
# Use custom config
python -m src.main --scan ~/Downloads --config my_config.json
# Show version
python -m src.main --version
Python API
from src.main import FileOrganizer
# Initialize the organizer
organizer = FileOrganizer()
# Add a folder to watch
organizer.add_watched_folder("~/Downloads")
# Start monitoring
organizer.start()
Features Guide
Creating Rules
Create a JSON file in the rules/ directory:
{
"name": "Move PDFs to Documents",
"enabled": true,
"trigger": {
"folder": "~/Downloads",
"recursive": false
},
"match": {
"extensions": [".pdf", ".docx"]
},
"action": {
"type": "move",
"destination": "~/Documents/{extension}/{name}{extension}"
}
}
Rule Format
Trigger
folder: Directory to monitorrecursive: Watch subdirectories (default: false)
Match
extensions: List of file extensions (e.g., [".pdf", ".txt"])name_pattern: Glob pattern (e.g., ".pdf", "report_")min_size/max_size: Size limits (supports "1MB", "100KB", "1GB")min_age_days/max_age_days: Age limits in dayscontent_keywords: Search within file contents (PDF, DOCX, XLSX, CSV, TXT, images)
Action
type: "move", "copy", "rename", or "delete"destination: Target path with placeholders (for move/copy)template: New name template (for rename)
Placeholders
{name}- File name without extension{extension}/{ext}- File extension{date}- Last modified date (YYYY-MM-DD){year},{month},{day}- Date components{parent}- Parent directory name
Rule Templates
Click the Templates button in the Rule Editor to browse pre-built templates:
- Document Organization - Sort PDFs, Word docs, spreadsheets
- Media Sorting - Organize photos, videos, audio files
- Archive Management - Handle old files and backups
- Development Files - Sort code, configs, logs
Select a template and click "Use Template" to create a new rule instantly.
Duplicate Detection
- Open the Duplicates tab
- Select a folder and click Scan for Duplicates
- Review the results — duplicates are grouped by content hash
- Choose an action:
- Keep Original (oldest) - Skip the oldest file in each group
- Move Duplicates to Folder - Move duplicate copies to a specified folder
- Delete Duplicates - Send duplicates to trash
- Click Apply Action to Selected or use Export to CSV to save results
Logging
Configure logging in Settings:
- Log Level: DEBUG, INFO, WARNING, or ERROR
- Log File: Path to a log file (leave empty for stdout only)
Logs are automatically rotated (max 5MB, keep 3 backups).
System Tray
- Double-click the tray icon to show/hide the main window
- Right-click for quick access to:
- Start/Stop monitoring
- Settings
- Quit
- Desktop notifications for file operations (when enabled)
Auto-Update
- Go to Help > Check for Updates
- If an update is available, click Download
- Restart the app to apply the update
History and Undo
- All file operations are logged in the History tab
- Click Undo to reverse any operation
- History persists across sessions (stored in
history/history.json) - Export history to JSON for backup
Development
# Install dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Run with coverage
pytest --cov=src
# Lint
ruff check src/
# Type check
mypy src/
Project Structure
s-organizer/
├── src/
│ ├── core/ # File monitoring, rule engine, operations
│ ├── rules/ # Rule definitions and matching
│ ├── gui/ # PyQt6 GUI components
│ ├── resources/ # Icons and assets
│ └── utils/ # Configuration and helpers
├── tests/ # Test suite (43 tests)
├── rules/ # Sample JSON rule files
├── installer/ # Inno Setup installer script
├── docs/ # Documentation
└── main.py # Entry point
License
Apache License 2.0 - see LICENSE for details.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file s_organizer-0.4.7.tar.gz.
File metadata
- Download URL: s_organizer-0.4.7.tar.gz
- Upload date:
- Size: 50.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0e1d9b253e1c2b5f7ca20426e38d0067d0e9e4dda1f76cec1845c0fea09d53de
|
|
| MD5 |
a21c62a26928a96a822d18db933e295c
|
|
| BLAKE2b-256 |
c162c71181fece827295bb6af048045140d4f52d5c67c9b67af00f75de6b301e
|
File details
Details for the file s_organizer-0.4.7-py3-none-any.whl.
File metadata
- Download URL: s_organizer-0.4.7-py3-none-any.whl
- Upload date:
- Size: 54.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
040d52822e5bb750b5f27581f2ea07d17dfa0bc9fac360c69d21e10bf097bf4d
|
|
| MD5 |
3adbe7c759777eb2b82f30b765904fd9
|
|
| BLAKE2b-256 |
f8e1186292c86eb623bb99100a458b0884d7cd05ded8f9c2df1994aec235287d
|