mirror of
https://github.com/prdlk/noctalia-ostt.git
synced 2026-08-02 09:31:38 +00:00
feat(config): update plugin metadata and settings for OSTT voice-to-text plugin
This commit is contained in:
+63
-65
@@ -1,83 +1,81 @@
|
||||
# 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.
|
||||
# OSTT voice-to-text for the Noctalia bar.
|
||||
#
|
||||
# A bar widget that toggles an ostt (https://github.com/kristoferlund/ostt)
|
||||
# recording headlessly — no popup terminal — and shows a live record indicator
|
||||
# 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"
|
||||
name = "Example"
|
||||
version = "1.1.0"
|
||||
id = "prdlk/ostt"
|
||||
name = "OSTT"
|
||||
version = "1.0.0"
|
||||
min_noctalia = "5.0.0"
|
||||
author = "noctalia"
|
||||
author = "prdlk"
|
||||
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."
|
||||
tags = ["audio", "voice", "speech-to-text", "productivity"]
|
||||
icon = "microphone"
|
||||
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]]
|
||||
id = "hello"
|
||||
entry = "hello.luau"
|
||||
id = "recorder"
|
||||
entry = "recorder.luau"
|
||||
|
||||
[[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"
|
||||
label_key = "settings.label.label"
|
||||
description_key = "settings.label.description"
|
||||
default = "Hello"
|
||||
label_key = "settings.model.label"
|
||||
description_key = "settings.model.description"
|
||||
default = ""
|
||||
|
||||
[[widget.setting]]
|
||||
key = "glyph"
|
||||
type = "glyph"
|
||||
label_key = "settings.glyph.label"
|
||||
description_key = "settings.glyph.description"
|
||||
default = "puzzle"
|
||||
key = "process_action"
|
||||
type = "string"
|
||||
label_key = "settings.process_action.label"
|
||||
description_key = "settings.process_action.description"
|
||||
default = ""
|
||||
|
||||
[[widget.setting]]
|
||||
key = "show_glyph"
|
||||
key = "show_elapsed"
|
||||
type = "bool"
|
||||
label_key = "settings.show_glyph.label"
|
||||
label_key = "settings.show_elapsed.label"
|
||||
description_key = "settings.show_elapsed.description"
|
||||
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"
|
||||
[[widget.setting]]
|
||||
key = "notify_on_done"
|
||||
type = "bool"
|
||||
label_key = "settings.notify_on_done.label"
|
||||
description_key = "settings.notify_on_done.description"
|
||||
default = true
|
||||
|
||||
# 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.
|
||||
[[widget.setting]]
|
||||
key = "extra_args"
|
||||
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]]
|
||||
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"
|
||||
id = "monitor"
|
||||
entry = "monitor.luau"
|
||||
|
||||
Reference in New Issue
Block a user