11.stylix/modules/rofi/hm.nix
Kanade 3a09d3f5cb
rofi: fix attribute 'size' missing (#1553)
Closes: https://github.com/nix-community/stylix/issues/1555
Fixes: 713f8dae31 ("rofi: use mkTarget (#1550)")
Link: https://github.com/nix-community/stylix/pull/1553
Link: https://github.com/nix-community/stylix/pull/1554

Co-authored-by: VuiMuich <vuimuich@quantentunnel.de>
Reviewed-by: NAHO <90870942+trueNAHO@users.noreply.github.com>
2025-06-28 23:19:18 +02:00

156 lines
5.6 KiB
Nix

{
mkTarget,
lib,
config,
...
}:
mkTarget {
name = "rofi";
humanName = "Rofi";
configElements = [
(
{ fonts }:
{
programs.rofi.font = "${fonts.monospace.name} ${toString fonts.sizes.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";
# 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";
};
}
)
];
}