feat(voxtype): init (#297)

This commit is contained in:
Gabe Dunn
2026-08-08 11:07:55 -04:00
committed by GitHub
parent eba378b319
commit fe464e7301
5 changed files with 392 additions and 0 deletions
+81
View File
@@ -0,0 +1,81 @@
# Voxtype
Voxtype adds a bar indicator and recording controls for Voxtype. It uses
configurable Noctalia glyphs and colors while preserving Voxtype's own status
tooltip.
## Plugin
| Field | Value |
| --- | --- |
| ID | `gabedunn/voxtype` |
| Entries | Bar widget: `status` |
## Requirements
Install [`voxtype`](https://github.com/peteonrails/voxtype) and make sure the
`voxtype` command is available on `PATH`. Configure Voxtype and its recording
hotkey before using this widget.
## Usage
Enable the plugin in Settings → Plugins, then add the `status` widget to your
bar in Settings → Bar.
The widget follows Voxtype's live status and updates as soon as it changes:
| State | Default glyph | Default color | Tooltip |
| --- | --- | --- | --- |
| `idle` | `microphone-2-off` | `on_surface` | Voxtype ready - hold hotkey to record |
| `streaming` | `microphone-2` | `error` | Streaming live... |
| `recording` | `microphone-2` | `error` | Recording... |
| `transcribing` | `loader` | `primary` | Transcribing... |
| `stopped` | `microphone-2-off` | `error` | Voxtype not running |
Hover over the widget to see the tooltip supplied by Voxtype. By default the
bar shows only the glyph; enable **Show status text** to display Voxtype's
`alt` field beside it. Enable **Extended status** to request the model, device,
and backend. Voxtype always adds all three to the expanded tooltip; nested
settings let you choose which fields also appear on the bar.
Default pointer actions:
- **Left-click** runs `voxtype record toggle` to start or stop recording.
- **Right-click** runs `voxtype record stop` to stop recording.
- **Middle-click** opens the widget settings using Noctalia's standard action.
You can override these gesture bindings for each widget instance in the bar
settings.
## Settings
| Setting | Type | Default | Description |
| --- | --- | --- | --- |
| `show_alt` | `bool` | `false` | Show the current state (`idle`, `streaming`, `recording`, `transcribing`, or `stopped`) beside the glyph. |
| `show_extended` | `bool` | `false` | Enable extended output. The tooltip includes model, device, and backend. |
| `show_model` | `bool` | `true` | Show the model on the bar when extended status is enabled. |
| `show_device` | `bool` | `true` | Show the audio device on the bar when extended status is enabled. |
| `show_backend` | `bool` | `true` | Show the backend on the bar when extended status is enabled. |
| `idle_glyph` | `glyph` | `microphone-2-off` | Glyph shown in the idle state. |
| `idle_color` | `color` | `on_surface` | Glyph color in the idle state. |
| `streaming_glyph` | `glyph` | `microphone-2` | Glyph shown in the streaming state. |
| `streaming_color` | `color` | `error` | Glyph color in the streaming state. |
| `recording_glyph` | `glyph` | `microphone-2` | Glyph shown in the recording state. |
| `recording_color` | `color` | `error` | Glyph color in the recording state. |
| `transcribing_glyph` | `glyph` | `loader` | Glyph shown while Voxtype is transcribing recorded audio. |
| `transcribing_color` | `color` | `primary` | Glyph color in the transcribing state. |
| `stopped_glyph` | `glyph` | `microphone-2-off` | Glyph shown while Voxtype is not running. |
| `stopped_color` | `color` | `error` | Glyph color in the stopped state. |
## Notes
For each bar instance, the widget starts a managed shell loop that runs one
`voxtype status --follow --format json` process at a time, adding `--extended`
when extended status is enabled. If the status process exits, the loop waits two
seconds before restarting it. Noctalia stops the process group when the widget
unloads. Each JSON line replaces the current glyph, color, optional status text,
and tooltip; the emoji in Voxtype's `text` field is not rendered.
The plugin makes no network requests and does not directly read or write files.
Its click actions invoke Voxtype, which records and processes audio according to
your Voxtype configuration.