Tiling compositors
Voice typing on Hyprland, sway and i3
Tiling setups are hand-built, so Vocalinux cannot assume the pieces a full desktop provides. This guide covers which text injection backend applies on each compositor, how to bind dictation to a key in your config, and the fallback that works when typing into other windows does not.
Support status
| Compositor / WM | Status | Session | Notes |
|---|---|---|---|
| sway | Good support | Wayland | Wayland native, uses wtype |
| i3 | Good support | X11 | Uses xdotool |
| Hyprland | Experimental | Wayland | May need wtype configuration |
Status comes from the project's desktop compatibility table. For GNOME, KDE and the general Wayland picture, see voice dictation on Wayland.
Text injection options
Vocalinux picks a backend automatically. On Wayland, when IBus is not selected, it tries the RemoteDesktop portal first, then ydotool, then wtype, and finally xdotool for XWayland windows. sway and Hyprland are on its list of compositors that do not bridge IBus to native Wayland apps, so IBus is skipped there unless the ibus-wayland helper (IBus 1.5.32 and newer) is running.
| Backend (config value) | Where it applies | Needs |
|---|---|---|
| IBus (ibus) | Desktops that bridge IBus; on sway and Hyprland only with ibus-wayland running | IBus. On sway and Hyprland, Vocalinux skips IBus unless the ibus-wayland bridge is running |
| RemoteDesktop portal (portal) | Wayland desktops whose portal implements RemoteDesktop | org.freedesktop.portal.RemoteDesktop. GNOME and KDE Plasma have it; most wlroots compositors do not |
| ydotool (ydotool) | Any Wayland session | A usable /dev/uinput and a working ydotoold setup |
| wtype (wtype) | sway, Hyprland and other virtual-keyboard compositors | The wtype package |
| xdotool (xdotool) | i3 and other X11 sessions; XWayland windows only on Wayland | The xdotool package |
Pin a backend
Edit ~/.config/vocalinux/config.json and restart Vocalinux. An explicit non-IBus value skips IBus selection. If the pinned tool is missing, Vocalinux warns and falls back to its normal order.
{
"text_injection": {
"backend": "wtype"
}
}To try a backend for one run without saving it:
user@linux:~$ VOCALINUX_FORCE_BACKEND=wtype vocalinux --debugTerminals
When text goes in through the clipboard, Vocalinux sends Ctrl+V in normal fields and Ctrl+Shift+V in terminal windows. Terminal detection works on Hyprland, sway and niri.
Setup steps
- 1
Install Vocalinux and the typing tools
Install Vocalinux, then make sure wtype and wl-clipboard are installed on sway or Hyprland, or xdotool on i3.
- 2
Check that the tool can type
Focus a text field and run wtype "hello" on Wayland or xdotool type "hello" on X11. If nothing appears, Vocalinux cannot type there either.
- 3
Choose how dictation starts
Either add yourself to the input group for the built-in hotkey, or turn on External Activation and bind vocalinux --toggle in your compositor config.
- 4
Pin a backend if autodetection guesses wrong
Set text_injection.backend in ~/.config/vocalinux/config.json, for example to wtype, then restart Vocalinux.
Keybinds via D-Bus
On Wayland the built-in hotkey reads /dev/input, so your user must be in the input group (the source installer does this; .deb and .rpm packages cannot). The alternative, added in v0.18.0, is to turn on Settings → Shortcuts → External Activation (Desktop Shortcut) and let the compositor own the key. These binds toggle dictation; they cannot do push-to-talk.
bindsym $mod+Shift+d exec vocalinux --togglebind = SUPER SHIFT, D, exec, vocalinux --toggleOr keep the built-in listener and join the group, then log out and back in:
user@linux:~$ sudo usermod -aG input $USERThe full D-Bus interface and Flatpak command are in global shortcuts. Minimal window-manager sessions may also need their own autostart line; see autostart.
The Dictation Pad fallback
If no backend types reliably on your setup, send dictation to the Dictation Pad instead (added in v0.18.0). It is an in-app window that receives the text, and you copy it out by hand, so no injection path is involved. Turn on Settings → Dictation → Dictate into Dictation Pad, then open it with Open Dictation Pad in the same group or Dictation Pad in the tray menu. Later releases fixed the pad ghosting away when idle under a Wayland compositor (v0.18.1) and stopped it travelling between workspaces with Settings (v0.18.5). Details on the Dictation Pad page.
Troubleshooting
Nothing is typed anywhere
Install the Wayland tools and test them by hand, then run Vocalinux with debug logging and check which backend it reports. The startup log records a pin request; a live test in the target app is the real confirmation.
user@linux:~$ sudo apt install wtype wl-clipboard xclip xseluser@linux:~$ wtype "hello"ydotool is chosen but does nothing
ydotool needs /dev/uinput and a running ydotoold. Fix that setup or pin wtype.
The hotkey never fires
Confirm you are in the input group in the current session, or switch to External Activation with a compositor bind. On i3 (X11) the built-in X11 listener handles the hotkey without that group.
FAQ
Why does dictation work in my browser but not in native Wayland apps?
That is the classic IBus symptom: the compositor does not relay IBus commits to native Wayland clients, so IBus reports success while nothing appears. Pin the wtype backend and restart Vocalinux.
Does the RemoteDesktop portal work on sway or Hyprland?
Only if your portal backend implements org.freedesktop.portal.RemoteDesktop. GNOME and KDE Plasma do and most wlroots compositors do not. When it is missing, Vocalinux moves on to ydotool and then wtype.
Can I use push-to-talk on a tiling compositor?
Yes, with the built-in listener, which on Wayland needs your user in the input group. A compositor keybind over D-Bus can only toggle dictation.
Is Hyprland supported?
Hyprland is marked Experimental in the compatibility table and may need wtype configuration. sway and i3 are marked as good support.
More help: troubleshooting and desktop reliability.
Dictate on your tiling setup
Install Vocalinux, check that wtype or xdotool can type, and bind dictation to a key in your compositor config.