A beautiful, lightweight desktop controller for Spotify built with Tauri, SvelteKit, and TypeScript. Largo provides an elegant interface to control your Spotify playback with advanced features like auto-skip, track pinning, and dynamic theming.
- Playback Controls: Play, pause, next, previous, seek forward/backward
- Volume Control: Adjust volume and mute/unmute
- Shuffle & Loop: Toggle shuffle and loop modes
- Progress Bar: Interactive seek bar with time display
- Dynamic Theming: Automatically extracts colors from album artwork
- Custom Themes: Choose from predefined color schemes
- Album Art Display: High-quality cover art with hover details
- Marquee Text: Smooth scrolling for long track titles
- Track Filtering: Automatically skip tracks based on title or artist keywords
- Flexible Matching: Case-sensitive, whole word, or exact word matching
- Track Blacklist: Skip specific tracks by ID
- Keyword Management: Easy-to-use keyword configuration
- Pinned Tracks: Save and quickly access your favorite tracks
- Track Library: Grid view of pinned tracks with play controls
- Quick Actions: Pin/unpin tracks with a single click
- Seek Intervals: Customize forward/backward seek times
- Loop Settings: Configure loop behavior
- Persistent Settings: All preferences saved locally
- System Integration: Runs in system tray with global shortcuts
- Frontend: SvelteKit 5 + TypeScript
- Desktop: Tauri 2 (Rust)
- Styling: Tailwind CSS 4
- UI Components: Custom components with Lucide icons
- State Management: Svelte stores with Tauri plugin-store
- Media Integration: AppleScript for Spotify control
- macOS: Required for Spotify integration (uses AppleScript)
- Spotify Desktop App: Must be installed and logged in
- Node.js: Version 18 or higher
- Rust: Latest stable version
- Bun: For package management (recommended) or npm
-
Clone the repository
git clone https://github.com/yourusername/largo.git cd largo -
Install dependencies
# Using Bun (recommended) bun install # Or using npm npm install
-
Install Rust dependencies
cargo install tauri-cli
-
Start development server
# Using Bun bun run tauri dev # Or using npm npm run tauri dev
bun run tauri devbun run tauri buildThe built application will be available in src-tauri/target/release/.
- Play/Pause: Click the play/pause button or use media keys
- Next/Previous: Navigate between tracks
- Seek: Click on the progress bar or use seek buttons
- Volume: Adjust using the volume slider
- Open the configuration panel (gear icon)
- Navigate to "Auto Skip" tab
- Enable auto-skip and add keywords
- Choose matching options (case-sensitive, whole words, etc.)
- Click the heart icon on any track to pin it
- Access pinned tracks via the pin icon
- Click play on any pinned track to start playback
- Open configuration panel
- Choose between "Dynamic" (album art colors) or "Custom" themes
- For dynamic themes, select vibrancy level
- For custom themes, choose from predefined color schemes
We welcome contributions! Here's how you can help:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes and test thoroughly
- Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
- Follow TypeScript best practices
- Use Svelte 5 runes syntax
- Maintain consistent formatting with Prettier
- Write meaningful commit messages
- Test on macOS with Spotify desktop app
- Verify all media controls work correctly
- Test configuration persistence
- Check theme switching functionality
- macOS Only: Currently only supports macOS due to AppleScript integration
- Spotify Dependency: Requires Spotify desktop app to be running
- Permission Issues: May require accessibility permissions for global shortcuts
This project is licensed under the MIT License - see the LICENSE file for details.
- Tauri for the desktop framework
- SvelteKit for the web framework
- Spotify for the music platform
- Lucide for the beautiful icons
- Tailwind CSS for the styling system
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: [email protected]
Made with ❤️ for music lovers everywhere