Skip to content

ozardali/SortDrop

Repository files navigation

SortDrop

Set rules once. Stay organized forever.

SortDrop is a free, open source macOS menu bar app that automatically organizes files in your Downloads folder using simple rules you define. Everything stays on your Mac.

It's a hobby project I work on in my spare time. No commercial support, no SLAs. If it helps you, great.

Repository: github.com/ozardali/SortDrop

CI

SortDrop menu bar icon and menu

Features (v1.0)

  • Native Downloads watching: FSEvents with debounce, no polling
  • Flexible rules: extension, file name contains, file kind, older than N days
  • Preview mode: see what would move before you commit
  • Activity log: a running history of what happened
  • App Sandbox: Mac App Store ready
  • Launch at login: optional, off by default
  • Export / import rules: back up your rules as JSON (replace or merge)
  • Bookmark health checks: warns you if a destination folder goes stale
  • No accounts, no cloud, no analytics

Rules window

Quick start

Download a release (easiest)

  1. Open Releases
  2. Download SortDrop.dmg
  3. Drag SortDrop to Applications
  4. Open it from Applications and let macOS run the app when it asks

Maintainers: see docs/RELEASING.md for how to ship a release.

Build from source

git clone https://github.com/ozardali/SortDrop.git
cd SortDrop
open SortDrop.xcodeproj

Press ⌘R in Xcode, or:

xcodebuild -scheme SortDrop -configuration Release build CODE_SIGNING_ALLOWED=NO

Then:

  1. Open Rules… from the menu bar
  2. Add a rule (e.g. extension pdfDownloads/PDFs)
  3. Turn on Watch Downloads (it's on by default)
  4. Drop a file into Downloads and SortDrop will sort it for you

For folders outside Downloads, hit Choose Folder… in the rule editor so macOS can grant access (sandbox thing).

Preview and sync animation

Requirements

  • macOS 14.0 (Sonoma) or later
  • Xcode 16+ / Swift 6 (only if you're building from source)

Sandbox & permissions

Access How
~/Downloads Automatic (downloads.read-write entitlement)
Subfolders of Downloads Automatic (e.g. Downloads/PDFs)
Other folders Choose Folder… in the rule editor

Incomplete downloads (.download, .part, .crdownload) are skipped by default. Flip the toggle in Settings if you want otherwise.

Testing

Run unit tests:

xcodebuild test -scheme SortDrop -destination 'platform=macOS' CODE_SIGNING_ALLOWED=NO

Generate sample files in Downloads:

cd ~/Downloads
/path/to/SortDrop/scripts/generate-test-files.sh

Project structure

SortDrop/
├── SortDrop/App/          # App entry, AppDelegate
├── SortDrop/Models/       # FileRule, AppController, AppSettings
├── SortDrop/Services/     # RuleEngine, FolderWatcher, RuleStore
├── SortDrop/Views/        # SwiftUI UI
├── SortDropTests/         # Unit tests
├── docs/                  # Screenshots, release notes
└── scripts/               # Test file generator, DMG helper

Disclaimer

SortDrop moves files on your Mac based on rules you set up. You're on the hook for your rules, destinations, and anything that goes wrong. The authors aren't liable for misplaced, lost, or damaged files.

Full details in DISCLAIMER.md.

Found a bug? Open an issue on GitHub.

Privacy

SortDrop runs entirely on your Mac. See PRIVACY.md.

License

MIT. See LICENSE.

Made by Göksel ÖZARDALI · hobby project, MIT licensed.

About

SortDrop is a free, open-source macOS application that automatically organizes your Downloads folder using customizable rules.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors