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
  • 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 built-in scanner
  • 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
  • Auto-update - Built-in check for updates (Help menu in GUI)

Installation

Option 1: Windows Installer (Recommended)

  1. Go to Releases
  2. Download S-Organizer-0.3.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

CLI Mode

python -m src.main

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.3.0.tar.gz (43.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.3.0-py3-none-any.whl (48.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: s_organizer-0.3.0.tar.gz
  • Upload date:
  • Size: 43.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.3.0.tar.gz
Algorithm Hash digest
SHA256 8fe71e987b85022ae73839411c5d2eb667a70b3a4463d176828ad4b5f260f8ce
MD5 b5239ab8ae34392172123dbdbac3b823
BLAKE2b-256 3f9af5d5a37e7f4a9eca37a616d6e9bd375ef9bec17aeffb866379c9410d36c7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: s_organizer-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 48.6 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.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3643f1a962aa367dd9d4bd85fa1b910d4cde570afb7054059442b818058e14f9
MD5 80e55efccbc5387e576e5654031d2cd9
BLAKE2b-256 113faacd75c99efd9b61b7b3febafbfb5652bb4d9d5a940830e1821e4cf7e081

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

0.4.0

2 files

This release

0.3.0 This release

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