From e941e20acfa1d03031601b197eda269fb25eaa5d Mon Sep 17 00:00:00 2001 From: Donovan Glover Date: Sun, 27 Aug 2023 18:20:46 -0400 Subject: [PATCH] Revert "meta: Remove rofi" Currently rofi seems like the most feature complete launcher that gets the job done. I'd rather use it than code a custom solution at the moment. --- home/default.nix | 1 + home/rofi.nix | 106 +++++++++++++++++++++++++++++++++++++++++++ overlays/default.nix | 1 + overlays/rofi.nix | 22 +++++++++ 4 files changed, 130 insertions(+) create mode 100644 home/rofi.nix create mode 100644 overlays/rofi.nix diff --git a/home/default.nix b/home/default.nix index 0a2b564..923baa5 100644 --- a/home/default.nix +++ b/home/default.nix @@ -19,6 +19,7 @@ ./neovim.nix ./pqiv.nix ./qutebrowser.nix + ./rofi.nix ./swaylock.nix ./thunar.nix ./udiskie.nix diff --git a/home/rofi.nix b/home/rofi.nix new file mode 100644 index 0000000..7903e08 --- /dev/null +++ b/home/rofi.nix @@ -0,0 +1,106 @@ +{ config, lib, ... }: + +{ + programs.rofi = { + enable = true; + cycle = false; + + extraConfig = { + modi = "drun,filebrowser"; + font = "Noto Sans CJK JP 12"; + show-icons = true; + bw = 0; + display-drun = ""; + display-window = ""; + display-combi = ""; + icon-theme = "Fluent-dark"; + terminal = "kitty"; + drun-match-fields = "name"; + drun-display-format = "{name}"; + me-select-entry = ""; + me-accept-entry = "MousePrimary"; + }; + + theme = let inherit (config.lib.formats.rasi) mkLiteral; in with config.lib.stylix.colors; lib.mkForce { + "*" = { + font = "Noto Sans CJK JP Bold 12"; + background-color = mkLiteral "transparent"; + foreground = mkLiteral "#${base05}"; + text-color = mkLiteral "#${base05}"; + padding = mkLiteral "0px"; + margin = mkLiteral "0px"; + }; + + window = { + fullscreen = true; + padding = mkLiteral "1em"; + background-color = mkLiteral "#${base00}dd"; + }; + + mainbox = { + padding = mkLiteral "8px"; + }; + + inputbar = { + background-color = mkLiteral "#${base05}20"; + + margin = mkLiteral "0px calc( 50% - 230px )"; + padding = mkLiteral "4px 8px"; + spacing = mkLiteral "8px"; + + border = mkLiteral "1px"; + border-radius = mkLiteral "2px"; + border-color = mkLiteral "#${base05}40"; + + children = map mkLiteral [ "icon-search" "entry" ]; + }; + + prompt = { + enabled = false; + }; + + icon-search = { + expand = false; + filename = "search"; + vertical-align = mkLiteral "0.5"; + }; + + entry = { + placeholder = "Search"; + placeholder-color = mkLiteral "#${base05}20"; + }; + + listview = { + margin = mkLiteral "48px calc( 50% - 560px )"; + spacing = mkLiteral "48px"; + columns = 5; + fixed-columns = true; + }; + + "element, element-text, element-icon" = { + cursor = mkLiteral "pointer"; + }; + + element = { + padding = mkLiteral "8px"; + spacing = mkLiteral "4px"; + + orientation = mkLiteral "vertical"; + border-radius = mkLiteral "16px"; + }; + + "element selected" = { + background-color = mkLiteral "#${base05}33"; + }; + + element-icon = { + size = mkLiteral "5em"; + horizontal-align = mkLiteral "0.5"; + }; + + element-text = { + horizontal-align = mkLiteral "0.5"; + }; + }; + }; +} diff --git a/overlays/default.nix b/overlays/default.nix index 855e6c6..18b60cc 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -1,5 +1,6 @@ { imports = [ ./alejandra.nix + ./rofi.nix ]; } diff --git a/overlays/rofi.nix b/overlays/rofi.nix new file mode 100644 index 0000000..2fcee82 --- /dev/null +++ b/overlays/rofi.nix @@ -0,0 +1,22 @@ +{ pkgs, ... }: + +{ + nixpkgs.overlays = [ + (final: prev: { + rofi-unwrapped = prev.rofi-unwrapped.overrideAttrs (oldAttrs: rec { + version = "d06095b5ed40e5d28236b7b7b575ca867696d847"; + + src = final.fetchFromGitHub { + owner = "lbonn"; + repo = "rofi"; + rev = version; + fetchSubmodules = true; + sha256 = "sha256-8IfHpaVFGeWqyw+tLjNtg+aWwAHhSA5PuXJYjpoht2E="; + }; + + nativeBuildInputs = oldAttrs.nativeBuildInputs ++ [ pkgs.wayland-scanner ]; + buildInputs = oldAttrs.buildInputs ++ [ pkgs.wayland pkgs.wayland-protocols ]; + }); + }) + ]; +}