Metadata-Version: 2.4
Name: xdtui
Version: 0.1.42
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Rust
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Requires-Dist: betterproto2[all]>=0.2.1
Requires-Dist: cachetools>=7.1.7
Requires-Dist: orjson>=3.11.9
Requires-Dist: pillow>=12.3.0
Requires-Dist: pyzbar>=0.1.9
Requires-Dist: rich>=15.0.0
Requires-Dist: textual>=8.2.7
Requires-Dist: textual-autocomplete>=4.0.6
Requires-Dist: textual-fspicker>=1.0.1
Requires-Dist: textual-image>=0.13.2
Requires-Dist: textual-slider>=0.2.0
License-File: LICENSE
Summary: X岛匿名版的终端 TUI 客户端，基于 Rust 核心与 Python Textual 界面。
License-Expression: MIT
Requires-Python: >=3.12
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM

# xdtui

X岛匿名版（xdnmb）的终端（TUI）客户端。基于 **Rust 核心 + Python Textual 界面** 的混合架构：Rust 核心负责网络请求、缓存、全文检索与本地数据库，Python 端提供终端交互界面，二者在本机通过 gRPC 通信。

## 功能特性

- 浏览版块 / 时间线，翻页、跳页与按 ID 跳串，查看最新回复
- 串详情阅读：只看 Po、回复、引用跳转、引用列表、防剧透黑幕
- 发新串 / 回复 / 举报，多饼干（Cookie）切换与颜文字快捷插入
- 订阅（Feed）列表与「我的发言」本地记录
- 星标串（Favorites，支持备注，主要是清理豁免）
- 屏蔽串（折叠不想看的串，支持备注）
- 「Tips 酱」语录收集
- 本地全文检索（Tantivy + 仓颉分词，支持自定义分词列表）
- 本地离线缓存（内存 + SQLite 分层存储）
- 图片浏览（缩略图 / 原图查看器）
- 浏览历史（本地记录看过的串）
- 版规查看、存储管理（DB/索引统计、缓存清理、Tips 管理）与设置面板
- 多种主题、动态配色
- 核心服务崩溃自动重启
- 极简模式（隐藏多余 UI）

## 安装与更新

需要 **Python 3.12+**。

### 推荐方式（uv）

