> ## Documentation Index
> Fetch the complete documentation index at: https://docs.openwhispr.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Editors, IDEs and terminals

> Why terminals need a different paste shortcut, which ones OpenWhispr recognises, and what to do when yours isn't recognised.

Dictating into a code editor is the same as dictating into anything else.
Terminals are the exception, and the reason is a keyboard shortcut rather than
anything about OpenWhispr.

## Why terminals are different

<kbd>Ctrl</kbd>+<kbd>V</kbd> means "paste" almost everywhere. In a terminal it
has meant something else since long before graphical desktops, so terminals
moved paste onto <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>V</kbd>. Send the wrong
one and you get nothing, or a control character.

So OpenWhispr looks at the window that has focus and picks the shortcut to
match. You don't configure this.

## What gets recognised

<Tabs>
  <Tab title="Windows">
    By window class: **Windows Terminal**, the classic console host (**Command
    Prompt** and **PowerShell**), **ConEmu**, **mintty** (Git Bash),
    **PuTTY**, **Alacritty**, **WezTerm**, **kitty**, **Hyper**, **MobaXterm**.

    Electron-based terminals all share one window class, so they're recognised
    by their executable instead: **Termius**, **Tabby**, **Wave**, **Rio**.
  </Tab>

  <Tab title="Linux">
    Around two dozen, by window class or process name: **Konsole**,
    **GNOME Terminal**, **kitty**, **Alacritty**, **Terminator**, **xterm**,
    **urxvt**, **rxvt**, **Tilix**, **Terminology**, **WezTerm**, **foot**,
    **st**, **Yakuake**, **Ghostty**, **Guake**, **Tilda**, **Hyper**,
    **Tabby**, **sakura**, **Warp**, **Termius**, **WaveTerm**.
  </Tab>

  <Tab title="macOS">
    macOS doesn't need the distinction — <kbd>Cmd</kbd>+<kbd>V</kbd> pastes in
    Terminal, iTerm2 and everywhere else, so OpenWhispr sends the same
    keystroke throughout.
  </Tab>
</Tabs>

## Editors that contain terminals

VS Code, Cursor and other Electron-based editors are a special case on Linux:
they're a normal window that may or may not have a terminal panel focused
inside it, and there's no way to tell from outside.

OpenWhispr sends <kbd>Shift</kbd>+<kbd>Insert</kbd> to them instead. It's the
one shortcut that pastes correctly in both the editor and an embedded terminal,
and — unlike <kbd>Ctrl</kbd>+<kbd>V</kbd> — terminal AI agents such as Claude
Code, Codex and OpenCode don't intercept it as "paste image".

**Konsole** gets the same treatment on any desktop: it silently drops a
simulated <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>V</kbd>, a long-standing quirk
of how it handles simulated input.

On Linux, OpenWhispr also mirrors the text into the X11 **primary selection**,
which is what <kbd>Shift</kbd>+<kbd>Insert</kbd> pastes from in most terminals.
That's why the fallback works even where the clipboard path doesn't.

## If your terminal isn't recognised

You'll see one of two things: nothing pasted, or the text appearing somewhere
unexpected.

<Steps>
  <Step title="Paste it yourself">
    The text is on your clipboard.
    <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>V</kbd> puts it in.
  </Step>

  <Step title="Tell us which terminal">
    Recognition is a list of names, so adding yours is a small change. Email
    [support@openwhispr.com](mailto:support@openwhispr.com) with the terminal's
    name and your operating system.
  </Step>

  <Step title="In the meantime, turn automatic pasting off for that workflow">
    **Settings** → **Preferences** under **App** → **Clipboard** →
    **Automatic pasting**. Dictation still transcribes; you paste where you
    want it.
  </Step>
</Steps>

## Dictating code

Worth setting expectations: transcription models are trained on speech, not on
source code. Function names, symbols and punctuation-heavy syntax come out
approximately at best.

What works well is the prose around code — commit messages, pull-request
descriptions, comments, documentation, and prompts to a terminal AI agent.
Those are also where most people find the time saving.

The [custom dictionary](/help/customise/custom-dictionary) helps with the
vocabulary that matters to you: library names, your own product names, the
acronyms your team uses.

<Snippet file="still-need-help.mdx" />

## Related

* [Dictating into other apps](/platform/dictating-into-other-apps)
* [The text doesn't paste](/help/fix/text-not-pasting)
* [Linux](/platform/linux)
