Skip to content

tray-only · pure Rust · open-source · zero telemetry

Hola, España! PolterType is an automatic keyboard layout switcher: it notices when you type in the wrong keyboard layout, switches the layout, and retypes the word.

PolterType lives in your system tray, notices the instant a word comes out in the wrong keyboard layout, switches the layout, and retypes the word for you. A friendly poltergeist for anyone whose keyboard juggles more than one language.

v0.2.2 · free & open source · MIT

Ships with dictionaries for English, Ukrainian, Russian, German, Spanish and French. Any other layout can be added with a TOML file.

How it works

From gibberish to fixed, in the space of one word

1 · Hears keys, not words

Key events are buffered in memory for the word you're typing — and only that word. Nothing is written to disk, nothing is logged.

2 · Scores both readings

The same keystrokes are read through each active layout and scored against bundled dictionaries and heuristics — which language did you actually mean?

3 · Flips and retypes

The layout switches, the garbled word is erased and retyped correctly, and you keep typing like nothing happened. Enter and Tab are never re-pressed — no phantom submits.

Features

Haunts your typos, respects your code

Stays out of your code

IDEs and terminals are skipped by default, identifier-looking tokens are never touched, and a plausibility check keeps real-but-rare words — kubectl, terraform, surnames — from being "fixed" into noise.

Two hotkeys, rebindable

Pause auto-switching, or force-fix the last word — even inside an IDE, ignoring every filter. That's the whole cheat sheet.

Smart commands

Short typed triggers expand snippets, switch layouts or open files — a pocket text expander, scoped per app if you like.

Your vocabulary

Teach it project names and slang in the Wordlists pane — one word per line, with per-app profiles when kubectl is a word in VS Code but not in chat.

Per-app rules

A skip list ships preloaded with editors and terminals; add or remove any app. Commands and wordlists can be scoped the same way.

Quiet, native, tiny

One ~10–15 MB binary in pure Rust — no WebView, no Node, no background chatter. A real settings window when you need it, a tray icon when you don't. Autostart, sound themes and per-language toggles included.

Privacy

Nothing you type ever leaves your machine.

A keyboard listener earns trust with constraints, not promises. These four are engineering rules of the codebase — break one, and the build doesn't ship.

Zero telemetry
There is no analytics to opt out of — the code simply contains none.
No network calls
The default build never touches the network. The optional AI layer is off by default, and remote AI needs a second explicit switch.
RAM-only word buffer
The word being checked lives in memory just long enough to be scored, and is never logged or written to disk.
MIT open source
Read the code, build it yourself, or watch the release workflow build it for you.
audit the source →

Download

Adopt your poltergeist

v0.2.2, free under MIT. Builds are produced by the repository's release workflow and published on GitHub Releases.

Windows 10 / 11

.msi installer

Works end-to-end.

Per-user install: no admin rights, no UAC prompt.

First launch: SmartScreen may say "Windows protected your PC" — click More info, then Run anyway.

Get the .msi

macOS 11+

.dmg · universal

Best-effort — CI-validated, not yet tuned on real hardware.

Drag to /Applications, then grant Accessibility permission.

First launch: First launch: right-click the app and pick Open (unverified-developer warning).

Get the .dmg

Linux · x86_64

.AppImage

X11: working, with zero setup. Wayland best-effort: Hyprland, KDE, GNOME family, IBus, Fcitx5.

chmod +x and run. On X11 that’s it; Wayland needs a one-time setup script for evdev permissions.

First launch: No installer, no signature dialogs — it’s just an executable file.

Get the .AppImage

The installers are unsigned

That's why Windows SmartScreen and macOS Gatekeeper show a warning on first launch — the workarounds above get you past it once, and code signing is planned for a later phase. If you'd rather not trust an unsigned binary (fair!), the build-from-source path is documented, or grab the exact release & changelog on GitHub.

FAQ

Questions people actually ask

Why does my keyboard type in the wrong language?

Because the keyboard layout your operating system has active does not match the language you meant to type. The keys send the same scancodes either way, so the OS happily prints “Hola, Espa;a” instead of “Hola, España” — the text only looks like gibberish; it is your words, mapped through the wrong layout. Nothing is broken, and the word can be recovered exactly.

How do I fix a word I typed in the wrong keyboard layout?

Normally you delete it, switch the layout by hand, and type it again. PolterType removes those three steps: it watches the word you are typing, notices the moment it only makes sense under a different layout, switches the layout for you and retypes the word. You keep typing and the correction happens behind you.

Does PolterType run on Windows, macOS and Linux?

Yes, with honest differences. Windows 10 and 11 works end to end. On Linux, X11 works with zero setup, while Wayland is best-effort: layout switching is supported on Hyprland, KDE Plasma, the GNOME family, IBus and Fcitx5, and it needs a one-time setup script for evdev permissions. macOS 11+ needs Accessibility permission, and is the one platform that has not yet been tuned on real hardware.

Is PolterType free?

Yes. PolterType is free and open source under the MIT licence, with no paid tier, no account and no subscription. Builds are published on the GitHub releases page, and you can compile it from source yourself.

Does PolterType log or upload what I type?

No. It never logs typed text, and it makes no network calls. The word being examined lives in memory only and is discarded as soon as it is done with. There is no telemetry of any kind. The optional AI subsystem is off by default, and sending anything to a remote model takes a second, separate opt-in.

Which keyboard layouts and languages does it support?

PolterType ships with dictionaries for English, Ukrainian, Russian, German, Spanish and French. Layouts live in data rather than in code, so any other layout can be added with a single TOML file — no rebuild of the app required.

Will it interfere with my code while I am programming?

No, that case is designed for. PolterType skips a default list of developer apps — VS Code, Cursor, the JetBrains family, Sublime, Zed, Windows Terminal, alacritty, kitty, wezterm, PowerShell and cmd among them — and the list is yours to edit. Even outside an editor, the engine refuses to auto-switch on anything that looks like an identifier: snake_case, camelCase, or a token mixing letters and digits.

Can I pause it, or switch a word back by hand?

Yes. Ctrl+Shift+Space pauses and resumes auto-switching, and Ctrl+Shift+Backspace force-switches the most recent word, ignoring every filter. Both are rebindable in Settings, alongside a per-app exception list.

Why does Windows or macOS warn me when I install it?

Because the installers are not code-signed yet. Windows SmartScreen and macOS Gatekeeper warn about any unsigned app, regardless of what it does. On Windows choose “More info” and then “Run anyway”; on macOS right-click the app and choose “Open”. Code signing is planned for a later release.