推荐使用 [uv](https://docs.astral.sh/uv) 进行隔离全局安装，兼顾依赖隔离与全局命令调用的便利：

```powershell
# 安装
uv tool install xdtui

# 更新
uv tool upgrade xdtui

# 卸载
uv tool uninstall xdtui
```

### 传统方式（pip）

```powershell
# 安装
pip install xdtui

# 更新
pip install -U xdtui

# 卸载
pip uninstall xdtui
```

安装后直接在终端运行：

```powershell
xdtui
```

### 系统依赖

支持平台：**Windows、Linux（x86_64 / aarch64）**。

- **Windows**：开箱即用，二维码解码库（zbar）已随包附带，无需额外安装。
- **Linux**：需系统提供 zbar 库，否则扫码功能会报错：
  - Debian/Ubuntu：`sudo apt install libzbar0`
  - Fedora：`sudo dnf install zbar`

## 键盘快捷键

### 全局

| 按键 | 功能 |
| --- | --- |
| `ctrl+q` / `q` | 退出 |
| `z` | 极简模式（隐藏多余 UI） |

### 主界面（版块 / 串列表）

| 按键 | 功能 |
| --- | --- |
| `j` / `↓` | 下一项 |
| `k` / `↑` | 上一项 |
| `h` / `←` | 上一页 |
| `l` / `→` | 下一页 |
| `space` | 首页（回到第 1 页并刷新） |
| `enter` | 打开当前串 / 版块 |
| `s` | 跳页 |
| `r` | 刷新本页 |
| `b` | 版块侧栏 |
| `/` | 搜索 |
| `n` | 发新串 |
| `m` | 发言 |
| `f` | 订阅 |
| `B` | 展开/折叠屏蔽 |
| `alt+h` | 浏览历史 |
| `alt+t` | 跳串（按 ID） |
| `alt+g` | 版规 |
| `alt+r` | 引用列表 |
| `t` | 看图（仅含图卡片可用；无图模式或配置缺失时禁用） |

版块侧栏内：`↑/↓`（或 `k/j`）移动焦点，`←/→`（或 `h/l`）展开/折叠组节点（在版块或时间线叶子节点上按 `Enter` / `→` / `l` 均可直接加载该版块）；`r` 重新加载侧栏、`e` 全部展开/折叠、`esc` 返回列表。

### 串详情界面

| 按键 | 功能 |
| --- | --- |
| `esc` | 返回 |
| `o` | 只看 Po |
| `p` | 回复 |
| `P` | 引用回复 |
| `f` | 订阅 |
| `S` | 星标 |
| `B` | 屏蔽 |
| `R` | 举报 |
| `t` | 看图（仅含图楼层可用；无图模式或配置缺失时禁用） |

### 发串 / 回复 / 举报 弹窗

| 按键 | 功能 |
| --- | --- |
| `esc` | 取消 |
| `ctrl+g` | 快捷插入（颜文字） |
| `ctrl+enter` | 快捷回复 |

### 模态窗口 / 确认弹窗

所有带明确确认/取消或关闭按钮的模态窗口（如二次确认、跳页、岛公告、选择饼干、选择订阅 UUID、版规、帮助、关于等）：

| 按键 | 功能 |
| --- | --- |
| `y` | 快捷确认 / 同意 / 知道了 |
| `n` | 快捷取消 / 拒绝 / 关闭 |
| `esc` | 取消 / 关闭 |

*注：含有文本输入框的弹窗（如发串/回复、搜索输入框、星标备注）在焦点处于输入框时优先响应文本输入，不影响字符输入。*

### 引用弹窗

在串详情中点击某条引用（或按 `alt+r` 打开引用列表后选中某条）弹出的引用查看窗口。此外，串详情中每条「最新回复」的单行文本也可直接点击，以同样方式弹出该条回复的完整图文（零延迟本地渲染）。

| 按键 | 功能 |
| --- | --- |
| `g` | 跳转到被引用的原串 |
| `esc` | 关闭 |

### 历史界面

| 按键 | 功能 |
| --- | --- |
| `c` | 清空浏览历史 |
| `esc` | 返回 |

### 搜索

| 按键 | 功能 |
| --- | --- |
| `enter` / `ctrl+s` | 搜索 |
| `esc` | 关闭 |

### 其他界面与鼠标快捷操作

- **ESC 返回**：订阅、历史、我的发言、设置、存储管理、图片查看以及各类模态弹窗均支持按 `esc` 返回 / 关闭。
- **全屏中键快捷返回**：在系统设置中开启「中键返回」（默认开启）后，在所有支持 `esc` 返回的界面及弹窗中，**在全屏任意位置点击鼠标中键（滚轮按下）均等价于按 `esc`**；在各类 `y/n` 确认弹窗中中键等价于「取消」。
- **主界面中键表现**：在无 `esc` 返回的主界面中，鼠标中键保持原始行为（与左键/右键一致；若已聚焦版块树时中键等价于按 `esc` 聚焦回串列表）。
- **空白处关闭**：模态窗口（除发串编辑器外）均支持点击遮罩空白处直接关闭。

## 数据与日志位置

应用数据（配置 `config.toml`、本地数据库 `data.db`、全文检索索引）统一存放在：

- Windows：`%APPDATA%\xdtui\xdtui\config\`
- Linux：`~/.config/xdtui`

运行日志 `app.log` 位于数据目录下的 `cache/` 子目录：

- Windows：`%APPDATA%\xdtui\xdtui\config\cache\app.log`
- Linux：`~/.config/xdtui/cache/app.log`

## 许可证

本项目以 **MIT 许可证** 发布。

