Bookworm
Bookworm v0.1.6 已发布 · 适配 macOS 15+

一个书架,
装下所有想读的书。

本地电子书、漫画与在线书源统一管理,阅读窗口与全局悬浮窗共享同一份进度。

  • 纯 Swift / SwiftUI 原生
  • macOS 15 或更高
  • MIT 开源
Bookworm 书架界面,左侧分类侧边栏与右侧封面网格

四组全局快捷键,读到哪都不打断

  • ⌥⌘R显示 / 隐藏悬浮窗任何 App 里都能唤出,不抢占前台焦点
  • ⌥⌘→下一页隐藏状态下按翻页键会自动唤出
  • ⌥⌘←上一页与阅读窗口保持同一页
  • ⌥⌘↓下一章按章节向后跳转
  • ⌥⌘↑上一章按章节向前跳转
  • ⌥⌘P自动翻页开关间隔可选关闭、5 秒、10 秒、30 秒

核心功能与界面

从书架到悬浮窗,一条链路读完一本书

五组能力,覆盖书库、阅读、书源、悬浮窗与翻译。每组的真实界面截图默认收起,点击可连续翻看全部 6 张。

书库与格式

本地文件和在线书进同一个书架,封面、分类和排序都不用二次整理。

  • 本地书与在线书同架在线书带来源名与书源健康度标记。
  • 首扫生成封面漫画取首图,EPUB / FB2 取内嵌封面,纯文本用占位封面。
  • 九类格式直接读取全部原生解析,或调用 macOS 自带工具。
  • 分类、搜索与排序八个分类,按标题或最近打开排序。

本地阅读

漫画按日漫方向翻,电子书按自己的字号排,每本书的偏好都留在书里。

  • 漫画方向与翻页从左到右、日漫从右到左、纵向条漫。
  • 缩放按书记忆适合页面 / 宽度 / 高度 / 实际大小 / 50%–200%。
  • 电子书排版字号 60%–250%,字体、行距和深浅主题。
  • 进度与窗口恢复最后页、方向、缩放和字号都会记住。

在线书源

导入自己的书源,多个站点并发搜索,正文按章缓存并预取。

  • Legado 书源导入文件或粘贴 JSON,导入前先给出预览。
  • 健康度与失效标记成功率低于 30% 标「建议停用」,可一键停用。
  • 六路并发搜索单源 7 秒超时,整体预算 30 秒。
  • 同书多源合并一本书命中多个源时合并成一条。
  • 正文缓存与预取默认 500MB,预取前后各 2 章。

悬浮窗

在任何 App 里读,不抢焦点,也不打断当前工作。

  • 不抢焦点的全局悬浮窗前台 App 不会失焦。
  • 与阅读窗口同步本地书与在线书进度双向同步。
  • 迷你模式只显示一行正文和百分比,宽度 160–760 点可拖。
  • 外观与自动翻页字号、透明度、颜色和间隔都能调。

翻译与辅助

网页气泡就地识别与翻译,原文和译文都不离开当前阅读页。

  • 气泡级网页翻译鼠标停在气泡上即可查看译文。
  • 本地 OCR + 三种引擎Vision 识别,Google / Bing / OpenAI 翻译。
  • 密钥存钥匙串OpenAI 密钥写入 macOS 钥匙串。

格式支持

九类格式,打开就能读

漫画与电子书走各自的读取器,在线书源走规则引擎;全部由原生代码或 macOS 自带工具完成。

漫画与日漫

  • .cbz
  • .zip
  • .cbr
  • .rar
  • .7z
  • .pdf

读取方式:bsdtar / libarchive、PDFKit

电子书

  • .epub
  • .mobi
  • .azw
  • .azw3
  • .fb2
  • .txt
  • .html
  • .xhtml
  • .htm

读取方式:原生 OPF / spine、PalmDB + PalmDOC、XML→HTML、自动分页、WKWebView

