Skip to content

UI 插件 ​

UI 插件(launcher plugin)给启动器加界面和功能——往侧边栏放卡片、注册自己的页面、注入样式、订阅应用事件,甚至下载并运行一个原生程序。

它跑在启动器的页面里,和启动器共用同一个 Vue 实例。

它和内容源的区别 ​

内容源UI 插件
做什么提供内容(搜索、详情、下载地址)给启动器加界面和功能
界面没有有
manifest 字段capabilities 对象permissions 数组
权限只有 hosts 白名单逐项声明 + 用户审批
装在哪content-sources/<id>/plugins/<id>/

还不确定写哪个?看你该写哪一种。

能力一览 ​

UI 插件能做这些(每项对应一个权限):

能力权限风险
注入 CSSstyle低
读写自己的存储storage低
往插槽放 UIslot:<位置>低
注册自己的页面route低
订阅应用事件event:<类型>低
调宿主接口hostapi:<名称>高
接管结构区域region:<区域>高
访问网络network:<域名>高
跑原生 sidecarsidecar高
局域网联机广播lan高

低风险的装上即生效;高风险的等用户批准。

各页导航 ​

入门(如果还没写过,从这里开始):

基础:

扩展启动器:

重型能力:

最小骨架 ​

ts
import type { PluginHostApi } from '@celestial/plugin'

export async function activate(api: PluginHostApi): Promise<void> {
	api.styles.add('.my-card { padding: 12px; }')

	api.slots.add('sidebar.top', {
		id: 'card',
		component: MyCard,
	})

	api.log('activated')
}

activate(api) 是入口,启动器在应用渲染完之后调用一次。


准备好就开始:manifest 与权限。

Celestial Launcher 基于 Modrinth App 构建,遵循其开源许可。