remove matugen remnants — theming is now handled by stylix

Delete 8 unused matugen template files, remove the matugen package,
homepage custom.css watcher infrastructure, and the wallpaper shell
function. Update remaining comments to reference stylix.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
rope 2026-05-20 17:45:11 +01:00
parent 53c3fedf52
commit 1aebc200b6
13 changed files with 5 additions and 754 deletions

View file

@ -16,7 +16,6 @@
screen
yt-dlp
ghostty.terminfo
matugen
usbutils
lm_sensors
(pkgs.writeShellScriptBin "transcode-hevc" ''

View file

@ -60,34 +60,11 @@ in
{
config = lib.mkIf (config.networking.hostName == "FredOS-Mediaserver") {
# Writable location for matugen-generated custom.css; bind-mounted into
# the homepage service namespace over the Nix-managed /etc path.
systemd.tmpfiles.rules = [
"d /var/lib/homepage-custom-css 0755 fred users -"
"f /var/lib/homepage-custom-css/custom.css 0644 fred users -"
"d /var/lib/homepage-updates 0755 fred users -"
''f /var/lib/homepage-updates/latest.json 0644 fred users - {\x22date\x22:\x22pending\x22,\x22changes\x22:\x22run update\x22,\x22closure\x22:\x22+0B\x22,\x22kernel\x22:\x22-\x22}''
];
systemd.services.homepage-dashboard.serviceConfig.BindPaths = [
"/var/lib/homepage-custom-css/custom.css:/etc/homepage-dashboard/custom.css"
];
# Auto-restart homepage when matugen rewrites the custom.css
systemd.paths.homepage-css-reload = {
description = "Watch matugen custom.css for changes";
wantedBy = [ "multi-user.target" ];
pathConfig.PathChanged = "/var/lib/homepage-custom-css/custom.css";
};
systemd.services.homepage-css-reload = {
description = "Restart homepage after custom.css changes";
serviceConfig = {
Type = "oneshot";
ExecStart = "${pkgs.systemd}/bin/systemctl restart homepage-dashboard.service";
};
};
# Oneshot service that extracts API keys and writes /etc/homepage-secrets
systemd.services.homepage-extract-secrets = {
description = "Extract API keys for Homepage dashboard";

View file

@ -128,11 +128,5 @@
end
function fish_right_prompt; end
# Regenerate wallpaper color theme
function wallpaper
matugen image ~/.local/share/backgrounds/wallpaper.png --source-color-index 0 -m dark
echo "Wallpaper colors updated! Shell theme reloaded."
end
'';
}

View file

@ -112,10 +112,10 @@
cp -rL "$tmpthemes/Papirus-Dark" $out/share/icons/
'';
# Map matugen's Material You placeholders to the closest base16 slot
# in stylix's palette. The mapping is approximate (Material You has
# more semantic colours than base16), but covers the placeholders
# used in our Zen userChrome and Vesktop quickCss templates.
# Map Material You placeholders to the closest base16 slot in stylix's
# palette. The mapping is approximate (Material You has more semantic
# colours than base16), but covers the placeholders used in our Zen
# userChrome and Vesktop quickCss templates.
stylixize = builtins.replaceStrings
[
"{{colors.primary.default.hex}}"

View file

@ -1,54 +0,0 @@
# Matugen-generated btop theme based on wallpaper
theme[main_bg]="{{colors.surface.default.hex}}"
theme[main_fg]="{{colors.on_surface.default.hex}}"
theme[title]="{{colors.on_surface.default.hex}}"
theme[hi_fg]="{{colors.primary.default.hex}}"
theme[selected_bg]="{{colors.surface_container_high.default.hex}}"
theme[selected_fg]="{{colors.primary.default.hex}}"
theme[inactive_fg]="{{colors.on_surface_variant.default.hex}}"
theme[graph_text]="{{colors.on_surface.default.hex}}"
theme[meter_bg]="{{colors.surface_container.default.hex}}"
theme[proc_misc]="{{colors.tertiary.default.hex}}"
theme[cpu_box]="{{colors.outline.default.hex}}"
theme[mem_box]="{{colors.outline.default.hex}}"
theme[net_box]="{{colors.outline.default.hex}}"
theme[proc_box]="{{colors.outline.default.hex}}"
theme[div_line]="{{colors.outline_variant.default.hex}}"
theme[temp_start]="{{colors.tertiary.default.hex}}"
theme[temp_mid]="{{colors.secondary.default.hex}}"
theme[temp_end]="{{colors.error.default.hex}}"
theme[cpu_start]="{{colors.primary.default.hex}}"
theme[cpu_mid]="{{colors.secondary.default.hex}}"
theme[cpu_end]="{{colors.tertiary.default.hex}}"
theme[free_start]="{{colors.primary.default.hex}}"
theme[free_mid]="{{colors.secondary.default.hex}}"
theme[free_end]="{{colors.tertiary.default.hex}}"
theme[cached_start]="{{colors.primary.default.hex}}"
theme[cached_mid]="{{colors.secondary.default.hex}}"
theme[cached_end]="{{colors.tertiary.default.hex}}"
theme[available_start]="{{colors.primary.default.hex}}"
theme[available_mid]="{{colors.secondary.default.hex}}"
theme[available_end]="{{colors.tertiary.default.hex}}"
theme[used_start]="{{colors.primary.default.hex}}"
theme[used_mid]="{{colors.secondary.default.hex}}"
theme[used_end]="{{colors.tertiary.default.hex}}"
theme[download_start]="{{colors.primary.default.hex}}"
theme[download_mid]="{{colors.secondary.default.hex}}"
theme[download_end]="{{colors.tertiary.default.hex}}"
theme[upload_start]="{{colors.primary.default.hex}}"
theme[upload_mid]="{{colors.secondary.default.hex}}"
theme[upload_end]="{{colors.tertiary.default.hex}}"
theme[process_start]="{{colors.primary.default.hex}}"
theme[process_mid]="{{colors.secondary.default.hex}}"
theme[process_end]="{{colors.tertiary.default.hex}}"

View file

@ -1,22 +0,0 @@
background = {{colors.background.default.hex}}
foreground = {{colors.on_surface.default.hex}}
cursor-color = {{colors.primary.default.hex}}
cursor-text = {{colors.on_primary.default.hex}}
selection-background = {{colors.secondary_container.default.hex}}
selection-foreground = {{colors.on_secondary_container.default.hex}}
palette = 0={{colors.surface_container_high.default.hex}}
palette = 1={{colors.error.default.hex}}
palette = 2={{colors.primary.default.hex}}
palette = 3={{colors.tertiary.default.hex}}
palette = 4={{colors.secondary.default.hex}}
palette = 5={{colors.primary_fixed.default.hex}}
palette = 6={{colors.secondary_fixed.default.hex}}
palette = 7={{colors.on_surface_variant.default.hex}}
palette = 8={{colors.outline.default.hex}}
palette = 9={{colors.error_container.default.hex}}
palette = 10={{colors.primary_container.default.hex}}
palette = 11={{colors.tertiary_container.default.hex}}
palette = 12={{colors.secondary_container.default.hex}}
palette = 13={{colors.inverse_primary.default.hex}}
palette = 14={{colors.outline_variant.default.hex}}
palette = 15={{colors.on_surface.default.hex}}

View file

@ -1,332 +0,0 @@
/* Wallpaper-based GNOME Shell colors generated by matugen */
/* Override system accent color variables */
stage {
-st-accent-color: {{colors.primary_container.default.hex}} !important;
-st-accent-fg-color: {{colors.on_primary_container.default.hex}} !important;
}
#panel {
background-color: {{colors.surface_container.default.hex}} !important;
color: {{colors.on_surface.default.hex}} !important;
}
#panel .panel-button {
color: {{colors.on_surface.default.hex}} !important;
}
#panel .panel-button:hover, #panel .panel-button:focus {
background-color: transparent !important;
box-shadow: inset 0 0 0 100px {{colors.surface_container_high.default.hex}} !important;
}
#panel .panel-button:active, #panel .panel-button:checked,
#panel .panel-button:checked:hover {
background-color: transparent !important;
box-shadow: inset 0 0 0 100px {{colors.surface_container_highest.default.hex}} !important;
}
.quick-settings {
background-color: {{colors.surface_container.default.hex}} !important;
}
.quick-settings-grid .quick-toggle {
background-color: {{colors.surface_container_high.default.hex}} !important;
color: {{colors.on_surface.default.hex}} !important;
}
/* Checked toggles — override accent color */
.quick-toggle:checked {
background-color: {{colors.primary_container.default.hex}} !important;
color: {{colors.on_primary_container.default.hex}} !important;
}
.quick-toggle:checked:hover {
background-color: {{colors.primary_container.default.hex}} !important;
}
.quick-toggle:checked:active {
background-color: {{colors.primary_container.default.hex}} !important;
}
/* Quick toggle icons */
.quick-toggle .quick-toggle-icon {
color: {{colors.on_surface.default.hex}} !important;
}
.quick-toggle:checked .quick-toggle-icon {
color: {{colors.on_primary_container.default.hex}} !important;
}
/* Chevron/arrow menu button (the > on Wired, Power Mode etc) */
.quick-toggle-has-menu .quick-toggle-menu-button {
background-color: {{colors.surface_container_high.default.hex}} !important;
color: {{colors.on_surface.default.hex}} !important;
}
.quick-toggle-has-menu .quick-toggle-menu-button:checked {
background-color: {{colors.primary_container.default.hex}} !important;
color: {{colors.on_primary_container.default.hex}} !important;
}
.quick-toggle-has-menu .quick-toggle-menu-button:checked:hover {
background-color: {{colors.primary_container.default.hex}} !important;
}
.quick-toggle-has-menu .quick-toggle-separator {
background-color: transparent !important;
}
/* Icons and arrows inside quick toggles */
.quick-toggle StIcon {
color: {{colors.on_surface.default.hex}} !important;
}
.quick-toggle:checked StIcon {
color: {{colors.on_primary_container.default.hex}} !important;
}
.quick-toggle-menu-button StIcon {
color: {{colors.on_surface.default.hex}} !important;
}
.quick-toggle-menu-button:checked StIcon {
color: {{colors.on_primary_container.default.hex}} !important;
}
/* Icon buttons in quick settings header */
.quick-settings .icon-button {
color: {{colors.on_surface.default.hex}} !important;
}
.quick-settings .icon-button StIcon {
color: {{colors.on_surface.default.hex}} !important;
}
/* Sliders (volume, brightness) */
.slider {
color: {{colors.primary.default.hex}} !important;
-barlevel-active-background-color: {{colors.primary.default.hex}} !important;
-barlevel-background-color: {{colors.surface_container_high.default.hex}} !important;
}
/* Quick toggle sub-menus (e.g. Wired Connections dropdown) */
.quick-toggle-menu {
background-color: {{colors.surface_container_high.default.hex}} !important;
color: {{colors.on_surface.default.hex}} !important;
}
.quick-toggle-menu .header .title {
color: {{colors.on_surface.default.hex}} !important;
}
/* Active icon in sub-menu header (e.g. Wired Connections circle icon) */
.quick-toggle-menu .header .icon.active {
background-color: {{colors.primary_container.default.hex}} !important;
color: {{colors.on_primary_container.default.hex}} !important;
}
.quick-toggle-menu .header .icon {
color: {{colors.on_surface.default.hex}} !important;
}
.quick-toggle-menu .popup-menu-item {
color: {{colors.on_surface.default.hex}} !important;
}
.popup-menu-content {
background-color: {{colors.surface_container.default.hex}} !important;
}
.popup-sub-menu .popup-menu-item {
color: {{colors.on_surface.default.hex}} !important;
}
.notification-banner {
background-color: {{colors.surface_container_high.default.hex}} !important;
color: {{colors.on_surface.default.hex}} !important;
}
/* Calendar / date menu panel */
.calendar, .datemenu-today-button, .events-button,
.world-clocks-button, .weather-button, .message {
background-color: {{colors.surface_container_high.default.hex}} !important;
color: {{colors.on_surface.default.hex}} !important;
}
.calendar .calendar-month-header .pager-button {
background-color: transparent !important;
color: {{colors.on_surface.default.hex}} !important;
}
.calendar .calendar-month-header .pager-button:hover {
background-color: {{colors.surface_container_highest.default.hex}} !important;
}
.calendar .calendar-month-header .calendar-month-label {
background-color: transparent !important;
color: {{colors.on_surface.default.hex}} !important;
}
.calendar .calendar-day-heading, .calendar .calendar-day {
background-color: transparent !important;
color: {{colors.on_surface.default.hex}} !important;
}
.calendar .calendar-day:hover {
background-color: {{colors.surface_container_highest.default.hex}} !important;
}
.calendar .calendar-day.calendar-today {
background-color: {{colors.primary_container.default.hex}} !important;
color: {{colors.on_primary_container.default.hex}} !important;
}
/* Notification / message list */
.message-list-placeholder {
color: {{colors.on_surface_variant.default.hex}} !important;
}
.message-list-controls {
color: {{colors.on_surface.default.hex}} !important;
}
/* Round icon buttons in quick settings header (settings gear, lock, power etc) */
.quick-settings .icon-button {
background-color: {{colors.surface_container_high.default.hex}} !important;
color: {{colors.on_surface.default.hex}} !important;
}
.quick-settings .icon-button:hover {
background-color: {{colors.surface_container_highest.default.hex}} !important;
}
.quick-settings .icon-button:active {
background-color: {{colors.surface_container_highest.default.hex}} !important;
}
/* Overview background */
#overview {
background-color: rgba({{colors.surface.default.red}}, {{colors.surface.default.green}}, {{colors.surface.default.blue}}, 0.85) !important;
}
/* Dash (app dock at bottom of overview) */
#dash .dash-background {
background-color: {{colors.surface_container.default.hex}} !important;
}
#dash .show-apps .overview-icon {
background-color: transparent !important;
color: {{colors.on_surface.default.hex}} !important;
}
/* Search bar in overview */
.search-entry {
background-color: {{colors.surface_container_high.default.hex}} !important;
color: {{colors.on_surface.default.hex}} !important;
}
.search-entry:focus {
background-color: {{colors.surface_container_high.default.hex}} !important;
border-color: {{colors.primary.default.hex}} !important;
}
/* Search results section */
.search-section-content {
background-color: {{colors.surface_container.default.hex}} !important;
color: {{colors.on_surface.default.hex}} !important;
}
/* Search result items */
.list-search-result, .search-provider-icon {
background-color: {{colors.surface_container.default.hex}} !important;
color: {{colors.on_surface.default.hex}} !important;
}
.list-search-result:hover, .search-provider-icon:hover {
background-color: {{colors.surface_container_high.default.hex}} !important;
}
/* Search result tiles (scoped to search section to avoid dash) */
.search-section-content .overview-tile,
.search-section-content .grid-search-result {
background-color: {{colors.surface_container.default.hex}} !important;
color: {{colors.on_surface.default.hex}} !important;
}
.search-section-content .overview-tile:hover,
.search-section-content .grid-search-result:hover {
background-color: {{colors.surface_container_high.default.hex}} !important;
}
.search-section-content .overview-tile:focus,
.search-section-content .grid-search-result:focus {
background-color: {{colors.surface_container_high.default.hex}} !important;
}
/* App grid / app drawer */
.app-folder {
background-color: {{colors.surface_container_high.default.hex}} !important;
}
.app-folder-dialog {
background-color: {{colors.surface_container.default.hex}} !important;
color: {{colors.on_surface.default.hex}} !important;
}
.app-folder-dialog .folder-name-entry {
background-color: {{colors.surface_container_high.default.hex}} !important;
color: {{colors.on_surface.default.hex}} !important;
}
/* Popup menus */
.popup-menu {
color: {{colors.on_surface.default.hex}} !important;
}
/* Window close button in overview */
.window-close {
background-color: {{colors.surface_container_highest.default.hex}} !important;
color: {{colors.on_surface.default.hex}} !important;
}
.window-close:hover {
background-color: {{colors.primary_container.default.hex}} !important;
color: {{colors.on_primary_container.default.hex}} !important;
}
/* Page navigation arrows (next/prev page in app drawer) */
.page-navigation-arrow {
background-color: {{colors.surface_container_high.default.hex}} !important;
color: {{colors.on_surface.default.hex}} !important;
}
.page-navigation-arrow:hover {
background-color: {{colors.surface_container_highest.default.hex}} !important;
}
.app-folder-dialog .page-navigation-arrow {
background-color: {{colors.surface_container_high.default.hex}} !important;
color: {{colors.on_surface.default.hex}} !important;
}
/* Dash app icon highlights (hover/focus/active) */
#dash .dash-item-container .overview-tile .overview-icon,
#dash .dash-item-container .grid-search-result .overview-icon {
background-color: transparent !important;
}
#dash .dash-item-container .overview-tile:hover .overview-icon,
#dash .dash-item-container .grid-search-result:hover .overview-icon {
background-color: {{colors.surface_container_high.default.hex}} !important;
}
#dash .dash-item-container .overview-tile:active .overview-icon,
#dash .dash-item-container .grid-search-result:active .overview-icon {
background-color: {{colors.surface_container_highest.default.hex}} !important;
}
#dash .dash-item-container .overview-tile:focus .overview-icon,
#dash .dash-item-container .grid-search-result:focus .overview-icon {
background-color: {{colors.surface_container_high.default.hex}} !important;
}

