mirror of
https://github.com/Theaninova/TheaninovOS.git
synced 2025-12-12 11:36:20 +00:00
use hm module for matugen
This commit is contained in:
@@ -18,6 +18,7 @@
|
||||
./packages
|
||||
./programs
|
||||
./services
|
||||
./theme/md3-evo.nix
|
||||
./desktops/hyprland
|
||||
];
|
||||
}
|
||||
|
||||
90
modules/home-manager/theme/README.md
Normal file
90
modules/home-manager/theme/README.md
Normal 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";
|
||||
};
|
||||
};
|
||||
```
|
||||
7
modules/home-manager/theme/anyrun.css
Normal file
7
modules/home-manager/theme/anyrun.css
Normal file
@@ -0,0 +1,7 @@
|
||||
box#main {
|
||||
background: alpha({{colors.surface.default.hex}}, 0.4);
|
||||
}
|
||||
|
||||
* {
|
||||
color: {{colors.on_surface.default.hex}};
|
||||
}
|
||||
BIN
modules/home-manager/theme/dark.png
Normal file
BIN
modules/home-manager/theme/dark.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.0 MiB |
47
modules/home-manager/theme/discord.css
Normal file
47
modules/home-manager/theme/discord.css
Normal 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 */
|
||||
}
|
||||
34
modules/home-manager/theme/gtk.css
Normal file
34
modules/home-manager/theme/gtk.css
Normal 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);
|
||||
|
||||
17
modules/home-manager/theme/hyprland.conf
Normal file
17
modules/home-manager/theme/hyprland.conf
Normal 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
|
||||
}
|
||||
}
|
||||
31
modules/home-manager/theme/kitty.conf
Normal file
31
modules/home-manager/theme/kitty.conf
Normal 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}}
|
||||
BIN
modules/home-manager/theme/light.png
Normal file
BIN
modules/home-manager/theme/light.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.6 MiB |
374
modules/home-manager/theme/md3-evo.nix
Normal file
374
modules/home-manager/theme/md3-evo.nix
Normal 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";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
207
modules/home-manager/theme/nvim.vim
Normal file
207
modules/home-manager/theme/nvim.vim
Normal 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()
|
||||
Reference in New Issue
Block a user