Releases: arumata/gswitch
Releases · arumata/gswitch
Release list
gswitch v0.6.4
Bug Fixes
- Run GTK settings-window creation and display on the GTK main loop, preventing intermittent tray startup crashes on X11 and Wayland.
- Restore the packaged default configuration content to avoid a comment-only configuration rewrite.
gswitch v0.6.3
Bug Fixes
- The tray now stores the correct evdev scancode when you choose a key on X11 or Wayland.
- Conversion triggers now accept one key only. Unsupported combinations are rejected instead of silently falling back to Double Shift.
- Debug mode no longer writes files under /tmp and omits typed keys, buffered content, and selected or converted text from terminal diagnostics.
- The security documentation now describes the per-user evdev/uinput ACL scope explicitly.
gswitch v0.6.2
Bug Fixes
- Fix selected-text conversion on Wayland so clipboard writes return before the converted text is pasted.
- Preserve GTK selections while emitting Ctrl+V, allowing selected text to be replaced reliably.
Tests
- Add regression coverage for clipboard helpers that keep running in the background.
gswitch v0.6.1
Security
- Update
golang.org/x/imageto v0.41.0 to address excessive resource
consumption and out-of-memory vulnerabilities in TIFF decoding.
Project maintenance
- Add CodeQL scanning and grouped Dependabot updates.
- Update and pin GitHub Actions to current Node.js 24-compatible revisions.
- Improve security, contribution, installation, and repository metadata.
gswitch v0.6.0
Features
- Run the daemon as an unprivileged systemd user service instead of a root system service.
- Grant the active local session access to keyboard event devices and
/dev/uinputthrough loginduaccessACLs, without requiring membership in theinputgroup. - Start the daemon with the graphical session and let the tray control the user service directly.
Bug Fixes
- Migrate active legacy root services without leaving duplicate daemons behind.
- Retry keyboard hotplug while udev and logind apply device ACLs.
- Run Wayland clipboard helpers in the correct user session and allow the temporary directory required by
wl-copy. - Prefer the active desktop's layout source when GNOME and KDE are both installed.
Upgrade note
Existing users upgrading from v0.5.0 must enable the new user service once from their graphical session:
systemctl --user enable --now gswitch.serviceThe package upgrade stops and removes the legacy root service automatically.
gswitch v0.5.0
Features
- Full GNOME support on Wayland and X11: session environment discovery, layout detection from GNOME input sources, key emission, and clipboard integration
- Tray: the device list is now read via sysfs and works without adding the user to the
inputgroup
Bug Fixes
- Per-session settings are now read as the session user, fixing silent schema-default fallbacks on dbus-broker systems such as Fedora
- The XKB parser honors the layout's default section flag instead of name-based heuristics, fixing detection for layouts whose default section is not named
basic
Quality
- The release was validated by an automated end-to-end suite across 7 environments: GNOME and KDE Plasma, Wayland and X11, deb and rpm (Ubuntu 24.04, Fedora 44 with SELinux enforcing), with five layout pairs (Russian, Ukrainian, German QWERTZ, French AZERTY, Spanish)
- New CI pipeline (build, vet, test, lint), security policy, contributing guide, code of conduct, and issue templates
- README: demo GIF, tray screenshot, security & privacy section, tested-environments matrix
gswitch v0.4.1
Features
- The application version is now visible in the tray: in the settings window footer and in the tray icon tooltip
gswitch v0.4.0
KDE Plasma on Wayland is now fully supported.
Features
- Wayland session environment (
WAYLAND_DISPLAY,XDG_SESSION_TYPE) is detected from the active session and applied in every mode — previously the service only saw X11 variables - Clipboard uses wl-clipboard in Wayland sessions even when XWayland provides a
DISPLAY, so selection conversion sees both native and X11 application selections - Keyboard layouts and the layout-switch key are read from KDE's
kxkbrc— auto-detection no longer depends onsetxkbmap, which is unavailable on Wayland - Tray icon reimplemented over D-Bus StatusNotifier (
fyne.io/systray): fixes a crash on Ubuntu 26.04 and drops thelibayatana-appindicatordependency from DEB/RPM packages
Bug Fixes
- GNOME detect provider returned gsettings schema defaults (
Super+Space) on non-GNOME desktops, shadowing the real layout-switch setting; it is now skipped outside GNOME sessions - systemd unit blocked
wl-copytemp files underProtectSystem=strict;/tmpis now writable for the service
Upgrade notes
DEB/RPM no longer depend on appindicator libraries. Config format is unchanged.
gswitch v0.3.1
Bug Fixes
- Selection conversion via Ctrl+double-Shift never triggered when nothing had been typed beforehand — the usual case when selecting text with the mouse. The trigger is now detected independently of the typed-text buffer. (333b099)
gswitch v0.3.0
First public release.
gswitch is a keyboard layout switcher for Linux that corrects text typed in the wrong layout. It works at the kernel input level (evdev/uinput), so it is desktop-agnostic: X11, Wayland, console.
Highlights
- Last-word correction: double-tap Shift after typing in the wrong layout
- Whole-line correction: hold one Shift, double-tap the other
- Selected-text conversion via Ctrl+trigger using the clipboard
- Custom trigger key support as an alternative to double-Shift
- Auto-detection of all connected keyboards with hotplug support; per-device blacklist
- Auto-detection of the layout switch key (xkb, GNOME, KDE providers)
- System tray application with a settings GUI and current-layout indicator
- Native packages: systemd unit, udev rules, polkit policy included
Install
Download the DEB (Debian/Ubuntu) or RPM (Fedora/openSUSE) below, then:
sudo dpkg -i gswitch_0.3.0_linux_amd64.deb # or: sudo rpm -i gswitch_0.3.0_linux_amd64.rpm
sudo systemctl enable --now gswitch