[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-95866":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":9,"totalLinesOfCode":9,"stars":12,"forks":13,"watchers":14,"openIssues":14,"contributorsCount":9,"subscribersCount":14,"size":14,"stars1d":14,"stars7d":14,"stars30d":14,"stars90d":14,"forks30d":14,"starsTrendScore":14,"compositeScore":15,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":16,"fork":16,"defaultBranch":17,"hasWiki":16,"hasPages":16,"topics":9,"createdAt":9,"pushedAt":9,"updatedAt":18,"readmeContent":19,"aiSummary":20,"trendingCount":14,"starSnapshotCount":14,"syncStatus":21,"lastSyncTime":9,"discoverSource":22},95866,"limusic","SimoHypers\u002Flimusic","SimoHypers","Feature rich, native desktop, YouTube Music client. Tauri + Rust + SvelteKit, ad-free playback through libmpv, Last.fm scrobbling and Discord Rich Presence, no Electron.",null,"https:\u002F\u002Fgithub.com\u002FSimoHypers\u002Flimusic","Rust",214,20,0,3.97,false,"main","2026-09-21 02:04:28","\u003Cdiv align=\"center\">\n\n\u003Cimg src=\".\u002Fassets\u002Fdocs\u002Flimusic-github-image.png\" alt=\"Limusic Banner\" width=\"100%\">\n\n# Limusic\n\n**A native desktop YouTube Music client — Rust + Tauri, ad-free, no Electron.**\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSimoHypers\u002Flimusic\u002Freleases\u002Flatest\">\u003Cimg alt=\"GitHub Downloads\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fdownloads\u002FSimoHypers\u002Flimusic\u002Ftotal?style=for-the-badge&label=DOWNLOADS&color=a4c400\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSimoHypers\u002Flimusic\u002Freleases\u002Flatest\">\u003Cimg alt=\"GitHub Release\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002FSimoHypers\u002Flimusic?display_name=release&style=for-the-badge&color=a10935\">\u003C\u002Fa>\n  \u003Cimg alt=\"License\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002FSimoHypers\u002Flimusic?style=for-the-badge&color=1881cc\">\n  \u003Ca href=\"https:\u002F\u002Fhosted.weblate.org\u002Fengage\u002Flimusic\u002F\">\u003Cimg alt=\"Translation status\" src=\"https:\u002F\u002Fimg.shields.io\u002Fweblate\u002Fprogress\u002Flimusic?server=https%3A%2F%2Fhosted.weblate.org&style=for-the-badge&label=TRANSLATED&color=6a3fb5\">\u003C\u002Fa>\n  \u003Cbr>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLinux-FCC624?style=for-the-badge&logo=linux&logoColor=black\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FWindows-0078D6?style=for-the-badge&logoColor=white\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTauri_2-24C8D8?style=for-the-badge&logo=tauri&logoColor=white\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FRust-000000?style=for-the-badge&logo=rust&logoColor=white\">\n\u003C\u002Fp>\n\n**Limusic** talks directly to YouTube's internal API and plays audio through libmpv — no bundled\nbrowser runtime, no backend server, no ads in the audio. It started as a desktop rebuild of the\nplayback engine behind [Metrolist](https:\u002F\u002Fgithub.com\u002Fmostafaalagamy\u002FMetrolist), an Android\nYouTube Music client, and grew from there.\n\n\u003C\u002Fdiv>\n\n---\n\n## Features\n\n- **Ad-free playback** — streams come straight from YouTube's API, ads never do\n- **Search & browse** — songs, albums, artists, playlists, and the YTM home feed\n- **Sign in** with your YouTube Music account: in-app Google login or cookie-paste\n- **Your library** — playlists, liked songs, and write actions (like, add to playlist, create\u002Frename\u002Fdelete playlists, subscribe)\n- **Gapless playback** with loudness normalization, powered by libmpv\n- **Queue** with radio\u002Fautomix continuation, restored across restarts\n- **Synced lyrics** — line-by-line side panel with auto-scroll and click-to-jump\n- **Mini Player** — Minimize the player and keep enjoying your music\n- **Local Music** — ability to play your own local music, with all metadata still intact\n- **Last.fm scrobbling** — connect once from the title bar, every play is scrobbled\n- **Discord Rich Presence** — artwork, live progress bar, one click to toggle\n- **OS media keys** and now-playing integration (MPRIS on Linux, SMTC on Windows)\n- **System tray** — close the window, keep the music; play\u002Fpause and skip from the tray, optional start-on-login\n- **Listen Together** — synced listening rooms over a small self-hosted relay\n- **Self-updating builds** (AppImage on Linux, setup.exe on Windows)\n- **Customization via Themes and Fonts** — Customize your music player to your hearts content\n\n---\n\n\u003Ch2 align=\"center\">Download & Install\u003C\u002Fh2>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSimoHypers\u002Flimusic\u002Freleases\u002Flatest\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGitHub_Releases-100000?style=for-the-badge&logo=github&logoColor=white\" height=\"40\">\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\n| Platform | File | Notes |\n|---|---|---|\n| Linux | `.AppImage` | Self-updating, libmpv bundled. Needs glibc 2.39+ (Ubuntu 24.04+, Debian 13+, Fedora 40+) |\n| Linux (Ubuntu\u002FDebian) | `.deb` | No self-update. Needs Ubuntu 24.04+ \u002F Debian 13+; apt pulls libmpv and webkit2gtk in for you |\n| Linux (Fedora\u002FRHEL) | `.rpm` | Needs `mpv-libs` installed (`sudo dnf install mpv-libs`). Updates through dnf, not in-app |\n| Linux (Arch) | [AUR](https:\u002F\u002Faur.archlinux.org\u002Fpackages\u002Flimusic-bin) | `yay -S limusic-bin`. Community-maintained by [@xiryuudev](https:\u002F\u002Fgithub.com\u002Fxiryuudev), updates through pacman |\n| Windows | `-setup.exe` | Self-updating |\n| Windows | `.msi` | Plain installer, no auto-update |\n| macOS | none yet | Build from source, see [docs\u002FBUILD-PLATFORMS.md](docs\u002FBUILD-PLATFORMS.md) |\n\n---\n\n## Scrobbling & Discord\n\nBoth live in the title bar, next to the window controls.\n\n- **Last.fm** — click the Last.fm mark, approve Limusic in the browser tab that\n  opens, and you're connected for good. Tracks scrobble at the halfway point (or\n  four minutes, whichever comes first), which is Last.fm's own rule. Click again\n  to see the account or disconnect.\n- **Discord** — click the Discord mark to toggle Rich Presence. Green dot means\n  it's live. The card shows the track, artist, album art, and a progress bar, and\n  it disappears when you pause.\n\nBuilding from source? Last.fm needs your own API credentials — they're not in the\nrepo. Get a key at [last.fm\u002Fapi\u002Faccount\u002Fcreate](https:\u002F\u002Fwww.last.fm\u002Fapi\u002Faccount\u002Fcreate)\nand put it in `src-tauri\u002Flastfm.keys`:\n\n```\nLIMUSIC_LASTFM_API_KEY=your_key\nLIMUSIC_LASTFM_API_SECRET=your_secret\n```\n\nWithout that file everything else still builds and runs; the Last.fm button just\nreports that it isn't configured.\n\n---\n\n## Lyrics\n\nOpen the panel with the microphone button in the player bar, next to the queue\nbutton. It takes the same side of the window as the queue, so opening one closes\nthe other.\n\nLyrics come from [Boidu](https:\u002F\u002Fboidu.dev) first, then\n[LRCLIB](https:\u002F\u002Flrclib.net), then YouTube Music's own timed lyrics, then\nNetease, QQ Music and Kugou, falling back to plain un-timed text when nobody has\na synced version. Matching is keyed on the track's exact length, because popular\nsongs exist as several cuts and the wrong one drifts a few seconds out. Results\nare cached locally, so replaying a track is instant.\n\nBoidu is the only source with per-word timings, which is what lets a line\nhighlight word by word as it's sung. It goes first for that reason, which also\nmeans it is asked about every track you play. Turn it off in **Settings ->\nPlayback -> Word-by-word lyrics** and the other sources still provide\nline-by-line lyrics. Netease additionally supplies translations, shown under\neach line where it has them.\n\nNote that YouTube Music's lyrics are licensed per region and are missing\nentirely in some countries — where that's the case, LRCLIB does all the work.\n\n---\n\n## Listen Together\n\nSynced listening with friends. Everyone streams their own audio from YouTube;\nthe room only relays play\u002Fpause, seeks, track changes and the queue. One person\nhosts the relay:\n\n```bash\ncargo run -p sync-server        # plain WebSocket on 0.0.0.0:8080\n```\n\nFront it with something that terminates TLS (Tailscale Funnel, Cloudflare\nTunnel), then paste the `wss:\u002F\u002F` URL into the Listen Together panel in the app.\nRooms have join codes and the host approves every join and every track\nsuggestion.\n\n---\n\n## Translations\n\nLimusic is translated on [Weblate](https:\u002F\u002Fhosted.weblate.org\u002Fengage\u002Flimusic\u002F),\nwho host it free for libre projects.\n\n\u003Ca href=\"https:\u002F\u002Fhosted.weblate.org\u002Fengage\u002Flimusic\u002F\">\n  \u003Cimg src=\"https:\u002F\u002Fhosted.weblate.org\u002Fwidget\u002Flimusic\u002Fui\u002Fmulti-auto.svg\" alt=\"Translation status\">\n\u003C\u002Fa>\n\nEnglish, Turkish, Brazilian Portuguese and Indonesian ship in the app today.\nThe badge above shows everything else in flight.\n\n**Translate on Weblate, not in a pull request.** Weblate keeps its own copy of\nthe catalogs, so a hand-edited `fr.json` merged here puts the two out of sync\nand the next batch of real translations arrives as a merge conflict. Weblate\nalso shows you the English original beside each string, flags translations that\nwent stale when the English changed, checks that placeholders like `{count}`\nsurvived, and opens the pull request for you. Anything untranslated falls back\nto English in the app, so partial work is safe to submit.\n\n`en.json` is the exception: it changes by hand, in whichever pull request\nchanges the UI. Switching a finished language on in the picker takes a small\ncode change too, see [CONTRIBUTING.md](CONTRIBUTING.md#translations).\n\n---\n\n## Building from Source\n\nFedora:\n\n```bash\nsudo dnf install mpv-libs mpv-libs-devel webkit2gtk4.1-devel \\\n  gcc gcc-c++ make openssl-devel librsvg2-devel\ncd ui && pnpm install && cd ..\ncargo tauri build\n```\n\nWindows and macOS instructions live in [docs\u002FBUILD-PLATFORMS.md](docs\u002FBUILD-PLATFORMS.md).\n\n---\n\n## How It Works, Briefly\n\n- A pure Rust crate speaks YouTube's InnerTube API, impersonating several\n  official client identities and falling back between them when one fails.\n- YouTube's stream URLs are protected by obfuscated JavaScript (the signature\n  cipher and the `n` parameter) and by BotGuard attestation. Limusic runs that\n  JavaScript where it expects to run, in a real webview, hidden, and never lets\n  any of it touch the UI process.\n- Audio goes through libmpv: gapless transitions, an on-disk cache, and\n  loudness normalization from YouTube's own metadata.\n- The UI is a SvelteKit SPA that only ever talks to the Rust core. It never\n  contacts YouTube itself.\n\n---\n\n## Disclaimer\n\nThis project is not affiliated with, funded, authorized, endorsed by, or in\nany way associated with YouTube, Google LLC, or any of their affiliates and\nsubsidiaries.\n\nAll trademarks, service marks, and intellectual property rights referenced in\nthis project belong to their respective owners.\n\n---\n\n## License\n\n[GPL-3.0](LICENSE)\n","Limusic 是一款原生桌面版 YouTube Music 客户端，不依赖 Electron，采用 Tauri + Rust + SvelteKit 构建。核心功能包括：直连 YouTube 内部 API 实现无广告音频播放（基于 libmpv）、完整账户登录与个人曲库管理、同步歌词、本地音乐播放、Last.fm 打榜、Discord 富状态、系统媒体键与托盘控制，以及轻量级协同听歌（Listen Together）。适用于追求隐私、低资源占用、跨平台一致体验的 YouTube Music 桌面用户，尤其适合 Linux 和 Windows 系统。",2,"trending"]