From 713f8dae3127a0faeb1d343ed8da67677121ee29 Mon Sep 17 00:00:00 2001 From: awwpotato Date: Sat, 28 Jun 2025 03:11:45 -0700 Subject: [PATCH] rofi: use mkTarget (#1550) --- modules/rofi/hm.nix | 287 +++++++++++++++++++++++--------------------- 1 file changed, 150 insertions(+), 137 deletions(-) diff --git a/modules/rofi/hm.nix b/modules/rofi/hm.nix index 4175918e..01a1e329 100644 --- a/modules/rofi/hm.nix +++ b/modules/rofi/hm.nix @@ -1,143 +1,156 @@ -{ config, lib, ... }: -let - 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 { - options.stylix.targets.rofi.enable = - config.lib.stylix.mkEnableTarget "Rofi" true; + mkTarget, + lib, + config, + ... +}: +mkTarget { + name = "rofi"; + humanName = "Rofi"; - config = lib.mkIf (config.stylix.enable && config.stylix.targets.rofi.enable) { - programs.rofi = { - font = with config.stylix.fonts; "${monospace.name} ${toString sizes.popups}"; - 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"; + configElements = [ + ( + { fonts }: + { + programs.rofi.font = "${fonts.monospace.name} ${toString fonts.size.popups}"; + } + ) + ( + { colors, opacity }: + let + 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 + { + programs.rofi.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"; + 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"; + # 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"; + + message.border-color = mkLiteral "@separatorcolor"; + + textbox.text-color = mkLiteral "@base-text"; + + listview.border-color = mkLiteral "@separatorcolor"; + + 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.text-color = mkLiteral "inherit"; }; - - window.background-color = mkLiteral "@background"; - - message.border-color = mkLiteral "@separatorcolor"; - - textbox.text-color = mkLiteral "@base-text"; - - listview.border-color = mkLiteral "@separatorcolor"; - - 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.text-color = mkLiteral "inherit"; - }; - }; - }; + } + ) + ]; }