use hm module for matugen

This commit is contained in:
2024-04-30 00:01:38 +02:00
parent 1328a8b94c
commit f8cf5b8ec8
17 changed files with 385 additions and 394 deletions

View File

@@ -18,6 +18,7 @@
./packages
./programs
./services
./theme/md3-evo.nix
./desktops/hyprland
];
}

View File

@@ -0,0 +1,90 @@
# MD3 Evo Theming
MD3 Evo is a theming system derived from the Material Design 3 color sytem.
<div>
<img src="./dark.png">
<img src="./light.png">
</div>
## Features
- Wallpaper colors
- Dynamic color and dark mode switching at runtime (no `nixos-rebuild`)
- Dark and light mode support
- User contrast options
- Color flavours
- Faithful ANSI colors that still adapt to your theme
- Static syntax highlighting colors that blends with your theme
- Customizable syntax highlighting tokens
- Transparency and blur support
## CLI Usage
```sh
# Open wallpaper picker
theme wallpaper
# Set wallpaper by path
theme wallpaper ~/Pictures/wallpaper.png
# Switch theme
theme toggle
theme light
theme dark
# Get current theme
theme mode
```
## Integrations
| Name | Status | Comment |
| -------- | ------ | ------------------------------------------------------------------------------- |
| Neovim | ✅ | |
| Hyprland | ✅ | |
| Kitty | ✅ | Missing some parts I don't use. Transparency is tinted weirdly for some reason. |
| Anyrun | ✅ | |
| Vesktop | 🚧 | Contrast is weird in some places |
| GTK3 | 🚧 | |
| GTK4 | 🚧 | Runtime switching is unreliable |
## NixOS/Home Manager Module
```nix
# Default options
theming.md3-evo = {
enable = false;
flavour = "tonal-spot";
contrast = 0;
transparency = 0.8;
radius = 24;
padding = 12;
blur = 16;
semantic = {
blend = false;
danger = "#ff0000";
warning = "#ffff00";
success = "#00ff00";
info = "#0000ff";
};
syntax = {
blend = true;
keywords = "#ff8000";
functions = "#0000ff";
properties = "#ff00ff";
constants = "#ff00ff";
strings = "#00ff00";
numbers = "#00ffff";
structures = "#ffff00";
types = "#00ffff";
};
ansi = {
blend = true;
red = "#ff0000";
green = "#00ff00";
yellow = "#ffff00";
orange = "#ff8000";
blue = "#0000ff";
magenta = "#ff00ff";
cyan = "#00ffff";
};
};
```

View File

