Skip to content

Repository files navigation

Limusic Banner

Limusic

A native desktop YouTube Music client — Rust + Tauri, ad-free, no Electron.

GitHub Downloads GitHub Release License

Limusic talks directly to YouTube's internal API and plays audio through libmpv — no bundled browser runtime, no backend server, no ads in the audio. It started as a desktop rebuild of the playback engine behind Metrolist, an Android YouTube Music client, and grew from there.


Features

  • Ad-free playback — streams come straight from YouTube's API, ads never do
  • Search & browse — songs, albums, artists, playlists, and the YTM home feed
  • Sign in with your YouTube Music account: in-app Google login or cookie-paste
  • Your library — playlists, liked songs, and write actions (like, add to playlist, create/rename/delete playlists, subscribe)
  • Gapless playback with loudness normalization, powered by libmpv
  • Queue with radio/automix continuation, restored across restarts
  • Synced lyrics — line-by-line side panel with auto-scroll and click-to-jump
  • Mini Player — Minimize the player and keep enjoying your music
  • Local Music — ability to play your own local music, with all metadata still intact
  • Last.fm scrobbling — connect once from the title bar, every play is scrobbled
  • Discord Rich Presence — artwork, live progress bar, one click to toggle
  • OS media keys and now-playing integration (MPRIS on Linux, SMTC on Windows)
  • System tray — close the window, keep the music; play/pause and skip from the tray, optional start-on-login
  • Listen Together — synced listening rooms over a small self-hosted relay
  • Self-updating builds (AppImage on Linux, setup.exe on Windows)
  • Customization via Themes and Fonts — Customize your music player to your hearts content

Download & Install

Platform File Notes
Linux .AppImage Self-updating, libmpv bundled. Needs glibc 2.39+ (Ubuntu 24.04+, Debian 13+, Fedora 40+)
Linux (Ubuntu/Debian) .deb No self-update. Needs Ubuntu 24.04+ / Debian 13+; apt pulls libmpv and webkit2gtk in for you
Linux (Fedora/RHEL) .rpm Needs mpv-libs installed (sudo dnf install mpv-libs). Updates through dnf, not in-app
Linux (Arch) AUR yay -S limusic-bin. Community-maintained by @xiryuudev, updates through pacman
Windows -setup.exe Self-updating
Windows .msi Plain installer, no auto-update
macOS none yet Build from source, see docs/BUILD-PLATFORMS.md

Scrobbling & Discord

Both live in the title bar, next to the window controls.

  • Last.fm — click the Last.fm mark, approve Limusic in the browser tab that opens, and you're connected for good. Tracks scrobble at the halfway point (or four minutes, whichever comes first), which is Last.fm's own rule. Click again to see the account or disconnect.
  • Discord — click the Discord mark to toggle Rich Presence. Green dot means it's live. The card shows the track, artist, album art, and a progress bar, and it disappears when you pause.

Building from source? Last.fm needs your own API credentials — they're not in the repo. Get a key at last.fm/api/account/create and put it in src-tauri/lastfm.keys:

LIMUSIC_LASTFM_API_KEY=your_key
LIMUSIC_LASTFM_API_SECRET=your_secret

Without that file everything else still builds and runs; the Last.fm button just reports that it isn't configured.


Lyrics

Open the panel with the microphone button in the player bar, next to the queue button. It takes the same side of the window as the queue, so opening one closes the other.

Lyrics come from Boidu first, then LRCLIB, then YouTube Music's own timed lyrics, then Netease, QQ Music and Kugou, falling back to plain un-timed text when nobody has a synced version. Matching is keyed on the track's exact length, because popular songs exist as several cuts and the wrong one drifts a few seconds out. Results are cached locally, so replaying a track is instant.

Boidu is the only source with per-word timings, which is what lets a line highlight word by word as it's sung. It goes first for that reason, which also means it is asked about every track you play. Turn it off in Settings -> Playback -> Word-by-word lyrics and the other sources still provide line-by-line lyrics. Netease additionally supplies translations, shown under each line where it has them.

Note that YouTube Music's lyrics are licensed per region and are missing entirely in some countries — where that's the case, LRCLIB does all the work.


Listen Together

Synced listening with friends. Everyone streams their own audio from YouTube; the room only relays play/pause, seeks, track changes and the queue. One person hosts the relay:

cargo run -p sync-server        # plain WebSocket on 0.0.0.0:8080

Front it with something that terminates TLS (Tailscale Funnel, Cloudflare Tunnel), then paste the wss:// URL into the Listen Together panel in the app. Rooms have join codes and the host approves every join and every track suggestion.


Building from Source

Fedora:

sudo dnf install mpv-libs mpv-libs-devel webkit2gtk4.1-devel \
  gcc gcc-c++ make openssl-devel librsvg2-devel
cd ui && pnpm install && cd ..
cargo tauri build

Windows and macOS instructions live in docs/BUILD-PLATFORMS.md.


How It Works, Briefly

  • A pure Rust crate speaks YouTube's InnerTube API, impersonating several official client identities and falling back between them when one fails.
  • YouTube's stream URLs are protected by obfuscated JavaScript (the signature cipher and the n parameter) and by BotGuard attestation. Limusic runs that JavaScript where it expects to run, in a real webview, hidden, and never lets any of it touch the UI process.
  • Audio goes through libmpv: gapless transitions, an on-disk cache, and loudness normalization from YouTube's own metadata.
  • The UI is a SvelteKit SPA that only ever talks to the Rust core. It never contacts YouTube itself.

Disclaimer

This project is not affiliated with, funded, authorized, endorsed by, or in any way associated with YouTube, Google LLC, or any of their affiliates and subsidiaries.

All trademarks, service marks, and intellectual property rights referenced in this project belong to their respective owners.


License

GPL-3.0

About

Feature rich, native desktop, YouTube Music client. Tauri + Rust + SvelteKit, ad-free playback through libmpv, Last.fm scrobbling and Discord Rich Presence, no Electron.

Topics

Resources

Contributing

Stars

144 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages