A lightweight macOS menu bar app that plays distinct sounds when your Mac wakes and when you unlock it.
- Separate wake and unlock sounds
- Built-in Odyssey bow sounds
- Custom MP3, M4A, WAV, AIFF, and CAF files
- Independent enable and volume controls
- Instant sound testing from the menu bar
- Optional launch at login
- Menu bar only: no Dock icon and no background network traffic
- macOS 13 Ventura or later
- Xcode 15 or later to build from source
Clone and build:
git clone https://github.com/metehankasapp/odysseus-bow.git
cd odysseus-bow
xcodebuild \
-project OdysseusBow.xcodeproj \
-scheme OdysseusBow \
-configuration Release \
-derivedDataPath .build \
CODE_SIGN_IDENTITY=- \
CODE_SIGNING_REQUIRED=YES \
build
cp -R ".build/Build/Products/Release/Odysseus Bow.app" /Applications/
open "/Applications/Odysseus Bow.app"Alternatively, open OdysseusBow.xcodeproj in Xcode, select the OdysseusBow scheme, and press Run.
Because source builds use a local ad-hoc signature, macOS may ask you to confirm the first launch in System Settings → Privacy & Security.
- Open Odysseus' Bow.
- Click the bow icon in the menu bar.
- Test and configure the wake and unlock sounds.
- Enable Launch at Login if you want it active after every restart.
- Lock your Mac with
Control–Command–Q, let the display sleep, then wake and unlock it.
Custom audio files are copied into:
~/Library/Application Support/OdysseusBow/
The app observes macOS workspace wake and active-session notifications. It also listens for the system unlock notification and suppresses duplicate events during the wake/unlock transition. Audio playback is local through AVAudioPlayer.
Odysseus' Bow has no analytics, account system, tracking, or network requests. It does not need Accessibility, screen recording, microphone, or camera permission. Preferences and custom sounds remain on your Mac.
- The app must already be running before the Mac sleeps or locks.
- macOS does not identify whether an unlock used a password, Touch ID, or Apple Watch.
- The distributed unlock notification is not a documented public API and may require maintenance on future macOS releases.
OdysseusBow/
├── AppController.swift # Wake and unlock event coordination
├── AudioFileStore.swift # Custom audio persistence
├── MenuBarView.swift # Menu bar interface
├── SoundPlayer.swift # Audio playback
├── SoundPreferences.swift # User settings
└── OdysseusBowApp.swift # App entry point
The bundled Odyssey bow recordings are distributed with the rights holder's permission. The app icon was generated for this project with OpenAI ImageGen and converted into a native macOS AppIcon asset set.
Issues and focused pull requests are welcome. Please verify both wake and unlock behavior on a real Mac before submitting event-handling changes.
Source code is available under the MIT License. Bundled audio and artwork are excluded from the MIT license unless explicitly stated otherwise.