Musiker - VS Code Music Player
A music player extension for Visual Studio Code with support for Spotify, Apple Music, and local MP3 files.
Features
- Status Bar Integration: Music note and Track Manager buttons in VS Code status bar
- Single Click: Toggle play/pause
- Track Manager Button: Open Track Sync Panel
- Multiple Sources: Sync with Spotify, Apple Music, or import local MP3s
- Local Playback: Web Audio API for local file playback
- Track Manager: Drag-and-drop reordering of tracks
- Playback Controls: Play, pause, next, previous, loop, shuffle
- Lock-In Mode: Subtle theme shift for focus sessions
- Waveform Animation: Visual feedback when music is playing
- Persistent State: Tracks and playback state saved across VS Code restarts
Installation
From VSIX
- Download the latest
.vsix file
- Open VS Code
- Go to Extensions → Install from VSIX
- Select the downloaded file
Or install Musiker by live-by-unix
Building from Source
npm install
npm run compile
npm run package
Usage
Getting Started
- Click the music note icon 🎵 in the status bar to play/pause
- Click the Track Manager button to open the Track Sync Panel
- Choose your sync option:
- Sync with Spotify: Requires Spotify to be running (macOS/Windows)
- Sync with Apple Music: Requires Music app to be running (macOS/Windows)
- Import Local MP3s: Select audio files from your computer
Playback Controls
- Music Note Button: Play/Pause
- Track Manager Button: Open Track Sync Panel
- Playback Panel: View tracks, reorder, and control playback
Track Manager
- Open the Playback Panel to see your track list
- Drag and drop tracks to reorder
- Custom order persists until you resync
Lock-In Mode
When music is playing, Lock-In Mode activates automatically (optional):
- Subtle theme shift for focus
- "Now Playing" tooltip on hover
- Perfect for coding with Lofi or focus playlists
macOS
- Spotify: AppleScript integration (requires Spotify running)
- Apple Music: AppleScript integration (requires Music app running)
- Local Files: Full support
Windows
- Spotify: Limited support (requires Spotify running)
- Apple Music/iTunes: COM automation (requires iTunes installed)
- Local Files: Full support
Linux
- Spotify: MPRIS DBus integration (limited functionality)
- Local Files: Full support
Configuration
Add to your settings.json:
{
"musiker.lockInMode.enabled": true,
"musiker.lockInMode.themeShift": true
}
Keyboard Shortcuts
Define your own shortcuts in keybindings.json:
[
{
"command": "musiker.togglePlayPause",
"key": "ctrl+shift+m"
},
{
"command": "musiker.nextTrack",
"key": "ctrl+shift+."
},
{
"command": "musiker.previousTrack",
"key": "ctrl+shift+,"
}
]
Development
# Install dependencies
npm install
# Compile TypeScript
npm run compile
# Watch for changes
npm run watch
# Package as VSIX
npm run package
Technical Details
Architecture
- Extension Host: Manages VS Code integration and state
- WebView: Playback UI and Track Manager
- Web Audio API: Local file playback
- Platform-Specific: AppleScript (macOS), COM (Windows), DBus (Linux)
Storage
- Tracks stored in VS Code
globalState
- Playback state persisted across sessions
- Custom track order saved until resync
- Separate status bar buttons for play/pause and track management
- Direct command execution for instant response
Limitations
- Spotify: Cannot play directly without OAuth; sync only
- Apple Music: Local file playback only on macOS
- Windows: Limited Spotify integration
- Linux: Limited Spotify integration via MPRIS
License
MIT
Contributing
Contributions welcome! Please read the contributing guidelines before submitting PRs.