From cf75df6d5a3820f80f6ed436dd475e0bf6806a8a Mon Sep 17 00:00:00 2001 From: Prad Nukala Date: Mon, 13 Jul 2026 11:43:32 -0400 Subject: [PATCH] feat(config): add plugin configuration file plugin.toml --- plugin.toml | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 plugin.toml diff --git a/plugin.toml b/plugin.toml new file mode 100644 index 0000000..bbe971a --- /dev/null +++ b/plugin.toml @@ -0,0 +1,83 @@ +# 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"