Every orchestra needs a conductor. Conduct swings its baton so your media keys always hit the right note - no matter what's in the foreground.
A free, open-source macOS menu bar utility that takes full control of your media keys and directs them to the music app of your choice.
macOS 11.0+ · Swift 5.9 · MIT License
Auto Mode - intelligently detects which music app is currently playing and routes keys there automatically
YouTube Browser Control - controls YouTube playback in Safari, Chrome, Arc, Brave, Edge, Vivaldi, Opera, Orion, Dia, Zen, Waterfox, and Chromium
Universal Media Key Routing - play/pause, next, previous always go where you want
Volume Key Hijacking - optionally redirect hardware volume keys to control your music app's volume instead of system audio
9 Supported Players - from Apple Music and Spotify to niche players like Swinsian and DaftCloud
Invisible & Lightweight - lives in your menu bar as a tiny baton icon (
), uses near-zero resourcesLaunch at Login - set it and forget it
Fully Open Source - MIT licensed, no telemetry, no ads
macOS sends media key events to whatever app is "foremost" or was last active. This means if you're listening to Spotify and click a YouTube link, pressing play/pause will control the video instead of your music.
Conduct fixes this by intercepting media keys at the system level and always routing them to your chosen app - or in Auto mode, to whichever player is actually making sound.
| App | Description |
|---|---|
| Apple Music | macOS built-in music player (formerly iTunes) |
| Spotify | Popular streaming service with native macOS app |
| App | Description |
|---|---|
| Doppler | Premium local music player for audiophiles - plays FLAC, ALAC, and other lossless formats |
| VOX | Lightweight player focused on hi-res audio and SoundCloud streaming |
| Swinsian | Advanced music player with wide format support and folder-based library management |
| Cider | Open-source Apple Music client with custom UI and community plugins |
| DaftCloud | Native SoundCloud client for macOS - stream and control SoundCloud from a dedicated app |
| App | Description |
|---|---|
| YouTube | Controls YouTube/YouTube Music playback in any supported browser via keyboard shortcuts |
Supported Browsers: Safari, Google Chrome, Arc, Brave, Microsoft Edge, Vivaldi, Opera, Orion (Kagi), Dia, Zen Browser, Waterfox, Chromium
If your browser isn't listed here, please open a GitHub issue and we'll add support for it.
Conduct lives in your menu bar as a baton icon (
). Click it to access all controls:
Conduct
─────────────────────
Control:
◉ Auto (Smart Detect)
─────────────────────
Apple Music
Spotify
─────────────────────
Doppler
VOX
Swinsian
Cider
DaftCloud
─────────────────────
YouTube (Browser)
─────────────────────
☐ Control Volume Keys
─────────────────────
☐ Launch at Login
Settings… ⌘,
About Conduct
Quit Conduct ⌘Q
| Option | Description |
|---|---|
| Control | Choose which app receives media key events. Auto detects the active player automatically. |
| Control Volume Keys | When enabled, volume up/down/mute keys control the selected app's volume instead of system audio. |
| Launch at Login | Start Conduct automatically when you log in. |
Conduct creates a CGEvent tap that intercepts system-defined events (media key presses). When a media key is detected, Conduct consumes the event (preventing it from reaching other apps) and sends the corresponding command to your selected music app via AppleScript.
When set to Auto (Smart Detect), Conduct uses a priority-based algorithm:
- Checks which music apps are currently running
- Queries each app's player state to find which one is actively playing
- Falls back to the most recently launched music app
- Falls back to the first available running music app
This means you can switch between Spotify and Apple Music naturally - Conduct will always route to whichever one is actually playing.
YouTube control works by detecting YouTube tabs across all supported browsers and sending YouTube's native keyboard shortcuts (e.g. K for play/pause, Shift+N for next). Conduct briefly activates the browser window, sends the keystroke, and restores focus - all within ~200ms.
Note
All browsers work out of the box - no extra configuration or JavaScript permissions needed.
Firefox-based browsers (Firefox, Zen, Waterfox) are detected via window title since they don't expose tab URLs to AppleScript.
Download the latest release from the Releases page.
# Simple build (native architecture)
make build
# Universal binary (Intel + Apple Silicon)
make build-universal
# Build and run
make run
# Install to /Applications
make install# Generate Xcode project (requires xcodegen)
brew install xcodegen
make generate-project
open Conduct.xcodeprojOn first launch, Conduct will request:
-
Accessibility - Required to intercept media key events at the system level. Go to System Settings > Privacy & Security > Accessibility and enable Conduct.
-
Automation - Required to send play/pause/next/previous commands to your music app. You'll be prompted when the first command is sent.
- macOS 11.0 (Big Sur) or later
- Accessibility permission (to intercept key events)
- Automation permission (to control music apps)
Contributions are welcome! Please feel free to submit a Pull Request.
MIT License - see LICENSE for details.
Inspired by Reflex by Stunt Software.