OpenWhispr on Linux: fixing the scroll lag and getting Hold mode to work

—

by

in

Read Time

2–3 minutes

I’ve been using OpenWhispr as my dictation app on Fedora (GNOME, Wayland). It’s genuinely good, but on Linux the defaults have a few rough edges: the UI scrolls like it’s underwater, and the push-to-talk “Hold” mode doesn’t work out of the box. Here’s the setup that made it feel native.

The scroll lag: why it happens

OpenWhispr forces software rendering on Linux — it launches itself with --disable-gpu-compositing to avoid transparent-window flicker. The side effect is that every scroll frame gets painted on the CPU, which stutters badly even on fast hardware.

You can confirm it: run ps -ef | grep open-whispr and look for --disable-gpu-compositing in the process arguments. If it’s there, that’s your lag.

The fix is removing that one switch from the app’s bundle (it lives inside resources/app.asar) — or using a build where upstream has made it conditional. Once it’s gone, scrolling is smooth.

Hold mode (push-to-talk)

On Linux, Hold needs raw keyboard access. Without it, the app quietly falls back to Tap mode:

sudo usermod -aG input $USER

Then log out and back in — group changes only apply to new sessions. After that, Hold is selectable in Settings → Hotkeys → Activation Mode, and it actually works: hold the key, speak, release, and the text appears.

Pick a hotkey that GNOME will accept

Some keys can’t be grabbed globally on GNOME — plain Escape never registers. Good choices: Ctrl+Shift+Space, F8/F9, or a dedicated key. I use the Copilot key on my keyboard (it shows up as Super+Shift+F23).

Wayland or X11?

The app runs under XWayland by default because its floating dictation overlay needs X11 for cursor positioning. If you prefer native Wayland, you can switch via ~/.config/open-whispr-flags.conf (one line: --ozone-platform=wayland) — but the overlay then shows up as a plain window. The best combo I found: default X11 mode + the scroll fix above.

One small known quirk

Activation Mode can display as “Tap” after a restart even when you saved “Hold” — the app rewrites the setting at startup before your hotkey loads. Hold still behaves correctly; it’s a state-sync issue that’s reported upstream.

The end result: smooth scrolling, working hold-to-talk, and dictation that pastes anywhere. If you’re on Fedora/GNOME and bouncing off the app, this is the setup that makes it stick.