在线书源

  • HTML 站点
  • JSON 接口
  • 老版 legado 书源

读取方式:CSS 选择器、$$ 路径、字段自动映射

带 DRM 的 MOBI/AZW 与 HUFF/CDIC 压缩变体不支持,扫描时会跳过。 除 Sparkle 外没有别的第三方依赖。

上手教程

从下载到读到第一本书

七步走完。前两步只用系统能力,第三步之后才需要书源。

  1. 1

    安装并首次打开

    • 从 GitHub Releases 下载 Bookworm-0.1.6.dmg。
    • 拖入「应用程序」;未公证的包可能被 Gatekeeper 拦截。
    • 执行命令清除隔离标记后正常启动。
    清除 Gatekeeper 隔离标记
    xattr -dr com.apple.quarantine /Applications/Bookworm.app
  2. 2

    选择书库文件夹

    • 首次启动只有「选择书库文件夹」一个入口。
    • 递归扫描整个文件夹树,生成封面缩略图。
    • 打不开的文件会被跳过,不进入书架。
  3. 3

    导入书源(可选)

    • 从文件导入或直接粘贴 JSON。
    • 接受 [ … ]、{"sources": [ … ]} 和单个书源对象。
    • 导入前预览新增、冲突和失败数量。
    • 缺少搜索、目录或正文规则的源会被拒绝;老版 legado 字段自动映射。
  4. 4

    搜索并加入书架

    • 最多同时请求 6 个源,单源 7 秒超时,整体 30 秒。
    • 结果到达即显示;同一本书合并成一条,可展开切换来源。
    • 点「加入书架」先抓目录再落库,封面后台下载。
  5. 5

    打开并调整阅读

    • 目录侧栏打开时自动滚到当前章节。
    • 「格式」菜单调字号、字体、行距和主题,本地书与在线书共用。
    • 方向键、空格、Page Up / Down 翻页;每本书恢复上次位置。
  6. 6

    用悬浮窗随手读

    • ⌥⌘R 显示或隐藏;隐藏时按翻页键会自动唤出。
    • 与阅读窗口共用阅读会话,进度双向同步。
    • 迷你模式只显示一行正文和百分比,宽度 160–760 点可拖。

    全局快捷键

    • ⌥⌘R显示 / 隐藏悬浮窗
    • ⌥⌘→下一页
    • ⌥⌘←上一页
    • ⌥⌘↓下一章
    • ⌥⌘↑上一章
    • ⌥⌘P自动翻页开关
  7. 7

    翻译(可选)

    • 打开阅读器工具栏的对话气泡图标。
    • 鼠标停在任意气泡上查看译文。
    • Google 默认无需配置;Bing / OpenAI 需自填密钥,保存在钥匙串。

安全边界

为什么可以放心把书交给它

一个能读本地文件、能请求书源站点的阅读器,先把边界写在前面。

  • 13

    种格式扩展名

  • 6

    路并发书源

  • 500MB

    默认正文缓存

  • 1

    个第三方依赖

写在代码里的硬约束

  • 不内置任何书源,导入、启停与编辑都由自己决定
  • 书库、书源配置和正文缓存全部保存在本机
  • 唯一的第三方依赖是 Sparkle 2,只用于应用内更新
  • 关闭 TLS 校验默认不开启,开启前会提示中间人风险并二次确认
  • 扫描时跳过无法读取的文件,损坏与加密文件不会进入书库
  • 本地读取全部为纯 Swift 实现,或调用 macOS 自带工具

基于 MIT License 开源,全部源码公开可审计;当前版本 v0.1.6,要求 macOS 15.0 (Sequoia) 或更高版本。

下载

下载 Bookworm

安装包来自 GitHub Releases,下载后拖入「应用程序」即可。当前版本 v0.1.6。

官方开源仓库
GitHub Releases 与源码

获取最新 DMG、核对版本号,或查看全部源码与发版记录。

