ウィジェット
ウィジェットは小さな UI を画面に置くための拡張です。AiScript で書き、時計や集計、外部から取ってきたデータの表示などに使います。プラグインと違ってフックを持たず、実行すると描画するだけの単純な作りです。
最小構成
トップレベルで Ui:render を呼びます。プラグインのようなメタヘッダは解釈されません。名前や自動実行の設定は、隣に置くメタファイル(後述)が持ちます。
/// @ 1.2.1
Ui:render([
Ui:C:text({ text: "Hello, world" })
])UI は Ui:C:* のコンポーネントを並べて組み立てます。テキスト、ボタン、入力欄などが使えます。
状態を持つ
Mk:save と Mk:load で値を残せます。再描画やアプリの再起動をまたいで保持されます。保存領域は「ウィジェット × 実行するアカウント」ごとに分かれるので、同じウィジェットをアカウントを変えて置いても値は混ざりません。この値はファイルではなくアプリ内の保存領域にあり、バックアップには含まれません。
/// @ 1.2.1
var count = (Mk:load("count") or 0)
Ui:render([
Ui:C:text({ text: `Count: {count}` })
Ui:C:button({
text: "+1"
onClick: @() {
count += 1
Mk:save("count", count)
}
})
])自動実行
ウィジェットは既定では手動起動です。カラムを開いても勝手には走らず、「実行」を押したときに実行されます。「自動実行」をオンに切り替えることもできますが、外部と通信するウィジェットでは、開いただけで通信が発生する点に注意してください。切り替えはいつでも戻せます。
どのアカウントで実行するかは、ウィジェットカラムに置いたときの配置が持ちます。ウィジェットができることの範囲は、権限設定の「プラグイン」の行と同じ規則で決まります。
保存場所
設定フォルダの widgets/ に、コード本体 <slug>.is とメタ情報 <slug>.meta.json5(名前、自動実行、全アカウント用かどうか、どのアカウントに入れたか、作成・更新日時)の 2 ファイルで保存されます。一覧はメタファイルから作られます。
作る・配る
AI カラムで「〇〇を表示するウィジェットを作って」と頼めます(先に MisStore の作者スキルを入れておきます)。作成と編集の入口は開発者モードで開放されます。作ったものは MisStore で配布できます(提出のしかた / 書式)。