用 Rust 写的原生 Spotify 桌面客户端(Spotifast)
Spotifast 是用 Rust 与 egui 写的 Spotify 桌面客户端,靠 librespot 在本机播放音乐,也能作为 Spotify Connect 设备被远程控制,支持 Linux、macOS 和 Windows,MIT 许可。这篇按解决的问题、主要功能、安装方式、关键参数和常见故障拆开讲,帮读者判断它是否适合自己的桌面环境和账号类型。
Spotify 官方桌面客户端跑在浏览器引擎上。README 里给的内存对比是官方版本常用 600 MB 到 1 GB 以上,而 Spotifast 通常占 100–250 MB,启动在半秒以内,不含浏览器引擎。代码 98.7% 是 Rust,界面用 egui 画,音频走 librespot,项目以 MIT 许可开源,支持 Linux、macOS 和 Windows 三个平台。
Spotifast 是用 Rust 与 egui 写的 Spotify 桌面客户端,靠 librespot 在 Linux、macOS、Windows 上本机播放音乐,同时能被当作 Spotify Connect 设备远程控制。
它把自己注册成一个 Spotify Connect 设备,手机上的 Spotify 应用能在设备列表里看到它,选过去就开始在电脑上出声。反过来,它也能把播放推到别的音箱、手机或电脑上,并且继续在那台设备上做播放、暂停、跳曲、拖动进度、随机、循环和音量控制。

