diff options
| -rwxr-xr-x | pkgs/choose-sway-keyboard/choose-kbd.sh | 20 | ||||
| -rw-r--r-- | pkgs/choose-sway-keyboard/default.nix | 26 | ||||
| -rw-r--r-- | pkgs/default.nix | 1 | ||||
| -rw-r--r-- | srv/hadante/configuration.nix | 1 |
4 files changed, 48 insertions, 0 deletions
diff --git a/pkgs/choose-sway-keyboard/choose-kbd.sh b/pkgs/choose-sway-keyboard/choose-kbd.sh new file mode 100755 index 0000000..3b3d251 --- /dev/null +++ b/pkgs/choose-sway-keyboard/choose-kbd.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +declare -a t_label t_layout t_variant +variant() { + t_label+=("$1") + t_layout+=("$2") + t_variant+=("$3") +} +variant Deutsch de "" +variant QWERTY us "" +variant Colemak us "colemak" +choice=$(for idx in "${!t_label[@]}" ; do + echo "${t_label[$idx]} (${t_layout[$idx]}:${t_variant[$idx]})" +done | fuzzel -d --index) +echo Choosing ${t_label[$choice]} +choose() { + swaymsg 'input "type:keyboard" xkb_layout "'"${t_layout[$choice]}"'"; input "type:keyboard" xkb_variant "'"${t_variant[$choice]}"'"' +} +# Execute the layout change twice since sometimes it needs to be layout -> variant and sometimes it needs to be variant -> layout +choose +choose
\ No newline at end of file diff --git a/pkgs/choose-sway-keyboard/default.nix b/pkgs/choose-sway-keyboard/default.nix new file mode 100644 index 0000000..9a82058 --- /dev/null +++ b/pkgs/choose-sway-keyboard/default.nix @@ -0,0 +1,26 @@ +{ + symlinkJoin, + slurp, + sway, + makeWrapper, + jq, + fuzzel, + coreutils, + pkgs, +}: +let + script-name = "choose-sway-keyboard"; + script = (pkgs.writeScriptBin script-name (builtins.readFile ./choose-kbd)).overrideAttrs (old: { + buildCommand = "${old.buildCommand}\n patchShebangs $out"; + }); +in +symlinkJoin { + name = script-name; + paths = [ + script + sway + fuzzel + ]; + buildInputs = [ makeWrapper ]; + postBuild = "wrapProgram $out/bin/${script-name} --prefix PATH : $out/bin"; +} diff --git a/pkgs/default.nix b/pkgs/default.nix index aa1aecb..fbf1e54 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -1,4 +1,5 @@ final: prev: { swaykill = final.callPackage ./swaykill { }; swayprop = final.callPackage ./swayprop { }; + choose-sway-keyboard = final.callPackage ./choose-sway-keyboard { }; } diff --git a/srv/hadante/configuration.nix b/srv/hadante/configuration.nix index d8685c4..075f4b4 100644 --- a/srv/hadante/configuration.nix +++ b/srv/hadante/configuration.nix @@ -351,6 +351,7 @@ in foot ente-auth + choose-sway-keyboard ] ); system.stateVersion = "25.05"; |
