nix/home/file/yazi/module/Theme.nix

122 lines
2.7 KiB
Nix

{
pkgs,
config,
...
}: let
color = config.module.style.color;
border = {
fg = "#${color.border}";
};
borderLight = {
fg = "#${color.accent}";
};
hover = {
bg = "#${color.bg.regular}";
fg = "#${color.fg.light}";
};
select = {
bg = "#${color.selection}";
fg = "#${color.fg.dark}";
bold = true;
};
text = {
fg = "#${color.fg.light}";
};
in {
# REF: https://github.com/sxyazi/yazi/blob/main/yazi-config/preset/theme.toml
file = (pkgs.formats.toml { }).generate "YaziThemeConfig" {
manager = let
mkMarker = markerColor: {
bg = "#${markerColor}";
fg = "#${markerColor}";
};
mkCounter = counterColor: {
bg = "#${counterColor}";
fg = "#${color.fg.light}";
};
in {
border_style = border;
border_symbol = " ";
count_copied = mkCounter color.positive;
count_cut = mkCounter color.negative;
count_selected = mkCounter color.neutral;
cwd = text;
hovered = hover;
marker_copied = mkMarker color.accent;
marker_cut = mkMarker color.accent;
marker_marked = mkMarker color.highlight;
marker_selected = mkMarker color.selection;
preview_hovered = hover;
tab_active = mkCounter color.selection;
};
select = {
active = select;
border = borderLight;
inactive = text;
};
input = {
border = borderLight; # ISSUE: Currently broken, stays blue.
selected = select;
title = borderLight;
value = text;
};
completion = {
active = hover;
border = borderLight;
inactive = text;
};
tasks = {
border = borderLight;
hovered = hover;
title = borderLight;
};
which = {
cand = text;
cols = 3;
desc = text;
mask = hover;
rest = text;
separator = " - ";
separator_style = text;
};
help = {
desc = text;
footer = text;
hovered = hover;
on = text;
run = text;
};
confirm = {
border = borderLight;
title = borderLight;
};
status = {
mode_normal = hover;
mode_select = select;
permissions_r = text;
permissions_s = text;
permissions_t = text;
permissions_w = text;
permissions_x = text;
progress_label = hover;
progress_normal = hover;
separator_close = "";
separator_open = "";
# NOTE: Inversed because yazi dev is fckin weird. Also add manpages ffs.
separator_style = {
bg = "#${config.module.style.color.fg.light}";
fg = "#${config.module.style.color.bg.regular}";
};
mode_unset = {
bg = "#${config.module.style.color.neutral}";
fg = "#${config.module.style.color.fg.light}";
};
progress_error = {
bg = "#${config.module.style.color.negative}";
fg = "#${config.module.style.color.fg.light}";
};
};
};
}