mirror of
https://github.com/prdlk/noctalia-ostt.git
synced 2026-08-02 17:41:38 +00:00
84 lines
2.7 KiB
TOML
84 lines
2.7 KiB
TOML
# Minimal reference plugin. Demonstrates the full bar-widget pipeline:
|
|||
|
|
# static manifest -> appears in the Add-widget picker -> renders/ticks ->
|
||
|
|
# manifest-driven settings -> onIpc. Also ships a launcher provider that shows
|
||
|
|
# launcher.setQuery() drill-in (type `/ex`).
|
||
|
|
# See noctalia-docs plugins guide.
|
||
|
|
|
||
|
|
id = "noctalia/example"
|
||
|
|
name = "Example"
|
||
|
|
version = "1.1.0"
|
||
|
|
min_noctalia = "5.0.0"
|
||
|
|
author = "noctalia"
|
||
|
|
license = "MIT"
|
||
|
|
dependencies = []
|
||
|
|
tags = ["demo"]
|
||
|
|
icon = "puzzle"
|
||
|
|
description = "A minimal reference plugin: a bar widget with settings and IPC, a declarative bar widget (barWidget.render), a service, a shortcut, a launcher provider with setQuery drill-in, and a panel of interactive controls."
|
||
|
|
|
||
|
|
[[widget]]
|
||
|
|
id = "hello"
|
||
|
|
entry = "hello.luau"
|
||
|
|
|
||
|
|
[[widget.setting]]
|
||
|
|
key = "label"
|
||
|
|
type = "string"
|
||
|
|
label_key = "settings.label.label"
|
||
|
|
description_key = "settings.label.description"
|
||
|
|
default = "Hello"
|
||
|
|
|
||
|
|
[[widget.setting]]
|
||
|
|
key = "glyph"
|
||
|
|
type = "glyph"
|
||
|
|
label_key = "settings.glyph.label"
|
||
|
|
description_key = "settings.glyph.description"
|
||
|
|
default = "puzzle"
|
||
|
|
|
||
|
|
[[widget.setting]]
|
||
|
|
key = "show_glyph"
|
||
|
|
type = "bool"
|
||
|
|
label_key = "settings.show_glyph.label"
|
||
|
|
default = true
|
||
|
|
|
||
|
|
# Second bar widget: the same service tick rendered declaratively via
|
||
|
|
# barWidget.render() (ui.* tree) instead of imperative setText/setGlyph —
|
||
|
|
# including an inline ui.button whose click stays separate from the
|
||
|
|
# widget-level onClick.
|
||
|
|
[[widget]]
|
||
|
|
id = "declarative"
|
||
|
|
entry = "declarative.luau"
|
||
|
|
|
||
|
|
# Headless background service: publishes a counter to the plugin's shared state
|
||
|
|
# every second. The widget above watches it (noctalia.state.watch) to show how a
|
||
|
|
# service feeds the plugin's UI entries without sharing Lua memory.
|
||
|
|
[[service]]
|
||
|
|
id = "ticker"
|
||
|
|
entry = "ticker.luau"
|
||
|
|
|
||
|
|
# Control-center quick-toggle tile. Add it from Settings → Control Center shortcuts.
|
||
|
|
[[shortcut]]
|
||
|
|
id = "toggle"
|
||
|
|
entry = "shortcut.luau"
|
||
|
|
|
||
|
|
# Launcher provider: type `/ex` in the launcher. Categories drill in via
|
||
|
|
# launcher.setQuery() (the input is rewritten and the launcher stays open);
|
||
|
|
# leaf items copy to the clipboard and let the launcher close.
|
||
|
|
[[launcher_provider]]
|
||
|
|
id = "finder"
|
||
|
|
entry = "finder.luau"
|
||
|
|
prefix = "/ex"
|
||
|
|
glyph = "list-search"
|
||
|
|
include_in_global_search = false
|
||
|
|
|
||
|
|
# Panel: a settings-style surface built from the declarative ui.* vocabulary
|
||
|
|
# (panel.render). Demonstrates the interactive controls (toggle/slider/input/
|
||
|
|
# select inside a scroll) and their value callbacks. Panel size is host-owned
|
||
|
|
# and declared here, so the surface is sized right on the first open.
|
||
|
|
# Open it with: noctalia msg panel-toggle noctalia/example:panel
|
||
|
|
[[panel]]
|
||
|
|
id = "panel"
|
||
|
|
entry = "panel.luau"
|
||
|
|
width = 420
|
||
|
|
height = 410
|
||
|
|
placement = "floating"
|
||
|
|
position = "center"
|