View file

@ -1,15 +0,0 @@
@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_container.default.hex}};
@define-color window_bg_color {{colors.surface.default.hex}};
@define-color window_fg_color {{colors.on_surface.default.hex}};
@define-color view_bg_color {{colors.surface_container_low.default.hex}};
@define-color view_fg_color {{colors.on_surface.default.hex}};
@define-color headerbar_bg_color {{colors.surface_container.default.hex}};
@define-color headerbar_fg_color {{colors.on_surface.default.hex}};
@define-color card_bg_color {{colors.surface_container_high.default.hex}};
@define-color card_fg_color {{colors.on_surface.default.hex}};
@define-color sidebar_bg_color {{colors.surface_container.default.hex}};
@define-color sidebar_fg_color {{colors.on_surface.default.hex}};
@define-color popover_bg_color {{colors.surface_container.default.hex}};
@define-color popover_fg_color {{colors.on_surface.default.hex}};

View file

@ -1,15 +0,0 @@
@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_container.default.hex}};
@define-color window_bg_color {{colors.surface.default.hex}};
@define-color window_fg_color {{colors.on_surface.default.hex}};
@define-color view_bg_color {{colors.surface_container_low.default.hex}};
@define-color view_fg_color {{colors.on_surface.default.hex}};
@define-color headerbar_bg_color {{colors.surface_container.default.hex}};
@define-color headerbar_fg_color {{colors.on_surface.default.hex}};
@define-color card_bg_color {{colors.surface_container_high.default.hex}};
@define-color card_fg_color {{colors.on_surface.default.hex}};
@define-color sidebar_bg_color {{colors.surface_container.default.hex}};
@define-color sidebar_fg_color {{colors.on_surface.default.hex}};
@define-color popover_bg_color {{colors.surface_container.default.hex}};
@define-color popover_fg_color {{colors.on_surface.default.hex}};

