yacd icon indicating copy to clipboard operation
yacd copied to clipboard

基于Tauri的桌面客户端的尝试

Open kylinholmes opened this issue 1 year ago • 10 comments

我非常喜欢yacd的UI,也想用 yacd 代替本地的其他Clash客户端,基于Web的特性,跨平台相对容易实现,而且UI几乎一致。 所以我尝试用 Tauri 将这个项目打包成了桌面应用,这样可以很轻松做到兼容三个平台。 请问作者本人 @haishanh 是否对这个想法有兴趣呢?我可以帮助完成后续的工作


image

kylinholmes avatar Jun 20 '23 02:06 kylinholmes

这个桌面应用应该不只是打包 yacd 本身吧, 应该也会include相应平台的 clash core,控制其运行状态,设置系统代理/路由什么的。 你可以考虑自己创建一个 repo 做你的应用开发,yacd 这边我或者大家可以帮忙实现相应的一些需要的(当运行在 Tauri 中才生效的)功能,你那边 build 的时候再拉 yacd 的 artifacts 就好了。对 Tauri 不甚了解,但应该也是使用类似 JS bridge 的方式实现 renderer 和 Tauri 主进程的 IPC 吧。

haishanh avatar Jun 20 '23 13:06 haishanh

截图里的没有打包core,只有yacd,连的是本地运行着的core,如果打算做成客户端,后续要加上去。 按目前的功能来说,应该还不需要和Tauri通信,他就是给各个系统的 WebView 做了一层封装。

客户端的话,我后续考虑创建自己的repo吧,感谢 haishanh

kylinholmes avatar Jun 20 '23 14:06 kylinholmes

@haishanh 你好,我最近有在尝试打包core进去,目前发现以下存在的问题:

image 目前,配置文件和控制端口都是硬编码,这部分改进需要:

  1. 从文件系统里面选择需要的 profile,这部分需要增加一点 UI 的部分,类似cfwprofile

image

  1. 系统yacd启动时,是否可以增加 通过参数或者环境变量的方式来自动连接 控制端口 因为有时候,9090端口并不是一直可用的

kylinholmes avatar Jul 01 '23 06:07 kylinholmes

关于 1,你需要告诉我前端和Tauri主进程的通信方式,定义并告知我拿 profile 列表,已经刷新 profile,导入 profile 的 API

关于 2,可以在 querystring 里面传参数,README 里面有个 section "Supported URL query params"

haishanh avatar Jul 03 '23 13:07 haishanh

我们可以这样: 我提供 ~~两~~一个接口: Array[String] get_profiles() ~~void set_profiles(String profile)~~

get_profile 会递归返回 $CONFIG/clash 下 *.yaml 文件 ~~set_profile 把需要的profile传过来~~

我刚才看了一下 clashAPI,似乎有直接提供重新加载配置的接口 https://clash.gitbook.io/doc/restful-api/config 所以应该不需要用我的set_profile

image

然后是如何调用get_profiles,大体按照以下步骤: https://tauri.app/zh-cn/v1/guides/features/command https://tauri.app/zh-cn/v1/guides/getting-started/setup/integrate#%E4%BD%BF%E7%94%A8-javascript-%E5%BA%93 image


如果你觉得这个方案没什么问题的话,我回去就把这部分完成

kylinholmes avatar Jul 04 '23 04:07 kylinholmes

@kylinholmes 不好意思 才回复,我觉得没啥问题,如果不会花你很多时间的话,可以试试看。

haishanh avatar Jul 30 '23 03:07 haishanh

@kylinholmes 不好意思 才回复,我觉得没啥问题,如果不会花你很多时间的话,可以试试看。

好的,这不会花我很久,我想知道我们应该怎么协作才比较方便呢?把你加入到 我这个下游的项目 可以嘛?

kylinholmes avatar Aug 01 '23 01:08 kylinholmes

@kylinholmes 可以的

haishanh avatar Aug 01 '23 02:08 haishanh

抱歉,最近工作有点忙,稍微等我一段时间吧

kylinholmes avatar Aug 02 '23 16:08 kylinholmes

你好 @haishanh ,刚才已经拉你到下游项目了,目前功能只实现了 getProfile

kylinholmes avatar Aug 05 '23 21:08 kylinholmes