引子

Raycast 作为一款较新出现的效率工具(其实也不是很新了,只不过是相对而言),在颇久以前便以其颜值吸引了我的注意,并在第一时间就下载把玩之。 可惜的是当时仅有寥寥功能,额外的能力靠脚本实现,并不是我理想中类似 uTools 那种可以自行编程,随意拓展功能的结构,故而没多久就束之高阁。

直到大约两个多月前,官方推出了自己的拓展商店,以及相关的 API 以后,我才按照文档重新进行了相关尝试。不料,由于种种原因,此文被拖延了月余时光。 现在,在对文档重新稍作阅读的基础上,我追加了部分内容,希望谨以此文起到投石问路之功效,让大家对这个还算年轻的插件系统有所简单了解。

简述

在这里我先说明结论:如果你常用的是执行某些自动化脚本,简易的输入输出转换,界面内容以列表或是文本 (Markdown) 为主,那么目前的 Raycast 应该能够为你提供一个不错的体验; 如果你如我一样,希望的是类似 uTools 的,对界面有很高自由度要求,那么比较遗憾,我们可能还需要再观望些时日。

须知

Raycast 插件使用 tsx+react 开发,你可以使用 Nodejs(>=16.10) 生态来完成各种功能,但是在界面绘制上,仅支持官方在 @raycast/api 包中提供的控件。

其新建项目的具体步骤可参考 官方教程

Command

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

主体控件

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

列表 List

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

https://user-images.githubusercontent.com/25399519/153756549-a79ba856-c9b3-4d72-881a-f27e71acad76.png