View file

@ -1,53 +0,0 @@
/* Matugen-generated Homepage theme based on wallpaper */
/* Page background — overrides body default */
html, body, #__next, main {
background-color: {{colors.surface.default.hex}} !important;
color: {{colors.on_surface.default.hex}} !important;
}
/* Override Tailwind's slate palette (homepage's default color scheme).
Each slate shade maps to the closest matugen surface/text color so
the built-in theme classes render with wallpaper colors. */
.bg-slate-50, .dark\:bg-slate-50 { background-color: {{colors.surface_container_high.default.hex}} !important; }
.bg-slate-100, .dark\:bg-slate-100 { background-color: {{colors.surface_container_high.default.hex}} !important; }
.bg-slate-200, .dark\:bg-slate-200 { background-color: {{colors.surface_container.default.hex}} !important; }
.bg-slate-300, .dark\:bg-slate-300 { background-color: {{colors.surface_container.default.hex}} !important; }
.bg-slate-400, .dark\:bg-slate-400 { background-color: {{colors.surface_container_low.default.hex}} !important; }
.bg-slate-500, .dark\:bg-slate-500 { background-color: {{colors.surface_container_low.default.hex}} !important; }
.bg-slate-600, .dark\:bg-slate-600 { background-color: {{colors.surface_container_low.default.hex}} !important; }
.bg-slate-700, .dark\:bg-slate-700 { background-color: {{colors.surface_container.default.hex}} !important; }
.bg-slate-800, .dark\:bg-slate-800 { background-color: {{colors.surface_container.default.hex}} !important; }
.bg-slate-900, .dark\:bg-slate-900 { background-color: {{colors.surface.default.hex}} !important; }
.bg-slate-950, .dark\:bg-slate-950 { background-color: {{colors.surface.default.hex}} !important; }
.text-slate-50, .dark\:text-slate-50 { color: {{colors.on_surface.default.hex}} !important; }
.text-slate-100, .dark\:text-slate-100 { color: {{colors.on_surface.default.hex}} !important; }
.text-slate-200, .dark\:text-slate-200 { color: {{colors.on_surface.default.hex}} !important; }
.text-slate-300, .dark\:text-slate-300 { color: {{colors.on_surface.default.hex}} !important; }
.text-slate-400, .dark\:text-slate-400 { color: {{colors.on_surface_variant.default.hex}} !important; }
.text-slate-500, .dark\:text-slate-500 { color: {{colors.on_surface_variant.default.hex}} !important; }
.text-slate-600, .dark\:text-slate-600 { color: {{colors.outline.default.hex}} !important; }
.text-slate-700, .dark\:text-slate-700 { color: {{colors.on_surface.default.hex}} !important; }
.text-slate-800, .dark\:text-slate-800 { color: {{colors.on_surface.default.hex}} !important; }
.text-slate-900, .dark\:text-slate-900 { color: {{colors.on_surface.default.hex}} !important; }
.border-slate-50, .dark\:border-slate-50,
.border-slate-100, .dark\:border-slate-100,
.border-slate-200, .dark\:border-slate-200,
.border-slate-300, .dark\:border-slate-300,
.border-slate-400, .dark\:border-slate-400,
.border-slate-500, .dark\:border-slate-500,
.border-slate-600, .dark\:border-slate-600,
.border-slate-700, .dark\:border-slate-700,
.border-slate-800, .dark\:border-slate-800 { border-color: {{colors.outline_variant.default.hex}} !important; }
/* Accent — used on links, active states, progress bars */
a:hover, .service-container:hover .service-name,
.resources .progress-bar, .resources .usage-bar-fill {
color: {{colors.primary.default.hex}} !important;
}
.bg-theme-500, .bg-theme-600, .bg-theme-400 {
background-color: {{colors.primary.default.hex}} !important;
}