@@ -0,0 +1,7 @@
box#main {
background: alpha({{colors.surface.default.hex}}, 0.4);
}
* {
color: {{colors.on_surface.default.hex}};
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

View File

@@ -0,0 +1,47 @@
/**
* @name Matugen
* @author Theaninova
* @version 6.9.0
* @description reactive material theme
*/
@import url(https://mwittrien.github.io/BetterDiscordAddons/Themes/BasicBackground/BasicBackground.css);
:root {
--transparencycolor: {{colors.surface.default.red}}, {{colors.surface.default.green}}, {{colors.surface.default.blue}};
--transparencyalpha: {{custom.transparency}};
--messagetransparency: 0;
--guildchanneltransparency: 0;
--chatinputtransparency: 0;
--memberlisttransparency: 0;
--accentcolor: {{colors.surface_variant.default.red}}, {{colors.surface_variant.default.green}}, {{colors.surface_variant.default.blue}};
--settingsicons: 1;
--font: "NotoSans Nerd Font";
--textshadow: transparent;
--background: transparent;
--backgroundposition: center;
--backgroundsize: cover;
--backgroundblur: 0;
--popout: var(--background);
--popoutposition: var(--backgroundposition);
--popoutsize: var(--backgroundsize);
--popoutblur: var(--backgroundblur);
--backdrop: rgba({{colors.surface.default.red}}, {{colors.surface.default.green}}, {{colors.surface.default.blue}}, {{custom.transparency}});
--backdropposition: center;
--backdropsize: cover: --backdropblur: 0;
--textbrightest: {{colors.primary.default.red}}, {{colors.primary.default.green}}, {{colors.primary.default.blue}};
--textbrighter: {{colors.on_surface.default.red}}, {{colors.on_surface.default.green}}, {{colors.on_surface.default.blue}};
--textbright: {{colors.tertiary.default.red}}, {{colors.tertiary.default.green}}, {{colors.tertiary.default.blue}};
--textdark: {{colors.on_surface_variant.default.red}}, {{colors.on_surface_variant.default.green}}, {{colors.on_surface_variant.default.blue}};
--textdarker: {{colors.secondary.default.red}}, {{colors.secondary.default.green}}, {{colors.secondary.default.blue}};
--textdarkest: {{colors.outline.default.red}}, {{colors.outline.default.green}}, {{colors.outline.default.blue}};
--text-link: {{colors.primary.default.red}}, {{colors.primary.default.green}}, {{colors.primary.default.blue}};
--version1_0_5: none; /* DO NOT CHANGE THIS VARIABLE , USED TO HIDE UPDATE NOTICE */
}

View File

@@ -0,0 +1,34 @@
@define-color accent_color {{colors.primary.default.hex}};
@define-color accent_bg_color {{colors.primary_container.default.hex}};
@define-color accent_fg_color {{colors.on_primary.default.hex}};
@define-color destructive_color {{colors.danger.default.hex}};
@define-color destructive_bg_color {{colors.danger_container.default.hex}};
@define-color destructive_fg_color {{colors.on_danger.default.hex}};
@define-color success_color {{colors.success.default.hex}};
@define-color success_bg_color {{colors.success_container.default.hex}};
@define-color success_fg_color {{colors.on_success.default.hex}};
@define-color warning_color {{colors.warning.default.hex}};
@define-color warning_bg_color {{colors.warning_container.default.hex}};
@define-color warning_fg_color {{colors.on_warning.default.hex}};
@define-color error_color {{colors.error.default.hex}};
@define-color error_bg_color {{colors.error_container.default.hex}};
@define-color error_fg_color {{colors.on_error.default.hex}};
@define-color window_bg_color alpha({{colors.surface.default.hex}}, {{custom.transparency}});
@define-color window_fg_color {{colors.on_surface.default.hex}};
@define-color view_bg_color @window_bg_color;
@define-color view_fg_color @window_fg_color;
@define-color headerbar_bg_color @window_bg_color;
@define-color headerbar_fg_color @window_fg_color;
@define-color headerbar_backdrop_color alpha({{colors.surface_variant.default.hex}}, 0.2);
@define-color sidebar_bg_color alpha({{colors.surface_variant.default.hex}}, 0.2);
@define-color sidebar_fg_color {{colors.on_surface_variant.default.hex}};
@define-color sidebar_backdrop_color alpha({{colors.surface_variant.default.hex}}, 0.2);

View File

@@ -0,0 +1,17 @@
general {
col.inactive_border = rgba({{colors.surface.default.hex_stripped}}{{custom.transparency_hex | to_lower}})
col.active_border = rgb({{colors.primary.default.hex_stripped}})
border_size = 1
extend_border_grab_area = 4
gaps_in = {{custom.padding}}
gaps_out = {{custom.double_padding}}
}
decoration {
rounding = {{custom.radius}}
blur {
size = {{custom.blur}}
passes = 2
}
}

View File

@@ -0,0 +1,31 @@
background_tint 0.0
background_opacity {{custom.transparency}}
background {{colors.surface.default.hex}}
foreground {{colors.on_surface.default.hex}}
selection_background {{colors.primary.default.hex}}
selection_foreground {{colors.on_primary.default.hex}}
url_color {{colors.tertiary.default.hex}}
cursor {{colors.on_surface.default.hex}}
# normal
color0 {{colors.surface.default.hex}}
color1 {{colors.red.default.hex}}
color2 {{colors.green.default.hex}}
color3 {{colors.yellow.default.hex}}
color4 {{colors.blue.default.hex}}
color5 {{colors.magenta.default.hex}}
color6 {{colors.cyan.default.hex}}
color7 {{colors.on_surface.default.hex}}
# bright
color8 {{colors.outline_variant.default.hex}}
color9 {{colors.red.default.hex}}
color10 {{colors.green.default.hex}}
color11 {{colors.yellow.default.hex}}
color12 {{colors.blue.default.hex}}
color13 {{colors.magenta.default.hex}}
color14 {{colors.cyan.default.hex}}
color15 {{colors.on_surface_variant.default.hex}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 MiB

View File

@@ -0,0 +1,374 @@
{
pkgs,
lib,
config,
...
}:
let
cfg = config.theme.md3-evo;
in
{
options.theme.md3-evo = {
enable = lib.mkEnableOption "the MD3-EVO theme";
flavour = lib.mkOption {
type = lib.types.enum [
"content"
"expressive"
"fidelity"
"fruit-salad"
"monochrome"
"neutral"
"rainbow"
"tonal-spot"
];
default = "tonal-spot";
description = "The flavour of the theme";
};
contrast = lib.mkOption {
type = lib.types.numbers.between (-1) 1;
default = 0;
description = "Use a modified contrast";
};
transparency = lib.mkOption {
type = lib.types.numbers.between 0 1;
default = 0.8;
description = "The transparency of apps";
};
radius = lib.mkOption {
type = lib.types.ints.positive;
default = 24;
description = "The radius of the corners";
};
padding = lib.mkOption {
type = lib.types.ints.positive;
default = 12;
description = "The padding of the windows";
};
blur = lib.mkOption {
type = lib.types.ints.positive;
default = 16;
description = "The blur amount of windows";
};
semantic = {
blend = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Blend the colors";
};
danger = lib.mkOption {
type = lib.types.str;
default = "#ff0000";
description = "The color of danger";
};
warning = lib.mkOption {
type = lib.types.str;
default = "#ffff00";
description = "The color of warning";
};
success = lib.mkOption {
type = lib.types.str;
default = "#00ff00";
description = "The color of success";
};
info = lib.mkOption {
type = lib.types.str;
default = "#0000ff";
description = "The color of info";
};
};
syntax = {
blend = lib.mkOption {
type = lib.types.bool;
default = true;
description = "Blend the colors";
};
keywords = lib.mkOption {
type = lib.types.str;
default = "#ff8000";
description = "The color of keywords";
};
functions = lib.mkOption {
type = lib.types.str;
default = "#0000ff";
description = "The color of functions";
};
properties = lib.mkOption {
type = lib.types.str;
default = "#ff00ff";
description = "The color of properties";
};
constants = lib.mkOption {
type = lib.types.str;
default = "#ff00ff";
description = "The color of constants";
};
strings = lib.mkOption {
type = lib.types.str;
default = "#00ff00";
description = "The color of variables";
};
numbers = lib.mkOption {
type = lib.types.str;
default = "#00ffff";
description = "The color of numbers";
};
structures = lib.mkOption {
type = lib.types.str;
default = "#ffff00";
description = "The color of structures";
};
types = lib.mkOption {
type = lib.types.str;
default = "#00ffff";
description = "The color of types";
};
};
ansi = {
blend = lib.mkOption {
type = lib.types.bool;
default = true;
description = "Blend the colors";
};
red = lib.mkOption {
type = lib.types.str;
default = "#ff0000";
description = "The color of red";
};
green = lib.mkOption {
type = lib.types.str;
default = "#00ff00";
description = "The color of green";
};
yellow = lib.mkOption {
type = lib.types.str;
default = "#ffff00";
description = "The color of yellow";
};
orange = lib.mkOption {
type = lib.types.str;
default = "#ff8000";
description = "The color of orange";
};
blue = lib.mkOption {
type = lib.types.str;
default = "#0000ff";
description = "The color of blue";
};
magenta = lib.mkOption {
type = lib.types.str;
default = "#ff00ff";
description = "The color of magenta";
};
cyan = lib.mkOption {
type = lib.types.str;
default = "#00ffff";
description = "The color of cyan";
};
};
};
config = lib.mkIf cfg.enable {
home.packages = [
pkgs.adw-gtk3
(pkgs.writeShellApplication {
name = "theme";
runtimeInputs = [
pkgs.matugen
pkgs.swww
pkgs.gnome.zenity
];
text = ''
WALLPAPER=${config.xdg.configHome}/matugen/wallpaper
SCHEME=$(dconf read /org/gnome/desktop/interface/color-scheme)
if [ "$SCHEME" = "'prefer-light'" ]; then
MODE="light"
else
MODE="dark"
fi
if [ $# -eq 0 ]; then
echo -e "\033[1mUsage:\033[0m mode|light|dark|toggle|wallpaper"
exit 1
elif [ "$1" = "mode" ]; then
echo -e "$MODE"
exit 0
elif [ "$1" = "wallpaper" ]; then
if [ $# -eq 1 ]; then
PICKED=$(zenity --file-selection --file-filter='Images | *.png *.jpg *.jpeg *.svg *.bmp *.gif')
cp "$PICKED" "$WALLPAPER"
else
cp "$2" "$WALLPAPER"
fi
elif [ "$1" = "toggle" ]; then
if [ "$MODE" = "light" ]; then
MODE="dark"
else
MODE="light"
fi
elif [ "$1" = "light" ] || [ "$1" = "dark" ]; then
MODE="$1"
elif [ "$1" = "init" ]; then
echo -e "\033[1mSetting up matugen\033[0m"
else
echo -e "\033[31mInvalid argument\033[0m"
exit 1
fi
if [ ! -f $WALLPAPER ]; then
echo -e "\033[31,1mNo wallpaper set\033[0m"
exit 1
fi
if [ "$MODE" = "light" ]; then
GTK_THEME="adw-gtk3"
else
GTK_THEME="adw-gtk3-dark"
fi
matugen image "$WALLPAPER" --type scheme-${cfg.flavour} --contrast ${builtins.toString cfg.contrast} --mode "$MODE"
sed -i "s/set background=dark/set background=$MODE/g" ${config.xdg.configHome}/nvim/colors/md3-evo.vim
dconf write /org/gnome/desktop/interface/gtk-theme "'$GTK_THEME'"
dconf write /org/gnome/desktop/interface/color-scheme "'prefer-$MODE'"
if command -v hyprctl &> /dev/null; then
hyprctl reload
fi
for i in $(pgrep -u "$USER" -x nvim); do
kill -USR1 "$i"
done
'';
})
];
programs.kitty = {
extraConfig = ''
include ${config.xdg.configHome}/kitty/theme.conf
'';
};
programs.nixvim = {
opts.termguicolors = true;
colorscheme = "md3-evo";
autoCmd = [
{
event = [ "Signal" ];
pattern = [ "SIGUSR1" ];
command = "colorscheme md3-evo";
}
];
};
gtk = {
gtk3.extraCss = "@import './theme.css';";
gtk4.extraCss = "@import './theme.css';";
};
wayland.windowManager.hyprland = {
settings.exec-once = [
"${pkgs.swww}/bin/swww-daemon"
"theme init"
];
extraConfig = ''
source=./theme.conf
'';
};
programs.matugen = {
enable = true;
settings = {
config = {
reload_apps = true;
reload_apps_list = {
kitty = config.programs.kitty.enable;
waybar = false;
dunst = config.services.dunst.enable;
};
set_wallpaper = true;
wallpaper_tool = "Swww";
custom_colors =
let
mkColor = category: color: {
color = cfg.${category}.${color};
blend = cfg.${category}.blend;
};
in
{
red = mkColor "ansi" "red";
green = mkColor "ansi" "green";
yellow = mkColor "ansi" "yellow";
orange = mkColor "ansi" "orange";
blue = mkColor "ansi" "blue";
magenta = mkColor "ansi" "magenta";
cyan = mkColor "ansi" "cyan";
keywords = mkColor "syntax" "keywords";
functions = mkColor "syntax" "functions";
constants = mkColor "syntax" "constants";
properties = mkColor "syntax" "properties";
strings = mkColor "syntax" "strings";
numbers = mkColor "syntax" "numbers";
structures = mkColor "syntax" "structures";
types = mkColor "syntax" "types";
danger = mkColor "semantic" "danger";
warning = mkColor "semantic" "warning";
success = mkColor "semantic" "success";
info = mkColor "semantic" "info";
};
custom_keywords = {
padding = builtins.toString cfg.padding;
double_padding = builtins.toString (cfg.padding * 2);
radius = builtins.toString cfg.radius;
transparency = builtins.toString cfg.transparency;
blur = builtins.toString cfg.blur;
flavour = cfg.flavour;
contrast = builtins.toString cfg.contrast;
transparency_hex =
let
zeroPad = hex: if builtins.stringLength hex == 1 then "0${hex}" else hex;
in
zeroPad (lib.trivial.toHexString (builtins.floor (cfg.transparency * 255)));
};
};
templates = {
kitty = {
input_path = ./kitty.conf;
output_path = "${config.xdg.configHome}/kitty/theme.conf";
};
nvim = {
input_path = ./nvim.vim;
output_path = "${config.xdg.configHome}/nvim/colors/md3-evo.vim";
};
hyprland = {
input_path = ./hyprland.conf;
output_path = "${config.xdg.configHome}/hypr/theme.conf";
};
anyrun = {
input_path = ./anyrun.css;
output_path = "${config.xdg.configHome}/anyrun/theme.css";
};
gtk3 = {
input_path = ./gtk.css;
output_path = "${config.xdg.configHome}/gtk-3.0/theme.css";
};
gtk4 = {
input_path = ./gtk.css;
output_path = "${config.xdg.configHome}/gtk-4.0/theme.css";
};
vesktop = {
input_path = ./discord.css;
output_path = "${config.xdg.configHome}/vesktop/themes/matugen.theme.css";
};
};
};
};
};
}

View File

@@ -0,0 +1,207 @@
set background=dark
let g:neovide_transparency = {{custom.transparency}}
let g:neovide_padding_top = {{custom.padding}}
let g:neovide_padding_bottom = {{custom.padding}}
let g:neovide_padding_left = {{custom.padding}}
let g:neovide_padding_right = {{custom.padding}}
let g:neovide_floating_blur_amount_x = {{custom.blur}}
let g:neovide_floating_blur_amount_y = {{custom.blur}}
let g:neovide_floating_shadow = 0
if exists("g:neovide")
hi Normal guibg={{colors.surface.default.hex}} guifg={{colors.on_surface.default.hex}}
set pumblend=0
set winblend=0
else
hi Normal ctermbg=NONE guibg=NONE guifg={{colors.on_surface.default.hex}}
set noshowmode
end
let g:terminal_color_0 = "{{colors.surface.default.hex}}"
let g:terminal_color_1 = "{{colors.red.default.hex}}"
let g:terminal_color_2 = "{{colors.green.default.hex}}"
let g:terminal_color_3 = "{{colors.yellow.default.hex}}"
let g:terminal_color_4 = "{{colors.blue.default.hex}}"
let g:terminal_color_5 = "{{colors.magenta.default.hex}}"
let g:terminal_color_6 = "{{colors.cyan.default.hex}}"
let g:terminal_color_7 = "{{colors.on_surface.default.hex}}"
let g:terminal_color_8 = "{{colors.outline_variant.default.hex}}"
let g:terminal_color_9 = "{{colors.red.default.hex}}"
let g:terminal_color_10 = "{{colors.green.default.hex}}"
let g:terminal_color_11 = "{{colors.yellow.default.hex}}"
let g:terminal_color_12 = "{{colors.blue.default.hex}}"
let g:terminal_color_13 = "{{colors.magenta.default.hex}}"
let g:terminal_color_14 = "{{colors.cyan.default.hex}}"
let g:terminal_color_15 = "{{colors.on_surface_variant.default.hex}}"
set termguicolors
hi Pmenu ctermbg=none guibg=none guifg={{colors.on_surface.default.hex}}
hi PmenuSel guibg={{colors.primary.default.hex}} guifg={{colors.on_primary.default.hex}}
hi CursorColumn guibg={{colors.primary.default.hex}} guifg={{colors.on_primary.default.hex}}
hi CursorLine guibg={{colors.primary.default.hex}} guifg={{colors.on_primary.default.hex}}
hi WildMenu guibg={{colors.primary.default.hex}} guifg={{colors.on_primary.default.hex}}
hi MoreMsg guifg={{colors.primary.default.hex}}
hi Question guifg={{colors.secondary.default.hex}}
hi Title guifg={{colors.primary.default.hex}}
hi FloatTitle guifg={{colors.primary.default.hex}}
hi Visual guifg={{colors.on_primary.default.hex}} guibg={{colors.primary.default.hex}}
hi Folded guibg={{colors.secondary.default.hex}} guifg={{colors.on_secondary.default.hex}}
hi FoldColumn guibg={{colors.secondary.default.hex}} guifg={{colors.on_secondary.default.hex}}
hi Conceal guibg={{colors.secondary_container.default.hex}} guifg={{colors.on_secondary_container.default.hex}}
hi TabLine guibg={{colors.primary_container.default.hex}} guifg={{colors.on_primary_container.default.hex}}
hi TabLineFill guibg={{colors.primary.default.hex}} guifg={{colors.on_primary.default.hex}}
hi SpecialKey guifg={{colors.primary.default.hex}}
hi Directory guifg={{colors.primary.default.hex}}
hi Search guifg={{colors.on_tertiary.default.hex}} guibg={{colors.tertiary.default.hex}}
hi CmpItemKindCopilot guifg={{colors.cyan.default.hex}}
hi CmpItemKindNpm guifg={{colors.red.default.hex}}
hi Error guibg={{colors.danger_container.default.hex}} guifg={{colors.on_danger_container.default.hex}}
hi ErrorMsg guibg={{colors.danger_container.default.hex}} guifg={{colors.on_danger_container.default.hex}}
hi WarningMsg guibg={{colors.warning_container.default.hex}} guifg={{colors.on_warning_container.default.hex}}
hi NvimInternalError guibg={{colors.danger.default.hex}} guifg={{colors.on_danger.default.hex}}
hi DiagnosticError guifg={{colors.danger.default.hex}}
hi DiagnosticWarn guifg={{colors.warning.default.hex}}
hi DiagnosticInfo guifg={{colors.info.default.hex}}
hi DiagnosticHint guifg={{colors.outline.default.hex}}
hi DiagnosticOk guifg={{colors.success.default.hex}}
hi RedrawDebugNormal guibg={{colors.surface_variant.default.hex}} guifg={{colors.on_surface_variant.default.hex}}
hi RedrawDebugClear guibg={{colors.warning.default.hex}} guifg={{colors.on_warning.default.hex}}
hi RedrawDebugComposed guibg={{colors.success.default.hex}} guifg={{colors.on_success.default.hex}}
hi RedrawDebugRecompose guibg={{colors.danger.default.hex}} guifg={{colors.on_danger.default.hex}}
hi DiagnosticUnderlineError gui=undercurl guisp={{colors.danger.default.hex}}
hi DiagnosticUnderlineWarn gui=undercurl guisp={{colors.warning.default.hex}}
hi DiagnosticUnderlineInfo gui=undercurl guisp={{colors.info.default.hex}}
hi DiagnosticUnderlineHint gui=undercurl guisp={{colors.outline.default.hex}}
hi DiagnosticUnderlineOk gui=undercurl guisp={{colors.success.default.hex}}
hi DiagnosticDeprecated gui=strikethrough guisp={{colors.danger.default.hex}}
hi SpellBad gui=undercurl guisp={{colors.success.default.hex}}
hi SpellCap gui=undercurl guisp={{colors.success.default.hex}}
hi SpellRare gui=undercurl guisp={{colors.success.default.hex}}
hi SpellLocal gui=undercurl guisp={{colors.success.default.hex}}
hi DiffAdd guibg={{colors.green_container.default.hex}} guifg={{colors.on_green_container.default.hex}}
hi DiffChange guibg={{colors.yellow_container.default.hex}} guifg={{colors.on_yellow_container.default.hex}}
hi DiffDelete guibg={{colors.red_container.default.hex}} guifg={{colors.on_red_container.default.hex}}
hi DiffText guibg={{colors.blue_container.default.hex}} guifg={{colors.on_blue_container.default.hex}}
hi NeoTreeGitAdded guifg={{colors.green.default.hex}}
hi NeoTreeGitDeleted guifg={{colors.red.default.hex}}
hi NeoTreeGitModified guifg={{colors.yellow.default.hex}}
hi NeoTreeGitConflict guifg={{colors.danger.default.hex}}
hi NeoTreeGitUntracked guifg={{colors.blue.default.hex}}
hi NonText guifg={{colors.outline_variant.default.hex}}
hi LineNr guifg={{colors.outline_variant.default.hex}}
hi CursorLineNr guifg={{colors.on_surface.default.hex}}
hi SignColumn guibg=none guifg={{colors.on_surface.default.hex}}
hi IblScope guifg={{colors.on_surface.default.hex}}
hi @ibl.scope.char.1 guifg={{colors.on_surface.default.hex}}
hi @ibl.scope.underline.1 guisp={{colors.on_surface.default.hex}}
hi Comment guifg={{colors.outline.default.hex}}
hi Todo guibg={{colors.yellow_container.default.hex}} guifg={{colors.on_yellow_container.default.hex}}
hi def link @comment.todo Todo
hi def link @comment.error Error
hi String guifg={{colors.strings.default.hex}}
hi Identifier guifg={{colors.on_surface.default.hex}}
hi Statement gui=bold guifg={{colors.on_surface.default.hex}}
hi def link Operator Normal
hi @conditional.ternary guifg={{colors.on_surface.default.hex}}
hi def link @keyword.conditional.ternary Operator
hi def link Delimiter Normal
hi def link @lsp.mod.local Normal
hi def link @parameter Identifier
hi @lsp.mod.defaultLibrary gui=bold
hi @lsp.mod.readonly gui=italic
hi Constant guifg={{colors.constants.default.hex}}
hi def link @variable Constant
hi @property guifg={{colors.properties.default.hex}}
hi def link @field @property
hi def link @label.json @property
hi def link @label.jsonc @label.json
hi def link @property.typescript @property
hi def link @lsp.type.property @property
hi def link @attribute @property
hi def link @tag.attribute @property
hi def link @lsp.type.variable Constant
hi def link @lsp.typemod.variable.local Identifier
hi Keyword guifg={{colors.keywords.default.hex}}
hi Special guifg={{colors.keywords.default.hex}}
hi def link Character Keyword
hi def link Boolean Keyword
hi def link Repeat Keyword
hi def link Label Keyword
hi def link Exception Keyword
hi def link Include Keyword
hi def link Conditional Keyword
hi def link @type.builtin Keyword
hi Number guifg={{colors.numbers.default.hex}}
hi Function guifg={{colors.functions.default.hex}}
hi Structure guifg={{colors.structures.default.hex}}
hi def link PreProc Structure
hi def link Tag Structure
hi Type gui=none guifg={{colors.types.default.hex}}
hi def link @lsp.type.interface Type
hi IlluminatedWordText gui=none guibg={{colors.surface_container_highest.default.hex}}
hi IlluminatedWordRead gui=none guibg={{colors.surface_container_highest.default.hex}}
hi IlluminatedWordWrite gui=none guibg={{colors.surface_container_highest.default.hex}}
hi MatchParen gui=none guibg={{colors.surface_container_highest.default.hex}}
:lua require('lualine').setup({options = {theme = {
\ insert = {
\ a = {fg = "{{colors.on_green.default.hex}}", bg = "{{colors.green.default.hex}}", gui = "bold"},
\ b = {fg = "{{colors.on_surface_variant.default.hex}}", bg = "{{colors.surface_variant.default.hex}}"},
\ c = {fg = "{{colors.on_surface.default.hex}}", bg = "{{colors.surface.default.hex}}"},
\ },
\ normal = {
\ a = {fg = "{{colors.on_primary.default.hex}}", bg = "{{colors.primary.default.hex}}", gui = "bold"},
\ b = {fg = "{{colors.on_surface_variant.default.hex}}", bg = "{{colors.surface_variant.default.hex}}"},
\ c = {fg = "{{colors.on_surface.default.hex}}", bg = "{{colors.surface.default.hex}}"},
\ },
\ command = {
\ a = {fg = "{{colors.on_tertiary.default.hex}}", bg = "{{colors.tertiary.default.hex}}", gui = "bold"},
\ b = {fg = "{{colors.on_surface_variant.default.hex}}", bg = "{{colors.surface_variant.default.hex}}"},
\ c = {fg = "{{colors.on_surface.default.hex}}", bg = "{{colors.surface.default.hex}}"},
\ },
\ visual = {
\ a = {fg = "{{colors.on_magenta.default.hex}}", bg = "{{colors.magenta.default.hex}}", gui = "bold"},
\ b = {fg = "{{colors.on_surface_variant.default.hex}}", bg = "{{colors.surface_variant.default.hex}}"},
\ c = {fg = "{{colors.on_surface.default.hex}}", bg = "{{colors.surface.default.hex}}"},
\ },
\ replace = {
\ a = {fg = "{{colors.on_red.default.hex}}", bg = "{{colors.red.default.hex}}", gui = "bold"},
\ b = {fg = "{{colors.on_surface_variant.default.hex}}", bg = "{{colors.surface_variant.default.hex}}"},
\ c = {fg = "{{colors.on_surface.default.hex}}", bg = "{{colors.surface.default.hex}}"},
\ },
\ inactive = {
\ a = {fg = "{{colors.on_surface_variant.default.hex}}", bg = "{{colors.surface_variant.default.hex}}", gui = "bold"},
\ b = {fg = "{{colors.on_surface_variant.default.hex}}", bg = "{{colors.surface_variant.default.hex}}"},
\ c = {fg = "{{colors.on_surface_variant.default.hex}}", bg = "{{colors.surface_variant.default.hex}}"},
\ },
\} } })
lua require('nvim-web-devicons').refresh()