Skip to main content
Marchyo can add push-to-talk voice dictation to the Hyprland desktop using voxtype with OpenAI Whisper. Press Super+H to start recording, press it again to stop; the transcribed text is typed at the cursor (with a clipboard fallback). It is off by default — it needs a microphone and downloads a Whisper model. When enabled, the full desktop UI comes with it: a Waybar recording indicator, desktop notifications, start/stop sound cues, and a Super+Shift+H floating status window. Each surface is on by default and individually opt-out.

Options

OptionTypeDefaultDescription
marchyo.dictation.enableboolfalseEnable voxtype dictation and the Hyprland Super+H toggle bind
marchyo.dictation.modelstr"large-v3-turbo"Whisper model voxtype loads
marchyo.dictation.languagestr"auto"Spoken language ("auto" detects per utterance; pin with an ISO code like "en")
marchyo.dictation.preloadModelboolfalsePre-download the model at activation instead of on first recording
marchyo.dictation.indicatorbooltrueShow a recording-state segment on Waybar (driven by voxtype status --follow)
marchyo.dictation.notifybooltrueDesktop notifications on record start/stop and transcription
marchyo.dictation.audioFeedbackbooltrueStart/stop sound cues
marchyo.dictation.statusWindowbooltrueBind Super+Shift+H to a floating status window
marchyo.dictation = {
  enable = true;
  # model = "large-v3-turbo";  # multilingual + fast (default)
  # language = "auto";         # detect per utterance
  # preloadModel = true;       # fetch the model at activation time
  # indicator = false;         # drop the Waybar segment
  # notify = false;            # silence desktop notifications
  # audioFeedback = false;     # silence start/stop cues
  # statusWindow = false;      # drop the Super+Shift+H window
};
With preloadModel = false (the default) the ~1.5 GB Whisper model downloads on the first recording, so a nixos-rebuild never blocks on the network. Set preloadModel = true to fetch it at activation time via voxtype’s model-loader service instead (that step needs network access when it runs).

How it works

Enabling the option wires the upstream Home Manager services.voxtype module:
  • Writes ~/.config/voxtype/config.toml and runs the voxtype user service. wayland.display is set so the daemon gets WAYLAND_DISPLAY plus wtype/wl-clipboard on its PATH for typing into Wayland windows.
  • Binds Super+H under Hyprland to voxtype record toggle. The daemon’s own evdev hotkey stays disabled — recording is driven from the compositor.
  • Output mode is type (types at the cursor) with clipboard fallback.
  • The Waybar indicator streams voxtype status --follow (JSON) and recolors by state; notifications and sound cues use voxtype’s built-in [output.notification] / [audio.feedback]; Super+Shift+H opens a floating terminal running voxtype status --follow.
Check the daemon with systemctl --user status voxtype.
Last modified on July 11, 2026