View file

@ -1,143 +0,0 @@
#!/bin/bash
# Generated by matugen — recolors Adwaita folder icons with wallpaper palette
# and pulls in Papirus mimetype icons for better file type distinction
ICON_DIR="$HOME/.local/share/icons/WallpaperAdwaita"
ADWAITA="/run/current-system/sw/share/icons/Adwaita"
PAPIRUS="/run/current-system/sw/share/icons/Papirus-Dark"
mkdir -p "$ICON_DIR/scalable/places"
# Create index.theme with all mimetype sizes
cat > "$ICON_DIR/index.theme" << 'THEME'
[Icon Theme]
Name=WallpaperAdwaita
Comment=Adwaita with wallpaper-colored folders and Papirus mimetypes
Inherits=Adwaita,hicolor
DisplayDepth=32
[scalable/places]
Size=128
MinSize=16
MaxSize=512
Type=Scalable
Context=Places
[16x16/mimetypes]
Size=16
Type=Fixed
Context=MimeTypes
[22x22/mimetypes]
Size=22
Type=Fixed
Context=MimeTypes
[32x32/mimetypes]
Size=32
Type=Fixed
Context=MimeTypes
[48x48/mimetypes]
Size=48
Type=Fixed
Context=MimeTypes
[64x64/mimetypes]
Size=64
MinSize=32
MaxSize=128
Type=Scalable
Context=MimeTypes
[96x96/mimetypes]
Size=96
MinSize=64
MaxSize=256
Type=Scalable
Context=MimeTypes
[128x128/mimetypes]
Size=128
MinSize=64
MaxSize=512
Type=Scalable
Context=MimeTypes
THEME
# Recolor all Adwaita place SVGs with wallpaper palette
for svg in "$ADWAITA/scalable/places"/*.svg; do
name=$(basename "$svg")
sed \
-e 's/#438de6/{{colors.primary_container.default.hex}}/gi' \
-e 's/#62a0ea/{{colors.primary_fixed_dim.default.hex}}/gi' \
-e 's/#a4caee/{{colors.primary_fixed.default.hex}}/gi' \
-e 's/#afd4ff/{{colors.primary_fixed.default.hex}}/gi' \
-e 's/#c0d5ea/{{colors.primary_fixed.default.hex}}/gi' \
"$svg" > "$ICON_DIR/scalable/places/$name"
done
# Copy Papirus mimetype icons at all available sizes
for size in 16x16 22x22 32x32 48x48 64x64 96x96 128x128; do
if [ -d "$PAPIRUS/$size/mimetypes" ]; then
rm -rf "$ICON_DIR/$size/mimetypes"
mkdir -p "$ICON_DIR/$size/mimetypes"
cp -rL "$PAPIRUS/$size/mimetypes"/* "$ICON_DIR/$size/mimetypes/"
fi
done
# Update icon cache
gtk-update-icon-cache -f "$ICON_DIR" 2>/dev/null || true
# Map wallpaper palette to closest GNOME accent color
# Primary color RGB: {{colors.primary.default.red}}, {{colors.primary.default.green}}, {{colors.primary.default.blue}}
R={{colors.primary.default.red}}
G={{colors.primary.default.green}}
B={{colors.primary.default.blue}}
# Simple hue-based mapping to GNOME accent presets
if [ "$R" -gt "$G" ] && [ "$R" -gt "$B" ]; then
if [ "$B" -gt "$((G + 30))" ]; then
ACCENT="purple"
elif [ "$G" -gt "$((R / 2))" ]; then
ACCENT="orange"
else
if [ "$B" -gt "$((R / 3))" ]; then
ACCENT="pink"
else
ACCENT="red"
fi
fi
elif [ "$G" -gt "$R" ] && [ "$G" -gt "$B" ]; then
if [ "$B" -gt "$((R + 20))" ]; then
ACCENT="teal"
else
ACCENT="green"
fi
elif [ "$B" -gt "$R" ] && [ "$B" -gt "$G" ]; then
if [ "$R" -gt "$((B / 2))" ]; then
ACCENT="purple"
else
ACCENT="blue"
fi
else
ACCENT="slate"
fi
gsettings set org.gnome.desktop.interface accent-color "$ACCENT"
# Merge VSCodium color customizations into settings.json
VSCODE_SETTINGS="$HOME/.config/VSCodium/User/settings.json"
VSCODE_COLORS="$HOME/.local/share/matugen/vscodium-colors.json"
if [ -f "$VSCODE_SETTINGS" ] && [ -f "$VSCODE_COLORS" ]; then
COLORS=$(cat "$VSCODE_COLORS")
# Remove existing workbench.colorCustomizations and merge new ones
TMP=$(mktemp)
if command -v jq &>/dev/null; then
jq --argjson colors "$COLORS" '. * $colors' "$VSCODE_SETTINGS" > "$TMP" && mv "$TMP" "$VSCODE_SETTINGS"
fi
fi
# Reload GNOME Shell theme to apply new colors
dconf write /org/gnome/shell/extensions/user-theme/name "''"
sleep 1
dconf write /org/gnome/shell/extensions/user-theme/name "'WallpaperShell'"

View file

@ -1,85 +0,0 @@
{
"workbench.colorCustomizations": {
"titleBar.activeBackground": "{{colors.surface_container.default.hex}}",
"titleBar.activeForeground": "{{colors.on_surface.default.hex}}",
"titleBar.inactiveBackground": "{{colors.surface_container_low.default.hex}}",
"activityBar.background": "{{colors.surface_container.default.hex}}",
"activityBar.foreground": "{{colors.on_surface.default.hex}}",
"activityBar.inactiveForeground": "{{colors.on_surface_variant.default.hex}}",
"sideBar.background": "{{colors.surface_container_low.default.hex}}",
"sideBar.foreground": "{{colors.on_surface.default.hex}}",
"sideBar.border": "{{colors.outline_variant.default.hex}}",
"sideBarSectionHeader.background": "{{colors.surface_container.default.hex}}",
"sideBarSectionHeader.foreground": "{{colors.on_surface.default.hex}}",
"editor.background": "{{colors.surface.default.hex}}",
"editor.foreground": "{{colors.on_surface.default.hex}}",
"editorGroupHeader.tabsBackground": "{{colors.surface_container.default.hex}}",
"statusBar.background": "{{colors.surface_container.default.hex}}",
"statusBar.foreground": "{{colors.on_surface.default.hex}}",
"statusBar.debuggingBackground": "{{colors.primary.default.hex}}",
"statusBar.debuggingForeground": "{{colors.on_primary.default.hex}}",
"statusBar.noFolderBackground": "{{colors.surface_container.default.hex}}",
"tab.activeBackground": "{{colors.surface.default.hex}}",
"tab.inactiveBackground": "{{colors.surface_container.default.hex}}",
"tab.activeForeground": "{{colors.on_surface.default.hex}}",
"tab.inactiveForeground": "{{colors.on_surface_variant.default.hex}}",
"tab.border": "{{colors.surface_container.default.hex}}",
"focusBorder": "{{colors.primary.default.hex}}",
"button.background": "{{colors.primary.default.hex}}",
"button.foreground": "{{colors.on_primary.default.hex}}",
"list.activeSelectionBackground": "{{colors.primary_container.default.hex}}",
"list.activeSelectionForeground": "{{colors.on_primary_container.default.hex}}",
"list.hoverBackground": "{{colors.surface_container_high.default.hex}}",
"list.inactiveSelectionBackground": "{{colors.surface_container_high.default.hex}}",
"input.background": "{{colors.surface_container_high.default.hex}}",
"input.foreground": "{{colors.on_surface.default.hex}}",
"input.border": "{{colors.outline_variant.default.hex}}",
"dropdown.background": "{{colors.surface_container_high.default.hex}}",
"dropdown.foreground": "{{colors.on_surface.default.hex}}",
"dropdown.border": "{{colors.outline_variant.default.hex}}",
"panel.background": "{{colors.surface_container_low.default.hex}}",
"panel.border": "{{colors.outline_variant.default.hex}}",
"panelTitle.activeForeground": "{{colors.on_surface.default.hex}}",
"terminal.background": "{{colors.surface.default.hex}}",
"terminal.foreground": "{{colors.on_surface.default.hex}}",
"breadcrumb.background": "{{colors.surface.default.hex}}",
"breadcrumb.foreground": "{{colors.on_surface_variant.default.hex}}",
"editorWidget.background": "{{colors.surface_container.default.hex}}",
"editorWidget.foreground": "{{colors.on_surface.default.hex}}",
"peekViewEditor.background": "{{colors.surface_container_low.default.hex}}",
"peekViewResult.background": "{{colors.surface_container.default.hex}}",
"quickInput.background": "{{colors.surface_container.default.hex}}",
"quickInput.foreground": "{{colors.on_surface.default.hex}}",
"diffEditor.insertedTextBackground": "{{colors.tertiary_container.default.hex}}33",
"diffEditor.removedTextBackground": "{{colors.error_container.default.hex}}33",
"diffEditor.insertedLineBackground": "{{colors.tertiary_container.default.hex}}22",
"diffEditor.removedLineBackground": "{{colors.error_container.default.hex}}22",
"merge.currentHeaderBackground": "{{colors.tertiary_container.default.hex}}55",
"merge.incomingHeaderBackground": "{{colors.primary_container.default.hex}}55",
"notifications.background": "{{colors.surface_container_high.default.hex}}",
"notifications.foreground": "{{colors.on_surface.default.hex}}",
"notificationCenterHeader.background": "{{colors.surface_container.default.hex}}",
"banner.background": "{{colors.surface_container_high.default.hex}}",
"banner.foreground": "{{colors.on_surface.default.hex}}",
"commandCenter.background": "{{colors.surface_container.default.hex}}",
"commandCenter.foreground": "{{colors.on_surface.default.hex}}",
"editorGutter.background": "{{colors.surface.default.hex}}",
"editorLineNumber.foreground": "{{colors.on_surface_variant.default.hex}}",
"scrollbarSlider.background": "{{colors.outline_variant.default.hex}}55",
"scrollbarSlider.hoverBackground": "{{colors.outline_variant.default.hex}}88",
"scrollbarSlider.activeBackground": "{{colors.outline_variant.default.hex}}aa",
"editorPane.background": "{{colors.surface.default.hex}}",
"editorHoverWidget.background": "{{colors.surface_container.default.hex}}",
"editorHoverWidget.foreground": "{{colors.on_surface.default.hex}}",
"editorHoverWidget.border": "{{colors.outline_variant.default.hex}}",
"editorSuggestWidget.background": "{{colors.surface_container.default.hex}}",
"editorSuggestWidget.foreground": "{{colors.on_surface.default.hex}}",
"editorSuggestWidget.border": "{{colors.outline_variant.default.hex}}",
"editorSuggestWidget.selectedBackground": "{{colors.primary_container.default.hex}}",
"debugToolBar.background": "{{colors.surface_container.default.hex}}",
"walkThrough.embeddedEditorBackground": "{{colors.surface_container_low.default.hex}}",
"settings.headerForeground": "{{colors.on_surface.default.hex}}",
"welcomePage.background": "{{colors.surface.default.hex}}",
"textBlockQuote.background": "{{colors.surface_container_low.default.hex}}"
}
}

View file

@ -1,4 +1,4 @@
/* Wallpaper-based colors generated by matugen */
/* Wallpaper-based colors substituted by stylix */
/* Override Zen's JS-applied gradient backgrounds directly on elements */
#zen-browser-background,