-
Notifications
You must be signed in to change notification settings - Fork 426
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: enable_external_cores #765
Conversation
如果可以的话,可以考虑将 sidecar 拆出来。将四种内核做成可选下载的模式,然后在这个子模块里实现进程管理(包括退出杀死进程) |
我更倾向与使用包管理器管理内核 |
能否更详尽的解释一下呢 |
其实我本来的想法是提供一个文本输入框,允许输入自定义命令,奈何我对前端不是很熟悉,写不出来 |
Tauri v1 的 sidecar 除了提供打包支持外,还内嵌了进程管理功能(通过 Drop trait 担保了在退出程序时会清理 Clash 进程)。通过 Command 自行管理的时候,需要自行实现一个 Guard 来保证不会成为孤儿进程(这个应该丢给 AppCtx 比较合适,但是 Verge 时期并没有做这个事情,全是通过 OnceCell 实现的 Singleton,因此只能继续这么做了)。 因为内嵌四个内核导致安装包过于庞大,所以我们内部有讨论过:在未来修改内核的引入方式,变成可选内核的模式,这样可以大幅减小安装包大小。
https://docs.rs/tauri/1.6.1/tauri/api/path/fn.data_dir.html 目前计划的是遵循 Tauri 的建议,将数据目录定在 综上,目前如果要做成以上想法的实现的话,需要:
这个显然不现实,除了 Linux,其他发行版都没有集成合适的包管理器,所以内置内核还是比较合适的。 Windows 11下预装了 winget,但是直到现有的 Pre-release 才支持设置 Proxy;Scoop、Chocolatey 需要自行安装;
这样作用不大。不如支持自定义 PATH。我没有深度研究过 |
所以实际上tauri的
这不是本pr的目的,本pr更倾向与保留内嵌内核
Same as above. 本pr的用例是这样的: 包管理器(或
自定义PATH确实更合理些,不过这里自定义命令的主要的原因是二进制名可能不是nyan假定的那样,比如:clash-meta可能不是 |
是的,v2 没研究怎么处理的,但是 v1 是附带了的。 其他问题可以留到以后解决,但是进程清理是有必要的。
Nyanpasu 内部通过枚举标记不同内核,所以我们需要探寻一种方法来标记内核。或许通过版本信息区分是个好方法?不过得通过 |
b93b368
to
af8d75c
Compare
ef6fbe5
to
b064023
Compare
Allow users use system-wide binaries