KDE Plasma–style language switcher OSD for Windows
Switch keyboard layouts with a beautiful, non-intrusive OSD — just like KDE Plasma on Linux, but for Windows.
- 🪟 KDE Plasma–inspired OSD — elegant floating indicator appears on layout switch, then fades out automatically
- ⌨️ Custom Hotkey Support — adds
Ctrl+Shiftas a fast and convenient global shortcut for switching languages - 🎨 Follows your system theme — adapts to Windows light/dark mode and accent color
- 🖱️ Fully click-through — the overlay never steals focus or blocks interaction
- 📌 Tray icon — lives quietly in the system tray; right-click to toggle or quit
- ⚡ Minimal footprint — written in Rust, ~2 MB binary, near-zero CPU/RAM usage
- 🔕 No taskbar clutter — OSD window is completely invisible outside of active display
The OSD popup appears near your cursor for ~1.8 seconds when you press Ctrl+Shift (or standard Windows shortcuts), then smoothly fades out:
demo.mp4
winget install stormsia.LangSwitch- Go to Releases
- Download & run
langswitch-*.msifrom the latest release - It will install LangSwitch to C:\Program Files\LangSwitch, add a Start Menu shortcut, and automatically configure it to run on Windows startup.
- Go to Releases
- Download
langswitch.exefrom the latest release - Run it — the tray icon will appear immediately
Autostart: Place a shortcut in
shell:startup(Win+R→ typeshell:startup) to launch on login.
Requirements: Rust toolchain (stable), Windows 10/11
git clone [https://github.com/stormsia/LangSwitch.git](https://github.com/stormsia/LangSwitch.git)
cd LangSwitch
cargo build --release
# Binary: target/release/langswitch.exe
| Action | Result |
|---|---|
Press Ctrl + Shift |
Switches the language and shows OSD |
| Press standard Windows hotkey | OSD appears with new language, fades in 1.8s |
| Right-click tray icon → Intercept keys | Toggle key interception on/off |
| Right-click tray icon → Quit | Exit LangSwitch |
LangSwitch provides a built-in
Ctrl+Shiftshortcut, but it also works with whatever hotkey Windows uses for layout switching (e.g.,Alt+ShiftorWin+Space).
- A global keyboard hook intercepts layout-switch key combos (including the built-in
Ctrl+Shiftshortcut) ActivateKeyboardLayoutswitches the active layout- A Slint OSD window with
WS_EX_TOOLWINDOW | WS_EX_TRANSPARENT | WS_EX_TOPMOSTdisplays the new layout abbreviation near the cursor - The window fades out via opacity animation, then is hidden via Win32 — leaving no trace
| Component | Technology |
|---|---|
| Language | Rust |
| UI / OSD | Slint |
| Win32 API | windows-rs |
| Tray icon | tray-icon |
| Concurrency | crossbeam-channel |
- Windows 10 or Windows 11 (x64)
- No runtime dependencies — fully static binary
Issues and PRs are welcome! If you have ideas for features (multi-monitor improvements, config file, more OSD styles), open an issue to discuss.
MIT © 2026 stormsia
