分享一个新的 clash 客户端 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
gydi
V2EX    分享创造

分享一个新的 clash 客户端

  gydi
zzzgydi 2022-03-04 22:49:05 +08:00 61512 次点击
这是一个创建于 1316 天前的主题,其中的信息可能已经有所发展或是发生改变。

Clash Verge ,是基于 tauri 框架开发的开源跨平台 clash 客户端,目前仅良好支持 Windows 和 macos ( Linux 没测过)。部分 ui 和交互设计参考了 cfw ,clashX ,clash-dashboard 等。目前的完成程度已经基本满足自用了,所以分享给大家,希望可以收获一点建议或意见。如果感兴趣的话,欢迎 issue 、PR 或 star 呀!

项目地址: https://github.com/zzzgydi/clash-verge

如果有想尝试使用的话,可以在 https://github.com/zzzgydi/clash-verge/releases 下载最新的安装包。

开发初衷

clash 核心提供了较为完备的接口,让人看了难免有一种,做个套壳 GUI 我上我也行的错觉。正好那会儿闲着没事,想写一写 Rust 练一练手,于是就找了一个 Rust 的 GUI 框架开始干。

由于还没研究透这个 clash 的玩法和配置,所以目前在功能上相较于其他客户端来说可能会缺失,这个需要时间慢慢补。下面简单罗列一些特性和不足吧。

Features

  • 安装包体积小,更安全( tauri 相较于 electron 的优点)
  • 系统代理守卫:就是隔一段时间去重设系统代理,避免被修改
  • 支持暗黑模式(好像大家都有),Windows 里有模糊背景效果(后续会增加自定义主题色)
  • 增强 Profiles 功能:类似 cfw 中对配置文件的简单处理和 mixin 处理(这个功能还在开发中,预计这周能搞定)

不足的地方

  • tun 模式支持不够好,因为需要管理员权限执行程序才能开启,cfw 好像是通过服务启动的(有待研究)
  • providers 的查看界面还没设计
  • Connections 页面还没有做
  • macos 的系统托盘缺少 clashX 那种实时流量展示

部分截图

截图 1

截图 2


其实不足的地方还是有挺多的,还有一些诸如多语言支持、pac 支持等 features 也躺在 todo list 里很久了。如果有做设计或交互的朋友觉得哪里不好,也可以指点一二的,毕竟琢磨 ui 还是挺头疼的。

感谢大家,如果有感兴趣的话,欢迎下载使用或 PR 呀!

162 条回复    2023-12-23 22:41:00 +08:00
1  2  
tcpdump
    1
tcpdump  
   2022-03-04 22:53:52 +08:00
占个楼,楼主和我一样优秀

------------

开玩笑,谢谢分享
ponypony
    2
ponypony  
   2022-03-04 23:07:29 +08:00
哇哦,下载下来试试,谢谢分享
KMpAn8Obw1QhPoEP
    3
KMpAn8Obw1QhPoEP  
   2022-03-04 23:10:07 +08:00 via Android
好家伙
NLL
    4
NLL  
   2022-03-04 23:17:35 +08:00
没有绿色版么?
gydi
    5
gydi  
OP
   2022-03-04 23:37:21 +08:00
@zhijiansha #4 啥叫绿色版呀
Cielsky
    6
Cielsky  
   2022-03-04 23:59:34 +08:00 via Android
@gydi 就是不安装,数据目录默认在可执行文件的文件夹下
chotow
    7
chotow  
   2022-03-05 00:00:01 +08:00 via iPhone   8
好家伙,近视了的小猫咪
Cielsky
    8
Cielsky  
   2022-03-05 00:08:16 +08:00 via Android   1
可以加个订阅转换,比如 v2ray 的格式转成 clash 的,省的再打开网页转了
gydi
    9
gydi  
OP
   2022-03-05 00:18:20 +08:00
@Cielsky #6 这个需要研究一下怎么打包成一个解压文件,这样应该就可以了
gydi
    10
gydi  
OP
   2022-03-05 00:20:13 +08:00
@Cielsky #8 这个可以考虑考虑的
Cavolo
    11
Cavolo  
   2022-03-05 00:32:02 +08:00 via iPhone
win7 不支持吗?安装直接报错
cielpy
    12
cielpy  
   2022-03-05 00:41:13 +08:00
关于 TUN 模式在 macOS 开启的权限问题,之前用这个方法解决的,写个脚本,大致如下

