aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xpkgs/choose-sway-keyboard/choose-kbd.sh20
-rw-r--r--pkgs/choose-sway-keyboard/default.nix26
-rw-r--r--pkgs/default.nix1
-rw-r--r--srv/hadante/configuration.nix1
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";