A native macOS menu bar app for controlling WiiM audio devices.
- Multi-Device Support - Switch between multiple WiiM devices on your network
- Now Playing - Album art, track info, and artist display
- Playback Controls - Play/pause, previous, next
- Volume Control - Slider with mute toggle
- Seek Bar - Track progress with drag-to-seek
- Presets - Quick access to saved radio stations with artwork
- EQ Presets - Switch between equalizer presets
- Info Panel - Artist bios and album details from Last.fm and Discogs
- Mini Mode - Compact view with essential controls
- Immersive Mode - Full album art with floating controls
- Auto Discovery - Finds WiiM devices on your network automatically
- Download
WiiMControl.dmgfrom Releases - Open the DMG and drag
WiiMControl.appto Applications - Right-click → Open (first launch only, to bypass Gatekeeper)
- Download
WiiMControl.zipfrom Releases - Unzip and drag
WiiMControl.appto Applications - Right-click → Open (first launch only, to bypass Gatekeeper)
Click the speaker icon in your menu bar to open the control panel. The app automatically discovers WiiM devices on your network and can also control local media apps like Spotify.
- Play/Pause - Large center button
- Previous/Next - Skip tracks
- Volume - Drag the slider or click the speaker icon to mute
- Seek Bar - Drag to jump to any position in the track
Access your saved radio stations and playlists:
- Click on Presets at the bottom of the player
- Click any preset to start playing
- Preset artwork appears on the main display
Switch between equalizer presets:
- Click on EQ at the bottom of the player
- Select an equalizer preset from the list
- The current EQ is shown below the device name
View artist biographies and album details:
- Click on Info at the bottom of the player
- View artist bio from Last.fm
- See album details and release info from Discogs
- Info updates automatically when the track changes
Switch to a compact view with essential controls:
- Click the collapse button (↘) in the top-right corner
- Mini mode shows track info, playback controls, and volume
- Click the expand button (↗) to return to full mode
Click the album art to enter immersive mode:
- Click on the album art in the player
- Full-screen album art with floating playback controls
- Click anywhere to return to normal view
Easily switch between multiple WiiM devices:
- Click on the device name at the top of the player
- Select any WiiM device discovered on your network
Click the X button in the top-left corner of the panel.
- macOS 14.0 (Sonoma) or later
- WiiM device on the same local network
git clone https://github.com/xon94010/WiiMControl.git
cd WiiMControl
open WiiMMenuBar.xcodeprojThe Info panel features require API keys from Discogs and Last.fm. To enable these:
- Copy the template:
cp Secrets.xcconfig.template Secrets.xcconfig - Get your free API keys:
- Edit
Secrets.xcconfigand add your keys
The app works without these keys - the Info panel will just be disabled.
Build and run with ⌘R in Xcode.
The codebase follows a modular architecture with views organized by functionality:
WiiMMenuBar/
├── WiiMMenuBarApp.swift # App entry point
├── MenuBarView.swift # Main routing (minimal)
├── WiiMService.swift # WiiM device communication
├── PlayerState.swift # Player state management
├── DeviceDiscovery.swift # Network device discovery
├── MediaCoordinator.swift # Multi-source orchestration
├── MediaSource.swift # Source protocol & types
├── WiiMMediaSource.swift # WiiM source adapter
├── LocalMediaSource.swift # Local media (Spotify, etc.)
├── DiscogsService.swift # Discogs API integration
├── LastFMService.swift # Last.fm API integration
├── LaunchAtLogin.swift # Login item helper
└── Views/
├── Player/
│ ├── FullModeView.swift # Full player UI
│ ├── MiniModeView.swift # Compact player UI
│ ├── PlaybackControls.swift # Play/pause/skip buttons
│ ├── VolumeControl.swift # Volume slider + mute
│ ├── SeekBar.swift # Progress bar with seeking
│ ├── AlbumArtView.swift # Album artwork display
│ └── SourceIndicator.swift # Source icon display
├── Tabs/
│ ├── BottomTabsSection.swift # Presets/EQ/Info tabs
│ ├── InfoPanelView.swift # Artist & album info
│ ├── PresetRowView.swift # Preset list item
│ └── EQRowView.swift # EQ preset item
└── Setup/
├── SetupView.swift # Device discovery screen
└── DeviceRow.swift # Device list item
Device not found?
- Ensure your Mac and WiiM are on the same network
- Click the refresh button to scan again
- Check that your firewall allows local network access
Album art not loading?
- Album art is fetched from iTunes for music tracks
- Radio station artwork comes from the preset configuration
Controls not responding?
- Check the connection indicator (green dot = connected)
- Try disconnecting and reconnecting
MIT License - see LICENSE for details.
Built with SwiftUI for macOS.







