diff options
Diffstat (limited to 'modules/desktop/application-launcher/fzf')
| -rw-r--r-- | modules/desktop/application-launcher/fzf/default.nix | 22 | ||||
| -rw-r--r-- | modules/desktop/application-launcher/fzf/launch.sh | 10 |
2 files changed, 32 insertions, 0 deletions
diff --git a/modules/desktop/application-launcher/fzf/default.nix b/modules/desktop/application-launcher/fzf/default.nix new file mode 100644 index 0000000..0196a2b --- /dev/null +++ b/modules/desktop/application-launcher/fzf/default.nix @@ -0,0 +1,22 @@ +{ config, lib, pkgs, ... }: + +{ + options.desktop.application-launcher.fzf = { + enable = lib.mkEnableOption "Enables fzf to be used as a application launcher."; + }; + + config = lib.mkIf config.desktop.application-launcher.fzf.enable { + assertions = [ + { + assertion = config.tools.fzf.enable; + message ="Module desktop.application-launcher.fzf requires tools.fzf module to be enabled."; + } + ]; + + desktop.application-launcher.default = lib.mkDefault "fzf"; + desktop.application-launcher.command = + if config.desktop.application-launcher.default == "fzf" then + lib.mkForce "${config.desktop.terminal.command} --title 'Application Launcher' --class floating-termial -e ${(pkgs.writeShellScript "fzf-launch.sh" (builtins.readFile ./launch.sh))}" + else ""; + }; +} diff --git a/modules/desktop/application-launcher/fzf/launch.sh b/modules/desktop/application-launcher/fzf/launch.sh new file mode 100644 index 0000000..16e2565 --- /dev/null +++ b/modules/desktop/application-launcher/fzf/launch.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +selected_executable=$(find -L $(echo $PATH | tr ':' ' ') -maxdepth 1 -executable -type f 2>/dev/null | xargs -n 1 basename | sort -u | fzf --height=100% --layout=reverse --prompt " ") + +if [[ -n "$selected_executable" ]]; then + setsid "$selected_executable" >/dev/null 2>&1 & + disown + sleep + kill -9 $PPID +fi |
