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

分享一个新的 clash 客户端

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

    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 呀!

    131 条回复    2023-01-31 23:55:39 +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
    哇哦,下载下来试试,谢谢分享
    enchilada2020
        3
    enchilada2020  
       2022-03-04 23:10:07 +08:00 via Android
    好家伙
    zhijiansha
        4
    zhijiansha  
       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   ❤️ 5
    好家伙,近视了的小猫咪 🐶
    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 感谢感谢,学习一下
    nieyujiang
        15
    nieyujiang  
       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   ❤️ 3
    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
    可以支持局域网作为网关吗?这个需求不小
    suxiaoxiann
        59
    suxiaoxiann  
       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
    @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  
    关于   ·   帮助文档   ·   博客   ·   nftychat   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   实用小工具   ·   989 人在线   最高记录 5556   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 131ms · UTC 20:46 · PVG 04:46 · LAX 13:46 · JFK 16:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.