一个跨平台的ChatGPT悬浮窗工具

一个跨平台的ChatGPT悬浮窗工具

使用avalonia实现的ChatGPT的工具,设计成悬浮窗,并且支持插件。

如何实现悬浮窗?

在使用avalonia实现悬浮窗也是非常的简单的。

实现我们需要将窗体设置成无边框

Window根节点添加一下属性,想要在Linux下生效请务必添加SystemDecorations属性

ExtendClientAreaToDecorationsHint="True"
ExtendClientAreaChromeHints="NoChrome"
ExtendClientAreaTitleBarHeightHint="-1"
SystemDecorations="None"

这样我们的窗口就设置成了无边框。

然后我们还需要将窗体的大小固定,

Height="50"
MaxHeight="50"
Width="{Binding Width}"
MaxWidth="{Binding Width}"

高度固定,宽度绑定到ViewModelWidth属性中,默认270

接下来给出所有代码,

只需要设置无边框并且固定大小。悬浮窗的效果就达到了。

我们看看执行效果

image-20230702133719931

就这样简单的悬浮窗写好了,我们使用一下悬浮窗的搜索功能

image-20230702133757221

这个就是简单的使用效果,对比其他的工具,这个悬浮窗更简洁,并且跨平台和开源。

image-20230702133839454

目前的项目结构。

plugin下面的项目是默认的插件,用于搜索系统文件(未完善)

Gotrays.Suspension.Client则是实际的客户端。

Gotrays.Suspension.PlugIn则是插件定义的接口规范。

Gotrays.Update则是检查更新程序,用于更新主程序。

实现插件

plug-in

插件模块,用于扩展功能。

插件开发

1. 创建插件项目

在解决方案中创建一个类库项目,项目名称以Gotrays.Suspension.PlugIn.开头,例如Gotrays.Suspension.PlugIn.Test。 然后在项目中依赖Gotrays.Suspension.PlugIn类库。

2. 创建插件类

在项目中创建一个类,继承Gotrays.Suspension.PlugIn.PlugInBase类,例如:

using Gotrays.Suspension.PlugIn;public class SystemTools : PlugInBase
{public SystemTools(){Name = "系统搜索";// 获取system.png嵌入资源的Streamvar stream = GetType().Assembly.GetManifestResourceStream("SystemTools.system.png");if (stream == null) return;// 读取Stream到byte数组var bytes = new byte[stream.Length];var read = stream.Read(bytes, 0, bytes.Length);Icon = bytes;}// 搜索触发public override async Task SearchAsync(string value){// 打开系统搜索Process.Start("explorer.exe", "search://" + value);await Task.CompletedTask;}protected override async Task InitAsync(IServiceCollection services){// 插件首次加载时执行}public override async Task BuilderServiceAsync(IServiceProvider provider){// 这里可以得到服务提供者,可以通过服务提供者获取其他服务}protected override void Selection(){//  当插件被选中时执行}protected override void UnSelection(){// 当插件被取消选中时执行}protected override async Task UnloadAsync(){// 当插件被卸载插件发生}}

工具服务会进行自动发现,无需手动注册。 只需要将程序集放置在./plug-in目录下即可。 服务会在一个程序集中发现所有的插件类,并且进行注册。

按照上面的方式非常的简单就集成了插件。

开源地址

Gitee:https://gitee.com/gotrays/gotrays-suspension

Github:https://github.com/239573049/Suspension


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部