A native macOS menubar app for managing text snippets with macOS Text Replacement sync.
brew tap pasogott/tap
brew install --cask quicksnipTo update:
brew upgrade --cask quicksnipDownload the latest DMG from Releases.
QuickSnip stores snippets as markdown files with YAML frontmatter in ~/.snippets/. It provides a hierarchical tree view, file watching for external edits, import/export for sharing, and integration with macOS native Text Replacement.
- Menubar Tree View - Recursive folder/snippet hierarchy
- File Watcher - Auto-reload on external edits
- Text Replacement Sync - Syncs to macOS native system and iOS via iCloud
- Import/Export - Share snippets as .zip files
- Click to Copy - Click snippet to copy, long-press to preview
- Variable Support -
{date},{time},{clipboard}expanded when copied - Edit Anywhere - Open any .md file in your favorite editor
---
shortcut: ;sig
category: personal
enabled: true
---
Best regards,
Pascal~/.snippets/
├── personal/
│ ├── signature.md
│ └── address.md
├── sales/
│ └── meeting-request.md
└── quick.md
- macOS 15.0 (Sequoia) or later
- Full Disk Access permission (for Text Replacement sync)
QuickSnip is not signed with an Apple Developer certificate. On first launch, macOS will show a warning saying it cannot verify the app. To open the app:
- Click "Done" on the warning dialog
- Open System Settings > Privacy & Security
- Scroll down to find "QuickSnip.app was blocked"
- Click "Open Anyway"
- Confirm by clicking "Open" in the next dialog
This only needs to be done once.
After opening the app, grant Full Disk Access for Text Replacement sync:
- Open System Settings > Privacy & Security > Full Disk Access
- Click the + button
- Navigate to /Applications and select QuickSnip
- Restart QuickSnip
QuickSnip syncs your snippets to macOS Text Replacement by:
- Writing to the system database (
~/Library/KeyboardServices/TextReplacements.db) - Updating GlobalPreferences.plist for immediate local activation
- Restarting the keyboard service daemon
When you delete a snippet, QuickSnip:
- Marks the entry as deleted (
ZWASDELETED=1) for iCloud sync propagation - Removes the entry from GlobalPreferences.plist for immediate local deactivation
This enables your snippets to sync to all your Apple devices via iCloud.
Why this approach? Apple provides no public API for Text Replacement. Alternatives like InputMethodKit don't sync to iOS. See the Architecture Decision Record for details.
See CONTRIBUTING.md for development setup and guidelines.
# Clone
git clone https://github.com/pasogott/quicksnip-menubar-swift.git
cd quicksnip-menubar-swift
# Build
cd QuickSnip && xcodebuild -scheme QuickSnip -configuration Debug
# Test
xcodebuild test -scheme QuickSnip -destination 'platform=macOS'QuickSnip/
├── QuickSnipApp.swift # @main, MenuBarExtra scene
├── Models/ # Snippet, SnippetFolder, SyncStatus
├── Services/ # File I/O, parsing, sync, variables
├── ViewModels/ # SnippetTreeViewModel, SettingsViewModel
├── Views/ # SwiftUI views
└── Resources/ # Assets
MIT