From 1474caa8f624aa568ea011629d1aec4ae2aca3c1 Mon Sep 17 00:00:00 2001 From: Arpit Chakladar <54011232+arpitchakladar@users.noreply.github.com> Date: Thu, 3 Oct 2024 22:03:12 +0530 Subject: Using fzf as the application launcher. --- .../desktop/application-launcher/fzf/default.nix | 22 ++++++++++++++++++++++ modules/desktop/application-launcher/fzf/launch.sh | 10 ++++++++++ 2 files changed, 32 insertions(+) create mode 100644 modules/desktop/application-launcher/fzf/default.nix create mode 100644 modules/desktop/application-launcher/fzf/launch.sh (limited to 'modules/desktop/application-launcher/fzf') 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 -- cgit v1.2.3