支持 Star 与 Issue 反馈

安装与首次运行

  1. 1下载 Bookworm-0.1.6.dmg。
  2. 2双击前在终端清除 DMG 的隔离标记。
  3. 3双击 DMG,把 Bookworm 拖入「应用程序」。
  4. 4对应用再清除一次隔离标记后启动。

项目未购买 Apple 商业签名证书,首次打开可能被 Gatekeeper 拦截并提示「应用程序已损坏」或「无法验证开发者」,这不是文件损坏。

在终端执行命令移除隔离标记后即可正常启动;不习惯终端也可以走「系统设置 → 隐私与安全性 → 仍要打开」。

移除 Gatekeeper 隔离标记
xattr -dr com.apple.quarantine /Applications/Bookworm.app

系统要求:macOS 15.0 (Sequoia) 或更高版本 · 适用芯片:Apple Silicon(当前发布包为 arm64);Intel Mac 可从源码构建

更新日志

版本更新

应用内更新由 Sparkle 2 读取本仓库的 appcast.xml;下面是最近七个版本。

在 GitHub 查看全部版本

常见问题

装之前想知道的,基本都在这里

安装、书源、文件兼容与数据位置的疑问。

这是 Gatekeeper 对未公证应用的拦截,不是文件损坏。确认安装包来自官方 Releases 后,在终端执行:

xattr -dr com.apple.quarantine /Applications/Bookworm.app

或到「系统设置 → 隐私与安全性」点「仍要打开」。

Bookworm 本身不带书源。导入一份 Legado(阅读)格式的 JSON 后,书源管理、搜索和阅读才可用。

缺少搜索、目录或正文规则的源会被拒绝;老版 legado 字段会自动映射。导入前的预览会列出新增、冲突和失败数量,按提示补齐规则即可。

每个源记录搜索和正文抓取成功率,低于 30% 会标「建议停用」,失败原因会写在源后面。可以一键停用失效源,或先编辑规则再试。

不支持。带 DRM 的 MOBI/AZW 无法打开,HUFF/CDIC 压缩变体也不支持;扫描时会跳过这些文件。

书库状态在 ~/Library/Application Support/Bookworm/library.json,书源在 Sources/sources.json,正文缓存在 ChapterCache/,悬浮窗状态在 Floating/state.json。本地阅读不联网;只有使用在线书源或翻译时才会请求对应服务。

当前发布包为 Apple Silicon(arm64)。Intel Mac 可从源码构建:clone 后执行 ./scripts/build-app.sh,需要 macOS 15+ 与 Swift 6.0 工具链。

关于作者

一个人写,也会一直维护下去

chao-eng 的头像

chao-eng

github.com/chao-eng/Bookworm

Bookworm 是一个个人开源项目,基于上游 Readpaw 二次开发,从阅读器到官网都由作者维护。

Bookworm 的起点是 Readpaw:一个用 SwiftUI 写的原生阅读器。二次开发之后,书库、在线阅读、悬浮窗和翻译都围绕同一件事展开——把手里的书读完。

技术上怎么做的

  • 漫画用 bsdtar / libarchive 与 PDFKit,电子书用原生 OPF/spine、PalmDB + PalmDOC 和 WKWebView,没有引入第三方阅读器。
  • 唯一的第三方依赖是 Sparkle 2,负责应用内自动更新。
  • 书库、书源、正文缓存和阅读位置都留在本机;所选文件夹以安全作用域书签保存。
  • 在线书源不内置,导入、启停、编辑和导出都在书源管理里完成。

反馈与协作

有问题、有想法或发现 Bug,欢迎到 GitHub 仓库提 Issue。源码、发版记录和 appcast 都放在同一个仓库。

赞赏

Bookworm 以 MIT License 开源,免费使用。如果它确实帮到了你,可以随意赞赏一点,不赞赏也完全不影响使用。