项目原名 Fastpotify,从 0.8.0 起改名并迁到 spotifast.rocks。原有的设置与登录状态会带过去,只有切换 Flatpak 安装方式这一种情况例外。命令行上 spotifast 是主命令,fastpotify 为已有脚本保留着。
它解决的是什么问题
Linux 上想听 Spotify,摆在面前的两条路都不太顺手。装官方桌面客户端,代价是浏览器引擎带来的内存和启动开销。跑 spotifyd、librespot 这类只负责把音频播出来的守护进程,占用是小了,可它们没有界面,想翻播放列表、编辑歌单、搜一首歌,都得另外找地方。
Spotifast 把这两件事放进同一个应用里:librespot 负责出声,egui 画的界面负责库、搜索、播放列表编辑和设备控制。
另一个现实问题是多设备。Spotify Connect 的用法是拿手机选一台设备来播,电脑要成为那台设备,就得有一个常驻的接收端。Spotifast 提供接收端,也提供完整的库界面,选中之后不用再切回浏览器。
典型使用场景
- Linux 桌面的日常使用。Arch 用户走 AUR,也能用 Flatpak、AppImage 或 Nix flake 装。0.10.2 修掉了 Hyprland 上的「Application Not Responding」冻结,0.11.2 又修好了 Hyprland 里的粘贴。
- 把电脑当音箱。手机上的 Spotify 应用在设备列表里选中 Spotifast,声音从电脑出,切歌和音量还是手机控制。
- 机器内存吃紧的人。100–250 MB 的占用,对同时开着一堆窗口的人是有意义的差别。
- 局域网里已经跑着 spotifyd 或 librespot 的人。Spotifast 用 mDNS 把它们找出来,连上之后直接出现在设备选择器里。
几个常见疑问
免费账号能用 Spotifast 播放音乐吗?
不能。README 写得很直接,播放需要 Spotify Premium。免费账号可以浏览和搜索,但没法通过 Spotifast 在这台电脑或另一台设备上播放。
连接 Spotify 时报 503 是怎么回事?
Issues 里有一条「Getting a 503 error when connecting to Spotify」,报告者用的是 0.11.0 从 AUR 安装的版本,Manjaro 系统,Premium 账号,该条目前标记为已解决。同一版本区间内,0.11.1 还修掉了重连之后音量跳回去的问题。
提示 Spotify refused the audio key 是什么情况?
这是 0.6.0 在 Windows 11 上的报告,17 条评论,当前状态是待解决。仓库里没有说明这条的具体成因。
主要功能
在本机播放音乐。以 Spotify Connect 设备的身份出现,播放无间隙,最高 320 kbps,可选音量归一化和磁盘音频缓存。连接卡住时每次尝试 5 秒超时,然后换一个端点重试。0.8.0 起,一次确认过的本机拖动进度会丢弃旧位置排队的音频,解码、下载和设备缓冲带来的延迟仍然存在。
控制其他设备。设备选择器能把播放推到音箱、手机或另一台电脑,之后继续控制播放、暂停、跳曲、进度、随机、循环和音量。选择器向上展开以容纳多台设备,列表长了就滚动。0.9.0 起切回本机时,会把当前的歌、位置、队列以及暂停或播放状态一起带回来。
发现局域网里的音箱。通过 mDNS 找 librespot、spotifyd 和支持的硬件接收器,连上后作为 Connect 设备出现。选择器用接收器自己上报的名字,同一个 device ID 的条目会合并。
库与播放列表编辑。浏览播放列表、Liked Songs、收藏专辑、关注的艺人和播客。可以筛选、置顶、重排侧边栏项目。0.10.0 起库标题栏能在列表和自适应封面网格之间切换。播放列表支持创建、重命名、写描述、排序和删除,0.9.0 起能从「Edit details → Change cover」上传 JPEG 或 PNG 封面。拖动选中的行会按显示顺序复制整批歌曲,预览里会显示数量。
搜索。跨歌曲、艺人、专辑、播放列表、播客和单集搜索,带一个置顶结果和按类型分的视图。个人应用搜目录,共享访问找播放列表,两部分各自独立呈现,一方失败不影响另一方。
Home 与艺人页。Home 有 Made for you、最近播放、常听艺人和歌曲以及推荐。0.10.0 起增加 Your podcasts,列出已开始的连载单集,再排没听过的。艺人页有热门歌曲、可筛选的唱片目录和相关艺人。
电台。0.10.0 起,歌曲菜单里的 Go to song radio,以及播放列表、专辑、艺人菜单里的对应入口,会打开一个 Spotify 挑的 50 首页面。Play 播放这批歌,Refresh 换一批,Save as playlist 存成私有播放列表。电台需要本机播放已经配置好才能用。
安装与最短示例
README 把安装、设置和日常用法指向 spotifast.rocks,正文没有给出完整的命令行步骤。GitHub Release 页面(crmne/spotifast)提供 macOS 和 Windows 的安装包下载,0.11.1 起多了 AppImage。
Linux 侧的包管理用法,从 Issues 里能看到 AUR 的实际写法:
paru -S fastpotify-git
yay -S fastpotify-bin
仓库里还有 flake.nix、native-packages.yaml、packaging/ 目录和 PACKAGING.md,打包由项目自己维护。Homebrew 包在改名后也换成了 Spotifast 这个名字。
最短能跑通的路径是:装完启动主命令 spotifast,登录 Spotify 账号,把播放目标切到本机。播放前先确认账号是 Premium,免费账号只能浏览和搜索。
关键参数
Spotifast 是 GUI 程序,仓库里没有一份完整的配置字段清单,配置文件放在哪、写成什么格式也没有说明。下面这几项开关与行为能在 README 和 Release 说明里找到依据。
- 本地播放开关:打开后本机才出声;关掉时它只作为一个远程控制端。
- 音量归一化:可选。
- 磁盘音频缓存:可选。
- 紧凑曲目列表:在设置里打开,一首歌一行,歌名、艺人和添加日期之间留间距。
- 播放列表顺序:可以跟随 Spotify 的顺序,也可以保持一份本地排列。Spotify 不允许第三方应用改它自己的顺序,所以从 0.10.0 起,一边跟随一边拖动列表,会自动切到本地排列并给出提示。
命令行部分只有两个名字,spotifast 是主命令,fastpotify 为已有脚本保留。0.9.1 起,原有的配置文件和受保护的登录状态会迁移到 Spotifast 名下,已有的目标配置保留。
结果在哪里看
声音落在哪里取决于本地播放开关。开着,音频从这台电脑的音频设备出来;关掉,音频在设备选择器里选中的那台设备上。0.11.2 起,一台没有音频输出的电脑上程序也能继续运行。
音频缓存写到磁盘,具体路径仓库里没有说明。
界面本身就是结果的主要出口。库、搜索、Home、艺人页、专辑页、播放列表编辑都在同一个窗口里。本机作为 Connect 设备会出现在同账号的手机或另一台电脑的设备列表里。桌面媒体控制也在它的覆盖范围内,0.11.2 修的就是媒体控制与音量不同步的问题,topics 里带着 mpris。
实际使用中的坑
Issues 里的问题集中在三类:连不上、没声音、界面在特定桌面环境下的表现。
- Spotify refused the audio key(待解决):0.6.0、Windows 11、Premium 账号的报告,17 条评论,目前仍是开放状态。音频密钥被拒绝,播放起不来。
- 连接时报 503(已解决):0.11.0 从 AUR 安装、Manjaro 系统,连 Spotify 时返回 503,该条已关闭。
- Arch 上装完没有声音(已解决):用
paru -S fastpotify-git装好后登录、点播放,没有任何声音,扬声器和官方客户端都正常。 - Windows 10 顶部黑条与点击偏移(已解决):0.6.0 与 0.7.0 的 Windows 安装版上,窗口顶部多一条黑边,点击位置和实际控件对不上,这条有 18 条评论。
Windows on ARM 上的本地播放曾经打不开,0.4.1 的 ARM 安装包有过报告,到 0.11.1 修好。macOS 上还处理过中日韩字符与拉丁字母基线不齐的问题,也是在 0.6.0 上报告的。
和同类的差别在哪
下面三个项目都能把 Spotify 的声音放到某个设备上,落点不同。
| 项目 | 适合谁 | 部署方式 | 主要限制 | 什么情况下选它更合适 | 项目地址 |
|---|---|---|---|---|---|
| Spotifast | 想要原生界面加本机播放的 Linux、macOS、Windows 桌面用户 | Release 安装包、AUR、Homebrew、Flatpak、AppImage、Nix | 播放需要 Spotify Premium;改不了 Spotify 自己的播放列表顺序,只能维护本地排列 | 想要一个装完就能用、界面和播放都不缺的桌面客户端 | crmne/spotifast |
| librespot-org/librespot | 要把 Spotify 播放能力嵌进自己程序的开发者 | 作为库引入到其他 Rust 项目 | 它是库,不提供桌面界面,也不自带库浏览和播放列表编辑 | 打算自己写应用,或者只在后台做音频转发 | librespot-org/librespot |
| deckjay | 有 Stream Deck、想要无屏幕播放的人 | 仓库没有说明 | 交互围绕 Stream Deck 硬件展开 | 希望用实体按键控制播放,而不是用屏幕操作 | deckjay |
选型上有个明确的分界:Spotifast 是端到端的成品应用,它不提供库接口,也没法像 librespot 那样被嵌进别的程序里。要做无界面播放、或者把 Spotify 播放能力接进自己的软件,librespot 更合适;只想要实体按键控制,deckjay 的形态更贴合。三者里只有 Spotifast 同时提供桌面界面和 Connect 接收端。
想清楚要不要用它,看两件事就够了:你用的桌面系统是 Linux、macOS 还是 Windows,以及账号是不是 Premium。桌面上想要一个启动快、内存占用低、界面完整的 Spotify 客户端,Spotifast 值得装来试。用免费账号的人,或者只想在服务器上无声转发音频的人,它不适合,前者连播放都开不了,后者该去看 librespot 这类库。
焚评:这个项目的量化评分
本项目的选题来自 焚.com(一个按公开公式给 GitHub 项目打分的站)。焚评当前总分 10.0 分(满分 10)。下表是各维度的得分:
| 评分维度 | 得分 |
|---|---|
| 热度动量(权重 25%) | 10.0 / 10 |
| 开发活跃(权重 25%) | 10.0 / 10 |
| 社区响应(权重 15%) | 9.8 / 10 |
| 文档质量(权重 15%) | 10.0 / 10 |
| 发布节奏(权重 10%) | 10.0 / 10 |
| 风险控制(权重 10%) | 10.0 / 10 |
评分口径、权重与计算方式见焚.com 的评分方法页;数据随 GitHub 指标刷新,具体数值以焚.com 当前页面为准。本文正文为诀.com 独立撰写,评分数据由焚.com 授权引用。
内容核验说明
把内存占用、平台支持、Premium 限制、安装渠道和已知故障放在一起,读者能直接判断自己该不该装。适合在 Linux、macOS、Windows 桌面上听歌并已有 Premium 的人先看;免费账号和只在服务器上无声转发音频的人不必进来。内存与启动耗时数据出自作者 README 与 Release 说明,诀.com 未独立验证;
内存 100–250 MB、启动半秒内等数据来自项目 README,诀.com 未独立验证;Issue 状态与各版本修复记录取自 GitHub 仓库页面;焚评分数由焚.com 授权引用,随 GitHub 指标刷新。用户反馈摘要
根据仓库 Issue 来看,反馈集中在两类:连接与播放失败(503 报错、audio key 被拒、Fedora KDE 点播放崩溃、Windows ARM 本地播放无法启用、速率限制),以及界面与桌面环境问题(Windows 10 顶部黑条导致点击偏移、启动空白屏、托盘双击后挂起、光标样式、扬声器杂音)。多数条目状态为已解决,只有 audio key 被拒一条为待解决。另有提交者提出库排序置顶与隐藏任务栏窗口的需求。
基于该仓库公开 Issue 整理,只反映提交者报告的现象与诉求,不代表诀.com 立场,也不代表问题已被确认。项目来源与说明
开源项目:crmne(crmne)
本文由诀.com 编辑基于该项目的公开信息独立撰写,属原创解读,不是对项目文档的翻译或转载;文中提到的功能与参数以官方仓库为准,代码与文档版权归原作者所有。
查看项目仓库