rofi: add theme option

The preferred method of theming rofi is now to use "rasi" theme files.
This commit therefore downplays the colors option and introduces the
theme option.
wip/yesman
Andrew Scott 6 years ago committed by Robert Helgesson
parent afa865587e
commit f2265b10e4
No known key found for this signature in database
GPG Key ID: C3DB11069E65DC86
  1. 17
      modules/misc/news.nix
  2. 39
      modules/programs/rofi.nix

@ -560,6 +560,23 @@ in
feature is slowly forthcoming.
'';
}
{
time = "2018-02-09T21:14:42+00:00";
condition = with config.programs.rofi; enable && colors != null;
message = ''
The new and preferred way to configure the rofi theme is
using rasi themes through the 'programs.rofi.theme' option.
This option can take as value either the name of a
pre-installed theme or the path to a theme file.
A rasi theme can be generated from an Xresources config
using 'rofi -dump-theme'.
The option 'programs.rofi.colors' is still supported but may
become deprecated and removed in the future.
'';
}
];
};
}

@ -124,6 +124,14 @@ let
bottom-left = 7;
left = 8;
};
themeName =
if (cfg.theme == null) then null
else if (lib.isString cfg.theme) then cfg.theme
else lib.removeSuffix ".rasi" (baseNameOf cfg.theme);
themePath = if (lib.isString cfg.theme) then null else cfg.theme;
in
{
@ -232,8 +240,10 @@ in
default = null;
type = types.nullOr colorsSubmodule;
description = ''
Color scheme settings.
Colors can be specified in CSS color formats.
Color scheme settings. Colors can be specified in CSS color
formats. This option may become deprecated in the future and
therefore the <varname>programs.rofi.theme</varname> option
should be used whenever possible.
'';
example = literalExample ''
colors = {
@ -258,6 +268,17 @@ in
'';
};
theme = mkOption {
default = null;
type = with types; nullOr (either string path);
example = "Arc";
description = ''
Name of theme or path to theme file in rasi format. Available
named themes can be viewed using the
<command>rofi-theme-selector</command> tool.
'';
};
configPath = mkOption {
default = ".config/rofi/config";
type = types.string;
@ -273,6 +294,15 @@ in
};
config = mkIf cfg.enable {
assertions = [
{
assertion = cfg.theme == null || cfg.colors == null;
message = ''
Cannot use the rofi options 'theme' and 'colors' simultaneously.
'';
}
];
home.packages = [ pkgs.rofi ];
home.file."${cfg.configPath}".text = ''
@ -296,8 +326,13 @@ in
${setOption "yoffset" cfg.yoffset}
${setColorScheme cfg.colors}
${setOption "theme" themeName}
${cfg.extraConfig}
'';
xdg.dataFile = mkIf (themePath != null) {
"rofi/themes/${themeName}.rasi".source = themePath;
};
};
}

Loading…
Cancel
Save