@define-color fg-color {{colors.on_surface.default.hex}}; @define-color bg-color {{colors.surface.default.hex}}; @define-color border-color {{colors.outline.default.hex}}; @define-color dimmed-fg-color {{colors.on_surface_variant.default.hex}}; @define-color disabled-fg-color {{colors.outline_variant.default.hex}}; @define-color disabled-button-color {{colors.surface_container_low.default.hex}}; @define-color hover-color {{colors.surface_container_high.default.hex}}; @define-color widget-bg-color {{colors.surface_container.default.hex}}; @define-color selected-color {{colors.primary.default.hex}}; @define-color extreme-bg-color {{colors.surface_container_low.default.hex}}; @define-color extreme-selected-color {{colors.primary.default.hex}}; @define-color strong-border-color {{colors.outline.default.hex}}; @define-color stronger-border-color {{colors.outline.default.hex}}; @define-color edge-border-color {{colors.outline_variant.default.hex}}; @define-color scrollbar-slider-color {{colors.outline.default.hex}}; @define-color scrollbar-trough-color {{colors.surface_container.default.hex}}; @define-color ruler-color {{colors.outline_variant.default.rgba | set_alpha: 0.3}}; /* Standard GTK/Adwaita variable names, not GIMP's own. Some widgets (confirmed: the Preferences page title bar, per GIMP's own source comment admitting it "doesn't have any more specific way to style it") fall back to these instead of GIMP's custom palette above. Without this they'd stay unthemed since the system gtk.css never loads inside a Flatpak sandbox. */ @define-color theme_bg_color {{colors.surface.default.hex}}; @define-color theme_fg_color {{colors.on_surface.default.hex}}; @define-color theme_base_color {{colors.surface_container.default.hex}}; @define-color theme_text_color {{colors.on_surface.default.hex}}; @define-color theme_selected_bg_color {{colors.primary.default.hex}}; @define-color theme_selected_fg_color {{colors.on_primary.default.hex}}; @define-color borders {{colors.outline.default.hex}}; /* Most of GIMP's UI reuses selected-color/extreme-selected-color as a full background fill for selection/hover/checked states. Left as bright Noctalia yellow, that fill makes GIMP's own default (light) icon rendering invisible on several widgets, confirmed live and not fixable by recoloring the icon directly (tried extensively: direct color targeting, wildcard inheritance, -gtk-icon-shadow; `filter` isn't even a valid GTK3 CSS property at all, confirmed via a real parse error). Real prior art settles this cleanly: community GIMP dark+accent themes (e.g. github.com/bunnywaffle/GIMP-3-Themes, "Black Green Glow") never use a bright accent as a full selection fill either, only as a thin border stripe on top of a still-dark background. Applying that same pattern here: every selector below keeps a dark, subtle background (hover-color) and gets the yellow as a left border accent instead. No per-widget icon or text color override is needed this way, since GIMP's own default text/icon rendering already works fine against a dark background, that's the entire point. Uses box-shadow, not a real border: GIMP's own common.css already renders a bottom accent bar this way in several places (e.g. `menubar > menuitem:hover { box-shadow: inset 0 -3px @stronger-border-color; }`), and stronger-border-color is mapped to Noctalia's outline role (a blue-purple tone) elsewhere in this file, which is exactly the stray blue bar seen live alongside an earlier version of this fix that used a real `border` property instead: two separate indicators stacking, not one. Matching GIMP's own mechanism here replaces that blue bar outright instead of adding a second one next to it. One deliberate exception, kept as a full yellow fill instead (below): toolbox tool selection. Confirmed working with a full fill plus a dark icon override, and that's the preferred look there specifically. The Preferences category sidebar is a GtkTreeView (confirmed by its expander chevrons), matched by `.view:selected` below, not a GtkListBox `list row`, so it stays with this box-shadow treatment; pulling it out into a full-fill override was tried and also recolored the page's title-bar header the same way (both fall back to the same GTK theme variables), which looked wrong, so left as-is. */ .view:selected, .view row:selected, menuitem *:hover, popover list row:selected, combobox button:hover, notebook header button:hover, notebook header tabs tab:checked, GimpDeviceStatus widget:selected, GimpDeviceStatus widget:selected box, button:checked, button.titlebutton:hover, spinbutton button:hover { background-color: {{colors.surface_container_high.default.hex}}; background-image: none; color: {{colors.on_surface.default.hex}}; border-width: 0; box-shadow: inset 0 -3px {{colors.primary.default.hex}}; } /* Full yellow fill for the toolbox, matching selected-color's real value (unchanged from GIMP's own base rule, no override needed for the background itself). Text/icon color need the explicit dark override GIMP's own CSS never provides. The small corner triangle marking a tool group (e.g. on the Paintbrush/Pencil/Airbrush group) stays whatever color GIMP draws it: confirmed no dedicated icon asset exists for it anywhere in GIMP's own icon set, so it's a fixed-color overlay drawn directly in GIMP's C code, not a themeable CSS node. */ toolbutton button.flat:hover, toolbutton button.flat:checked, toolbutton button.flat:checked:hover { color: {{colors.on_primary.default.hex}}; } toolbutton button.flat:checked image, toolbutton button.flat:checked icon { color: {{colors.on_primary.default.hex}}; } /* GIMP's own theme has no general rule for GtkPopoverMenu backgrounds (only narrow button/list-row styling), so context menus fall through to GTK's stock light default without this. */ popover, popover contents, popover.menu, popover.background { background-color: @bg-color; color: @fg-color; } popover modelbutton, popover menuitem { color: @fg-color; } popover modelbutton:hover, popover menuitem:hover { background-color: @extreme-bg-color; }