# 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"