Raycast 插件开发

Raycast 插件开发

Raycast 插件使用 tsx+react 开发,可以使用 Nodejs(>=16.10) 生态来完成各种功能,但是在界面绘制上,仅支持官方在 @raycast/api 包中提供的控件。 其新建项目的具体步骤可参考 官方教程

Command

在 Raycast 中,插件的核心是 “Command” 。这些 Command 会直接列举在呼出的面板上,并依旧你的使用习惯进行排序。Command 之间可以共享,传递数据,但是并不共享页面。 这点与 uTools 有较大的不同。在 uTools 中,一个插件往往就是一个界面,通过对界面进行各种控件的排布来直接完成对应功能。 但是由于 Raycast 目前并不提供自行绘制 UI 的能力,所以基本的 UI 控件只能单独占有一个页面,通过跳转页面来完成功能执行结果的输出。 所以将其分为两大类,控件与功能,同时控件又分为以下三种:

  • 界面主体控件:它会铺满整个页面,而你的发挥也会被限制在它可接受的子控件范围内。
  • 命令面板: Raycast 中,无法自行放置按钮,而是统一通过右下角的命令面板来执行需要的功能。
  • 其它 UI 相关:可在界面中进行组合使用的小控件。

主体控件

目前官方提供的主体控件有三种:列表(List),详情(Detail),和表单(Form)。

列表 List

下图所示即为一个标准的列表页面。由顶部的输入框,页面中的列表,右下角的命令面板组成。 其中列表作为主体控件,其子控件为数个列表项(List.Item)

详情 Detail

如图所示,其实它只是一个文本展示的界面。你可以靠它渲染一个 Markdown 文档,不过也仅此而已。

表单 Form

较新添加的控件,可以让你在页面上完成更进一步的交互,子控件也最为丰富,支持输入框,区域输入,下拉框,多选,标签选择,日期选择等功能。

命令面板

命令面板以 ActionPanel 为容器,以 Action 作为具体功能的执行入口,并且可以通过 Section 等将命令分组,达到更加直观高效的目的。 通过预设的 Action,你可以操作剪切板,打开浏览器,提交表单,开启访达,跳转页面等功能;当然亦可以自行编写函数来执行,可算得上 Raycast 的灵魂所在。 在主体控件(List,Detail,Form)中,均可以接受一个 actions 参数。而我们所编写的命令,也都是传入此处才可以被在当前页面访问到。

其它 UI 相关

目前有两点:Icon 和 Color。 前者可以在 ListItem,Action 等控件上作为参数传入,提供显示图标的能力。而且同时支持 Raycast 内置的图标库和外部图片资源(打包进插件的图片或者网络图片) 后者则是提供对 Icon 的统一着色功能,支持直接调用内置的色彩变量与自行传入色值。

功能性 API

除了界面,作为一个效率工具,自然还需要和系统进行交互,来完成各种功能,绝大部分在 utilities 中提供。 包括但不限于:获取应用列表,获取默认应用,操作文件(打开、删除、显示),本地数据读写等。

Preference

从层级来讲,它与 Command 呈现并列关系。同样,使用此功能需要在 package.json 中进行声明。如果设定为 required=true,则在运行 Command 前,插件会先要求用户完成设定项。适用于指引用户完成填写用户名,API,token 等行为。

提交与发布

目前来讲,插件的发布流程依旧不甚友好。在你构建的插件符合其官方的种种要求的基础上,你需要自行 fork 官方的插件仓库,补充你的插件代码以后提交一个 pr,经过审核后方才可以。值得注意的是,截止到本文写作,官方依旧仅支持英文插件,无论是插件指令还是操作说明,均需为英文(即使你的插件并不面向英文用户),否则无法通过审核。当然,即使不去发布,仅仅自用,也是完全可以的。

Licensed under CC BY-NC-SA 4.0
Built with Hugo
主题 StackJimmy 设计