1. Why Ctrl+V does nothing useful in a Linux terminal
GNOME's Terminal help says paste is Shift+Ctrl+V and that “the standard keyboard shortcuts, such as Ctrl + C, cannot be used to copy and paste text.” KDE's Konsole documents Edit → Paste as Ctrl+Shift+V. kitty maps ctrl+shift+v to paste_from_clipboard, and its Shift+Insert pastes the primary selection, not the clipboard. Terminals keep Ctrl+C free to interrupt a running program.
A plain Ctrl+V therefore reaches the shell. In bash, readline binds Ctrl+Q and Ctrl+V to quoted-insert, which adds the next character typed to the line verbatim. A dictation tool that pastes with the desktop-standard Ctrl+V gets no text in a terminal, or a stray control character. Tools that let you pick Ctrl+Shift+V per app can work around it, and typing tools avoid the question.
2. The five typing helpers and when each one works
A typing helper creates keystrokes on behalf of another program. Which one works depends on your display server, and on Wayland it also depends on your compositor. None of them recognizes speech; they only type the text another program gives them.
The X11 helper is the oldest. xdotool's README says it simulates input through X11's XTEST extension and warns, “If you are using Wayland, please be aware this software will not work correctly.” On Wayland, wtype is “xdotool type for Wayland” and works through the virtual-keyboard Wayland protocol, which wlroots compositors such as Sway and Hyprland provide. KWtype's README describes it as virtual keyboard input for KDE Plasma Wayland, using a privileged Fake Input protocol that only KWin implements.
- xdotool: X11 sessions only, using the XTEST extension.
- wtype: Wayland compositors with the virtual-keyboard protocol, such as Sway and Hyprland.
- kwtype: KDE Plasma on Wayland, using KWin's Fake Input protocol.
- dotool: any session, through the kernel's uinput module; it handles keyboard layouts.
- ydotool: any session, through uinput, with the ydotoold daemon required since v1.0.0.
3. Find your session type and install a helper
Run echo $XDG_SESSION_TYPE in a terminal; it prints x11 or wayland. On GNOME's Wayland session, wtype and kwtype don't apply, which leaves the uinput helpers. dotool's README says it “works systemwide and supports keyboard layouts”; dotool was written for the Numen project, and a source install ends by reloading udev rules with sudo udevadm control --reload && sudo udevadm trigger. ydotool's README says its daemon needs access to /dev/uinput, which “usually requires root permissions.”
On Ubuntu, packages.ubuntu.com lists wtype, xdotool, and ydotool in the universe repository for both 22.04 (jammy) and 24.04 (noble) as of October 2026, so sudo apt install wtype or sudo apt install xdotool is enough. dotool isn't in the Ubuntu archive, so build it from source with Go, libxkbcommon-dev, and scdoc. Ubuntu's ydotool package is version 0.1.8, older than the 1.0 releases that the project's README now describes.
- X11: sudo apt install xdotool.
- Sway or Hyprland: sudo apt install wtype.
- KDE Plasma Wayland: build KWtype (Qt6, KWayland, xkbcommon) with meson.
- GNOME Wayland: dotool from source or ydotool, with /dev/uinput access.
4. Wayland and global push-to-talk keys
On Wayland, an app can't always grab a key system-wide, so a hold-to-talk shortcut that works on X11 may never fire. The reliable workaround is to let the desktop own the key and run a command. GNOME's help describes it: Settings → Keyboard → View and Customize Shortcuts → Custom Shortcuts, then Add Shortcut. Enter a name and a command, press the key combination, and click Add. GNOME notes that the command must be a valid system command, so test it in a terminal first.
Choose a key no terminal uses. Ctrl+Shift+C and Ctrl+Shift+V are taken in nearly every Linux terminal, and Konsole also uses Ctrl+Shift+. and Ctrl+Shift+/ for input copying. A desktop-level shortcut fires before the terminal sees the key, so a collision silently takes the key away from the terminal.
5. Terminal settings that change where dictated text goes
Konsole has Edit → Copy Input To → All Tabs in Current Window, which “allows input from the current session to be sent simultaneously to all sessions in current window,” and Select Tabs… (Ctrl+Shift+.) to choose specific tabs. With either on, dictated text reaches every selected shell at once, which is useful for fleets and dangerous by accident. Edit → Copy Input To → None (Ctrl+Shift+/) turns it off.
kitty applies paste_actions to pasted and dropped text. The default, quote-urls-at-prompt,confirm, asks before pasting text that contains terminal control codes, and confirm-if-large asks before pastes above 16 KB. Text from a typing helper arrives as keystrokes rather than a paste, so these checks don't see it. Review what you dictate the same way you'd review anything you type.
6. IraVoice on Linux (beta): typed, not pasted
IraVoice 1.2.2 runs on Linux as a beta, alongside macOS and Windows. It installs with one command, curl -fsSL https://iravoice.com/install.sh | bash, as an AppImage that runs on any 64-bit distribution from 2022 or later and updates itself; you can also download the AppImage, make it executable with chmod +x, and run it. A .deb (sudo apt install ./IraVoice-*.deb) and an .rpm (sudo dnf install ./IraVoice-*.rpm) are offered too; they install the command /usr/bin/iravoice and don't update themselves. There is no Flatpak, Snap, or AUR package. Speech recognition runs on the computer with NVIDIA Parakeet and works offline once the model has downloaded.
IraVoice types the words directly through a typing helper it picks automatically: wtype, kwtype, dotool, ydotool, or xdotool. Because nothing is pasted, the Ctrl+V versus Ctrl+Shift+V problem never arises in GNOME Terminal, Konsole, kitty, or any other terminal. You may need to install one of the helpers yourself, and the uinput helpers need permission to /dev/uinput. Wayland support is limited in the beta.
The default key is Ctrl+Space; you can change it under General. If it doesn't reach IraVoice on Wayland, bind iravoice --toggle-transcription (or, with the AppImage, its full path followed by --toggle-transcription) to a GNOME or KDE custom shortcut, which starts and stops dictation in the running app. Two limits apply on Linux: code names aren't available, because the beta can't detect the focused app, and the Esc cancel shortcut isn't offered there (Cancel is in IraVoice's tray menu). To correct a misheard word so IraVoice learns it, press Ctrl+Alt+Shift+F or, if Wayland keeps that key from reaching IraVoice too, choose Fix Last Dictation… from the tray menu.