一个面向桌面端的本地阅读器:管理自己的书源与书架,也能阅读本地书籍、订阅 RSS,并按喜欢的方式定制阅读界面。
Reader 是「阅读3.0」(Legado)的跨平台桌面移植版,支持 Windows、macOS 和 Linux,使用 Rust、Tauri v2 与 Vue 3 构建。
项目采用纯单机设计,不需要部署服务端、数据库容器或注册账号。界面与本地核心运行在同一个桌面进程中,书架、阅读进度、缓存和配置由用户自己保存和管理。
项目源自 reader,并参考 reader-rust 进行重构。
Important
本项目不内置书源,也不提供任何书籍内容。首次启动后可导入自己拥有合法使用权的书源、本地 TXT 或 EPUB 文件。
- 本地优先:不依赖常驻服务端,数据保存在自己的设备中。
- 兼容阅读生态:支持 Legado 书源、RSS 源及备份数据的导入与恢复。
- 完整书源工具:从导入、编辑、测试到登录调试都可以在桌面应用内完成。
- 可定制阅读体验:阅读主题、字体、排版、翻页方式、背景图片与透明度均可调整。
- 多种听书方式:支持系统语音及多种第三方语音接口格式。
- 跨平台发布:自动构建 Windows、macOS 和 Linux 桌面安装包或便携包。
- 导入、导出、新增、编辑和批量测试 JSON 书源
- 远程书源订阅与一键同步更新
- 支持 CSS 选择器、JSONPath、XPath、正则表达式及 JavaScript 解析规则
- 多书源并行搜索,按书名和作者合并结果并显示来源数量
- 书籍详情、目录获取、换源、章节缓存与离线阅读
- 书源可视化编辑器、原始响应查看和分步骤规则调试
- 书源登录预览及 Cookie 登录状态支持
- 书架分组、最近阅读、书签和阅读进度记录
- 本地 TXT、EPUB 与网络书籍阅读
- 日间、夜间及多种阅读主题,可跟随应用外观切换
- 字体、字号、字重、行高、段距、缩进和页面宽度调节,支持导入自定义字体
- 滚动、左右翻页、点击翻页与自动阅读
- 简繁转换、文字选择、内容净化与自定义替换规则
- 阅读页右键菜单,可搜索、添加书签、换源、自动翻页和刷新
- 自定义桌面背景,可选择是否应用到阅读页并调节透明度
- 阅读工具栏自动收起,鼠标靠近页面两侧即可展开
- 统计累计阅读时长、阅读字数和活跃天数
- 按时间范围查看每日阅读趋势及每本书的阅读时长
- RSS 源的本地导入、远程导入、编辑、订阅与文章阅读
- RSS 文章与普通书籍统一出现在最近阅读记录中
- 本地备份、恢复及备份文件管理
- 与 Legado 互通书架、书源、RSS、书签、净化规则和阅读进度
- 通过 WebDAV 与 Legado 手机端双向同步当前阅读章节和位置
- 支持旧版 JSON 备份以及新版 ZIP 备份
- 应用关闭时可选择直接退出或隐藏到系统托盘
- 可配置全局老板键,在其他窗口中快速隐藏或恢复应用
- 前往 Releases 下载适合当前系统的版本。
- 启动应用后,导入合法书源或自己的 TXT、EPUB 文件。
- 使用顶部搜索框查找书籍,将结果加入书架后开始阅读。
- 在主页设置中调整外观、背景和关闭行为,在阅读设置中调整排版、主题、缓存与听书。
自动构建目前包含以下目标:
| 系统 | 架构 | 安装包 | 便携包 |
|---|---|---|---|
| Windows | x64 | NSIS | ZIP |
| macOS | Intel + Apple Silicon | DMG | APP 压缩包 |
| Linux | x64 | DEB | AppImage |
macOS 构建目前未使用苹果开发者证书签名,系统可能提示“无法验证开发者”,需要用户在系统安全设置中手动允许。Linux 桌面环境较多,如 AppImage 无法正常启动,可以尝试 DEB 包并检查系统 WebKitGTK 运行库。
Windows 便携版解压后可直接运行 Reader.exe。正式版本会优先在程序同级创建 data/ 数据目录;如果安装位置不可写,则自动使用当前系统的用户数据目录。移动或卸载应用前,建议先在设置中创建备份。
在小说阅读页打开右侧「阅读设置」,在「朗读引擎」中选择系统语音或 API 语音:
- 系统语音:使用系统中已经安装的语音,可设置音色、语速、语调和定时停止。
- API 语音:请求由桌面端直接发出,支持 OpenAI、Fish、ElevenLabs、Azure 兼容格式,可设置语速、音频格式和定时停止。
API 语音需要填写对应服务商提供的配置:
| 接口格式 | 服务地址示例 | 模型或语言代码 | 语音音色 |
|---|---|---|---|
| OpenAI 兼容格式 | https://api.openai.com |
服务商提供的 TTS 模型 | 音色名称 |
| Fish 兼容格式 | https://api.fish.audio |
服务商提供的 TTS 模型 | 音色 ID |
| ElevenLabs 兼容格式 | https://api.elevenlabs.io |
服务商提供的 TTS 模型 | Voice ID |
| Azure 兼容格式 | Azure 语音资源地址 | 语言代码,如 zh-CN |
音色名称 |
服务地址既可以填写 API 根地址,也可以填写完整的语音接口地址。HTTP 代理只作用于 API 语音请求,可在无法直连服务时填写。
「少字多请求」能更及时地切换当前朗读段落;「多字少请求」可以减少请求次数,并根据音频播放进度估算高亮段落。
Warning
访问密钥保存在本机阅读配置中,备份阅读配置时也会进入备份文件。请勿公开分享包含访问密钥的备份。
在「设置 → 数据 → 备份与恢复」中可以手动创建、上传和恢复备份。新版备份使用 ZIP 格式,本应用也会继续识别旧版 JSON 备份。
备份窗口支持配置 WebDAV(网盘协议)服务地址、账号、应用密码和子目录。保存配置并测试连接后,可按需手动上传、刷新远端列表、下载、恢复或删除备份;不会自动上传或恢复。远端备份放在配置子目录根目录,文件名以 backup 开头,与 Legado(阅读)备份目录兼容,手机端可直接识别。
“同步阅读进度”默认开启,可在同一窗口关闭。开启后,进入、退出阅读页以及阅读过程中会与 Legado(阅读)的 bookProgress(阅读进度目录)同步当前章节和位置。
本应用可以恢复 Legado 生成的 ZIP 备份;Legado 也可以读取本应用备份中的书架、书源、RSS、书签、净化规则与阅读进度。
由于不同设备及应用的本地文件路径不通用,跨应用恢复时只迁移网络书籍。本地书籍文件、Legado 专属界面配置、登录状态和缓存不会迁移;Reader 自己的阅读配置仅在 Reader 恢复时使用。
- 应用没有集中式账号系统,书架、配置、缓存与阅读记录默认保存在本机。
- 搜索、正文加载和 RSS 订阅需要访问用户配置的来源网站。
- 使用 API 语音时,待朗读文字会发送给用户自己配置的语音服务商。
- 应用不会提供、维护或推荐任何第三方书源,用户应自行判断来源的安全性与合法性。
环境要求:Node.js 22、Rust stable,以及 Tauri v2 对应平台的系统依赖。
# 前端
cd frontend
npm install
npm run dev
npm run build
npm test
# 桌面应用
cd desktop
npm install
npm run dev
npm run build开发模式由 npm run dev 同时启动 Vite 热更新和 Tauri 桌面窗口,数据保存在 desktop/.dev-data/。Windows 本地执行 npm run build 后,安装包和便携包位于 desktop/dist/。
Rust 库测试:
cargo test -j 4推送 v* 标签后,GitHub Actions 会分别在 Windows、macOS 和 Linux 环境中构建,并创建草稿 Release。也可以在 Actions 页面手动运行构建,构建结果会自动覆盖上传到与项目版本一致的最新 Release。
- 桌面层:Tauri v2,使用各系统自带的 WebView。
- 前端:Vue 3、Vite、TypeScript、Pinia、Vue Router、ECharts。
- 本地核心:Rust、Tokio、Reqwest、SQLx、SQLite、rquickjs。
- 通信方式:前端通过 Tauri IPC 调用本地命令,封面与 EPUB 资源通过应用自定义协议加载。
- 数据存储:SQLite 保存业务数据,文件目录保存封面、章节缓存、本地书籍和备份。
主要目录:
| 目录 | 说明 |
|---|---|
frontend/ |
Vue 3 桌面界面、状态管理与前端测试 |
src/api/ |
Tauri 命令、自定义协议与桌面接口 |
src/service/ |
书籍、书源、用户数据等业务逻辑 |
src/parser/ |
CSS、XPath、JSONPath、正则和 JavaScript 解析引擎 |
src/crawler/ |
网络请求、请求头规则和 URL 分析 |
src/storage/ |
SQLite、数据库迁移、文件缓存与数据目录 |
desktop/src-tauri/ |
桌面窗口、托盘、单实例、平台适配与打包配置 |
书源使用 JSON 对象描述,常用字段包括 bookSourceUrl、bookSourceName、searchUrl、exploreUrl,以及 ruleSearch、ruleBookInfo、ruleToc、ruleContent 等规则组。
规则支持 @css:、@json:、@xpath:、@regex: 与 js: 前缀。JavaScript 规则由本地 rquickjs 引擎执行,导入不可信书源前仍应检查其中的请求地址与脚本内容。
- 遇到问题时,请在 Issues 中说明系统版本、应用版本、复现步骤和错误提示。
- 功能建议请尽量描述使用场景,以及希望解决的实际问题。
- 欢迎提交 Pull Request;提交前请运行前端测试、前端生产构建和 Rust 测试。
- 请勿在问题、日志或提交中上传访问密钥、Cookie、私人书源和包含个人数据的备份文件。
本项目仅提供书源管理、内容解析、阅读与缓存等技术能力,不内置、存储、分发或提供任何受版权保护的书籍内容。用户应确保自行添加的书源、上传的本地文件以及通过本应用访问的内容均已获得合法授权,并自行承担由此产生的版权与合规责任。
如任何权利人认为本项目相关内容或使用方式侵犯了其合法权益,请通过项目 Issues 联系维护者,我们将在核实后及时处理。
本项目基于 MIT License 开源。
感谢 Legado、reader 和 reader-rust 等开源项目提供的思路与基础。
特别感谢:LinuxDO。





