macOS 用 Brew 装完需手动清除隔离属性,否则可能无法启动;从源码在 macOS 构建需把 Xcode 加入 Nix store 以编译 Metal 着色器;项目明确不提供下载、导出或绕过订阅限制的功能
sonora
sonorahqGPL-3.0活跃维护用 Rust 编写的原生音乐流媒体客户端,界面熟悉易用,可连接 Navidrome、Subsonic 等服务,统一播放和浏览多个平台的音乐库。
A native, familiar music streaming client
brew install --cask nolight132/tap/sonora
xattr -dr com.apple.quarantine /Applications/Sonora.appREADME 未说明硬件要求;仅提供 macOS、Linux、Windows 桌面安装包,未提及 GPU 或显存需求
原生音乐流媒体客户端,把在线服务和本地文件播放合到一个桌面应用里
用 Rust 编写的原生音乐流媒体客户端,界面熟悉易用,可连接 Navidrome、Subsonic 等服务,统一播放和浏览多个平台的音乐库。
核心能力
- 用 Rust 与 gpui 构建原生桌面界面
- 通过 librespot 接入 Spotify 播放与曲库
- 同时播放本地音乐文件
- 支持自适应主题与界面自定义
- 内置多语言界面,含简体中文
容易踩的坑
- v0.48.1最新正式版2026-11-08 · 2026-11-08 15:21 UTC
What's Changed
- check for Chrome by bundle name by @metalnakls in https://github.com/sonorahq/sonora/pull/1273
- fix(music): recover apple lyrics across album editions by @mrkvqv in https://github.com/sonorahq/sonora/pull/1301
- fix(views): keep the history buttons apart from the sidebar toggle by @nolight132 in https://github.com/sonorahq/sonora/pull/1302
- fix(views): put the history buttons back beside the sidebar toggle by @nolight132 in https://github.com/sonorahq/sonora/pull/1303
- fix(views): shorten fullscreen controls idle delay by @mrkvqv in https://github.com/sonorahq/sonora/pull/1305
- fix(views): keep lyrics insets equal at both panel edges by @mrkvqv in https://github.com/sonorahq/sonora/pull/1306
- fix(views): scale lyrics spacing with text size by @mrkvqv in https://github.com/sonorahq/sonora/pull/1307
- fix(views): balance lyrics phrase padding by @nolight132 in https://github.com/sonorahq/sonora/pull/1308
- release 0.48.1 by @nolight132 in https://github.com/sonorahq/sonora/pull/1315
New Contributors
- @metalnakls made their first contribution in https://github.com/sonorahq/sonora/pull/1273
Full Changelog: https://github.com/sonorahq/sonora/compare/v0.48.0...v0.48.1
- v0.48.02026-11-07 · 2026-11-07 02:01 UTC
查看更新说明
What's Changed
- fix(music): play at real-time priority on windows again by @nolight132 in https://github.com/sonorahq/sonora/pull/1223
- fix(state): keep genre pictures across launches and trim the heap after fetching them by @nolight132 in https://github.com/sonorahq/sonora/pull/1224
- feat(ui): anchor tooltips to the element they belong to by @nolight132 in https://github.com/sonorahq/sonora/pull/1225
- feat(views): fold hero actions into the more menu when space runs out by @nolight132 in https://github.com/sonorahq/sonora/pull/1226
- perf(state): load genres when search first opens instead of at launch by @nolight132 in https://github.com/sonorahq/sonora/pull/1227
- feat(views): polish the fullscreen controls and the lyrics sheet by @nolight132 in https://github.com/sonorahq/sonora/pull/1231
- fix(views): occlude the leave fullscreen button by @nolight132 in https://github.com/sonorahq/sonora/pull/1233
- fix(music): let the visualizer fall to the bottom on pause and silence by @nolight132 in https://github.com/sonorahq/sonora/pull/1234
- fix(views): open the fullscreen volume slider without a delay by @nolight132 in https://github.com/sonorahq/sonora/pull/1232
- feat(views): paint the ambient background with a wave shader by @nolight132 in https://github.com/sonorahq/sonora/pull/1235
- fix(ui): keep the wave field's scale in pixels whatever the window's shape by @nolight132 in https://github.com/sonorahq/sonora/pull/1236
- fix(ui): fit the wave field to the window's shape by @nolight132 in https://github.com/sonorahq/sonora/pull/1237
- fix(views): end the instrumental break's hover highlight at its notes by @nolight132 in https://github.com/sonorahq/sonora/pull/1240
- feat(views): drag the playing song from the player bar by @Brezinben in https://github.com/sonorahq/sonora/pull/1217
- fix(local): ignore macos appledouble audio sidecars by @edouaz in https://github.com/sonorahq/sonora/pull/1222
- feat(music): match track sample rate on direct outputs, add direct to hardware on macos by @rolurq in https://github.com/sonorahq/sonora/pull/1114
- fix(ui): flatten line breaks in pasted text by @Brezinben in https://github.com/sonorahq/sonora/pull/1210
- fix(views): keep the cover still when the fullscreen panel opens by @nolight132 in https://github.com/sonorahq/sonora/pull/1242
- feat(views): ease the fullscreen tabs in like a settings page by @nolight132 in https://github.com/sonorahq/sonora/pull/1243
- feat(views): fold playlists, favorites and library into one save to menu by @nolight132 in https://github.com/sonorahq/sonora/pull/1244
- refactor(state): drop the legacy theme backups by @nolight132 in https://github.com/sonorahq/sonora/pull/1245
- fix(views): keep pre-wrapped lyric rows on one line by @nolight132 in https://github.com/sonorahq/sonora/pull/1246
- fix(views): reuse the output device menu in the device rules by @nolight132 in https://github.com/sonorahq/sonora/pull/1248
- fix(youtube): preserve cookies and isolate windows webviews by @nolight132 in https://github.com/sonorahq/sonora/pull/1257
- fix(playback): queue full artist catalogues by @nolight132 in https://github.com/sonorahq/sonora/pull/1256
- fix(music): reject apple music accounts without a subscription by @nolight132 in https://github.com/sonorahq/sonora/pull/1255
- fix(views): extend horizontal card rows to page edges by @nolight132 in https://github.com/sonorahq/sonora/pull/1259
- perf(views): lay out only the lyrics rows near the screen by @suraniharsh in https://github.com/sonorahq/sonora/pull/1247
- fix(views): clear parked hover flags on fullscreen layout changes by @Artezon in https://github.com/sonorahq/sonora/pull/1258
- fix(ui): keep the search cursor from checking a second row by @nolight132 in https://github.com/sonorahq/sonora/pull/1262
- feat(views): open item menus with a row of toggle tiles by @nolight132 in https://github.com/sonorahq/sonora/pull/1263
- fix(music): keep every youtube quick pick by @fx-got in https://github.com/son
- v0.47.02026-11-02 · 2026-11-02 01:15 UTC
查看更新说明
What's Changed
- ci: skip checks on a release branch and its merge by @nolight132 in https://github.com/sonorahq/sonora/pull/1199
- feat(views): group track menu navigation under a go to submenu by @nolight132 in https://github.com/sonorahq/sonora/pull/1202
- feat(views): show the artist banner behind the artist page header by @nolight132 in https://github.com/sonorahq/sonora/pull/1203
- fix: open spotify:// links by @suraniharsh in https://github.com/sonorahq/sonora/pull/1023
- feat(lyrics): decode local .ttml lyric files by @aangeraakt in https://github.com/sonorahq/sonora/pull/1183
- feat: sort by date added newest first by @suraniharsh in https://github.com/sonorahq/sonora/pull/1025
- fix(state): republish the track length to the system media controls once it is known by @qLeooo in https://github.com/sonorahq/sonora/pull/1153
- fix(ui): stop volume slider drag from spiking CPU and GPU by @aangeraakt in https://github.com/sonorahq/sonora/pull/1200
- fix(music): leave a jam, keep its queue and follow it in the tray by @Tu2525 in https://github.com/sonorahq/sonora/pull/1170
- feat(views): draw the visualizer in the now playing settings preview by @nolight132 in https://github.com/sonorahq/sonora/pull/1212
- fix(views): expose the discord status preview to screen readers by @nolight132 in https://github.com/sonorahq/sonora/pull/1216
- feat(views): list running downloads in the title bar by @Tu2525 in https://github.com/sonorahq/sonora/pull/1038
- feat: shuffle the whole queue by @suraniharsh in https://github.com/sonorahq/sonora/pull/1068
- release 0.47.0 by @nolight132 in https://github.com/sonorahq/sonora/pull/1219
- fix(music): wash out youtube artist headers instead of repeating the portrait by @nolight132 in https://github.com/sonorahq/sonora/pull/1220
- fix(views): drop the heading above search suggestions by @nolight132 in https://github.com/sonorahq/sonora/pull/1221
New Contributors
- @qLeooo made their first contribution in https://github.com/sonorahq/sonora/pull/1153
Full Changelog: https://github.com/sonorahq/sonora/compare/v0.46.0...v0.47.0
- v0.46.02026-10-31 · 2026-10-31 18:19 UTC
查看更新说明
What's Changed
- ci: refresh the nightly and sonora-bin on every release by @nolight132 in https://github.com/sonorahq/sonora/pull/1144
- ci: refresh the nightly and sonora-bin on every release by @nolight132 in https://github.com/sonorahq/sonora/pull/1149
- ci: grant the nightly build the permissions release.yml asks for by @nolight132 in https://github.com/sonorahq/sonora/pull/1150
- ci: grant the nightly build the permissions release.yml asks for by @nolight132 in https://github.com/sonorahq/sonora/pull/1151
- fix(views): drop the macos toolbar while the window is fullscreen by @atleugim in https://github.com/sonorahq/sonora/pull/1140
- feat(views): drop a song onto a sidebar playlist by @Brezinben in https://github.com/sonorahq/sonora/pull/1145
- fix(views): name settings controls and about text for screen readers by @nolight132 in https://github.com/sonorahq/sonora/pull/1152
- fix: drop the account name above quick picks by @suraniharsh in https://github.com/sonorahq/sonora/pull/1129
- fix(ui): thin the player bar fill on a see-through window by @nolight132 in https://github.com/sonorahq/sonora/pull/1154
- fix(state): bound the media controls artwork cache by @nolight132 in https://github.com/sonorahq/sonora/pull/1157
- Dev by @nolight132 in https://github.com/sonorahq/sonora/pull/1160
- fix(lyrics): let provider priority decide between synced lyrics by @nolight132 in https://github.com/sonorahq/sonora/pull/1162
- fix(a11y): make the whole app readable by screen readers by @nolight132 in https://github.com/sonorahq/sonora/pull/1167
- feat/cli: sonora CLI by @imizgun in https://github.com/sonorahq/sonora/pull/1163
- ci: ask bug reporters which provider they use by @nolight132 in https://github.com/sonorahq/sonora/pull/1169
- Fix high cpu usage by @marcfusch in https://github.com/sonorahq/sonora/pull/1165
- feat(views): show the original spotify cover in fullscreen by @nolight132 in https://github.com/sonorahq/sonora/pull/1172
- merge dev into main by @nolight132 in https://github.com/sonorahq/sonora/pull/1173
- chore: retire the dev branch and drop agent and contributing docs by @nolight132 in https://github.com/sonorahq/sonora/pull/1174
- feat(local): import and export m3u playlists by @aangeraakt in https://github.com/sonorahq/sonora/pull/1086
- feat: change and remove a playlist's cover from an edit dialog by @nolight132 in https://github.com/sonorahq/sonora/pull/1176
- feat(views): move a song dropped with Shift held by @nolight132 in https://github.com/sonorahq/sonora/pull/1177
- feat(views): move a song dropped with Shift held by @Brezinben in https://github.com/sonorahq/sonora/pull/1158
- fix(music): save deezer albums through album.addFavorite by @nolight132 in https://github.com/sonorahq/sonora/pull/1180
- feat(cli): print what plays on every change with sonora watch by @suraniharsh in https://github.com/sonorahq/sonora/pull/1181
- fix(music): read a colon lrc fraction by its digits by @kevin9327 in https://github.com/sonorahq/sonora/pull/879
- docs(changelog): move the lrc colon fraction fix to unreleased by @nolight132 in https://github.com/sonorahq/sonora/pull/1187
- feat(cli): seek to a time or by a step by @suraniharsh in https://github.com/sonorahq/sonora/pull/1188
- feat(deezer): fill the home page from deezer's own sections by @nolight132 in https://github.com/sonorahq/sonora/pull/1190
- feat(search): suggest while typing and keep recent searches by @nolight132 in https://github.com/sonorahq/sonora/pull/1192
- fix(music): bring back apple recently played on home above recently added by @nolight132 in https://github.com/sonorahq/sonora/pull/1193
- feat(cli): say the provider, liked state and origin in current by @suraniharsh in https://github.com/sonorahq/sonora/pull/1191
- docs: restore agent and contributing docs by @nolight132 in https://github.com/sonorahq/sonora/pull/1189
- feat(settings): install a theme with all its variants from one theme link by @nolight132 in https://github.com/sonorahq/sonora/
- v0.45.02026-10-27 · 2026-10-27 18:17 UTC
查看更新说明
What's Changed
- fix: render, wrap and edit right-to-left text on every platform by @nolight132 in https://github.com/sonorahq/sonora/pull/1083
- fix(ui): render, wrap and edit right-to-left text by @Tu2525 in https://github.com/sonorahq/sonora/pull/880
- fix(music): list every playlist and album in a youtube music library by @fx-got in https://github.com/sonorahq/sonora/pull/1084
- fix(music): request larger album covers from youtube, subsonic, spotify and deezer by @nolight132 in https://github.com/sonorahq/sonora/pull/1104
- fix(views): align the player bar layout previews by @nolight132 in https://github.com/sonorahq/sonora/pull/1106
- fix(local): rescan the folders when the local library is refreshed by @nolight132 in https://github.com/sonorahq/sonora/pull/1107
- fix(playback): avoid preference notifications on volume changes by @Augustus-S in https://github.com/sonorahq/sonora/pull/1070
- fix(views): show unsynced romanization under each lyric line by @nolight132 in https://github.com/sonorahq/sonora/pull/1108
- fix(state): re-ask lyrics sources left with nothing stored by @mrkvqv in https://github.com/sonorahq/sonora/pull/1110
- fix(views): brighten and enlarge unsynced lyrics by @nolight132 in https://github.com/sonorahq/sonora/pull/1109
- feat(music): show recently added apple library items on home by @Augustus-S in https://github.com/sonorahq/sonora/pull/1071
- merge dev into main by @nolight132 in https://github.com/sonorahq/sonora/pull/1115
- fix(playback): preserve spotify connect queues & mpris data by @CodedNil in https://github.com/sonorahq/sonora/pull/1047
- ci: publish a nightly build of main by @nolight132 in https://github.com/sonorahq/sonora/pull/1116
- ci: publish a nightly build of main by @nolight132 in https://github.com/sonorahq/sonora/pull/1118
- docs: shorten the nightly notice in the readme by @nolight132 in https://github.com/sonorahq/sonora/pull/1120
- docs: shorten the nightly notice in the readme by @nolight132 in https://github.com/sonorahq/sonora/pull/1119
- docs: drop the appimage notes from the readme by @nolight132 in https://github.com/sonorahq/sonora/pull/1121
- docs: drop the appimage notes from the readme by @nolight132 in https://github.com/sonorahq/sonora/pull/1122
- ci: pin the aur host key for the nightly push by @nolight132 in https://github.com/sonorahq/sonora/pull/1123
- ci: pin the aur host key for the nightly push by @nolight132 in https://github.com/sonorahq/sonora/pull/1124
- feat(sonora): show the nightly version and skip stable updates on nightlies by @nolight132 in https://github.com/sonorahq/sonora/pull/1125
- feat(sonora): show the nightly version and skip stable updates on nightlies by @nolight132 in https://github.com/sonorahq/sonora/pull/1126
- ci: keep the sonora-nightly cask on the nightly by @nolight132 in https://github.com/sonorahq/sonora/pull/1130
- ci: keep the sonora-nightly cask on the nightly by @nolight132 in https://github.com/sonorahq/sonora/pull/1131
- feat(sonora): release channels and self-updates on macos and appimage by @nolight132 in https://github.com/sonorahq/sonora/pull/1132
- feat(sonora): release channels and self-updates on macos and appimage by @nolight132 in https://github.com/sonorahq/sonora/pull/1133
- fix(local): show local tags in song details by @nolight132 in https://github.com/sonorahq/sonora/pull/1136
- fix(local): show local tags in song details by @Brezinben in https://github.com/sonorahq/sonora/pull/906
- feat(views): pick columns from a right-click on the table header by @nolight132 in https://github.com/sonorahq/sonora/pull/1137
- feat(settings): install and delete community themes by @nolight132 in https://github.com/sonorahq/sonora/pull/1141
- release 0.45.0 by @nolight132 in https://github.com/sonorahq/sonora/pull/1142
New Contributors
- @Augustus-S made their first contribution in https://github.com/sonorahq/sonora/pull/1070
- @mrkvqv made their first contribution in https://github.com/sonorahq/sonora/pull/1110
**F
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
A native, familiar music streaming client
Stream from your favorite services and play local files — all in one native app.
[!IMPORTANT] Sonora is not a piracy tool.
Sonora is not a platform for obtaining or sharing copyrighted material. We will not implement any functions that can be used to export decrypted streams, DRM licenses, content keys, or to convert protected streams into media files.
Sonora is not designed to circumvent subscriptions or other restrictions put in place by music streaming platforms. If the service demands that you have a valid subscription in order to play back their tracks, so will Sonora.
Features aimed at ripping, downloading, distributing, or gaining access to protected streaming content are out of scope for the project.
Installation
macOS
Install with Brew:
brew install --cask nolight132/tap/sonora
After installing (thanks Apple):
xattr -dr com.apple.quarantine /Applications/Sonora.app
Or install the disk image, which updates itself.
Linux
Arch
Install from the AUR with your AUR helper of choice:
yay -S sonora-bin
Or:
yay -S sonora
Flatpak
flatpak install --user https://sonorahq.github.io/sonora/sonora.flatpakref
AppImage
Download from the latest release, make it executable and run it:
chmod +x sonora-*.AppImage
./sonora-*.AppImage
Nix
Add either of those inputs:
inputs.sonora.url = "github:sonorahq/sonora";
inputs.sonora.packages.${system}.default (prebuilt where available, else from source)
inputs.sonora.packages.${system}.sonora (same as default)
inputs.sonora.packages.${system}.sonora-bin (prebuilt, x86_64-linux, aarch64-linux, aarch64-darwin)
inputs.sonora.packages.${system}.sonora-src (always built from source)
Building from source on macOS needs Xcode added to the Nix store, because the shaders compile with Apple's Metal compiler.
Configuration with Home Manager is provided by the module under programs.sonora.
Windows
Installer
Download and run the installer, or the ARM installer on Windows on ARM.
Portable
Download the latest windows-msvc.exe for your architecture from Releases.
Nightly
Nightly builds are available.
brew install --cask nolight132/tap/sonora-nightly
yay -S sonora-nightly-bin
nix run github:sonorahq/sonora/nightly
Community
Feel free to join our Discord server and Matrix space. Discord is the primary one, but we do have a Matrix bridge.
Translations
| Language | Translated | Coverage |
|---|---|---|
English (en-US) | 1220/1220 | 100% |
Deutsch (de) | 1105/1220 | 91% |
Español (es) | 1105/1220 | 91% |
Français (fr) | 1106/1220 | 91% |
Italiano (it) | 1105/1220 | 91% |
Bahasa Indonesia (id) | 1105/1220 | 91% |
日本語 (ja) | 1105/1220 | 91% |
Русский (ru) | 1151/1220 | 94% |
Українська (uk) | 1107/1220 | 91% |
Polski (pl) | 1107/1220 | 91% |
Čeština (cs) | 1105/1220 | 91% |
Português (Brasil) (pt-BR) | 1105/1220 | 91% |
简体中文 (zh-CN) | 1105/1220 | 91% |
Türkçe (tr) | 1105/1220 | 91% |
Shqip (sq) | 1105/1220 | 91% |
Star History
Credits
Sonora is built with the help of some incredible open-source projects, including:
- Zed — a wonderful editor (
ab)used by all core team members. Conveniently providesgpui— their native Rust rendering stack. - librespot — Spotify playback and library integration.
- yt-dlp — certain YouTube ideas implemented in ytmusic-rs :)
Code signing policy
Free code signing provided by SignPath.io, certificate by SignPath Foundation.
The Windows executable and installer are built by GitHub Actions from this repository and signed through SignPath.
- Reviewers: members of sonorahq
- Approvers: @nolight132
License
Copyright (C) 2026 Sonora Contributors.
Sonora is free software, released under the GNU General Public License version 3 or later.
Sonora is an unofficial client and is not affiliated with, endorsed by, or sponsored by Spotify AB.
The binary also embeds the Inter typeface (SIL
Open Font License 1.1) and four interchangeable icon sets:
Lucide (ISC), Iconoir (MIT),
Remix Icon 4.8.0 (Apache 2.0) and the
Solar Linear set
(CC BY 4.0, by 480 Design). Each pack keeps its licence beside its files in
assets/icons. THIRD-PARTY.md lists every bundled dependency.