Switcher is a native macOS app that turns regular app windows into a dedicated sidebar so your communication and work context stays visible while you focus.
Current version: v1.1.0
Most productivity loss comes from context switching:
- You jump between coding/design/docs and Slack/Email/Teams.
- Important messages disappear behind full-size windows.
- You lose time reopening, resizing, and rearranging apps.
Switcher solves this by keeping key windows attached to a screen edge in a stable layout. You keep a persistent "communication lane" while continuing deep work in the rest of the screen.
- Keep chat, ticket queue, inbox, or notes visible while working.
- Reduce alt-tab friction and window hunting.
- Maintain a repeatable workspace layout across sessions.
- React faster to updates without breaking flow.
- Keep up to three apps stacked on one side for triage workflows.
- Native macOS app (
SwiftUI + AppKit + Accessibility APIs) - Menu bar utility workflow
- Pick target from installed apps (
/Applications,/System/Applications,~/Applications) or running windows - Pin up to 3 apps stacked on one side
- Resizable sidebar width with per-app persistence
- Pinned-app manager with focus, reorder, unpin, move-left/right, and show/hide controls
- Choose left/right edge and display
- Auto-launch selected app if not already running
- Smooth push-in / pull-out sidebar motion
- Edge toggle handle on the sidebar boundary
- Optional automatic open/close by edge hover
- Optional auto-pin by dragging a window to the screen edge and holding
- Per-app persistence for edge, display, and width defaults
- Launch at login toggle
- Global hotkey:
Control + Option + Sopens the pin flow when idle and toggles the active sidebar when pinned - Blue floating button mode (for selected apps):
Clickto pin/unpin that windowClick and holdto choosePlace on LeftorPlace on Right
- macOS 14+
- Swift 6.2+
- Full Xcode with XCTest support for running tests
- Accessibility permission enabled for Switcher
git clone https://github.com/KSHITIZ6341/Switcher.git
cd Switcher
swift test
swift run Switcherswift test requires a full Xcode toolchain, not just Command Line Tools. Check the active toolchain with:
xcode-select -p
xcodebuild -versionIf tests fail with no such module 'XCTest' or unable to find utility "xctest", install Xcode and select it:
sudo xcode-select -s /Applications/Xcode.app/Contents/DeveloperAlternative launch after build:
swift build
open "$(swift build --show-bin-path)/Switcher"For distributable .app builds, signing, notarization, and release checklist details, see RELEASING.md.
- Launch Switcher.
- Grant Accessibility permission when prompted.
- Open Switcher and choose an installed app or running window.
- Pin an app/window to the preferred edge/display.
- Pin communication tools (Slack/Teams/Email) to the right side.
- Use center/main screen area for focused tasks (coding, writing, design).
- Keep alerts visible without switching context every few minutes.
- Unpin/re-pin quickly as priorities change.
- Use long-press on blue button when you want to move the sidebar side.
- True system-level always-on-top for arbitrary third-party windows is not reliably available via public APIs.
- Switcher uses best-effort geometry enforcement and bring-forward behavior.
- If a pinned window closes, that window is removed from the sidebar session; the Switcher app itself stays running.
- Launch-at-login uses
SMAppService.mainApp; unsigned dev binaries may have login-item limitations until packaged/notarized.
Switcher is open source under the MIT License.
Contributions are welcome. Read CONTRIBUTING.md before opening a pull request, follow the Code of Conduct, and report security issues through the process in SECURITY.md.