diff options
| author | Alexander Kassouni <alex@kassouni.net> | 2026-09-02 21:20:10 -0700 |
|---|---|---|
| committer | Alexander Kassouni <alex@kassouni.net> | 2026-09-02 21:20:10 -0700 |
| commit | 47dde98fd2cf11ea544bb1c8d8d548ee0bda0f54 (patch) | |
| tree | fb79c45ef1c0f0016e480e06dff625cf3fc1c91a /users/kassouni/palette/fuzzel-palette.nix | |
| parent | 1c5fa1c205f2bb78f8e1179b0576f3c3578dad69 (diff) | |
some sway stuff
Diffstat (limited to 'users/kassouni/palette/fuzzel-palette.nix')
| -rw-r--r-- | users/kassouni/palette/fuzzel-palette.nix | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/users/kassouni/palette/fuzzel-palette.nix b/users/kassouni/palette/fuzzel-palette.nix new file mode 100644 index 0000000..d6d4774 --- /dev/null +++ b/users/kassouni/palette/fuzzel-palette.nix @@ -0,0 +1,27 @@ +{ + config, + lib, + pkgs, + ... +}: +let + cfg = config.kassouni.palette; +in +{ + # Wayland front end for the palette. `--index` is fuzzel's answer to rofi's + # `-format i`, so the same index-into-exes trick works. Unlike rofi, fuzzel + # will happily accept text that matches no row; it exits non-zero there, but + # the numeric guard keeps a surprising build of fuzzel from indexing the + # array with garbage. + home.packages = [ + (pkgs.writers.writeBashBin "open-palette-fuzzel" '' + set -eu + exes=(${lib.concatMapStringsSep " " (c: "${c.exe}") cfg.commands}) + idx=$(${pkgs.fuzzel}/bin/fuzzel --dmenu --index --prompt "palette " <<EOF +${lib.concatMapStrings (c: "${c.icon} ${c.name}\n") cfg.commands}EOF + ) + [[ $idx =~ ^[0-9]+$ ]] && [[ $idx -lt ''${#exes[@]} ]] || exit 1 + exec "''${exes[$idx]}" + '') + ]; +} |
