diff --git a/configs/i3.nix b/configs/i3.nix index c83c9cf..ceaa804 100644 --- a/configs/i3.nix +++ b/configs/i3.nix @@ -107,7 +107,7 @@ in with config.niveum; { "${modifier}+a" = "exec ${pkgs.rofi}/bin/rofi -display-window — -show window"; "${modifier}+b" = "workspace prev"; "${modifier}+c" = "split h"; - "${modifier}+d" = "exec ${pkgs.rofi}/bin/rofi -display-combi $ -show combi -show-icons -combi-modi drun#run -modi drun#run"; + "${modifier}+d" = "exec ${pkgs.dmenu}/bin/dmenu_path | ${pkgs.scripts.fzfmenu}/bin/fzfmenu | \${SHELL:-/bin/sh} &"; "${modifier}+e" = "layout toggle split"; "${modifier}+f" = "fullscreen toggle"; "${modifier}+h" = "focus left"; diff --git a/packages/scripts/default.nix b/packages/scripts/default.nix index 2c41dbf..ac886dc 100644 --- a/packages/scripts/default.nix +++ b/packages/scripts/default.nix @@ -97,6 +97,12 @@ in name = "notetags"; }; + fzfmenu = makeScript { + src = ./fzfmenu.sh; + name = "fzfmenu"; + propagatedBuildInputs = [ pkgs.alacritty pkgs.fzf ]; + }; + bvg = pkgs.callPackage ./bvg.nix {}; nav = pkgs.callPackage ./nav.nix {}; } diff --git a/packages/scripts/fzfmenu.sh b/packages/scripts/fzfmenu.sh new file mode 100755 index 0000000..865d848 --- /dev/null +++ b/packages/scripts/fzfmenu.sh @@ -0,0 +1,40 @@ +#!/bin/sh +set -efu +PROMPT="fzfmenu: " + +for i in "$@"; do + case $i in + -p) + PROMPT="$2" + shift + shift + break ;; + -l) + # no reason to filter number of lines + LINES="$2" + shift + shift + break ;; + -i) + # we do this anyway + shift + break ;; + *) + echo "Unknown option $1" >&2 + shift ;; + esac +done + +INPUT=$(cat) +OUTPUT="$(mktemp)" +alacritty \ + --title fzfmenu \ + --dimensions 85 15 \ + -e sh -c \ + "echo \"$INPUT\" | fzf \ + --history=/dev/null \ + --no-sort \ + --prompt=\"$PROMPT\" \ + > \"$OUTPUT\"" 2>/dev/null +cat "$OUTPUT" +rm "$OUTPUT"