Gheat1/ltui
GitHub: Gheat1/ltui
一个快速且美观的 Linear 终端客户端,通过本地缓存实现即时启动并支持完整的工单读写操作。
Stars: 34 | Forks: 1
# ◐ ltui
**一个快得离谱、且真正美观的 [Linear](https://linear.app) TUI。**
你的整个工作区,按照实际进行分类的方式来分组 —
`In Review` 在顶部,`Done` 在底部,你的工单优先显示。
[](https://www.python.org)
[](https://github.com/Textualize/textual)
[](LICENSE)
[](https://developers.linear.app)
本 README 中的所有屏幕截图均由
## 为什么还要另一个 Linear TUI?
因为我尝试过的每一个 Linear TUI 都有两个同样的问题:**慢**和**丑**。
速度慢甚至不是它们的错 — Linear 的 GraphQL API 需要 2–5 秒
才能返回一个规模可观的团队数据。大多数 TUI 只是让你在每次
启动时都默默忍受这种等待。ltui 不会:
- 📦 **即时启动** — 你上次查看的 issue 会从本地缓存中在
~50ms 内渲染出来,同时新数据在后台加载。在 API
还没来得及“打招呼”之前,你就可以开始滚动了。
- 🎨 **真正美观** — 圆角边框,五种主题,
Linear 自带的状态颜色,nerd font 图标,像真实应用一样的优先级条,
以及面板和模态框上细腻的淡入淡出动画。
- ⌨️ **键盘优先,欢迎鼠标** — 到处都是 vim 按键,但所有
东西也都可以点击:工单、团队,甚至是提示栏。面板分隔线
**可拖拽调整大小**(双击重置),并且你的布局会保持不变。
## 功能
| | |
| --- | ----------------------------------------------------------------------------------- |
| 🗂️ | **智能分组** — `In Review` → `In Progress` → `Todo` → `Backlog` → `Done` — 根据工作距离交付的远近排序,每组内最新的工单排在前面 |
| 👤 | **我的优先** — 你的工单会浮到每组的顶部;按 `m` 键可以完全隐藏其他所有人的工单 |
| 🌿 | **`y` 复制 git 分支** — 将 Linear 生成的分支名直接复制到剪贴板(或者是 URL / 标识符);几秒钟内完成从工单到 `git checkout -b` 的操作 |
| 👥 | **无需离开即可指派** — `a` 重新指派给团队中的任何人、你自己,或者取消指派 |
| 🌳 | **感知层级** — 详情面板会显示父工单和带有已完成计数的所有子 issue,旁边是受阻塞/阻塞的关系 |
| 🔄 | **永不失效** — 看板每 3 分钟静默重新同步一次 |
| 📖 | **丰富的详情面板** — 完整的 Markdown 描述(代码块、清单、引用),标签、评论 — 支持使用方向键、vim 按键或鼠标滚轮滚动 |
| ✏️ | **不只是阅读,还能编写** — 无需离开终端即可创建工单、更改状态和优先级、添加评论 |
| 🚧 | **一目了然的阻塞与被阻塞** — 被阻塞的工单上会有红色的徽章,阻塞其他工单的会有橙色的徽章;详情面板会显示具体的工单名称 |
| 🔍 | **即时过滤** — 输入时按 `/` 即可根据标题、标识符或指派人进行模糊过滤 |
| 🌚 | **五种主题** — `mocha`,纯黑 `void`,单色 `onyx`,`clear`(无背景 — 你可以透出终端的透明度/模糊效果),以及 `system`(使用你终端自身的 ANSI 调色板绘制:你的 kitty 主题*就是* ltui 的主题)— 按 `t` 循环切换 |
| ⚙️ | **个人资料与设置** — 左下角显示你是谁,按 `,` 打开设置面板,包含实时的主题预览、偏好设置和缓存控制 |
| 🧠 | **记住一切** — 上次的团队、主题、过滤器在不同会话间保持不变 |
| 🔌 | **零配置** — 复用你的 [linear-cli](https://github.com/Finesssee/linear-cli) API 密钥,或者设置 `LINEAR_API_KEY` |
## 安装
可以在任何 linux · macOS · windows 上运行,直接从本仓库获取。
获取 [uv](https://docs.astral.sh/uv/) 或 [pipx](https://pipx.pypa.io) 然后:
```
uv tool install git+https://github.com/Gheat1/ltui
# 或
pipx install git+https://github.com/Gheat1/ltui
```
或者从源码自行构建:
```
git clone https://github.com/Gheat1/ltui && cd ltui
pip install .
```
无论哪种方式,你现在都有了以下命令:
```
ltui
```
以后升级:`uv tool upgrade ltui-linear` / `pipx reinstall ltui-linear`
(*包*名为 `ltui-linear`;命令为 `ltui`)。
本 README 中的所有屏幕截图均由
tools/screenshots.py 基于模拟演示数据生成 — 没有任何真实的工单受到伤害
平台说明
- **linux** — 任何不是 1985 年出产的终端都可以工作:kitty, alacritty, ghostty, wezterm, foot… - **macOS** — 如果你没有安装,请先执行 `brew install pipx`。推荐使用 iTerm2, ghostty, kitty 或 WezTerm,而不是自带的 Terminal.app。 - **windows** — Python 3.11+ (`winget install Python.Python.3.12`),然后安装 pipx。 在 **Windows Terminal** 中运行 — 传统的 conhost 无法展现它的魅力。 - 所有平台:需要 **python ≥ 3.11**。
每个团队只显示约 250 个 issue?
ltui 会获取每个团队中最近更新的 250 个 issue。对于分类处理来说,这实际上 涵盖了所有活跃的内容;古老的 `Done` 工单会从底部掉出, 这也是它们应该在的地方。为什么屏幕截图看起来很假?
因为它们确实是假的!它们是由tools/screenshots.py 通过
模拟 API 生成的 — 假的组织,假的工单,假的人员。你自己运行试试吧;它永远不会
触碰网络。
有些图标显示为方框
安装一个 nerd font 并将其设置为你的 终端字体。其他所有内容都能优雅降级显示。它支持多个工作区吗?
它一次只使用一个 API 密钥(linear-cli 的“当前”工作区,或者LINEAR_API_KEY)。像你使用 linear-cli 切换工作区那样去切换即可。
标签:CLI, Linear, Linux 内核安全, Python, SOC Prime, Textual, TUI, WiFi技术, 开发工具, 无后门, 生产力工具, 逆向工具, 项目管理