
2026 · macOS Utility
Ciscowser
Every link click becomes a choice — browser, profile, done.
What it is
Ciscowser is a native macOS app that intercepts every HTTP/HTTPS link click — system-wide — and presents a floating picker so you choose which browser, and which profile, opens it.
One problem, solved completely: macOS allows only one default browser. Ciscowser inserts an explicit decision step between click and open.
Spiritually similar to Velja, built from scratch in Swift as a learning project and personal tool.
What it does
- Intercepts all links via
NSAppleEventManagerbefore any browser sees them - Detects all installed browsers automatically — Chrome, Edge, Brave, Vivaldi, Opera, Firefox, Safari, and more
- Reads Chromium profiles from
Local State— shows each profile with its avatar photo - Opens with the right profile using
--profile-directoryflag - Floating Liquid Glass picker — borderless,
ultraThinMaterial, keyboard shortcuts 1–9 and Escape - Menu bar app — runs in background (
LSUIElement), always reachable, never in the Dock - 4-step onboarding — welcome → set as default → configure browsers → done
- Settings window — reorder, hide, rename browsers and profiles
- Open at Login toggle
- Bilingual — Spanish and English, auto-detected from system language
Architecture
Link click (any app)
↓ NSAppleEvent
AppDelegate
├── BrowserManager — discovers browsers, reads Chromium profiles, opens URLs
├── BrowserSettingsStore — persists user order, visibility, custom names
└── BrowserPickerView — floating Liquid Glass UI with keyboard support
Stack
- Language: Swift 5.10
- UI: SwiftUI + AppKit (NSWindow, NSHostingView, NSStatusItem)
- System APIs: LaunchServices, NSWorkspace, NSAppleEventManager
- Persistence: UserDefaults + JSONEncoder
- Design: Liquid Glass (
ultraThinMaterial,.glassEffect()on macOS 26+) - Target: macOS 13.0+
- Distribution: Unsigned DMG — no App Store, no Apple Developer Program required
Key design decisions
No App Sandbox — required to use LaunchServices without entitlement restrictions. No com.apple.developer.web-browser entitlement — Apple does not grant it without review; LSSetDefaultHandlerForURLScheme used as workaround. Browser IDs are UUIDs, not bundle IDs, so multiple profiles of the same browser can coexist in the picker without collision.
Status
v1.4 · Working. Personal use. Distribution as unsigned DMG.