feat(config): update plugin metadata and settings for OSTT voice-to-text plugin

This commit is contained in:
Prad Nukala
2026-07-13 12:18:16 -04:00
parent f779b48dd5
commit b56b724b22
+63 -65
View File
@@ -1,83 +1,81 @@
# Minimal reference plugin. Demonstrates the full bar-widget pipeline: # OSTT voice-to-text for the Noctalia bar.
# static manifest -> appears in the Add-widget picker -> renders/ticks -> #
# manifest-driven settings -> onIpc. Also ships a launcher provider that shows # A bar widget that toggles an ostt (https://github.com/kristoferlund/ostt)
# launcher.setQuery() drill-in (type `/ex`). # recording headlessly — no popup terminal — and shows a live record indicator
# See noctalia-docs plugins guide. # while the microphone is capturing. Transcriptions default to being pasted
# into the focused app (ostt --paste).
#
# recorder [[widget]] the bar capsule: indicator + click-to-toggle
# monitor [[service]] polls ostt's recording.pid and publishes status
#
# Hotkey integration (compositor keybind):
# noctalia msg plugin prdlk/ostt:recorder focused toggle
id = "noctalia/example" id = "prdlk/ostt"
name = "Example" name = "OSTT"
version = "1.1.0" version = "1.0.0"
min_noctalia = "5.0.0" min_noctalia = "5.0.0"
author = "noctalia" author = "prdlk"
license = "MIT" license = "MIT"
dependencies = [] dependencies = []
tags = ["demo"] tags = ["audio", "voice", "speech-to-text", "productivity"]
icon = "puzzle" icon = "microphone"
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." description = "Voice-to-text with OSTT: click the mic (or bind a hotkey) to record, click again to transcribe and paste straight into the focused app. Shows a red record indicator while the microphone is live."
[[widget]] [[widget]]
id = "hello" id = "recorder"
entry = "hello.luau" entry = "recorder.luau"
[[widget.setting]] [[widget.setting]]
key = "label" key = "output_mode"
type = "select"
label_key = "settings.output_mode.label"
description_key = "settings.output_mode.description"
default = "paste"
options = [
{ value = "paste", label_key = "settings.output_mode.paste" },
{ value = "clipboard", label_key = "settings.output_mode.clipboard" },
]
[[widget.setting]]
key = "model"
type = "string" type = "string"
label_key = "settings.label.label" label_key = "settings.model.label"
description_key = "settings.label.description" description_key = "settings.model.description"
default = "Hello" default = ""
[[widget.setting]] [[widget.setting]]
key = "glyph" key = "process_action"
type = "glyph" type = "string"
label_key = "settings.glyph.label" label_key = "settings.process_action.label"
description_key = "settings.glyph.description" description_key = "settings.process_action.description"
default = "puzzle" default = ""
[[widget.setting]] [[widget.setting]]
key = "show_glyph" key = "show_elapsed"
type = "bool" type = "bool"
label_key = "settings.show_glyph.label" label_key = "settings.show_elapsed.label"
description_key = "settings.show_elapsed.description"
default = true default = true
# Second bar widget: the same service tick rendered declaratively via [[widget.setting]]
# barWidget.render() (ui.* tree) instead of imperative setText/setGlyph — key = "notify_on_done"
# including an inline ui.button whose click stays separate from the type = "bool"
# widget-level onClick. label_key = "settings.notify_on_done.label"
[[widget]] description_key = "settings.notify_on_done.description"
id = "declarative" default = true
entry = "declarative.luau"
# Headless background service: publishes a counter to the plugin's shared state [[widget.setting]]
# every second. The widget above watches it (noctalia.state.watch) to show how a key = "extra_args"
# service feeds the plugin's UI entries without sharing Lua memory. type = "string"
label_key = "settings.extra_args.label"
description_key = "settings.extra_args.description"
default = ""
advanced = true
# Headless poller: watches ostt's recording.pid (works for recordings started
# by the widget, a hotkey IPC, or a plain `ostt launch` outside Noctalia) and
# publishes { phase, elapsed } to the plugin state channel for the widget(s).
[[service]] [[service]]
id = "ticker" id = "monitor"
entry = "ticker.luau" entry = "monitor.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"