Omarchy / Hyprland Setup
Omarchy is an Arch-based desktop built on Hyprland. OSTT works well as a floating voice-to-text popup triggered by a Hyprland keybinding.
Install OSTT
curl -fsSL https://ostt.ai/install | bash
ostt authPrefer the Arch package route? Use an AUR helper:
paru -S ostt
# or
yay -S osttpacman does not install AUR packages directly unless you build them manually.
Keybinding
Add the binding to ~/.config/hypr/bindings.conf. Use the full path to the OSTT binary -- find it with which ostt:
# OSTT speech-to-text hotkey, paste into focused app
bindd = ALT, SPACE, ostt, exec, /home/you/.local/bin/ostt launch --pasteUse launch -c instead if you want clipboard output and manual paste.
Window Rules
Add window rules to ~/.config/hypr/hyprland.conf:
# OSTT window overrides
windowrule = float on, match:title ostt
windowrule = move ((monitor_w*0.5)-(window_w*0.5)) (monitor_h*0.85), match:title osttReload Hyprland:
hyprctl reloadUsage
- Press
Alt+Spaceto open the popup and start recording. - Speak.
- Press
Alt+Spaceagain, or pressEnterin the popup, to stop recording and transcribe. - With
--paste, OSTT inserts the text into the app that regains focus after the popup closes.
Output Options
Paste output:
bindd = ALT, SPACE, ostt, exec, /path/to/ostt launch --pasteClipboard output:
bindd = ALT, SPACE, ostt, exec, /path/to/ostt launch -cStdout output:
bindd = ALT, SPACE, ostt, exec, /path/to/ostt launchFile output:
bindd = ALT, SPACE, ostt, exec, /path/to/ostt launch -o ~/transcription.txtProcessing output:
bindd = ALT CTRL, SPACE, ostt process, exec, /path/to/ostt launch --paste -pReplace /path/to/ostt with the output of which ostt.
Paste Shortcut On Omarchy
Omarchy's SUPER+V universal paste binding sends SHIFT+Insert to the focused app. OSTT uses shift+insert as the default paste key on Omarchy for the same reason.
[output.paste]
paste_key = "shift+insert"Do not set paste_key = "super+v" for this workflow. SUPER+V is a Hyprland binding, not the shortcut most apps receive for paste.
Popup Appearance
On Hyprland, position is controlled by Hyprland window rules. Terminal selection, size, font size, and borderless behavior are configured in ~/.config/ostt/ostt.toml:
[popup]
terminal = "ghostty"
width = 90
height = 15
font_size = 6
borderless = trueChange the move rule to adjust position:
# Centered horizontally near the bottom
windowrule = move ((monitor_w*0.5)-(window_w*0.5)) (monitor_h*0.85), match:title ostt
# Centered on screen
windowrule = move ((monitor_w*0.5)-(window_w*0.5)) ((monitor_h*0.5)-(window_h*0.5)), match:title osttTroubleshooting
Test launch directly:
ostt launch -cTest paste directly:
ostt launch --pasteReload Hyprland config:
hyprctl reloadIf the popup appears in the wrong position, make sure the OSTT window rules are placed before catch-all rules that might override them.