New settings UI, UWP/WinUI window support, and correct layout selection with multiple keyboards.
Added
- Per-user configuration in
%LOCALAPPDATA%\Switchy\, with one-time migration from legacy installs. Portableswitchy.ininext to the executable is still supported. - Tray icon with a menu: Settings, Reload config, Enable/Disable, About, Exit. The tooltip shows the current state, including
Alt+SwitchKeytoggles.TrayIcon=0hides the icon without disabling switching. - Settings dialog editing every
[Settings]key: layout pickers listing the user's installed keyboards (custom MSKLC included), switch-key capture, timeout presets, fullscreen-exclude modes and more. - Exclusion editor with a Spy++-style crosshair window picker: drag it onto a window to add that application to
ExcludeSwitch/ExcludeConvertwith the chosen scope. - Live reload (
AutoReload=1, default): external edits of the active config apply on the fly; a broken edit keeps the previous working configuration. - Localized tray interface, dialogs and error messages in English, Russian, Ukrainian, German and French.
DebugINI setting: logs layout resolution and every switch attempt toswitchy.lognext to the active config.
Fixed
- Custom MSKLC layouts sharing a LANGID with a standard layout (e.g. a custom English or Russian layout) now resolve via
Keyboard Layout\Substitutesinstead of possibly picking the standard one. - An invalid
Layout1/Layout2KLID no longer falls back to a system layout; Switchy reports the error and does not start. - Identical
Layout1/Layout2are now rejected at startup instead of silently breaking conversion. - Layout switching now works in Windows 11 Settings and other UWP/WinUI framed windows.
Changed
- Auto-detection with more than two loaded layouts now picks your top two languages by Windows'
Preloadorder (each language's default keyboard), instead of the first two fromGetKeyboardLayoutList(). Still-ambiguous setups require explicit KLIDs inswitchy.ini. - MSI now installs
switchy.default.inias a read-only template and keeps per-user configs untouched during upgrades. - Launching a second
switchy.exenow offers to open the settings dialog of the running instance instead of showing an error.