Help us shape the future of Go! Take the 2026 Go Developer Survey

ReadCLI

module
v0.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 9, 2026 License: Apache-2.0

README

ReadCLI

中文说明 | English

Release CI License

ReadCLI 是一个终端阅读器,支持本地 TXT / EPUB 和基于 Legado 书源的在线阅读,带书架、书源管理、登录、进度保存、书签、搜索,以及几套偏 IDE 风格的界面。基于 tcell 和 tview 构建,支持 macOS、Linux 和 Windows。

页面展示

书架首页

书架首页

阅读界面

阅读界面

目录导航

目录导航

书签列表

书签列表

搜索输入

搜索输入

导入界面

导入界面

功能

阅读
  • 支持 TXT
  • 支持 EPUB
  • 自动恢复上次阅读位置
  • 支持章节目录、上一章 / 下一章跳转
  • 支持本地全文搜索;在线阅读搜索当前章节,n / N 跳转结果
  • 支持当前页搜索结果高亮
  • 支持书签保存、查看、删除、跳转
  • 支持按页滚动和自定义每页显示行数
  • 支持全信息阅读界面和精简阅读界面切换,精简模式只保留正文、章节和进度信息
  • 支持自定义正文宽度、上下左右边距、顶部留白、行间距、字体颜色、高对比、基础色模式和自动翻页间隔
  • 支持按终端宽度和中文字符显示宽度自适应折行
  • 支持阅读器缓存,并会根据文件大小和修改时间自动失效,避免文件更新后读到旧内容
  • 跨平台支持:macOS、Linux、Windows Terminal
书架
  • 无参数启动进入书架首页
  • 支持单本导入和目录批量导入
  • 目录导入默认只扫描当前层,可切换为递归导入
  • 记录每本书的格式、章节、进度和最近阅读时间
  • 支持按最近阅读、导入时间、书名排序
  • 支持按格式和阅读状态过滤
  • 支持仅移出书架,或连本地文件一起删除
  • 书架主列表聚焦书名,右侧详情块展示格式、状态、进度、章节和最近阅读时间
界面和交互
  • 支持 vscode、jetbrains、ops-console 三套主题
  • 书架、阅读、目录、书签都有独立状态栏和操作提示
  • 阅读界面支持 z 在全信息 / 精简模式之间切换,并会保存到配置
  • 导入路径支持光标移动、Tab 补全、候选选择和分页显示
  • 支持把文件或目录直接拖到导入输入框里自动识别路径
  • 同时兼容 Vim 键位和普通方向键
  • 启动时会自动检查 GitHub Releases 更新,并显示当前版本号
  • 支持手动检查更新、查看更新说明并热更新,下载时显示进度、大小和安装阶段,更新后退出重启生效
  • 支持 Boss Key、自定义老板键命令和自动翻页
  • 退出时会统一持久化书架位置、阅读样式和最近阅读状态

终端兼容

ReadCLI 基于 tcell v2 构建,原生支持 Unicode 边框和 CJK 字符宽度,跨平台兼容性良好。

macOS
  • iTerm2
  • Terminal.app
  • WezTerm
  • Alacritty
  • Kitty
Linux
  • gnome-terminal
  • kitty
  • wezterm
  • alacritty
  • xterm
  • tmux / screen
Windows
  • Windows Terminal
  • PowerShell 7+(终端宿主)

需要注意的地方主要是两类:

  • 颜色显示能力取决于终端是否支持 256 色 或更高色彩模式
  • 拖入文件或目录到输入框,取决于终端模拟器本身是否支持拖拽路径

如果某些 Linux 终端里自定义颜色发灰、偏色或不够清楚,可以在 config.json 里打开基础色模式:

{
  "force_basic_color": true
}

开启后会强制退回 ANSI 基础色,牺牲一点颜色精度,换取更稳的跨终端显示效果。

Fork 说明

这个仓库基于原项目 TimothyYe/glance 修改而来。

这个分支保留了原项目的许可证和基础思路,并继续维护到现在这版功能。

如果你想使用原项目,可以前往: https://github.com/TimothyYe/glance

下载与安装

预编译包:

dev 分支的自动测试包标记为 Pre-release,稳定版保持 Latest。开发版需在 Releases 手动下载,应用内更新只获取稳定版。构建触发方式和说明文件见发布指南。

当前已提供:

  • macOS arm64
  • macOS amd64
  • Linux amd64
  • Windows amd64

从源码构建:

git clone https://github.com/lvshp/ReadCLI.git
cd ReadCLI
go build -o readcli ./cmd

需要 Go 1.24+

交叉编译 Windows 版本:

GOOS=windows GOARCH=amd64 go build -o readcli.exe ./cmd

如果二进制已经在 PATH 里,直接运行:

readcli

如果想全局使用 readcli,可以把二进制放到 ~/.local/bin,并确保它在 PATH 里:

mkdir -p ~/.local/bin
cp ./readcli ~/.local/bin/readcli
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

然后验证:

command -v readcli

正常情况下会输出类似:

/Users/your-name/.local/bin/readcli

或者直接打开一本书:

readcli /path/to/book.epub
readcli /path/to/book.txt

快速开始

1. 打开书架
readcli

进入书架后可以用 i 导入本地书籍,用 ↑/↓ 或 j/k 选择,用 → 或 Enter 打开。

2. 直接打开一本书
readcli -n 8 /path/to/book.epub

会自动把书加入书架,按上次位置恢复阅读,并用每页 8 行显示正文。

3. 导入文件

导入界面支持路径补全、候选选择、拖入文件或目录,以及 Ctrl-r 切换当前层导入 / 递归导入。

4. 调整阅读样式

阅读时按 , 可以打开阅读设置,直接修改:

  • 正文宽度
  • 上下左右边距
  • 行间距
  • 字体颜色
  • 高对比模式
  • 基础色模式
  • 自动翻页间隔

按 c 可以快速切换一组亮色预设。 按 t 可以开关自动翻页。 按 z 可以在全信息阅读界面和精简阅读界面之间切换;精简模式会隐藏头部、侧栏和大部分提示,只保留小说正文、章节名称和阅读进度。

5. 检查更新

启动后会自动检查新版本。检测到更新时,会弹出更新说明和确认界面。

如果自动弹窗里选择这次不更新,这个版本以后启动时不会再自动提醒;如果之后想手动更新,可以随时按 u 重新检查。

确认更新后,程序会下载对应平台的发布包并替换当前二进制。更新过程中会显示下载百分比、进度条、已下载大小和安装阶段。更新完成后退出,再重新启动即可生效。

Windows 会先将完整的新程序暂存到安装目录,显示“更新文件已准备”后,按 Enter 退出,由更新助手完成替换,再重新启动。安装在 Program Files 等受保护目录时会请求管理员授权;取消授权则保留旧程序。更新失败时可滚动查看完整原因和保留文件的位置。0.3.5/0.3.6 的旧更新器如遇目录权限或跨盘问题,需要先退出程序,手动覆盖一次带修复的版本。

6. 配置 Boss Key

默认情况下,按 b 会切到内置的伪装页面。

如果你想按老板键时直接运行一条外部命令,在 config.json 里设置 boss_key_command:

{
  "boss_key_command": "genact"
}

也可以写成带参数的完整命令。

macOS / Linux 示例:

{
  "boss_key_command": "/usr/local/bin/genact -m terraform"
}

Windows 示例:

{
  "boss_key_command": "genact.exe"
}

配置后,按 b 会临时退出 ReadCLI 的界面,在当前终端里执行这条命令;退出该命令后,会自动回到 ReadCLI。

注意:执行命令的前提是你本地已经安装并可运行此命令。

推荐安装:svenstaro/genact

键位说明

按 ? 可以打开内置帮助页。支持 Vim 风格键位和方向键。

书架首页
  • Vim 风格:j/k 移动,Enter 打开,C 更换在线书源,i 导入,o/r 排序过滤,x 移除,u 检查更新
  • 普通键位:↑/↓ 移动,→ 或 Enter 打开,u 检查更新
阅读界面
  • Vim 风格:j/k 翻页,[ / ] 切章,/ 搜索,n/N 跳转结果,s/B 书签,m 目录,C 更换在线书源,c 切换颜色,z 精简/全信息,u 检查更新
  • 普通键位:↑/↓ 翻页,←/→ 切章,z 精简/全信息,u 检查更新
  • 阅读设置:按 , 打开设置面板,可调整正文对齐、正文宽度、边距、行间距、字体颜色、高对比、基础色模式和自动翻页间隔
目录 / 书签
  • 目录支持数字跳章,目录标题已改成中文显示,不再显示左侧序号
  • Vim 风格:j/k 移动,Enter 打开
  • 普通键位:↑/↓ 移动,→ 或 Enter 打开,← 返回
