Mihomoctl 是一个易用的 TUI 与 CLI 工具,用于和 Mihomo RESTful API 交互。
当前仓库地址:git@github.com:zouxiaoliang/mihomoctl.git
本项目 fork 自 George-Miao/clashctl。当前版本在原项目基础上改名为 mihomoctl,并补充了 MetaCubeX Mihomo API 文档 中的接口。
接口补充范围包括日志、流量、内存、版本、缓存、运行配置、更新、策略组、代理与代理集合、规则与规则集合、连接、DNS 查询、存储和 DEBUG 等端点。
macOS 和 Linux x86 用户可以在当前仓库的 Releases 页面查找已编译二进制。
原始上游 release 页面仍保留为参考:https://github.com/George-Miao/clashctl/releases。
$ git clone git@github.com:zouxiaoliang/mihomoctl.git
$ cd mihomoctl
$ cargo install --path ./mihomoctl # 这里的路径不是写错了:同名子目录中包含二进制 crate首先添加一个 API 服务器:
$ mihomoctl server add
# 按提示填写配置不带子命令运行时,默认打开 TUI:
$ mihomoctl
# 等同于
$ mihomoctl tui也可以使用子命令进入 CLI 流程:
$ mihomoctl proxy list
---------------------------------------------------------
TYPE DELAY NAME
---------------------------------------------------------
selector - All
URLTest - Auto-All
ShadowsocksR 19 SomeProxy-1
Vmess 177 SomeProxy-2
Vmess 137 SomeProxy-3
Shadowsocks 143 SomeProxy-4
---------------------------------------------------------- 美观的终端界面
- 切换代理
- 展示代理列表,支持过滤与排序,支持普通模式和分组模式
- 保存并使用多个服务器
- 补充支持 MetaCubeX Mihomo API 文档中的接口
- 生成 shell 补全脚本(基于 clap_generate)
- 管理多个服务器
- 项目基础
- 从 George-Miao/clashctl fork 并重命名为
mihomoctl - 更新 crate 名称、二进制名称、配置目录与仓库地址
- README 中文化,并保留原始上游仓库路径
- 从 George-Miao/clashctl fork 并重命名为
- CLI
- 管理服务器:添加、选择、查看、移除
- 列出代理,支持排序、包含/排除类型、反向排序、普通/分组显示
- 交互式切换代理
- 生成 shell 补全脚本
- TUI
- 状态、代理、规则、连接、日志、配置、调试面板
- Core、DNS、APIs 分页调用 Mihomo API
- 代理切换、延迟测试、排序与搜索
- 规则、连接、日志列表搜索
- 连接列表排序
- Mihomo API
- 补充 MetaCubeX Mihomo API 文档 中的 REST 接口
- 支持日志、流量、内存、连接等 WebSocket/流式接口
- 支持 DNS、存储、规则集合、代理集合、DEBUG、核心升级等端点
- 待完善
- 配置面板支持表单化编辑 mihomo 配置
- 配置面板支持表单化编辑 mihomoctl 本地配置
- CLI 覆盖更多 MetaCubeX API 操作
- 为需要真实 Mihomo 服务的集成测试补充环境说明
- 完善 release 工作流与发布产物说明
- 鼠标支持(可能)
编译和安装需要 nightly Rust 环境(Cargo 与 rustc)。
- 首次使用无需先配置服务器:没有活跃服务器时进入 TUI 会自动打开服务器管理列表,按
a即可添加 - 使用数字键在标签页之间切换
- 按空格键锁定列表,之后可以移动列表
- 在锁定模式下使用方向键移动列表
- 在 Proxies 页按
t测试当前组的节点延迟,按Shift-T测试所有节点 - 按
Shift-S打开服务器管理弹窗:方向键选择、回车切换,a添加服务器,d删除选中的服务器(需回车确认,当前活跃服务器不可删除) - 按
Shift-H打开操作指南,查看完整的快捷键说明(方向键滚动,Shift-H或 Esc 关闭) - 按
Ctrl-D打开调试面板
$ mihomoctl -h
mihomoctl
George Miao <gm@miao.dev>
Cli & Tui used to interact with Mihomo RESTful API
USAGE:
mihomoctl [OPTIONS] [SUBCOMMAND]
OPTIONS:
-c, --config-path <CONFIG_PATH> Path of config file. Default to ~/.config/mihomoctl/config.ron
--config-dir <CONFIG_DIR> Path of config directory. Default to ~/.config/mihomoctl
-h, --help Print help information
-t, --timeout <TIMEOUT> Timeout of requests, in ms [default: 2000]
--test-url <TEST_URL> Url for testing proxy endpointes [default: http://
www.gstatic.com/generate_204]
-v, --verbose Verbosity. Default: INFO, -v DEBUG, -vv TRACE
-V, --version Print version information
SUBCOMMANDS:
completion Generate auto-completion scripts
help Print this message or the help of the given subcommand(s)
proxy Interacting with proxies
server Interacting with servers
tui Open TUI
# Cargo.toml
[dependencies]
mihomoctl-core = "*" # 不要添加 `mihomoctl`;它是二进制 crate,`mihomoctl-core` 才包含 API 能力。在项目中使用:
use mihomoctl_core::Clash;
fn main() {
let clash = Clash::builder("http://example.com:9090").unwrap().build();
println!("Mihomo version is {:?}", clash.get_version().unwrap())
}mihomoctl 提供了 justfile 来加速开发。
其中 just dev 使用 cargo-watch 实现了类似前端开发的热重载流程。
Just 命令
热重载开发。启用所有功能,并在 cargo check 通过后自动重新运行。
运行 CLI 与 UI 功能。
仅运行 UI。
仅运行 CLI。
以 release 模式构建 CLI 与 UI 功能。
预留命令。
$ tree -L 2
├── mihomoctl # 二进制 crate,包含 CLI 与 TUI
├── mihomoctl-core # API 交互 crate
└── ...