# 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 are copied to the # clipboard by default (switch to ostt --paste in the widget settings). # # 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 = "prdlk/ostt" name = "OSTT" version = "1.0.0" min_noctalia = "5.0.0" author = "prdlk" license = "MIT" dependencies = [] 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 straight to your clipboard — or paste into the focused app. Shows a red record indicator while the microphone is live." [[widget]] id = "recorder" entry = "recorder.luau" [[widget.setting]] key = "output_mode" type = "select" label_key = "settings.output_mode.label" description_key = "settings.output_mode.description" default = "clipboard" options = [ { value = "clipboard", label_key = "settings.output_mode.clipboard" }, { value = "paste", label_key = "settings.output_mode.paste" }, ] [[widget.setting]] key = "model" type = "string" label_key = "settings.model.label" description_key = "settings.model.description" default = "" [[widget.setting]] key = "process_action" type = "string" label_key = "settings.process_action.label" description_key = "settings.process_action.description" default = "" [[widget.setting]] key = "show_elapsed" type = "bool" label_key = "settings.show_elapsed.label" description_key = "settings.show_elapsed.description" default = true [[widget.setting]] key = "notify_on_done" type = "bool" label_key = "settings.notify_on_done.label" description_key = "settings.notify_on_done.description" default = true [[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 = "monitor" entry = "monitor.luau"