一个跨平台的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}" 高度固定,宽度绑定到ViewModel的Width属性中,默认270,
接下来给出所有代码,
只需要设置无边框并且固定大小。悬浮窗的效果就达到了。
我们看看执行效果
就这样简单的悬浮窗写好了,我们使用一下悬浮窗的搜索功能
这个就是简单的使用效果,对比其他的工具,这个悬浮窗更简洁,并且跨平台和开源。
目前的项目结构。
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
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
