A Rust CLI tool to sync macOS Stickies across machines using a portable SQLite database.
- ✅ Bidirectional sync between Stickies.app and SQLite database
- ✅ Full-text search with FTS5
- ✅ List and show stickies from CLI
- ✅ Create new stickies from CLI
- ✅ Preserve complete RTFD formatting (text + images)
- ✅ Configurable database location (XDG or iCloud)
cargo install --path .# Sync between filesystem and database
sticky sync
# Dry run to see what would change
sticky sync --dry-run --verbosesticky new "My new sticky note"
# After creating, sync to import the sticky with Stickies.app's UUID
sticky syncNote: Stickies.app assigns its own UUID when importing new stickies, so you should run sync after creating to update your database with the correct UUID.
sticky search "meeting notes"
sticky search --color yellow "todo"sticky list
sticky list --color yellowsticky show <uuid>sticky hupSends a HUP signal to Stickies.app to reload it. Useful after manually editing files or syncing from another machine.
Config file: ~/.config/sticky-situation/config.toml
[database]
path = "~/.local/share/sticky-situation/stickies.db"
# Or use iCloud:
# path = "~/Library/Mobile Documents/com~apple~CloudDocs/stickies.db"
[sync]
log_conflicts = true
conflict_log_path = "~/.local/share/sticky-situation/conflicts.log"- Reads Stickies from
~/Library/Containers/com.apple.Stickies/Data/Library/Stickies/ - Parses
StickiesState.plistfor metadata (color, position) - Reads each
<UUID>.rtfd/bundle (RTF + attachments) - Syncs to SQLite with last-write-wins conflict resolution
- Full-text search using FTS5
-
Window positioning: When creating new stickies via
sticky new, Stickies.app manages window positioning using its own internal logic. The CLI cannot control where new sticky windows appear on screen - they will be positioned by Stickies.app when it reloads. -
UUID assignment: Stickies.app assigns its own UUID to newly created stickies when it imports them. After running
sticky new, you should runsticky syncto update your database with the UUID that Stickies.app assigned.
See design document for details.
cargo testMIT