```
cd "$(dirname "${BASH_SOURCE[0]}")"

sudo mkdir -p "/Library/Application Support/clash-verge/"
sudo cp clash "/Library/Application Support/clash-verge/"
sudo chown root:admin "/Library/Application Support/clash-verge/clash"
sudo chmod +sx "/Library/Application Support/clash-verge/clash"

echo done
```

然后用 AppScript 执行

```
let scriptCOntent= "do shell script \"/bin/bash \(p)\" with administrator privileges"
DDLogInfo(scriptContent)
let script = NSAppleScript(source: scriptContent)

do {
var d: NSDictionary?
_ = script!.executeAndReturnError(&d)
if let _ = d {
DDLogError("installation failure")
} else {
DDLogInfo("installation success")
}
}
```

app 不能开启沙盒模式
gydi
    13
gydi  
OP
   2022-03-05 01:05:03 +08:00
@Cavolo #11 这个兼容性还没测过的,手上只有 win10 设备,你看看你可以源码编译不咯,编译应该会是正常的
gydi
    14
gydi  
OP
   2022-03-05 01:05:21 +08:00
@cielpy #12 感谢感谢,学习一下
ZeoKarl
    15
ZeoKarl  
   2022-03-05 01:24:36 +08:00 via iPhone
打包的时候把 webview2 的 runtime 带上。文档里面有相关的说明
ljsh093
    16
ljsh093  
   2022-03-05 02:25:25 +08:00
@gydi 就是不需要 msi 安装的那种
报个错误 win11 下拖动窗口有很严重的延迟
gzlock
    17
gzlock  
   2022-03-05 02:31:59 +08:00
@ljsh093 #16 我跑过 tauri 的 demo ,打开了支持 win10 / win11 的模糊效果就会这样
tauri 的体验问题还包括改变窗口大小时内容会延迟一小会才会跟着变动,这段时间会有看到黑色的背景颜色(没打开透明背景的设置时)
hei1000
    18
hei1000  
   2022-03-05 04:59:48 +08:00
linux 版本有计划
kyor0
    19
kyor0  
   2022-03-05 05:24:57 +08:00
ui 比原版漂亮不少
superhack
    20
superhack  
   2022-03-05 08:51:08 +08:00
请教一下,你这个用到 network extension 了吗?现在发行的 dmg 没有做 notarization ?
me221
    21
me221  
   2022-03-05 08:54:05 +08:00
好漂亮!
root01
    22
root01  
   2022-03-05 09:01:36 +08:00
没中文 差评
jiyan5
    23
jiyan5  
   2022-03-05 09:11:36 +08:00 via Android
谢谢,下载用用
jiyan5
    24
jiyan5  
   2022-03-05 09:13:29 +08:00 via Android
希望能保持轻巧,能有简单的功能就行,cfw 就有点臃肿了,
takashiki
    25
takashiki  
   2022-03-05 09:21:08 +08:00   4
clash 我一直有个痛点,机场的一键订阅都是直接下载一个配置文件,然后我自己又会定义一套规则,我想在自己定义的规则里引用机场配置文件的 proxy ,这样就能既保持机场 proxy 配置自动更新,又能符合自己的需求。
但是 clash 好像用不了多个配置文件,也就不能在一个配置文件里引用另一个配置文件的 proxy 了,不知道有没有解决方案。
Innovatino
    26
Innovatino  
   2022-03-05 09:24:12 +08:00
集成一下 subconverter 就更好了
不过不知道 subconverter 的协议是什么
iamv2er
    27
iamv2er  
   2022-03-05 09:35:39 +08:00 via iPhone
支持!
aircjm
    28
aircjm  
   2022-03-05 09:40:33 +08:00 via Android   2
@takashiki 有 subconverter
Eiden
    29
Eiden  
   2022-03-05 10:03:53 +08:00
支持
woshinide300yuan
    30
woshinide300yuan  
   2022-03-05 10:04:24 +08:00
没中文版,差评。DOGE
gydi
    31
gydi  
OP
   2022-03-05 10:06:05 +08:00   1
@nieyujiang #15 不会考虑带上 webview2 的,我觉得自己装 webview2 ,只需要安装一次就 ok 了,这样我这个 app 或者其他所有依赖于 webview2 的 app ,都可以共享这个 runtime 。这样不仅安装包体积小,而且 webview2 更新时,所有 app 都能享受最新的 webview2 的特性或者修复,其实这样会更好的。
gydi
   32
