9 个版本
0.3.2 | 2021年12月13日 |
---|---|
0.3.1 | 2021年12月13日 |
0.3.0-alpha.3 | 2021年11月27日 |
0.2.2 | 2021年11月6日 |
0.1.0 | 2021年10月24日 |
#2953 在 命令行工具
每月下载 28 次
145KB
4K SLoC
Clashctl
关于
易于使用的 TUI & CLI,用于与 Clash RESTful API 交互。
屏幕截图
状态面板
代理面板
安装
从 crates.io
# Full function version
$ cargo install clashctl
# Or install the tui-only version
$ cargo install clashctl-tui
从源代码编译
$ git clone https://github.com/George-Miao/clashctl.git
$ cd clashctl
$ cargo install --path ./clashctl # Note that the path here is *NOT* a mistake - It's a submodule with exact same name that contains the bin
入门
首先添加一个 API 服务器
$ clashctl server add
# Follow the prompts
使用不带子命令的命令默认打开 TUI
$ clashctl
# Equals
$ clashctl tui
或使用子命令使用 cli
$ clashctl 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
---------------------------------------------------------
功能
- 美观的终端 UI
- 更改代理
- 显示代理,支持过滤和排序,以纯文本和分组模式显示
- 存储和使用多个服务器
- 生成完成脚本(由 clap_generate 提供)
- 管理多个服务器
完成 & TODO
- Cli
- 管理服务器
- 排序代理
- 更多功能
- TUI
- 状态面板
- 代理面板
- 更新代理
- 测试延迟
- 按 {Original, LatencyAsc, LatencyDsc, NameAsc, NameDsc} 排序
- 规则面板
- 连接面板
- 排序
- 日志面板
- 调试面板
- 配置面板
- 更新 Clash 配置
- 更新 clashctl 配置
- 搜索
- (也许?) 支持鼠标
先决条件
您需要 nightly rust 环境 (Cargo & rustc) 来编译和安装
用法
使用 TUI
- 使用 cli 配置服务器(目前)
- 使用数字在选项卡之间导航
- 空格键保持列表(并因此移动列表)
- 箭头键在保持模式下移动列表
- [^d] 打开调试面板
使用 CLI
$ clashctl -h
clashctl
George Miao <[email protected]>
Cli & Tui used to interact with Clash RESTful API
USAGE:
clashctl [OPTIONS] [SUBCOMMAND]
OPTIONS:
-c, --config-path <CONFIG_PATH> Path of config file. Default to ~/.config/clashctl/config.ron
--config-dir <CONFIG_DIR> Path of config directory. Default to ~/.config/clashctl
-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
作为 crate 使用
# cargo.toml
[dependencies]
clashctl-core = "*" # Don't add `clashctl`, that will be the binary crate. `clashctl-core` contains API stuff.
然后在您的项目中
use clashctl_core::Clash;
fn main() {
let clash = Clash::builder("http://example.com:9090").unwrap().build();
println!("Clash version is {:?}", clash.get_version().unwrap())
}
开发
clashctl
配套一个 justfile
以加快您的开发速度。特别是命令 just dev
,成功在前端开发中重现了热重载功能,使用了 cargo-watch
。
Just
命令
just dev
[ 别名: d
]
热重载开发,在 cargo-check
审核通过更改后自动重载,所有功能都已启用
just run {{ Args }}
[ 别名: r
]
带有功能 cli & ui 运行
just ui
仅运行 UI
just cli
仅运行 CLI
just build
[ 别名: b
]
以功能 cli & ui 的发布模式构建
just add
添加一个可选依赖项,需要 cargo-edit
项目结构
$ tree src -L 2
├── clashctl # Submodule for binary - Both CLI & TUI
├── clashctl-core # Submodule for API interaction
├── clashctl-interactive # Submodule for common dependency of CLI & TUI
├── clashctl-tui # TUI only binary
├── clashctl-workspace-hack # Workspace hack generated by cargo-hakari
└── ...
依赖项
~16–27MB
~437K SLoC