From 4e4f201caaf1c102f507c173095ae894afdc989e Mon Sep 17 00:00:00 2001 From: Aly Raffauf Date: Thu, 15 Aug 2024 00:45:27 -0400 Subject: [PATCH] rofi: reimplement theme --- homeManagerModules/apps/rofi/default.nix | 184 +++++++++++++++++++++++ hosts/common/default.nix | 1 + 2 files changed, 185 insertions(+) diff --git a/homeManagerModules/apps/rofi/default.nix b/homeManagerModules/apps/rofi/default.nix index 0ef31dbd..850daf16 100644 --- a/homeManagerModules/apps/rofi/default.nix +++ b/homeManagerModules/apps/rofi/default.nix @@ -5,6 +5,18 @@ ... }: let cfg = config.ar.home; + + inherit (config.lib.formats.rasi) mkLiteral; + mkRgba = opacity: color: let + c = config.lib.stylix.colors; + r = c."${color}-rgb-r"; + g = c."${color}-rgb-g"; + b = c."${color}-rgb-b"; + in + mkLiteral + "rgba ( ${r}, ${g}, ${b}, ${opacity} % )"; + mkRgb = mkRgba "100"; + rofiOpacity = builtins.toString (builtins.ceil (config.stylix.opacity.popups * 100)); in { config = lib.mkIf cfg.apps.rofi.enable { home.packages = [ @@ -13,8 +25,11 @@ in { pkgs.rofi-rbw-wayland ]; + stylix.targets.rofi.enable = false; + programs.rofi = { enable = true; + font = "${config.stylix.fonts.monospace.name} ${toString config.stylix.fonts.sizes.popups}"; location = "center"; package = pkgs.rofi-wayland; @@ -24,6 +39,168 @@ in { ]; terminal = lib.getExe cfg.defaultApps.terminal; + theme = { + "*" = { + background = mkRgba rofiOpacity "base00"; + lightbg = mkRgba rofiOpacity "base01"; + red = mkRgba rofiOpacity "base08"; + blue = mkRgba rofiOpacity "base0D"; + lightfg = mkRgba rofiOpacity "base06"; + foreground = mkRgba rofiOpacity "base05"; + + background-color = mkRgb "base00"; + separatorcolor = mkLiteral "@foreground"; + border-color = mkLiteral "@foreground"; + selected-normal-foreground = mkLiteral "@lightbg"; + selected-normal-background = mkLiteral "@lightfg"; + selected-active-foreground = mkLiteral "@background"; + selected-active-background = mkLiteral "@blue"; + selected-urgent-foreground = mkLiteral "@background"; + selected-urgent-background = mkLiteral "@red"; + normal-foreground = mkLiteral "@foreground"; + normal-background = mkLiteral "@background"; + active-foreground = mkLiteral "@blue"; + active-background = mkLiteral "@background"; + urgent-foreground = mkLiteral "@red"; + urgent-background = mkLiteral "@background"; + alternate-normal-foreground = mkLiteral "@foreground"; + alternate-normal-background = mkLiteral "@lightbg"; + alternate-active-foreground = mkLiteral "@blue"; + alternate-active-background = mkLiteral "@lightbg"; + alternate-urgent-foreground = mkLiteral "@red"; + alternate-urgent-background = mkLiteral "@lightbg"; + + # Text Colors + base-text = mkRgb "base05"; + selected-normal-text = mkRgb "base01"; + selected-active-text = mkRgb "base00"; + selected-urgent-text = mkRgb "base00"; + normal-text = mkRgb "base05"; + active-text = mkRgb "base0D"; + urgent-text = mkRgb "base08"; + alternate-normal-text = mkRgb "base05"; + alternate-active-text = mkRgb "base0D"; + alternate-urgent-text = mkRgb "base08"; + }; + + window = { + background-color = mkLiteral "@background"; + border = 4; + }; + + message = { + border-color = mkLiteral "@separatorcolor"; + border = mkLiteral "2px solid 0px 0px"; + padding = 1; + }; + + textbox.text-color = mkLiteral "@base-text"; + + listview = { + border-color = mkLiteral "@separatorcolor"; + border = mkLiteral "2px solid 0px 0px"; + spacing = 4; + scrollbar = false; + }; + + element = { + border = 0; + padding = 5; + }; + + element-text = { + background-color = mkLiteral "inherit"; + text-color = mkLiteral "inherit"; + }; + + element-icon = { + background-color = mkLiteral "inherit"; + text-color = mkLiteral "inherit"; + }; + + "element normal.normal" = { + background-color = mkLiteral "@normal-background"; + text-color = mkLiteral "@normal-text"; + }; + + "element normal.urgent" = { + background-color = mkLiteral "@urgent-background"; + text-color = mkLiteral "@urgent-text"; + }; + + "element normal.active" = { + background-color = mkLiteral "@active-background"; + text-color = mkLiteral "@active-text"; + }; + + "element selected.normal" = { + background-color = mkLiteral "@selected-normal-background"; + text-color = mkLiteral "@selected-normal-text"; + }; + + "element selected.urgent" = { + background-color = mkLiteral "@selected-urgent-background"; + text-color = mkLiteral "@selected-urgent-text"; + }; + + "element selected.active" = { + background-color = mkLiteral "@selected-active-background"; + text-color = mkLiteral "@selected-active-text"; + }; + + "element alternate.normal" = { + background-color = mkLiteral "@alternate-normal-background"; + text-color = mkLiteral "@alternate-normal-text"; + }; + + "element alternate.urgent" = { + background-color = mkLiteral "@alternate-urgent-background"; + text-color = mkLiteral "@alternate-urgent-text"; + }; + + "element alternate.active" = { + background-color = mkLiteral "@alternate-active-background"; + text-color = mkLiteral "@alternate-active-text"; + }; + + scrollbar.handle-color = mkLiteral "@normal-foreground"; + sidebar.border-color = mkLiteral "@separatorcolor"; + button.text-color = mkLiteral "@normal-text"; + "button selected" = { + background-color = mkLiteral "@selected-normal-background"; + text-color = mkLiteral "@selected-normal-text"; + }; + + inputbar.text-color = mkLiteral "@normal-text"; + case-indicator.text-color = mkLiteral "@normal-text"; + entry.text-color = mkLiteral "@normal-text"; + prompt.text-color = mkLiteral "@normal-text"; + + "#textbox-prompt-colon" = { + expand = false; + margin = mkLiteral "0px 0.3em 0em 0em"; + str = ":"; + text-color = mkLiteral "inherit"; + }; + + case-indicator.spacing = 0; + entry.spacing = 0; + + prompt = { + spacing = 0; + margin = mkLiteral "1px"; + }; + + "#inputbar" = { + children = map mkLiteral ["prompt" "textbox-prompt-colon" "entry" "case-indicator"]; + padding = 10; + }; + + mode-switcher = { + border = mkLiteral "2px solid 0px 0px"; + border-color = mkLiteral "@separatorcolor"; + }; + }; extraConfig = { case-sensitive = false; @@ -66,6 +243,13 @@ in { clear-after 60 ''; + # "rofi/theme.rasi".text = '' + # mainbox { + # border: 0; + # padding: 0; + # } + # ''; + "networkmanager-dmenu/config.ini".text = '' [dmenu] dmenu_command = ${lib.getExe config.programs.rofi.package} diff --git a/hosts/common/default.nix b/hosts/common/default.nix index 295398ed..0ce6aee4 100644 --- a/hosts/common/default.nix +++ b/hosts/common/default.nix @@ -44,6 +44,7 @@ applications = 0.8; desktop = 0.8; terminal = 0.8; + popups = 0.8; }; }; }