gydi  
OP
   2022-03-05 10:09:12 +08:00
@ljsh093 #16 了解了解,win11 这个问题我会及时跟进 tauri 插件那边的更新
gydi
    33
gydi  
OP
   2022-03-05 10:12:06 +08:00
@gzlock #17 这个延迟和黑色背景确实是个问题,在 mac 上也有,我一度以为是页面的背景色,其实不是。不过这个问题开启了窗口透明的话,可以缓解一下的,因为看不到黑色的背景了,你可以试试
gydi
    34
gydi  
OP
   2022-03-05 10:15:04 +08:00
@hei1000 #18 这个暂时没有计划,主要是我没装 linux ,框架方面肯定是支持的,只是实现逻辑里还有些细枝末节需要适配 linux 但没做,可以期待一下有没有大佬抽空 PR 适配一下
darer
    35
darer  
   2022-03-05 10:16:39 +08:00
@gydi 说实话 有的时候是不想给系统上太多环境的 甚至想每个应用彼此隔离 打包就能带走
所以还是建议带个 webview2 或者 提供带 webview2 和不带 webview2 两个版本
gydi
    36
gydi  
OP
   2022-03-05 10:17:50 +08:00
@superhack #20 network extension 这个不太清楚,不过肯定是需要修改网络配置的。开源软件,暂时还没想着搞 notarization 啥的
gydi
    37
gydi  
OP
   2022-03-05 10:24:33 +08:00   1
@takashiki #25 这个问题,应该可以用 clash 配置本身的 provider 功能实现,或者如果你用过 cfw 的话,它里面也提供几个方法去处理,有仅通过配置的还有写 js 的,扩展性还是不错的。我这个 app 的话,也会支持相关功能,现在还在 coding 中。
gydi
    38
gydi  
OP
   2022-03-05 10:26:35 +08:00
@Innovatino #26 有看到一个开源的 subconverter 仓库,之后有空可以支持一下,楼上就有提到类似的,todo 加 1 吧
gydi
    39
gydi  
OP
   2022-03-05 10:33:40 +08:00
@darer #35 这个确实也有道理,之后的发布可以多打包一个带 runtime 的
g531956119
    40
g531956119  
   2022-03-05 11:07:57 +08:00   1
@takashiki 可以使用 proxy-providers 来整合多个机场,但首先需要把订阅文件转换为 provider 格式
https://proxy-provider-converter.vercel.app/
随后就可以用下图类似方法添加多个机场的节点
A01514035
    41
A01514035  
   2022-03-05 11:09:07 +08:00   4
@takashiki #25 https://blog.hifool.cn/posts/f42b65b0/
可以通过 proxy-providers 来解决。
写了篇文章,不知道讲的清不清楚。
iPhoneilike
    42
iPhoneilike  
   2022-03-05 11:16:22 +08:00 via iPhone
我一直有个疑问,为啥开了 clash 或者圈 x 这些工具,延迟会上升。不开延迟是 10ms ,开了延迟在 50 多 ms
ww940521
    43
ww940521  
   2022-03-05 11:27:18 +08:00
赞赞赞
gydi
    44
gydi  
OP
   2022-03-05 11:28:21 +08:00
@iPhoneilike #42 毕竟流量多经过了一次软件的处理,所以延迟增加一点也是正常的
HandSonic
    45
HandSonic  
   2022-03-05 12:15:16 +08:00 via iPhone   1
上一个这么公开开源 clash gui 客户端的作者已经被请去喝茶然后删库跑路了,op 注意安全
darer
    46
darer  
   2022-03-05 12:47:06 +08:00
