A fast, native macOS menubar app for posting to Mastodon, WordPress, and Micro.blog with a single keyboard shortcut.
Built with Swift and SwiftUI. No Electron, no web views, no dependencies.
- Global hotkey — press
Ctrl+Option+Cmd+Tfrom anywhere to open the posting window - Multiple accounts — add accounts from different services and post to one or more at once
- Image attachments — drag-and-drop or browse for images, up to 4 per post
- Menubar app — lives in your menubar, no Dock icon, always ready
- Lightweight — native Swift/SwiftUI, fast startup, minimal memory footprint
| Service | Auth Method | Media Upload |
|---|---|---|
| Mastodon | OAuth2 (any instance) | up to 4 images |
| WordPress (self-hosted) | Application Passwords | up to 4 images |
| Micro.blog | App Token | up to 4 images |
- macOS 15 Sequoia or later
- XcodeGen (for building from source)
brew install xcodegen
git clone https://github.com/pawelorzech/qstatus.git
cd qstatus
xcodegen generate
open qStatus.xcodeprojThen hit Cmd+R in Xcode to build and run.
- Click the menubar icon → Settings
- Click +, select Mastodon
- Enter your instance URL (e.g.
mastodon.social) - Authorize qStatus in your browser
- In WordPress admin: Users → Profile → Application Passwords
- Create a new password named "qStatus"
- In qStatus Settings, enter your site URL, username, and the application password
- Go to micro.blog/account/apps
- Generate a new app token
- Paste it in qStatus Settings
- Press Ctrl+Option+Cmd+T (or click menubar icon → New Post)
- Select target account(s) using the chips at the top
- Type your status
- Drag-and-drop images if needed (up to 4)
- Press Cmd+Enter or click Post
qStatus/
├── project.yml # XcodeGen project spec
├── qStatus/
│ ├── App/ # App entry point, AppDelegate, state
│ ├── Models/ # Account model, PostingService protocol
│ ├── Views/ # SwiftUI views (input panel, settings, menubar)
│ ├── Windows/ # NSPanel floating window
│ ├── Services/ # API clients (Mastodon, WordPress, Micro.blog)
│ ├── Utilities/ # Multipart form data helper
│ └── Resources/ # Info.plist, entitlements, assets
- Swift 6 / SwiftUI with
@Observable(macOS 15+) - MenuBarExtra for menubar presence
- NSPanel for the floating input window
- Carbon RegisterEventHotKey for global keyboard shortcut
- Keychain (native Security framework) for credential storage
- URLSession async/await for all networking
- Zero third-party dependencies
MIT