aboutsummaryrefslogtreecommitdiffstats
path: root/modules/desktop/application-launcher
diff options
context:
space:
mode:
authorArpit Chakladar <54011232+arpitchakladar@users.noreply.github.com>2024-10-03 22:03:12 +0530
committerArpit Chakladar <54011232+arpitchakladar@users.noreply.github.com>2024-10-03 22:03:12 +0530
commit1474caa8f624aa568ea011629d1aec4ae2aca3c1 (patch)
tree52ba6bda3c8b2b7839543e71271931122b587900 /modules/desktop/application-launcher
parent6349cff878c36336ed9027423aaebf98ac883501 (diff)
downloadhome-manager-config-1474caa8f624aa568ea011629d1aec4ae2aca3c1.tar.gz
home-manager-config-1474caa8f624aa568ea011629d1aec4ae2aca3c1.zip
Using fzf as the application launcher.
Diffstat (limited to 'modules/desktop/application-launcher')
-rw-r--r--modules/desktop/application-launcher/default.nix24
-rw-r--r--modules/desktop/application-launcher/fzf/default.nix22
-rw-r--r--modules/desktop/application-launcher/fzf/launch.sh10
-rw-r--r--modules/desktop/application-launcher/rofi/default.nix20
-rw-r--r--modules/desktop/application-launcher/rofi/theme.mustache.rasi82
5 files changed, 158 insertions, 0 deletions
diff --git a/modules/desktop/application-launcher/default.nix b/modules/desktop/application-launcher/default.nix
new file mode 100644
index 0000000..3abb908
--- /dev/null
+++ b/modules/desktop/application-launcher/default.nix
@@ -0,0 +1,24 @@
+{ lib, ... }:
+
+{
+ imports = [
+ ./fzf
+ ./rofi
+ ];
+
+ options.desktop.application-launcher = {
+ default = lib.mkOption {
+ type = lib.types.enum [
+ "fzf"
+ "rofi"
+ ];
+
+ description = "Select the default application launcher.";
+ };
+
+ command = lib.mkOption {
+ type = lib.types.str;
+ description = "Command for default application launcher program.";
+ };
+ };
+}
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
diff --git a/modules/desktop/application-launcher/rofi/default.nix b/modules/desktop/application-launcher/rofi/default.nix
new file mode 100644
index 0000000..58a64a4
--- /dev/null
+++ b/modules/desktop/application-launcher/rofi/default.nix
@@ -0,0 +1,20 @@
+{ config, lib, pkgs, ... }:
+
+{
+ options.desktop.application-launcher.rofi = {
+ enable = lib.mkEnableOption "Enables rofi.";
+ };
+
+ config = lib.mkIf config.desktop.application-launcher.rofi.enable {
+ desktop.application-launcher.default = lib.mkDefault "rofi";
+ desktop.application-launcher.command =
+ if config.desktop.application-launcher.default == "rofi" then
+ lib.mkForce "${pkgs.rofi}/bin/rofi -show run"
+ else "";
+ programs.rofi.enable = true;
+ programs.rofi.font = "${config.fonts.normal} ${toString config.fonts.size}";
+ programs.rofi.theme = config.scheme {
+ template = builtins.readFile ./theme.mustache.rasi;
+ };
+ };
+}
diff --git a/modules/desktop/application-launcher/rofi/theme.mustache.rasi b/modules/desktop/application-launcher/rofi/theme.mustache.rasi
new file mode 100644
index 0000000..02cdaf3
--- /dev/null
+++ b/modules/desktop/application-launcher/rofi/theme.mustache.rasi
@@ -0,0 +1,82 @@
+configuration {
+ drun {
+ display-name: " ";
+ }
+
+ run {
+ display-name: " ";
+ }
+
+ window {
+ display-name: " ";
+ }
+
+ ssh {
+ display-name: " ";
+ }
+
+ timeout {
+ delay: 10;
+ action: "kb-cancel";
+ }
+}
+
+* {
+ border: 1;
+ margin: 0;
+ padding: 0;
+ spacing: 0;
+
+ bg: #{{base00-hex}};
+ bg-alt: #{{base01-hex}};
+ fg: #{{base07-hex}};
+ fg-alt: #{{base03-hex}};
+
+ background-color: @bg;
+ text-color: @fg;
+}
+
+window {
+ transparency: "real";
+ border-color: #{{base03-hex}};
+}
+
+mainbox {
+ children: [inputbar, listview];
+}
+
+inputbar {
+ background-color: @bg-alt;
+ children: [prompt, entry];
+}
+
+entry {
+ background-color: inherit;
+ padding: 12px 3px;
+}
+
+prompt {
+ background-color: inherit;
+ padding: 12px;
+}
+
+listview {
+ lines: 8;
+}
+
+element {
+ children: [element-text];
+}
+
+element-icon {
+ padding: 10px 10px;
+}
+
+element-text {
+ padding: 10px 10px;
+ text-color: @fg-alt;
+}
+
+element-text selected {
+ text-color: @fg;
+}