A lightweight TUI to scan, search, and manage local git repositories
Project description
Blink
轻量级终端 TUI 工具,用于扫描、搜索和管理本地 git 仓库。
功能
- 自动发现配置目录下的所有 git 仓库
- 两行式列表展示:项目名 + 标签,路径(灰色)
- 置顶常用项目(★ 标记),置顶项目始终排在前面
- 按查看次数自动排序,常用项目靠前
- 按名称、别名、路径、描述、远程 URL 或标签实时搜索
- 别名编辑、标签管理(添加 / 按序号移除)
- 详情面板查看仓库完整信息并执行操作
- 一键用首选 IDE / 系统默认方式打开仓库
- 复制仓库路径到剪贴板
- 后台重新扫描,无需退出 TUI
安装
pip install blink-repo
使用
blink # 启动 TUI
blink --rescan # 强制重新扫描后启动
首次运行
首次启动时,Blink 会扫描主目录下的 git 仓库并在终端显示进度。扫描完成后自动打开 TUI,展示所有已发现的仓库。
后续启动会直接使用缓存数据打开 TUI,同时自动清理磁盘上已不存在的失效条目。
列表视图快捷键
列表视图下,裸按键不触发任何操作,所有破坏性操作需要 Shift 前缀。j/k 已移除,不再作为导航键。
| 按键 | 功能 | 需要Shift |
|---|---|---|
↑ / ↓ |
向上/向下移动 | ✗ |
Enter |
查看仓库详情 | ✗ |
/ |
进入搜索 | ✗ |
Shift+I |
用 IDE 打开 | ✓ |
Shift+O |
用系统默认方式打开(Finder) | ✓ |
Shift+P |
复制仓库路径到剪贴板 | ✓ |
Shift+R |
重新扫描文件系统 | ✓ |
Ctrl+C ×2 |
退出程序(2 秒内按两次,超时需重新双击) | ✗ |
详情面板
按 Enter 进入详情面板,显示 Open with IDE、Open with Finder、Add Todo Loop Task、名称、路径、Git 地址、置顶状态、别名、标签、描述等 10 行,按功能分三区:操作区(Open with IDE/Open with Finder/Add Todo Loop Task)→ 信息区(Name/Path/Git)→ 配置区(Pinned/Alias/Tags/Desc)。↑/↓ 切换选中行(高亮背景 #264f78),按 Enter 执行当前行操作:Open with IDE 行用首选 IDE 打开(首次使用时在状态栏横向弹出选择:←/→ 选择 IDE,Enter 确认,选择会保存到配置文件),Open with Finder 行执行打开,Add Todo Loop Task 行执行 tloop edit(未安装时状态栏提示"未安装 tloop"),Name/Path 行复制内容并在状态栏提示,Git 行将 SSH 协议地址转换为 HTTPS 地址并在浏览器打开,Pinned 行切换置顶状态(状态栏提示"已置顶"/"已取消置顶"),Alias/Tags/Description 行进入编辑态。编辑态下 ↑/↓ 被屏蔽,Enter 保存,Esc/Ctrl+C 取消,支持中文等非 ASCII 输入,编辑时面板底部渲染编辑输入行并显示光标。详情面板无 footer 快捷键栏。按 Ctrl+C 或 Esc 返回列表。进入详情视图时自动累计查看次数,影响列表排序。
搜索
默认状态下搜索区域完全隐藏。按 / 展开带亮色边框的搜索输入框,输入内容即可实时过滤仓库。搜索范围涵盖名称、别名、描述、路径、远程 URL 和标签,大小写不敏感。
- 按
Enter或↓隐藏输入框,保留过滤结果(顶部显示当前关键词) - 按
Esc或Ctrl+C清空搜索,恢复全部仓库 - 过滤状态下再按
/清空搜索内容并恢复输入框,重新输入 - 搜索输入态下,所有其他快捷键被屏蔽
退出程序
- 按
q无任何效果 Esc仅用于取消操作(退出搜索、返回列表),不会退出程序- 连续按两次
Ctrl+C(2 秒窗口)退出程序。第一次会在状态栏显示提示,提示显示后 2 秒内再按一次才能退出,超时则需重新双击
配置
首次运行时,Blink 会在 ~/.blink/config.json 创建默认配置:
{
"scan_paths": ["~"],
"exclude_dirs": [".Trash", ".cache", ".npm", ".docker", ".vscode", "Library", "Applications", "node_modules", "__pycache__"],
"editor": "code",
"preferred_ide": null,
"auto_sync_days": 0
}
| 字段 | 说明 |
|---|---|
scan_paths |
扫描 git 仓库的根目录列表 |
exclude_dirs |
扫描时跳过的目录名 |
editor |
默认编辑器命令 |
preferred_ide |
首选 IDE("v" VSCode / "u" Cursor / "a" Antigravity),首次使用 Shift+I 时自动设置 |
auto_sync_days |
自动重新扫描间隔天数(0 为禁用) |
所有数据存储在 ~/.blink/ 目录下:
config.json— 用户配置blink.db— SQLite 数据库,存储仓库和远程信息
开发
环境要求
初始化
git clone <repo-url> blink && cd blink
uv sync
运行
uv run blink # 启动 TUI
uv run blink --rescan # 强制重新扫描
测试
uv run pytest
调试
在源码任意位置插入 breakpoint(),然后执行 uv run blink,程序会在断点处暂停并进入 pdb 交互调试。
发布
uv build # 构建分发包
uv publish # 发布到 PyPI
许可证
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file blink_repo-0.3.2.tar.gz.
File metadata
- Download URL: blink_repo-0.3.2.tar.gz
- Upload date:
- Size: 28.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.12 {"installer":{"name":"uv","version":"0.11.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8b0fd2566e83d4785347dd21cb68015bd723424930f4735329b88b34ca4f2058
|
|
| MD5 |
14293297fd589c8e30536aa6d353c57d
|
|
| BLAKE2b-256 |
5bc8c9d1e9e3bb424b99e42282ca5c634aca83f66aa77dc443d9f67a1b5b3fb2
|
File details
Details for the file blink_repo-0.3.2-py3-none-any.whl.
File metadata
- Download URL: blink_repo-0.3.2-py3-none-any.whl
- Upload date:
- Size: 23.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.12 {"installer":{"name":"uv","version":"0.11.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0472b119dc17b8dc12304fc05797341327ef436282abcf4d086ce921be6e099e
|
|
| MD5 |
c4120c21928bb4a1dcc679804f783bda
|
|
| BLAKE2b-256 |
3432e38016c96b2b4f83dcebc861d7b69b3f6157e11a3cbffb6217e63d8617fd
|