Speech to Text: Omarchy bar plugin for dictation
A bar widget plus a stdlib-only Python daemon. Press a language's key to record, press it again to stop: the text is pasted at the cursor (or handed to the default coding agent with a second key). While recording the bar shows a waveform (yellow while the microphone opens, green while listening) and the words as they are recognised; the recording is transcribed at every pause, so stopping only transcribes the last phrase. Every recording and its text are kept in a searchable history with playback, copy, paste and delete. Uses Omarchy's own dictation engine (voxtype, local Whisper) by default and downloads any model a language needs by itself; whisper.cpp or a custom command can be picked instead. Key bindings are applied at runtime through Hyprland's Lua API and never touch a key something else already uses.
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"id": "alanfortlink.speech-to-text",
|
||||
"name": "Speech to Text",
|
||||
"version": "0.1.0",
|
||||
"author": "alanfortlink",
|
||||
"license": "MIT",
|
||||
"description": "Dictation with a live waveform and live text in the bar, a browsable history of every recording and its transcript, and configurable keys per language (toggle, and toggle + Return). Uses the same local Whisper engine Omarchy ships (voxtype) by default; other engines are configurable.",
|
||||
"kinds": [
|
||||
"service",
|
||||
"bar-widget"
|
||||
],
|
||||
"keepLoaded": true,
|
||||
"entryPoints": {
|
||||
"service": "plugin/Service.qml",
|
||||
"barWidget": "plugin/Panel.qml"
|
||||
},
|
||||
"barWidget": {
|
||||
"displayName": "Speech to Text",
|
||||
"description": "Microphone icon that turns into a live waveform with the words as you say them; click for history and settings.",
|
||||
"category": "Media",
|
||||
"allowMultiple": false,
|
||||
"defaultSection": "right",
|
||||
"defaults": {
|
||||
"alwaysShow": true
|
||||
},
|
||||
"schema": [
|
||||
{
|
||||
"key": "alwaysShow",
|
||||
"type": "boolean",
|
||||
"label": "Show the microphone icon while idle",
|
||||
"defaultValue": true
|
||||
},
|
||||
{
|
||||
"key": "maxTextWidth",
|
||||
"type": "number",
|
||||
"label": "Maximum width of the live text in the bar (px)",
|
||||
"defaultValue": 360
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user