退了之后 系统代理还是修改 mixed-port 之前的(没有被关闭
不知道是“修改 mixed-port 之后 proxy guard 还会给改回之前的”
还是修改 “mixed-port 之后 保存的原来的系统代理会被覆盖”
ilolita
    47
ilolita  
   2022-03-05 12:57:26 +08:00 via iPhone
支持下开发者,不过,可以不用 web 技术做前端吗?
gydi
    48
gydi  
OP
   2022-03-05 13:20:38 +08:00
@HandSonic #45 啊这
gydi
    49
gydi  
OP
   2022-03-05 13:23:42 +08:00
@darer #46 没太理解。。
8686886
    50
8686886  
   2022-03-05 13:26:48 +08:00 via Android
不清楚
gydi
    51
gydi  
OP
   2022-03-05 13:43:15 +08:00
@ilolita #47 web 技术方便。。
V9NN
    52
V9NN  
   2022-03-05 13:53:04 +08:00
感谢楼主。

既然选择了提供这样一个工具,就做好自我保护,别泄漏真实身份,别引来牢狱之灾。
quericy
    53
quericy  
   2022-03-05 14:24:13 +08:00 via iPhone   1
@takashiki #25 subConverter 或者 Surgio
Buges
    54
Buges  
   2022-03-05 14:47:04 +08:00 via Android
@HandSonic 闭源的没事反而开源的被喝茶?
Immortal
    55
Immortal  
   2022-03-05 15:29:20 +08:00
tauri 开发体验如何
gydi
    56
gydi  
OP
   2022-03-05 15:50:54 +08:00
@Immortal #55 Windows 上还行,macos 会时不时异常
kunkunzhang
    57
kunkunzhang  
   2022-03-05 16:04:34 +08:00
我也在写 tauri ,交流一下
cat9life
    58
cat9life  
   2022-03-05 16:43:19 +08:00
可以支持局域网作为网关吗?这个需求不小
imsuxp
    59
imsuxp  
   2022-03-05 16:54:03 +08:00
试用了一下,可惜目前机场的配置文件好像不支持(节点显示不出来),CFW 能正常使用。
ccoming077
    60
ccoming077  
   2022-03-05 17:11:19 +08:00 via iPhone   1
@HandSonic 别造谣 NET 作者不想做了而已
gydi
    61
gydi  
OP
   2022-03-05 17:11:38 +08:00
@cat9life #58 clash 就可以,不需要我这个的
gydi
    62
gydi  
OP
   2022-03-05 17:14:33 +08:00
@kunkunzhang #57 交流交流
sephiroth945
    63
sephiroth945  
   2022-03-05 17:29:11 +08:00
同求绿色版
ungrown
    64
ungrown  
   2022-03-05 18:11:23 +08:00
this keng is a little big
ymcj001
    65
ymcj001  
   2022-03-05 22:33:21 +08:00
小白有个问题想问,clash 有类似 ssr 里面 pac 的机制吗,我感觉一开就经常是全局了
darer
    66
darer  
   2022-03-05 22:48:44 +08:00
@ymcj001 Rule 模式 不就是吗
Echoleung
    67
Echoleung  
   2022-03-05 22:51:47 +08:00 via iPhone
mac 要求 11 ,装不起
gydi
    68
gydi  
OP
   2022-03-05 22:56:08 +08:00
@ymcj001 #65 pac 的话,cfw 支持的
Mr54
    69
Mr54  
   2022-03-07 07:55:27 +08:00 via Android
能否增加快捷键操作,一键开关、切换模式等等
nishikinor
    70
nishikinor  
   2022-03-07 08:00:55 +08:00 via Android
先 star 了,有空交 pr~
WestXu
    71
WestXu  
   2022-03-07 09:13:06 +08:00
最近出了个 Rust 的 Dioxus 框架,感觉也挺不错的
madlifer
    72
madlifer  
   2022-03-07 09:27:15 +08:00
有没有 flunetUI 的 clash win 客户端。 如果有的话感觉会相当不错。
LoveMyself546
    73
LoveMyself546  
   2022-03-07 10:04:48 +08:00
@takashiki CFW 本身有个配置覆盖的功能可以尝试一下。我的方法是使用订阅转换,转换的时候可以指定加载远程的配置文件,然后在 GitHub 上面建一个仓库托管。这样就算不同的机场只要转换一下订阅指定加载我的远程配置就可以了,不影响机场的节点。
huage2580
    74
huage2580  
   2022-03-07 10:28:14 +08:00
可以提供 logo 切换的 feature 吗
我不喜欢圆的眼镜,来个方的,墨镜,滑雪镜,还有贝吉塔那个探测器
allenchengji
    75
allenchengji  
   2022-03-07 10:31:51 +08:00 via Android
老大有没有支持 xtls 的 mac 客户端呀
gydi
    76
gydi  
OP
   2022-03-07 10:36:19 +08:00
@huage2580 #74 项目里直接替换图片再编译一下就 ok 了,想要啥五彩斑斓的黑都没问题的
cat9life
    77
cat9life  
   2022-03-07 11:53:21 +08:00
@gydi 61# clash 不行啊,局域网设置代理可以。作为透明网关不行
cat9life
    78
cat9life  
   2022-03-07 13:49:38 +08:00
@cat9life 哦我说的是在 Windows 平台
gydi
    79
gydi  
OP
   2022-03-07 13:51:12 +08:00
@cat9life #77 这个透明网关是指 tun 模式吗
cat9life
    80
cat9life  
   2022-03-07 14:15:57 +08:00
@gydi #79 “透明网关”这个词不准确。就是说局域网其它的电脑,只需要把自身的网关和 DNS 指向运行 Clash 的电脑,就可以直接出墙,不需要修改代理.
gydi
    81
gydi  
OP
   2022-03-07 14:30:58 +08:00
@cat9life #80 开启 allow-lan 就可以了
cat9life
    82
cat9life  
   2022-03-07 15:34:39 +08:00
@gydi 不行的,allow-wan 开启后,局域网其他机器指定代理才可以;直接指定网关为 clash 是不行的。
DivineRapierH
    83
DivineRapierH  
   2022-03-07 16:28:36 +08:00
This keng is a little big...
gydi
    84
gydi  
OP
   2022-03-07 16:42:10 +08:00
@cat9life #82 大概懂你说的,我不是很了解这个
Thiece
    85
Thiece  
   2022-03-07 17:00:10 +08:00   1
@gydi
Clash 有一个痛点没有解决,就是负载均衡和可用性灾难恢复,每次都是出现问题了才知道这个节点挂了,手动的换节点;
284716337
    86
284716337  
   2022-03-07 17:17:36 +08:00
同求绿色版
gydi
    87
gydi  
OP
   2022-03-07 18:26:57 +08:00
@Thiece #85 Urltest 这个类型应该可以吧
xmai
    88
xmai  
   2022-03-08 09:11:33 +08:00
@chotow “好家伙,近视了的小猫咪 ” ---- 真的把我看乐了哈哈哈哈哈
zhihaofans
    89
zhihaofans  
   2022-03-08 09:46:48 +08:00 via iPhone
这个图标挺可爱的,自己画的吗
gydi
    90
gydi  
OP
   2022-03-08 10:25:56 +08:00
@zhihaofans #89 猫咪不是原创的,是原 clash 的 logo ,我只是在原来的基础上加个眼镜
Yooe
    91
Yooe      2022-03-08 14:02:11 +08:00
膜拜下,刚学 rust ,
Meiyun
    92
Meiyun  
   2022-03-08 22:42:43 +08:00 via Android
求个中文版
gydi
    93
gydi  
OP
   2022-03-09 14:59:25 +08:00
@Meiyun #92 在做了在做了(进度 0 )
shikkoku
    94
shikkoku  
   2022-03-09 15:24:18 +08:00
希望能优化一下托盘图标式样以适应 Windows 和 MacOS 。
gydi
    95
gydi  
OP
   2022-03-09 15:58:05 +08:00
@shikkoku #94 适应 Windows 和 macOS 是指怎么适应呢,macOS 上确实有点问题,图标太大了,除此之外还有其他问题吗
shikkoku
    96
shikkoku  
   2022-03-09 18:38:48 +08:00
@gydi #95 任务栏暗色的情况下对比度不行……
gydi
    97
gydi  
OP
   2022-03-09 19:40:05 +08:00
@shikkoku #96 有道理
ileeoyo
    98
ileeoyo  
   2022-03-10 14:00:45 +08:00   1
已经下载试用了,支持一下,也提了一些 issue ,希望越来越完善。作为日常使用的托盘小工具,这样还是越轻量越好的,目前 cdn 客户端停更,仅剩 cfw ,但是 cfw 太大太重了,一直没去用。另外楼主也看下#45 和#52 ,平时注意下保护隐私。
saigo
    99
saigo  
   2022-03-11 08:53:17 +08:00
开机启动后有个 cmd 弹窗,需要手动关闭,这个只有我碰到了吗
gydi
    100
gydi  
OP
   2022-03-11 13:43:54 +08:00
@saigo #99 可以提个 issue 补充更多细节,后续看看
1  2  
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2998 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 31ms UTC 00:31 PVG 08:31 LAX 17:31 JFK 20:31
Do have faith in what you're doing.
ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86