Control-key layout switching for GNOME Linux

A lightweight background service for seamless input switching: tap Left Control to set English, and tap Right Control to cycle other layouts. Fast, native GTK4/Libadwaita config, Wayland & X11 ready.

GnomeLngSwitcher
GnomeLngSwitcher User Interface Mockup

Quick Install & Update

One command to install or update the daemon and GNOME extension

bash Terminal
curl -fsSL https://raw.githubusercontent.com/OleksiyM/LinuxLngSwitcher/main/install.sh | bash

Designed for GNOME

A native, responsive system-wide background utility designed with Libadwaita styling principles.

Left/Right Control

Standalone taps switch layouts instantly. Standard Control modifier operations (like Ctrl+C / Ctrl+V) are preserved and function as usual.

Wayland & X11 Native

Fully compliant with modern Linux display servers. Listens directly to `/dev/input` events, avoiding limitations of window managers.

GTK4 / Libadwaita GUI

An easy-to-use native settings interface that adapts to light/dark themes. Save config directly or schedule service auto-start at login.

Setup Guide

Follow these quick configurations steps to get layout switching running on your workstation.

Automated Installer & Updater

The easiest way to install or update GnomeLngSwitcher. It detects your CPU architecture, installs the latest binary and GNOME extension, and restarts the background service:

curl -fsSL https://raw.githubusercontent.com/OleksiyM/LinuxLngSwitcher/main/install.sh | bash

💡 Note: If you haven't added yourself to the input group yet, run sudo usermod -aG input $USER and log out once.

Install Required Libraries

Make sure you have GTK4 and Libadwaita development packages installed on your Linux system:

  1. Ubuntu / Debian:
    sudo apt update && sudo apt install -y libgtk-4-dev libadwaita-1-dev build-essential pkg-config
  2. Fedora:
    sudo dnf install -y gtk4-devel libadwaita-devel pkgconfig

Grant Keyboard Event Access

To capture standalone control keys, the utility needs read permissions for keyboard events in `/dev/input` without requiring `sudo`:

  1. Add your user account to the system input group:
    sudo usermod -aG input $USER
  2. Log out of your desktop session and log back in (or reboot) for the permissions to take effect.

Enable D-Bus Layout Helper

Modern GNOME Shell blocks programmatic layout switches by default. We install a tiny GNOME extension helper to act as a bridge:

  1. Run GnomeLngSwitcher settings: ./gnome-lng-switcher
  2. In the Access & Daemon Status category, find GNOME Extension Helper and click "Enable Helper".
  3. Log out and log in once more to load the GNOME Shell helper extension into session memory.

Start Layout Switching Daemon

Run the app settings window again to start the daemon process and toggle preferences:

  1. Launch GUI: ./gnome-lng-switcher
  2. Ensure all status indicators show green (Accessibility Access and GNOME Extension Helper are active).
  3. Configure layout assignments for Left and Right Control keys.
  4. Click "Start Daemon" to activate background keyboard interception.
  5. Toggle "Launch at Login" if you want layout switcher to launch silently during PC boot.