通用操作
  • + / - 调整每页显示行数
  • a 在阅读界面循环切换正文区域:居中 → 居左 → 居右,立即生效并保存
  • c 快速切换正文颜色
  • T 切换主题
  • z 切换精简 / 全信息阅读界面
  • u 手动检查更新
  • p 查看阅读进度
  • b 触发 Boss Key
  • f 显示或隐藏边框
  • q 返回书架或退出程序

书源与在线阅读

书架按 S 管理 Legado 书源,按 s 在线搜索。支持本地 JSON 或链接导入、书源启停、登录、搜索分页、在线目录和按章阅读缓存。管理页按 L 登录、X 退出登录。

书源由用户自行准备,ReadCLI 不内置、提供或推荐书源。

管理大量书源时,按 f 实时筛选,g 查看分组和合集,v 多选、b 批量操作,* 收藏、h 手动检查、u 撤销最近一次管理操作。导入先预览,新书源默认停用,可按 e 调整;重复导入保留原有启停、收藏和标签。按 s 可选择收藏、筛选结果、已选或全部书源范围进行搜索。

多书源搜索最多并发请求 4 个源,结果随各书源完成即时追加,并显示完成和失败数量。搜索中可以浏览已有结果、按 Enter 开始阅读;按 Esc 取消剩余搜索并保留结果。翻页、重搜或打开书籍会取消上一轮搜索。

书架选中在线书籍或在线阅读时按大写 C 换源。候选列表显示书源、作者及最新章节,Enter 预览章节匹配与章内进度,再按 Enter 确认替换。确认前保留原书;确认后迁移进度及匹配书签,未匹配书签保留,可能需要回原源查看。

大写 P 管理在线阅读的净化替换规则,i 导入 Legado 规则 JSON,r 重读配置。导入规则分别保存于 replace_rules/imports/,本地编辑使用 replace_rules/main.json;修改后返回阅读即可重新应用,原始缓存保留。在线正文和旧缓存中的 HTML 段落标签会自动转换为阅读文本。

详细操作和规则兼容范围见 书源与在线阅读。

数据保存位置

本地数据默认保存在:

  • macOS / Linux:~/.readcli/
  • Windows:%USERPROFILE%\.readcli\(通常为 C:\Users\<用户名>\.readcli\)

也可以通过环境变量 READCLI_DATA_DIR 指定自定义路径。

目录里会有:

  • config.json
  • bookshelf.json
  • bookmarks.json
  • progress.json
  • book_sources.json:完整书源定义和启用状态
  • sessions.json:书源登录会话和脚本变量
  • online_cache/:在线书籍目录和已读取章节
  • replace_rules/:本地主配置 main.json 与分开存放的导入净化规则

备份时先正常退出,再复制整个数据目录;恢复时关闭程序,用备份内容替换该目录,重新启动即可自动加载书源、设置和阅读数据,无需重新导入书源。本地 TXT / EPUB 原文件仍需单独备份。详见 整目录备份与恢复。

其中 config.json 里会保存阅读样式相关设置,例如:

  • 正文宽度比例
  • 上下左右边距
  • 老板键自定义命令
  • 行间距
  • 自动翻页间隔(毫秒)
  • 字体颜色(支持 #RRGGBB、#RGB、R,G,B)
  • reading_alignment:正文区域对齐,可设为 "center"(居中)、"left"(居左)、"right"(居右)
  • compact_mode:是否使用精简阅读界面
  • reading_high_contrast:控制正文和侧栏的高对比显示
  • force_basic_color:强制使用基础 ANSI 颜色,适合颜色支持较弱的终端

例如,在 config.json 中加入 "reading_alignment": "right",下次启动后正文区域将居右。也可以按 , 打开阅读设置,选择“正文对齐”,用 ←/→ 或 Enter 切换。精简和全信息模式共用此设置,切换不会改变正文换行或阅读进度。对齐移动的是整块正文区域,段落缩进保持不变;左右边距作为对齐时的留白。若要贴最左侧显示,可设置 "reading_alignment": "left" 和 "reading_margin_left": 0。

未配置该字段、留空或填写无效值时,沿用原布局:精简模式居中,全信息模式居左。

开发和贡献

欢迎提 issue 和 PR。

相关文档:

友链

协议

项目继续遵循 Apache License 2.0。

Directories

Path Synopsis
Package booksource implements a Go reader for Legado-compatible source definitions.
Package booksource implements a Go reader for Legado-compatible source definitions.
Package purification applies Legado-compatible reading replacement rules.
Package purification applies Legado-compatible reading replacement rules.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL