theme: move the alarm colour from pink to mauve

Mocha's pink is a pastel. Filled at slab size against the near-black
Persona surfaces it went chalky rather than sharp, which is what made
hovered destructive buttons read as a washed-out red. Mauve is saturated
enough to bite against that ground and still cannot be confused with the
blue accent.

Applies across quickshell, Hyprland, dunst, fish and nvim. The GTK
overrides are dropped entirely — stock Catppuccin Mocha Blue already
paints those surfaces, and a hand-written destructive colour there was
one more thing to keep in step for no gain.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
nvrlandClaude Opus 5 committed 2026-09-18 02:12:53 +02:00
1 parent e221445a51
commit d2975650fa
7 files changed
+26 -30

No files matched your search

+1 -1
View File
@@ -4,7 +4,7 @@ transparency = 90
frame_color = "#89b4fa" frame_color = "#89b4fa"
frame_width = 1 frame_width = 1
separator_color= frame separator_color= frame
highlight = "#f5c2e7" highlight = "#cba6f7"
[urgency_low] [urgency_low]
background = "#1e1e2e" background = "#1e1e2e"
+5 -4
View File
@@ -4,7 +4,8 @@
# Catppuccin Mocha's own fish theme (themes/Catppuccin Mocha.theme), with the # Catppuccin Mocha's own fish theme (themes/Catppuccin Mocha.theme), with the
# selection and pager rows carried over from the Takemi layout: a solid accent # selection and pager rows carried over from the Takemi layout: a solid accent
# block with crust punched out of it, rather than a tinted surface. The shell # block with crust punched out of it, rather than a tinted surface. The shell
# selects with a blue slab; the prompt should not disagree. # selects with a blue slab and marks with mauve; the prompt should not
# disagree.
# #
# Note that `fish_config` writing a theme from the web UI will recreate # Note that `fish_config` writing a theme from the web UI will recreate
# fish_frozen_theme.fish, which sorts before this file and so would lose. # fish_frozen_theme.fish, which sorts before this file and so would lose.
@@ -25,7 +26,7 @@ set --global fish_color_cancel f38ba8
set --global fish_color_gray 6c7086 set --global fish_color_gray 6c7086
set --global fish_color_autosuggestion 6c7086 set --global fish_color_autosuggestion 6c7086
set --global fish_color_selection 11111b --background=89b4fa set --global fish_color_selection 11111b --background=89b4fa
set --global fish_color_search_match 11111b --background=f5c2e7 set --global fish_color_search_match 11111b --background=cba6f7
set --global fish_color_match 11111b --background=89b4fa set --global fish_color_match 11111b --background=89b4fa
set --global fish_color_history_current --bold set --global fish_color_history_current --bold
set --global fish_color_valid_path --underline set --global fish_color_valid_path --underline
@@ -38,13 +39,13 @@ set --global fish_color_status f38ba8
set --global fish_pager_color_progress 6c7086 --background=313244 set --global fish_pager_color_progress 6c7086 --background=313244
set --global fish_pager_color_background set --global fish_pager_color_background
set --global fish_pager_color_prefix f5c2e7 --bold set --global fish_pager_color_prefix cba6f7 --bold
set --global fish_pager_color_completion cdd6f4 set --global fish_pager_color_completion cdd6f4
set --global fish_pager_color_description 6c7086 set --global fish_pager_color_description 6c7086
set --global fish_pager_color_secondary_background --background=181825 set --global fish_pager_color_secondary_background --background=181825
set --global fish_pager_color_secondary_completion cdd6f4 set --global fish_pager_color_secondary_completion cdd6f4
set --global fish_pager_color_secondary_description 6c7086 set --global fish_pager_color_secondary_description 6c7086
set --global fish_pager_color_secondary_prefix f5c2e7 --bold set --global fish_pager_color_secondary_prefix cba6f7 --bold
set --global fish_pager_color_selected_background --background=89b4fa set --global fish_pager_color_selected_background --background=89b4fa
set --global fish_pager_color_selected_completion 11111b set --global fish_pager_color_selected_completion 11111b
set --global fish_pager_color_selected_description 11111b set --global fish_pager_color_selected_description 11111b
+4 -7
View File
@@ -1,7 +1,4 @@
/* Catppuccin Mocha Blue carries the whole GTK3 palette itself, so there is no /* Catppuccin Mocha Blue carries the whole GTK3 palette itself, so there is
* surface override here — the Takemi branch only needed one because it was * nothing to override here — the Takemi branch only needed this file because
* painting Fluent's greys black. All that is left is the one place the rice * it was painting Fluent's greys black. Kept as a hook for the next time the
* disagrees with stock Catppuccin: destructive actions are pink, matching the * rice disagrees with stock Catppuccin. */
* shell's alarm colour. */
@define-color destructive_bg_color #f38ba8;
@define-color destructive_fg_color #11111b;
-4
View File
@@ -2,7 +2,3 @@
* overrode Fluent's greys with black here; Mocha needs no override — its own * overrode Fluent's greys with black here; Mocha needs no override — its own
* surfaces are the palette the rest of the rice is built on. */ * surfaces are the palette the rest of the rice is built on. */
@import url("/usr/share/themes/catppuccin-mocha-blue-standard+default/gtk-4.0/gtk.css"); @import url("/usr/share/themes/catppuccin-mocha-blue-standard+default/gtk-4.0/gtk.css");
/* Pink is the shell's alarm colour; keep destructive GTK buttons in step. */
@define-color destructive_bg_color #f38ba8;
@define-color destructive_fg_color #11111b;
+3 -3
View File
@@ -1,6 +1,6 @@
-- Mocha palette — kept in step with ~/.config/quickshell/config/Theme.qml. -- Mocha palette — kept in step with ~/.config/quickshell/config/Theme.qml.
-- --
-- Catppuccin Mocha ground, blue accent, pink alarm. Nothing else carries hue. -- Catppuccin Mocha ground, blue accent, mauve alarm. Nothing else carries hue.
-- --
-- Returned as a table, so every module that paints something does -- Returned as a table, so every module that paints something does
-- local c = require("lua/palette") -- local c = require("lua/palette")
@@ -10,14 +10,14 @@ local c = {}
-- ---------------------------------------------------------------- THE KNOBS -- ---------------------------------------------------------------- THE KNOBS
-- Two colours in this setup: blue for anything live (window borders, group -- Two colours in this setup: blue for anything live (window borders, group
-- indicators, focus), pink for anything wrong. Change these lines and every -- indicators, focus), mauve for anything wrong. Change these lines and every
-- painted edge recolours with them. -- painted edge recolours with them.
-- --
-- Keep them in step with `accent` / `alarm` in -- Keep them in step with `accent` / `alarm` in
-- ~/.config/quickshell/config/Theme.qml, which is what colours the shell. -- ~/.config/quickshell/config/Theme.qml, which is what colours the shell.
-- Those are the only places the colours are written. -- Those are the only places the colours are written.
c.accent = "rgb(89b4fa)" c.accent = "rgb(89b4fa)"
c.alarm = "rgb(f5c2e7)" c.alarm = "rgb(cba6f7)"
c.accentDim = "rgb(5a7dc0)" c.accentDim = "rgb(5a7dc0)"
c.accentSoft = "rgb(b4befe)" c.accentSoft = "rgb(b4befe)"
+1 -1
Submodule nvim updated: 9526fa8fac...4736228253.
+12 -10
View File
@@ -8,10 +8,14 @@ import Quickshell
// //
// The Takemi branch ran monochrome-plus-crimson, where one hue carried both // The Takemi branch ran monochrome-plus-crimson, where one hue carried both
// "active" and "wrong". Mocha has room for two: blue is every resting accent — // "active" and "wrong". Mocha has room for two: blue is every resting accent —
// focus, selection, the thing you are pointing at — and pink is reserved for // focus, selection, the thing you are pointing at — and mauve is reserved for
// the things that bite, so destructive and error still read at a glance // the things that bite, so destructive and error still read at a glance
// without a third colour entering the shell. // without a third colour entering the shell.
// //
// Mauve rather than Mocha's pink: pink is a pastel, and a slab of it over this
// ground goes chalky. Mauve is saturated enough to hold an edge against the
// near-black surfaces the Persona layout is built from.
//
// Everything else is Mocha's own neutral ramp. Fills stay flat and keylines // Everything else is Mocha's own neutral ramp. Fills stay flat and keylines
// stay hard; only the hues moved. // stay hard; only the hues moved.
Singleton { Singleton {
@@ -44,7 +48,7 @@ Singleton {
// ~/.config/hypr/lua/palette.lua, which is what colours the Hyprland // ~/.config/hypr/lua/palette.lua, which is what colours the Hyprland
// window borders. Those are the only places the colours are written. // window borders. Those are the only places the colours are written.
readonly property color accent: "#89b4fa" readonly property color accent: "#89b4fa"
readonly property color alarm: "#f5c2e7" readonly property color alarm: "#cba6f7"
readonly property color accentDim: "#5a7dc0" readonly property color accentDim: "#5a7dc0"
readonly property color accentSoft: "#b4befe" readonly property color accentSoft: "#b4befe"
@@ -83,14 +87,12 @@ Singleton {
readonly property color treatmentActiveMark: root.accent readonly property color treatmentActiveMark: root.accent
readonly property color treatmentActiveText: root.text readonly property color treatmentActiveText: root.text
// Pink carries destructive/error meaning — never blue, so a dangerous // Mauve carries destructive/error meaning — never blue, so a dangerous
// button can never be mistaken for a merely focused one. // button can never be mistaken for a merely focused one.
// //
// At rest it is a keyline and a label, not a fill: Mocha's pink is a // At rest it is a keyline and a label, not a fill. The solid mauve is held
// pastel, and a slab of it reads as a washed-out red rather than as a // back for the moment the pointer or the selection is actually on the
// warning. The solid pink is held back for the moment the pointer or the // thing — then it lands hard, with crust punched out of it at 9.1:1.
// selection is actually on the thing — then it lands, with crust punched
// out of it at 11.8:1.
readonly property color treatmentDestructiveFill: root.surface readonly property color treatmentDestructiveFill: root.surface
readonly property color treatmentDestructiveMark: root.alarm readonly property color treatmentDestructiveMark: root.alarm
readonly property color treatmentDestructiveText: root.alarm readonly property color treatmentDestructiveText: root.alarm
@@ -116,7 +118,7 @@ Singleton {
readonly property color ok: root.text readonly property color ok: root.text
readonly property color warn: root.alarm readonly property color warn: root.alarm
// Display text carries a blue and a pink offset rather than an RGB split. // Display text carries a blue and a mauve offset rather than an RGB split.
// Same trick, this palette's two colours. // Same trick, this palette's two colours.
readonly property color splitRed: root.accent readonly property color splitRed: root.accent
readonly property color splitCyan: root.alarm readonly property color splitCyan: root.alarm
@@ -135,7 +137,7 @@ Singleton {
// Load readouts sit at text until the number actually matters, then climb // Load readouts sit at text until the number actually matters, then climb
// through the accent before they reach the alarm. Going straight from text // through the accent before they reach the alarm. Going straight from text
// to pink passes through a washed-out mid-tone that reads as a faded red // to mauve passes through a washed-out mid-tone that reads as a faded red
// rather than as a rising number; routing through blue keeps every step of // rather than as a rising number; routing through blue keeps every step of
// the ramp a colour the shell already uses. // the ramp a colour the shell already uses.
function heat(pct: real): color { function heat(pct: real): color {