Skip to main content

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)

  1. Go to Releases
  2. Download S-Organizer-0.4.0-Setup.exe
  3. Run the installer — it registers in Control Panel > Programs and Features for easy uninstall
  4. 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)

  1. Go to Releases
  2. Download S-Organizer.exe
  3. 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()

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 monitor
  • recursive: 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 (e.g., "10MB", "1GB")
  • min_age_days / max_age_days: Age limits
  • content_keywords: Search within file contents

Action

  • type: "move", "copy", "rename", or "delete"
  • destination: Target path with placeholders
  • 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

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
│   └── utils/          # Configuration and helpers
├── tests/              # Test suite
├── rules/              # Sample JSON rule files
├── 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

s_organizer-0.4.0.tar.gz (49.2 kB view details)

Uploaded Source

Built Distribution

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

s_organizer-0.4.0-py3-none-any.whl (53.4 kB view details)

Uploaded Python 3

File details

Details for the file s_organizer-0.4.0.tar.gz.

File metadata

  • Download URL: s_organizer-0.4.0.tar.gz
  • Upload date:
  • Size: 49.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for s_organizer-0.4.0.tar.gz
Algorithm Hash digest
SHA256 31c451a2123bf40416d68853e061dae98c385c7a73612ca804f1c2aff7208d43
MD5 ec846bdc9a2e250d09b5013e4458d860
BLAKE2b-256 a528a563eb246aa7ce8cf3cc28430099136ca47ce2c7ec7b392444c38b21da76

See more details on using hashes here.

File details

Details for the file s_organizer-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: s_organizer-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 53.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for s_organizer-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b237278243ba607671ee2f6fdaaf55afb363c0020f911d1750fb19bf937b103a
MD5 33294728cd67715d514a79b532807966
BLAKE2b-256 445f99c463d45751721d772d43cf3aaaaf49364702f1a6e04eb217a924b17a95

See more details on using hashes here.

Release history Release notifications | RSS feed

0.4.8

2 files

0.4.7

2 files

0.4.6

2 files

0.4.5

2 files

0.4.4

2 files

0.4.3

2 files

0.4.2

2 files

0.4.1

2 files

This release

0.4.0 This release

2 files

0.3.0

2 files

0.2.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page