add templates for foot and pywalfox, improve neovim template

This commit is contained in:
lucy 2026-02-25 10:25:03 +01:00
parent 080913498b
commit dabaf26e2f
7 changed files with 120 additions and 197 deletions

View File

@ -3,10 +3,10 @@ reload_apps = true
[templates.nvim]
input_path = "~/.config/matugen/templates/nvim.lua"
output_path = "~/.config/nvim/colors/wallust.lua"
output_path = "~/.config/nvim/lua/config/generated.lua"
post_hook = 'pkill -SIGUSR1 nvim'
[templates.gtk3]
input_path = "~/.config/matugen/templates/gtk.css"
@ -49,3 +49,10 @@ input_path = "~/.config/matugen/templates/kitty.conf"
output_path = "~/.config/kitty/colors.conf"
post_hook = "pkill -SIGUSR1 kitty"
[templates.pywalfox]
input_path = '~/.config/matugen/templates/pywalfox.json'
output_path = '~/.cache/wal/colors.json'
post_hook = 'pywalfox update'
[templates.foot]
input_path = '~/.config/matugen/templates/foot.ini'
output_path = '~/.config/foot/colors.ini'

View File

@ -1,91 +1,7 @@
pragma Singleton
import QtQuick
import Quickshell
Singleton {
id: customColors
// --- Core Colors ---
readonly property color primary: "{{colors.primary.default.hex}}"
readonly property color onPrimaryColor: "{{colors.on_primary.default.hex}}"
readonly property color primaryContainer: "{{colors.primary_container.default.hex}}"
readonly property color onPrimaryContainerColor: "{{colors.on_primary_container.default.hex}}"
readonly property color inversePrimary: "{{colors.inverse_primary.default.hex}}"
readonly property color secondary: "{{colors.secondary.default.hex}}"
readonly property color onSecondaryColor: "{{colors.on_secondary.default.hex}}"
readonly property color secondaryContainer: "{{colors.secondary_container.default.hex}}"
readonly property color onSecondaryContainerColor: "{{colors.on_secondary_container.default.hex}}"
readonly property color tertiary: "{{colors.tertiary.default.hex}}"
readonly property color onTertiaryColor: "{{colors.on_tertiary.default.hex}}"
readonly property color tertiaryContainer: "{{colors.tertiary_container.default.hex}}"
readonly property color onTertiaryContainerColor: "{{colors.on_tertiary_container.default.hex}}"
readonly property color error: "{{colors.error.default.hex}}"
readonly property color onErrorColor: "{{colors.on_error.default.hex}}"
readonly property color errorContainer: "{{colors.error_container.default.hex}}"
readonly property color onErrorContainerColor: "{{colors.on_error_container.default.hex}}"
readonly property color background: "{{colors.background.default.hex}}"
readonly property color onBackgroundColor: "{{colors.on_background.default.hex}}"
// --- Surfaces ---
readonly property color surface: "{{colors.surface.default.hex}}"
readonly property color onSurfaceColor: "{{colors.on_surface.default.hex}}"
readonly property color surfaceVariant: "{{colors.surface_variant.default.hex}}"
readonly property color onSurfaceVariantColor: "{{colors.on_surface_variant.default.hex}}"
readonly property color inverseSurface: "{{colors.inverse_surface.default.hex}}"
readonly property color inverseOnSurface: "{{colors.inverse_on_surface.default.hex}}"
readonly property color surfaceDim: "{{colors.surface_dim.default.hex}}"
readonly property color surfaceBright: "{{colors.surface_bright.default.hex}}"
readonly property color surfaceContainerLowest: "{{colors.surface_container_lowest.default.hex}}"
readonly property color surfaceContainerLow: "{{colors.surface_container_low.default.hex}}"
readonly property color surfaceContainer: "{{colors.surface_container.default.hex}}"
readonly property color surfaceContainerHigh: "{{colors.surface_container_high.default.hex}}"
readonly property color surfaceContainerHighest: "{{colors.surface_container_highest.default.hex}}"
// --- Outlines & Shadows ---
readonly property color outline: "{{colors.outline.default.hex}}"
readonly property color outlineVariant: "{{colors.outline_variant.default.hex}}"
readonly property color shadow: "{{colors.shadow.default.hex}}"
readonly property color scrim: "{{colors.scrim.default.hex}}"
// --- Fixed Colors (useful for things that shouldn't change drastically in dark mode) ---
readonly property color primaryFixed: "{{colors.primary_fixed.default.hex}}"
readonly property color primaryFixedDim: "{{colors.primary_fixed_dim.default.hex}}"
readonly property color onPrimaryFixedColor: "{{colors.on_primary_fixed.default.hex}}"
readonly property color onPrimaryFixedVariant: "{{colors.on_primary_fixed_variant.default.hex}}"
readonly property color secondaryFixed: "{{colors.secondary_fixed.default.hex}}"
readonly property color secondaryFixedDim: "{{colors.secondary_fixed_dim.default.hex}}"
readonly property color onSecondaryFixedColor: "{{colors.on_secondary_fixed.default.hex}}"
readonly property color onSecondaryFixedVariant: "{{colors.on_secondary_fixed_variant.default.hex}}"
readonly property color tertiaryFixed: "{{colors.tertiary_fixed.default.hex}}"
readonly property color tertiaryFixedDim: "{{colors.tertiary_fixed_dim.default.hex}}"
readonly property color onTertiaryFixedColor: "{{colors.on_tertiary_fixed.default.hex}}"
readonly property color onTertiaryFixedVariant: "{{colors.on_tertiary_fixed_variant.default.hex}}"
// --- Legacy / Terminal Mappings (color0 - color15) ---
readonly property color color0: "{{colors.surface.default.hex}}"
readonly property color color1: "{{colors.error.default.hex}}"
readonly property color color2: "{{colors.primary.default.hex}}"
readonly property color color3: "{{colors.tertiary.default.hex}}"
readonly property color color4: "{{colors.secondary.default.hex}}"
readonly property color color5: "{{colors.primary_container.default.hex}}"
readonly property color color6: "{{colors.secondary_container.default.hex}}"
readonly property color color7: "{{colors.on_surface.default.hex}}"
readonly property color color8: "{{colors.surface_variant.default.hex}}"
readonly property color color9: "{{colors.error_container.default.hex}}"
readonly property color color10: "{{colors.inverse_primary.default.hex}}"
readonly property color color11: "{{colors.on_tertiary_container.default.hex}}"
readonly property color color12: "{{colors.on_secondary_container.default.hex}}"
readonly property color color13: "{{colors.on_primary_container.default.hex}}"
readonly property color color14: "{{colors.on_surface_variant.default.hex}}"
readonly property color color15: "{{colors.inverse_surface.default.hex}}"
// Helper alias for common needs
readonly property color cursor: primary
QtObject {
<* for name, value in colors *>
readonly property color {{name}}: "{{value.default.hex}}"
<* endfor *>
}

31
templates/foot.ini Normal file
View File

@ -0,0 +1,31 @@
[colors]
alpha=1.0
background={{ colors.background.default.hex_stripped }}
foreground={{ colors.on_surface.default.hex_stripped }}
regular0={{ colors.surface.default.hex_stripped }}
regular1={{ colors.error.default.hex_stripped }}
regular2={{ colors.primary.default.hex_stripped }}
regular3={{ colors.tertiary.default.hex_stripped }}
regular4={{ colors.on_primary_container.default.hex_stripped }}
regular5={{ colors.on_secondary_container.default.hex_stripped }}
regular6={{ colors.secondary.default.hex_stripped }}
regular7={{ colors.on_surface.default.hex_stripped }}
bright0={{ colors.surface_bright.default.hex_stripped }}
bright1={{ colors.error.default.hex_stripped }}
bright2={{ colors.primary.default.hex_stripped }}
bright3={{ colors.tertiary.default.hex_stripped }}
bright4={{ colors.on_primary_container.default.hex_stripped }}
bright5={{ colors.on_secondary_container.default.hex_stripped }}
bright6={{ colors.secondary.default.hex_stripped }}
bright7={{ colors.on_surface.default.hex_stripped }}
dim0=45475A
dim1=F38BA8
dim2=A6E3A1
dim3=F9E2AF
dim4=89B4FA
dim5=F5C2E7
dim6=94E2D5
dim7=BAC2DE
selection-foreground={{ colors.primary.default.hex_stripped }}
selection-background={{ colors.on_primary.default.hex_stripped }}
cursor={{ colors.surface_variant.default.hex_stripped }} {{ colors.on_surface.default.hex_stripped }}

View File

@ -1,5 +1,5 @@
# Hyprland with colors from matugen
general {
col.active_border = rgba({{colors.on_background.default.hex_stripped}}ff)
col.active_border = rgba({{colors.primary.default.hex_stripped}}ff)
col.inactive_border = rgba({{colors.surface.default.hex_stripped}}ee)
}

View File

@ -1,7 +1,7 @@
# The kitty terminal template for matugen
cursor {{colors.primary.default.hex}}
background {{colors.background.default.hex | set_saturation: 2.0 }}
background {{colors.surface.default.hex}}
foreground {{colors.on_background.default.hex}}
color0 {{colors.surface.default.hex}}

View File

@ -1,115 +1,62 @@
-- Matugen Theme
vim.cmd("hi clear")
if vim.fn.exists("syntax_on") then
vim.cmd("syntax reset")
end
vim.g.colors_name = "matugen"
-- Generated by Matugen
local c = {
bg = "{{colors.background.default.hex}}",
fg = "{{colors.on_background.default.hex}}",
cursor = "{{colors.primary.default.hex}}",
c0 = "{{colors.surface.default.hex}}",
c1 = "{{colors.error.default.hex}}",
c2 = "{{colors.primary.default.hex}}",
c3 = "{{colors.tertiary.default.hex}}",
c4 = "{{colors.secondary.default.hex}}",
c5 = "{{colors.primary_container.default.hex}}",
c6 = "{{colors.secondary_container.default.hex}}",
c7 = "{{colors.on_surface.default.hex}}",
c8 = "{{colors.surface_variant.default.hex}}",
c9 = "{{colors.error_container.default.hex}}",
c10 = "{{colors.inverse_primary.default.hex}}",
c11 = "{{colors.on_tertiary_container.default.hex}}",
c12 = "{{colors.on_secondary_container.default.hex}}",
c13 = "{{colors.on_primary_container.default.hex}}",
c14 = "{{colors.on_surface_variant.default.hex}}",
c15 = "{{colors.inverse_surface.default.hex}}",
tbg = "{{colors.surface.default.hex | set_lightness: 4.0}}", -- Matugen filters usually not inline
}
require("base16-colorscheme").setup({
base00 = "{{colors.background.default.hex}}",
base01 = "{{colors.surface_container_lowest.default.hex}}",
base02 = "{{colors.surface_container_low.default.hex}}",
base03 = "{{colors.outline_variant.default.hex}}",
base04 = "{{colors.on_surface_variant.default.hex}}",
base05 = "{{colors.on_surface.default.hex}}",
base06 = "{{colors.inverse_on_surface.default.hex}}",
base07 = "{{colors.surface_bright.default.hex}}",
local hl = function(group, opts)
vim.api.nvim_set_hl(0, group, opts)
base08 = "{{colors.tertiary.default.hex | lighten: -5}}",
base09 = "{{colors.tertiary.default.hex}}",
base0A = "{{colors.secondary.default.hex}}",
base0B = "{{colors.primary.default.hex}}",
base0C = "{{colors.tertiary_container.default.hex}}",
base0D = "{{colors.primary_container.default.hex}}",
base0E = "{{colors.secondary_container.default.hex}}",
base0F = "{{colors.secondary.default.hex | lighten: -10}}",
})
-- We first theme base16, but we also need to fix some other colors that don't
-- contrast well by default
-- Helper function to set multiple highlight groups at once
local function set_hl_mutliple(groups, value)
for _, v in pairs(groups) do
vim.api.nvim_set_hl(0, v, value)
end
end
-- Base
hl("Normal", { fg = c.fg, bg = c.bg })
hl("Cursor", { fg = c.bg, bg = c.cursor })
hl("LineNr", { fg = c.c8 })
hl("CursorLine", { bg = c.c0 })
hl("StatusLine", { fg = c.fg, bg = c.c0 })
-- Harpoon Colors
hl("HarpoonInactive", { fg = c.fg, bg = c.bg })
hl("HarpoonActive", { fg = c.bg, bg = c.c2 })
hl("HarpoonNumberInactive", { fg = c.fg, bg = c.bg })
hl("HarpoonNumberActive", { fg = c.bg, bg = c.c2 })
hl("TabLineFill", { fg = c.fg, bg = c.bg })
-- Syntax
hl("Comment", { fg = c.c8, italic = true })
hl("Constant", { fg = c.c3 })
hl("String", { fg = c.c2 })
hl("Identifier", { fg = c.c4 })
hl("Function", { fg = c.c4, bold = true })
hl("Statement", { fg = c.c5 })
hl("Keyword", { fg = c.c5 })
hl("Type", { fg = c.c6 })
hl("Special", { fg = c.c1 })
-- Make selected text stand out more
vim.api.nvim_set_hl(0, "Visual", {
bg = "{{colors.primary_container.default.hex}}",
fg = "{{colors.on_primary_container.default.hex}}", -- normal text contrast
})
-- UI
hl("Pmenu", { fg = c.fg, bg = c.c0 })
hl("PmenuSel", { fg = c.c0, bg = c.c4 })
hl("WinSeparator", { fg = c.c8 })
-- Make "string" text contrast better
set_hl_mutliple({ "String", "TSString" }, {
fg = "{{colors.tertiary.default.hex | lighten: -15.0 }}",
})
-- BARBAR
hl("BufferCurrent", { fg = c.fg, bg = c.bg, bold = true })
hl("BufferCurrentIndex", { fg = c.c4, bg = c.bg })
hl("BufferCurrentMod", { fg = c.c3, bg = c.bg })
hl("BufferCurrentSign", { fg = c.c4, bg = c.bg })
hl("BufferCurrentTarget", { fg = c.c1, bg = c.bg, bold = true })
-- Grey out comments
set_hl_mutliple({ "TSComment", "Comment" }, {
fg = "{{colors.outline.default.hex}}",
italic = true,
})
hl("BufferInactive", { fg = c.c8, bg = c.bg })
hl("BufferInactiveIndex", { fg = c.c8, bg = c.bg })
hl("BufferInactiveMod", { fg = c.c8, bg = c.bg })
hl("BufferInactiveSign", { fg = c.c8, bg = c.bg })
hl("BufferInactiveTarget", { fg = c.c8, bg = c.bg, bold = true })
-- Color in other highlight groups as you see fit!
hl("BufferVisible", { fg = c.fg, bg = c.c0 })
hl("BufferVisibleIndex", { fg = c.fg, bg = c.c0 })
hl("BufferVisibleMod", { fg = c.c3, bg = c.c0 })
hl("BufferVisibleSign", { fg = c.c4, bg = c.c0 })
hl("BufferVisibleTarget", { fg = c.c1, bg = c.c0, bold = true })
set_hl_mutliple({ "TSMethod", "Method" }, {
fg = "{{colors.tertiary.default.hex}}",
})
hl("BufferTabpageFill", { fg = c.c0, bg = c.bg })
hl("TelescopeNormal", { bg = c.tbg })
set_hl_mutliple({ "TSFunction", "Function" }, {
fg = "{{colors.secondary.default.hex}}",
})
-- MARKDOWN
hl("RenderMarkdownH1", { fg = c.c4, bold = true })
hl("RenderMarkdownH2", { fg = c.c3, bold = true })
hl("RenderMarkdownH3", { fg = c.c2, bold = true })
hl("RenderMarkdownH4", { fg = c.c5, bold = true })
hl("RenderMarkdownH5", { fg = c.c6, bold = true })
hl("RenderMarkdownH6", { fg = c.c1, bold = true })
hl("RenderMarkdownH1Bg", { bg = c.c0 })
hl("RenderMarkdownH2Bg", { bg = c.c0 })
hl("RenderMarkdownH3Bg", { bg = c.c0 })
hl("RenderMarkdownH4Bg", { bg = c.c0 })
hl("RenderMarkdownH5Bg", { bg = c.c0 })
hl("RenderMarkdownH6Bg", { bg = c.c0 })
hl("RenderMarkdownCode", { bg = c.tbg })
hl("RenderMarkdownCodeInline", { fg = c.c4, bg = c.tbg })
hl("RenderMarkdownBullet", { fg = c.c3 })
hl("RenderMarkdownQuote", { fg = c.c8 })
hl("RenderMarkdownDash", { fg = c.c8 })
hl("RenderMarkdownSign", { fg = c.c8 })
hl("RenderMarkdownInfo", { fg = c.c4, bg = c.c0 })
hl("RenderMarkdownSuccess", { fg = c.c2, bg = c.c0 })
hl("RenderMarkdownWarn", { fg = c.c3, bg = c.c0 })
hl("RenderMarkdownError", { fg = c.c1, bg = c.c0 })
hl("RenderMarkdownHint", { fg = c.c6, bg = c.c0 })
hl("RenderMarkdownUnchecked", { fg = c.c8 })
hl("RenderMarkdownChecked", { fg = c.c2 })
set_hl_mutliple({ "Keyword", "TSKeyword", "TSKeywordFunction", "TSRepeat" }, {
fg = "{{colors.inverse_primary.default.hex}}",
})

22
templates/pywalfox.json Normal file
View File

@ -0,0 +1,22 @@
{
"wallpaper": "{{image}}",
"alpha": "100",
"colors": {
"color0": "{{colors.background.default.hex}}",
"color1": "",
"color2": "",
"color3": "",
"color4": "",
"color5": "",
"color6": "",
"color7": "",
"color8": "",
"color9": "",
"color10": "{{colors.primary.default.hex}}",
"color11": "",
"color12": "",
"color13": "{{colors.surface_bright.default.hex}}",
"color14": "",
"color15": "{{colors.on_surface.default.hex}}"
}
}