rofi: add support to custom themes

If this commit now it is possible to define a custom theme directly
using Nix, like this:

```nix
{
   programs.rofi.theme = {
      "*" = {
         background-color = "#000000";
         border-color = "FFFFFF";
         width = 512;
      };
      listview = {
         cycle = true;
      };
   };
}
```

And this will be converted to the proper rasi format to be used in
rofi.
This commit is contained in:
Thiago Kenji Okada 2021-01-23 14:13:38 -03:00 committed by Robert Helgesson
parent 7313258b45
commit 98d030f723
No known key found for this signature in database
GPG key ID: 36BDAA14C2797E89
6 changed files with 156 additions and 32 deletions

View file

@ -0,0 +1,6 @@
configuration {
location: 0;
theme: "custom";
xoffset: 0;
yoffset: 0;
}

View file

@ -0,0 +1,39 @@
{ config, lib, pkgs, ... }:
with lib;
{
config = {
programs.rofi = {
enable = true;
theme = with config.lib.formats.rasi; {
"*" = {
background-color = mkLiteral "#000000";
foreground-color = mkLiteral "rgba ( 250, 251, 252, 100 % )";
border-color = mkLiteral "#FFFFFF";
width = 512;
};
"#textbox-prompt-colon" = {
expand = false;
str = ":";
margin = mkLiteral "0px 0.3em 0em 0em";
text-color = mkLiteral "@foreground-color";
};
};
};
nixpkgs.overlays =
[ (self: super: { rofi = pkgs.writeScriptBin "dummy-rofi" ""; }) ];
nmt.script = ''
assertFileContent \
home-files/.config/rofi/config.rasi \
${./custom-theme-config.rasi}
assertFileContent \
home-files/.local/share/rofi/themes/custom.rasi \
${./custom-theme.rasi}
'';
};
}

View file

@ -0,0 +1,13 @@
#textbox-prompt-colon {
expand: false;
margin: 0px 0.3em 0em 0em;
str: ":";
text-color: @foreground-color;
}
* {
background-color: #000000;
border-color: #FFFFFF;
foreground-color: rgba ( 250, 251, 252, 100 % );
width: 512;
}

View file

@ -1,4 +1,5 @@
{
rofi-valid-config = ./valid-config.nix;
rofi-custom-theme = ./custom-theme.nix;
rofi-assert-on-both-theme-and-colors = ./assert-on-both-theme-and-colors.nix;
}

View file

@ -48,6 +48,9 @@ with lib;
};
};
nixpkgs.overlays =
[ (self: super: { rofi = pkgs.writeScriptBin "dummy-rofi" ""; }) ];
nmt.script = ''
assertFileContent \
home-files/.config/rofi/config.rasi \