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.
This commit is contained in:
parent
afa865587e
commit
f2265b10e4
|
@ -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…
Reference in a new issue