From: Plom Heller Date: Sat, 19 Sep 2026 09:43:54 +0000 (+0200) Subject: Add keyboard layout toggling. X-Git-Url: https://plomlompom.com/repos/test?a=commitdiff_plain;h=0954d74f3afa3a85e47d2c38b1fb80ac1c7249fd;p=confplom Add keyboard layout toggling. --- diff --git a/home/user/.config/sway/config b/home/user/.config/sway/config index e6471d5..2f297b3 100644 --- a/home/user/.config/sway/config +++ b/home/user/.config/sway/config @@ -11,8 +11,8 @@ workspace_layout tabbed # simple green background output * background #559911 solid_color -# keyboard layout -input * xkb_layout "us" +# keyboard layout – to be switched with ~/.profile.d/kb +input * xkb_layout "us,de" # deactivate t490s touchpad input 1267:47:Elan_Touchpad events disabled diff --git a/home/user/.config/sway/status.py b/home/user/.config/sway/status.py index acfb97a..2d2949a 100755 --- a/home/user/.config/sway/status.py +++ b/home/user/.config/sway/status.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 'Sway bar status line generator.' from datetime import datetime -from json import dumps as json_dumps +from json import dumps as json_dumps, loads as json_loads from pathlib import Path from re import compile as re_compile from subprocess import run as subprocess_run @@ -17,6 +17,8 @@ CMD_PASTE = 'wl-paste' CLIP_LEN_MAX = 32 MSG_CLIPBOARD_EMPTY = 'Nothing is copied' +KB_LAYOUTS = ('us', 'de') # keep in sync with sway config's xkb_layout + AUDIO_DEVS_LABELS = (('sink', 'vol'), ('source', '--mic')) @@ -102,6 +104,18 @@ def info_datetime( return datetime.now().astimezone().strftime('%Y-%m-%d %H:%M:%S %z/%Z') +def info_layout( + ) -> str: + 'Produce two-character name of active keyboard layout.' + inputs = json_loads(subprocess_run(('swaymsg', '-t', 'get_inputs', '-r'), + capture_output=True, + check=True).stdout) + indices = {dev['xkb_active_layout_index'] + for dev in inputs if 'xkb_active_layout_index' in dev} + assert len(indices) == 1 + return KB_LAYOUTS[indices.pop()] + + def info_network( ) -> tuple[str, ...]: 'Produce one status block full_text per connected ethernet/wifi interface.' @@ -173,6 +187,7 @@ if __name__ == '__main__': info_battery(), info_thermal(), info_datetime(), + info_layout(), info_audio())]), end=',\n', flush=True) sleep(1) diff --git a/home/user/.profile.d/kb b/home/user/.profile.d/kb new file mode 100644 index 0000000..af82ed0 --- /dev/null +++ b/home/user/.profile.d/kb @@ -0,0 +1 @@ +alias kb="swaymsg 'input * xkb_switch_layout next'"