使用 Rust 和 egui 编写的 Windows 本地电子书阅读器,支持 TXT、EPUB,提供简洁的书架和连续滚动阅读界面。
截图使用程序生成的演示内容。仓库不包含电子书、个人书架或预编译程序。
- 书架管理:导入文件、文件夹或拖入文件;按书名、作者搜索,筛选阅读状态并排序。
- 连续阅读:章节标题、章节分隔线、随阅读位置更新的目录,以及本章和全书进度。
- 图文显示:EPUB 图片按正文顺序显示,并随阅读宽度缩放。
- 阅读操作:鼠标选择文字、滚轮和按键翻屏、章节跳转、全屏阅读。
- 书签与搜索:添加、跳转、删除书签;全文文字匹配,最多显示 500 条结果。
- 阅读设置:字号、行距、阅读宽度、页边距、侧栏;日间、护眼绿、羊皮纸、夜间、深蓝背景。界面配色不跟随系统主题。
- 本地保存:保存阅读位置、书签和设置,可选择在导入时保存托管副本。
当前主要支持和验证的平台是 Windows x64。请先安装:
- Rust 稳定版,选择 Windows MSVC 工具链。
- Visual Studio Build Tools 的“使用 C++ 的桌面开发”组件,包含 MSVC x64 编译工具和 Windows 10/11 SDK。
下载或克隆本仓库后,在仓库目录双击 构建.bat。脚本会查找编译环境;首次构建需要下载依赖,耗时较长。
构建完成后,双击生成的 简单阅读器.exe 或 启动.bat。重新构建前请先退出正在运行的阅读器。
也可在已配置 MSVC 环境的终端中执行:
cargo build --release --locked
.\target\release\simple-reader.exe| 按键 | 操作 |
|---|---|
| Ctrl+O | 导入书籍 |
| Ctrl+F | 打开全文搜索 |
| ← / → | 上一章 / 下一章 |
| 空格 / PageDown | 向下翻屏 |
| PageUp | 向上翻屏 |
| F11 | 切换全屏 |
| Esc | 退出全屏 |
在输入框中编辑文字时,方向键不会切换章节。
书架、阅读进度、书签和设置保存在 %APPDATA%\SimpleReader。托管副本保存在其中的 books 文件夹;未启用托管时,阅读器直接访问原文件,移动原文件后需重新导入。
重复导入会保留已有阅读进度。“移出书架”删除该书的书架记录和书签,不删除原书文件。备份时可在退出程序后复制整个数据目录。
首次启动会尝试读取旧版元宝阅读器 %APPDATA%\YuanbaoReader\library.db 中的记录,不覆盖旧版数据库。
- TXT:UTF-8、带 BOM 的 UTF-16,以及常见中文编码。
- EPUB:文字和 PNG、JPEG、GIF、WebP 图片;GIF 显示静态画面。
- 当前采用单栏、可重排版阅读。特殊 CSS、行内小图、独立 SVG 绘图及出版社固定版式不保证完整还原。
- 暂不支持 PDF、MOBI、AZW3。
在已配置编译环境的终端中运行:
cargo test --release --locked默认运行不依赖个人电子书的测试;两个真实 EPUB 样本测试默认忽略,样本不随仓库分发。
如需用自己的长篇小说和插图 EPUB 运行这两项测试,在 PowerShell 中设置路径后执行:
$env:SIMPLE_READER_NOVEL_EPUB = 'D:\Books\novel.epub'
$env:SIMPLE_READER_ILLUSTRATED_EPUB = 'D:\Books\illustrated.epub'
cargo test --release --locked -- --include-ignoredGitHub Actions 会在 Windows 环境中执行常规测试和发布模式构建。
程序还提供独立的界面检查入口:
cargo build --release --locked --features qa
.\target\release\simple-reader.exe --qa-output .\qa-output检查使用内存书架和演示内容,输出实际渲染截图及 qa-report.json,不读取或覆盖个人书架。可以追加 --qa-book "电子书完整路径" 检查自己的 EPUB;生成的截图和报告可能包含该书内容及本地路径,请自行保留。
完成检查后重新运行 构建.bat,生成不含界面检查入口的普通版本。
欢迎通过 Issues 反馈问题或提交 Pull Request。反馈时请说明 Windows 版本、程序版本或提交号、复现步骤,以及实际结果和预期结果。解析问题优先使用可公开的小样本说明;请勿上传无权分发的完整电子书。
项目代码使用 MIT 许可证。随程序提供的字体使用独立的 SIL Open Font License;字体、图标和依赖的说明见 第三方声明。

