theme: Catppuccin Mocha blue/pink variant of the Persona rice

Keeps the Takemi geometry — the lean, the chamfer, the slabs — and swaps
the palette wholesale. Mocha carries the ground; blue is the accent for
anything live (focus, selection, borders, hover) and pink is the alarm
for anything destructive or failed, so one hue no longer has to mean
both 'active' and 'wrong'.

Destructive controls rest as a pink keyline and fill solid only when
hovered or selected: Mocha's pink is a pastel, and a resting slab of it
reads as washed-out red rather than as a warning. The load ramp climbs
text -> blue -> pink for the same reason, instead of fading straight
through a muddy mid-tone.

Surfaces covered: quickshell, Hyprland borders, alacritty, fish, dunst,
and nvim (via the catppuccin plugin, submodule branch catppuccin-mocha).
GTK 3/4, Qt and xsettingsd move to catppuccin-mocha-blue and are now
tracked, since nothing else makes non-shell apps match the rice; the
previous Takemi copies are in theme-repair-backups/.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
nvrlandClaude Opus 5 committed 2026-09-18 02:11:02 +02:00
1 parent 3fb89c4370
commit e221445a51
19 files changed
+254 -143

No files matched your search

+16
View File
@@ -28,3 +28,19 @@
fish/fish_variables fish/fish_variables
waybar/fluxo-rs waybar/fluxo-rs
!fluxo/ !fluxo/
# Desktop theming. These live outside the per-app configs above, but they are
# what makes an app that is neither GTK-aware nor shell-aware match the rice,
# so the branch carries them.
!gtk-3.0/
gtk-3.0/*
!gtk-3.0/settings.ini
!gtk-3.0/gtk.css
!gtk-4.0/
gtk-4.0/*
!gtk-4.0/settings.ini
!gtk-4.0/gtk.css
!xsettingsd/
!qt6ct/
qt6ct/*
!qt6ct/qt6ct.conf
+1 -1
View File
@@ -107,7 +107,7 @@ ipc_socket = true
## GENERAL -------------------------------------------------------- ## GENERAL --------------------------------------------------------
## Import additional configuration files. ## Import additional configuration files.
import = ["~/.config/alacritty/takemi.toml", "~/.config/alacritty/fonts.toml"] import = ["~/.config/alacritty/catppuccin-mocha.toml", "~/.config/alacritty/fonts.toml"]
[[keyboard.bindings]] [[keyboard.bindings]]
key = "Return" key = "Return"
+2 -2
View File
@@ -1,10 +1,10 @@
[global] [global]
corner_radius = 4 corner_radius = 4
transparency = 90 transparency = 90
frame_color = "#f38ba8" frame_color = "#89b4fa"
frame_width = 1 frame_width = 1
separator_color= frame separator_color= frame
highlight = "#89dceb" highlight = "#f5c2e7"
[urgency_low] [urgency_low]
background = "#1e1e2e" background = "#1e1e2e"
+42 -41
View File
@@ -1,50 +1,51 @@
# Takemi — matched to ~/.config/quickshell/config/Theme.qml, # Mocha — matched to ~/.config/quickshell/config/Theme.qml,
# ~/.config/alacritty/takemi.toml and ~/.config/nvim/lua/takemi.lua. # ~/.config/alacritty/catppuccin-mocha.toml and ~/.config/nvim/lua/takemi.lua.
# #
# Replaces the catppuccin fish_frozen_theme.fish that fish 4.3 generated on # Catppuccin Mocha's own fish theme (themes/Catppuccin Mocha.theme), with the
# upgrade. Same content as themes/Takemi.theme — that copy exists only so # selection and pager rows carried over from the Takemi layout: a solid accent
# `fish_config` can preview it; this one is what actually loads. # block with crust punched out of it, rather than a tinted surface. The shell
# selects with a blue slab; 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.
set --global fish_color_normal ffffff set --global fish_color_normal cdd6f4
set --global fish_color_command ffffff --bold set --global fish_color_command 89b4fa
set --global fish_color_keyword ff2d40 set --global fish_color_keyword f38ba8
set --global fish_color_param c8c8ce set --global fish_color_param f2cdcd
set --global fish_color_option 8d9bb8 set --global fish_color_option a6e3a1
set --global fish_color_quote 7f9b6a set --global fish_color_quote a6e3a1
set --global fish_color_escape 9db8bd set --global fish_color_escape eba0ac
set --global fish_color_operator c8c8ce set --global fish_color_operator f5c2e7
set --global fish_color_redirection ff6b78 set --global fish_color_redirection f5c2e7
set --global fish_color_end 6b6b70 set --global fish_color_end fab387
set --global fish_color_comment 6b6b70 --italics set --global fish_color_comment 7f849c --italics
set --global fish_color_error ff2d40 --bold set --global fish_color_error f38ba8 --bold
set --global fish_color_cancel ff2d40 set --global fish_color_cancel f38ba8
set --global fish_color_gray 6b6b70 set --global fish_color_gray 6c7086
set --global fish_color_autosuggestion 4a4a52 set --global fish_color_autosuggestion 6c7086
set --global fish_color_selection 000000 --background=ff2d40 set --global fish_color_selection 11111b --background=89b4fa
set --global fish_color_search_match 000000 --background=c8c8ce set --global fish_color_search_match 11111b --background=f5c2e7
set --global fish_color_match 000000 --background=ff2d40 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
set --global fish_color_cwd ffffff --bold set --global fish_color_cwd f9e2af --bold
set --global fish_color_cwd_root ff2d40 --bold set --global fish_color_cwd_root f38ba8 --bold
set --global fish_color_user c8c8ce set --global fish_color_user 94e2d5
set --global fish_color_host ffffff --bold set --global fish_color_host 89b4fa --bold
set --global fish_color_host_remote ff6b78 set --global fish_color_host_remote a6e3a1
set --global fish_color_status ff2d40 set --global fish_color_status f38ba8
set --global fish_pager_color_progress 6b6b70 --background=141418 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 ffffff --bold set --global fish_pager_color_prefix f5c2e7 --bold
set --global fish_pager_color_completion c8c8ce set --global fish_pager_color_completion cdd6f4
set --global fish_pager_color_description 6b6b70 set --global fish_pager_color_description 6c7086
set --global fish_pager_color_secondary_background --background=0d0d10 set --global fish_pager_color_secondary_background --background=181825
set --global fish_pager_color_secondary_completion c8c8ce set --global fish_pager_color_secondary_completion cdd6f4
set --global fish_pager_color_secondary_description 6b6b70 set --global fish_pager_color_secondary_description 6c7086
set --global fish_pager_color_secondary_prefix ffffff --bold set --global fish_pager_color_secondary_prefix f5c2e7 --bold
set --global fish_pager_color_selected_background --background=ff2d40 set --global fish_pager_color_selected_background --background=89b4fa
set --global fish_pager_color_selected_completion 000000 set --global fish_pager_color_selected_completion 11111b
set --global fish_pager_color_selected_description 000000 set --global fish_pager_color_selected_description 11111b
set --global fish_pager_color_selected_prefix 000000 --bold set --global fish_pager_color_selected_prefix 11111b --bold
+7
View File
@@ -0,0 +1,7 @@
/* Catppuccin Mocha Blue carries the whole GTK3 palette itself, so there is no
* surface override here — the Takemi branch only needed one because it was
* painting Fluent's greys black. All that is left is the one place the rice
* disagrees with stock Catppuccin: destructive actions are pink, matching the
* shell's alarm colour. */
@define-color destructive_bg_color #f38ba8;
@define-color destructive_fg_color #11111b;
+7
View File
@@ -0,0 +1,7 @@
[Settings]
gtk-theme-name=catppuccin-mocha-blue-standard+default
gtk-icon-theme-name=Papirus-Dark
gtk-font-name=Adwaita Sans 11
gtk-cursor-theme-name=Bibata-Modern-Classic
gtk-cursor-theme-size=24
gtk-application-prefer-dark-theme=1
+8
View File
@@ -0,0 +1,8 @@
/* Catppuccin Mocha Blue, straight from the installed theme. The Takemi branch
* 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. */
@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;
+7
View File
@@ -0,0 +1,7 @@
[Settings]
gtk-theme-name=catppuccin-mocha-blue-standard+default
gtk-icon-theme-name=Papirus-Dark
gtk-font-name=Adwaita Sans 11
gtk-cursor-theme-name=Bibata-Modern-Classic
gtk-cursor-theme-size=24
gtk-application-prefer-dark-theme=1
+1 -1
View File
@@ -1,6 +1,6 @@
wallpaper { wallpaper {
monitor = monitor =
path = ~/.wallpapers/takemi_3.jpg path = ~/.wallpapers/arch.png
fit_mode = cover fit_mode = cover
} }
+29 -28
View File
@@ -1,6 +1,6 @@
-- Takemi palette — kept in step with ~/.config/quickshell/config/Theme.qml. -- Mocha palette — kept in step with ~/.config/quickshell/config/Theme.qml.
-- --
-- Crimson, black, white. Nothing else carries hue. -- Catppuccin Mocha ground, blue accent, pink 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")
@@ -8,44 +8,45 @@
local c = {} local c = {}
-- ----------------------------------------------------------------- THE KNOB -- ---------------------------------------------------------------- THE KNOBS
-- The one colour in this setup. Change this line and the window borders, -- Two colours in this setup: blue for anything live (window borders, group
-- group indicators and focus states all recolour with it. -- indicators, focus), pink for anything wrong. Change these lines and every
-- painted edge recolours with them.
-- --
-- Keep it in step with `readonly property color accent` 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 two places the colour is written. -- Those are the only places the colours are written.
c.accent = "rgb(ff2d40)" c.accent = "rgb(89b4fa)"
c.alarm = "rgb(f5c2e7)"
c.accentDim = "rgb(8f1826)" c.accentDim = "rgb(5a7dc0)"
c.accentSoft = "rgb(ff6b78)" c.accentSoft = "rgb(b4befe)"
-- ------------------------------------------------------------------ neutrals -- ------------------------------------------------------------------ neutrals
c.ink = "rgb(000000)" c.ink = "rgb(11111b)"
c.base = "rgb(0a0a0c)" c.base = "rgb(1e1e2e)"
c.mantle = "rgb(0d0d10)" c.mantle = "rgb(181825)"
c.surface = "rgb(141418)" c.surface = "rgb(313244)"
c.surfaceAlt = "rgb(1c1c22)" c.surfaceAlt = "rgb(45475a)"
c.overlay = "rgb(26262e)" c.overlay = "rgb(585b70)"
c.outline = "rgb(3a3a44)" c.outline = "rgb(6c7086)"
c.text = "rgb(ffffff)" c.text = "rgb(cdd6f4)"
c.subtext = "rgb(c8c8ce)" c.subtext = "rgb(a6adc8)"
c.muted = "rgb(6b6b70)" c.muted = "rgb(7f849c)"
-- Retired hues, kept as aliases so existing references resolve. The shell has -- Semantic aliases, so existing references resolve without inventing hues.
-- no teal any more — the wallpaper is the colour in the composition.
c.primary = c.text c.primary = c.text
c.primaryDim = "rgb(9a9aa2)" c.primaryDim = "rgb(9399b2)"
c.glow = c.accent c.glow = c.accent
c.blue = c.primaryDim c.blue = c.accent
c.deep = c.surfaceAlt c.deep = c.surfaceAlt
c.warn = c.accentSoft c.warn = c.alarm
c.ok = c.text c.ok = c.text
-- Crimson into its own shadow, on the diagonal. The accent is the only hue -- Blue into lavender, on the diagonal. Both ends are the accent's own family,
-- here — a gradient into a second colour is what put blue in the border. -- so the border never reads as two colours arguing.
c.activeBorder = { colors = { c.accent, c.accentDim }, angle = 135 } c.activeBorder = { colors = { c.accent, c.accentSoft }, angle = 135 }
return c return c
+1 -1
Submodule nvim updated: 2cbfe6946a...9526fa8fac.
+32
View File
@@ -0,0 +1,32 @@
[Appearance]
color_scheme_path=/usr/share/qt6ct/colors/catppuccin-mocha-blue.conf
custom_palette=true
icon_theme=Papirus-Dark
standard_dialogs=default
style=Fusion
[Fonts]
fixed="Sans Serif,9,-1,5,400,0,0,0,0,0,0,0,0,0,0,1"
general="Sans Serif,9,-1,5,400,0,0,0,0,0,0,0,0,0,0,1"
[Interface]
activate_item_on_single_click=1
buttonbox_layout=0
cursor_flash_time=1000
dialog_buttons_have_icons=1
double_click_interval=400
gui_effects=@Invalid()
keyboard_scheme=2
menus_have_icons=true
show_shortcuts_in_context_menus=true
stylesheets=@Invalid()
toolbutton_style=4
underline_shortcut=1
wheel_scroll_lines=3
[SettingsWindow]
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\a\x80\0\0\0\0\0\0\xe\xef\0\0\x4l\0\0\a\x80\0\0\0\0\0\0\xe\xef\0\0\x4l\0\0\0\x1\x2\0\0\0\a\x80\0\0\a\x80\0\0\0\0\0\0\xe\xef\0\0\x4l)
[Troubleshooting]
force_raster_widgets=1
ignored_applications=@Invalid()
+13 -5
View File
@@ -46,20 +46,24 @@ FocusScope {
padding: Theme.padS padding: Theme.padS
fill: { fill: {
if (!root.enabled) return Theme.treatmentDisabledFill; if (!root.enabled) return Theme.treatmentDisabledFill;
if (root.destructive) return Theme.treatmentDestructiveFill; if (root.destructive)
return root.highlighted ? Theme.treatmentDestructiveActiveFill
: Theme.treatmentDestructiveFill;
if (root.highlighted) return Theme.treatmentHoverFill; if (root.highlighted) return Theme.treatmentHoverFill;
return Theme.treatmentRestFill; return Theme.treatmentRestFill;
} }
fillOpacity: root.enabled ? 1.0 : 0.72 fillOpacity: root.enabled ? 1.0 : 0.72
border: { border: {
if (!root.enabled) return Theme.treatmentDisabledMark; if (!root.enabled) return Theme.treatmentDisabledMark;
if (root.destructive) return Theme.treatmentFocusMark; if (root.destructive)
return root.highlighted ? Theme.treatmentDestructiveActiveMark
: Theme.treatmentDestructiveMark;
if (root.highlighted) return Theme.treatmentHoverMark; if (root.highlighted) return Theme.treatmentHoverMark;
return Theme.alpha(root.accent, 0.55); return Theme.alpha(root.accent, 0.55);
} }
borderWidth: Theme.stroke borderWidth: Theme.stroke
slash: !root.highlighted slash: !root.highlighted
slashColor: root.destructive ? Theme.treatmentDestructiveMark : root.accent slashColor: root.destructive ? Theme.alarm : root.accent
halftone: root.enabled && root.highlighted halftone: root.enabled && root.highlighted
halftoneColor: Theme.ink halftoneColor: Theme.ink
halftoneOpacity: 0.14 halftoneOpacity: 0.14
@@ -81,7 +85,9 @@ FocusScope {
font.pixelSize: Theme.fsTitle font.pixelSize: Theme.fsTitle
color: { color: {
if (!root.enabled) return Theme.treatmentDisabledText; if (!root.enabled) return Theme.treatmentDisabledText;
if (root.destructive) return Theme.treatmentDestructiveText; if (root.destructive)
return root.highlighted ? Theme.treatmentDestructiveActiveText
: Theme.treatmentDestructiveText;
if (root.highlighted) return Theme.treatmentHoverText; if (root.highlighted) return Theme.treatmentHoverText;
return root.accent; return root.accent;
} }
@@ -92,7 +98,9 @@ FocusScope {
text: root.text text: root.text
color: { color: {
if (!root.enabled) return Theme.treatmentDisabledText; if (!root.enabled) return Theme.treatmentDisabledText;
if (root.destructive) return Theme.treatmentDestructiveText; if (root.destructive)
return root.highlighted ? Theme.treatmentDestructiveActiveText
: Theme.treatmentDestructiveText;
if (root.highlighted) return Theme.treatmentHoverText; if (root.highlighted) return Theme.treatmentHoverText;
return Theme.treatmentRestText; return Theme.treatmentRestText;
} }
+72 -57
View File
@@ -3,55 +3,61 @@ pragma Singleton
import QtQuick import QtQuick
import Quickshell import Quickshell
// Takemi palette: crimson, black, white. Nothing else. // Mocha palette: Catppuccin Mocha ground, blue as the accent, pink as the
// alarm. Persona geometry, softer colour.
// //
// White does the work: text, icons, idle indicators. Crimson is the only accent // The Takemi branch ran monochrome-plus-crimson, where one hue carried both
// and it always means the same thing — active, or wrong. Black is structure, // "active" and "wrong". Mocha has room for two: blue is every resting accent —
// used as a hard keyline rather than as a shadow. There are no gradients in // focus, selection, the thing you are pointing at — and pink is reserved for
// this shell; every fill is flat. // the things that bite, so destructive and error still read at a glance
// without a third colour entering the shell.
// //
// The wallpaper is teal. The UI used to be teal too, and the two fought each // Everything else is Mocha's own neutral ramp. Fills stay flat and keylines
// other into a murky blue-grey. Letting the UI go monochrome-plus-red is what // stay hard; only the hues moved.
// lets the wallpaper read as the colour in the composition.
Singleton { Singleton {
id: root id: root
// ---------------------------------------------------------------- colors // ---------------------------------------------------------------- colors
readonly property color ink: "#000000" // Crust, not pure black: it is the darkest thing in Mocha, so it keeps its
// job as the hard keyline and as text punched out of an accent fill.
readonly property color ink: "#11111b"
readonly property color base: "#0a0a0c" readonly property color base: "#1e1e2e"
readonly property color mantle: "#0d0d10" readonly property color mantle: "#181825"
readonly property color surface: "#141418" readonly property color surface: "#313244"
readonly property color surfaceAlt: "#1c1c22" readonly property color surfaceAlt: "#45475a"
readonly property color overlay: "#26262e" readonly property color overlay: "#585b70"
readonly property color outline: "#3a3a44" readonly property color outline: "#6c7086"
readonly property color text: "#ffffff" readonly property color text: "#cdd6f4"
readonly property color subtext: "#c8c8ce" readonly property color subtext: "#a6adc8"
readonly property color muted: "#6b6b70" readonly property color muted: "#7f849c"
// ------------------------------------------------------------ THE KNOB // ------------------------------------------------------------ THE KNOBS
// The one colour in this shell. Change this line and the entire accent // Two colours, two meanings, and nothing else in the shell carries hue.
// recolours — everything below is derived from it, and nothing else in the
// palette carries hue at all.
// //
// Keep it in step with `$accent` at the top of // `accent` is blue: anything live, focused or selected. `alarm` is pink:
// ~/.config/hypr/modules/takemi.conf, which is what colours the Hyprland // anything destructive or failed. Swap either line and everything derived
// window borders. Those are the only two places the colour is written. // from it recolours.
readonly property color accent: "#ff2d40" //
// Keep them in step with `c.accent` / `c.alarm` in
// ~/.config/hypr/lua/palette.lua, which is what colours the Hyprland
// window borders. Those are the only places the colours are written.
readonly property color accent: "#89b4fa"
readonly property color alarm: "#f5c2e7"
readonly property color accentDim: Qt.darker(root.accent, 1.9) readonly property color accentDim: "#5a7dc0"
readonly property color accentSoft: Qt.lighter(root.accent, 1.35) readonly property color accentSoft: "#b4befe"
// `primary` is the resting voice of the UI, which is now simply white. // `primary` is the resting voice of the UI, which is now simply white.
// Kept under the old name so the existing call sites don't all have to move. // Kept under the old name so the existing call sites don't all have to move.
readonly property color primary: root.text readonly property color primary: root.text
readonly property color primaryDim: "#9a9aa2" readonly property color primaryDim: "#9399b2"
readonly property color deep: root.surfaceAlt readonly property color deep: root.surfaceAlt
// `glow` is the hover highlight. It used to be a brighter teal, which now // `glow` is the hover highlight. Pointing at a thing lights it up blue —
// that everything rests at white would have made hover invisible — so it // the same signal as focus, because it is the same statement about where
// resolves to crimson. Pointing at a thing lights it up red. // your attention is.
readonly property color glow: root.accent readonly property color glow: root.accent
// ------------------------------------------------ semantic treatments // ------------------------------------------------ semantic treatments
@@ -77,38 +83,43 @@ 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
// Crimson carries destructive/error meaning. Text and keylines stay black: // Pink carries destructive/error meaning — never blue, so a dangerous
// black-on-crimson is 5.70:1, while small white-on-crimson is only 3.68:1. // button can never be mistaken for a merely focused one.
readonly property color treatmentDestructiveFill: root.accent //
readonly property color treatmentDestructiveMark: root.ink // At rest it is a keyline and a label, not a fill: Mocha's pink is a
readonly property color treatmentDestructiveText: root.ink // pastel, and a slab of it reads as a washed-out red rather than as a
readonly property color treatmentErrorFill: root.treatmentDestructiveFill // warning. The solid pink is held back for the moment the pointer or the
readonly property color treatmentErrorMark: root.treatmentDestructiveMark // selection is actually on the thing — then it lands, with crust punched
readonly property color treatmentErrorText: root.treatmentDestructiveText // out of it at 11.8:1.
readonly property color treatmentDestructiveFill: root.surface
readonly property color treatmentDestructiveMark: root.alarm
readonly property color treatmentDestructiveText: root.alarm
readonly property color treatmentDestructiveActiveFill: root.alarm
readonly property color treatmentDestructiveActiveMark: root.ink
readonly property color treatmentDestructiveActiveText: root.ink
readonly property color treatmentErrorFill: root.treatmentDestructiveActiveFill
readonly property color treatmentErrorMark: root.treatmentDestructiveActiveMark
readonly property color treatmentErrorText: root.treatmentDestructiveActiveText
readonly property color treatmentUrgentFill: root.surface readonly property color treatmentUrgentFill: root.surface
readonly property color treatmentUrgentMark: root.accent readonly property color treatmentUrgentMark: root.alarm
readonly property color treatmentUrgentText: root.text readonly property color treatmentUrgentText: root.text
readonly property color treatmentDisabledFill: root.surface readonly property color treatmentDisabledFill: root.surface
readonly property color treatmentDisabledMark: root.outline readonly property color treatmentDisabledMark: root.outline
readonly property color treatmentDisabledText: root.muted readonly property color treatmentDisabledText: root.muted
// Retired hues. Aliases only — do not introduce new uses. // Semantic aliases. Still only two hues: a thing is fine (text), live
// // (accent) or wrong (alarm). Nothing here introduces a third colour.
// `warn` used to be accentSoft, which put a washed-out pink-red on screen readonly property color blue: root.accent
// wherever something was merely notable. That reads as a faded accent, not
// as a decision. There is no half-crimson in this palette: a thing is wrong
// (accent) or it is not (text). `warn` now resolves to the real accent, so
// low battery shouts properly and everything merely informational is white.
readonly property color blue: root.primaryDim
readonly property color ok: root.text readonly property color ok: root.text
readonly property color warn: root.accent readonly property color warn: root.alarm
// Display text carries a crimson and a black offset rather than an RGB // Display text carries a blue and a pink offset rather than an RGB split.
// split. Same trick, correct palette. // Same trick, this palette's two colours.
readonly property color splitRed: root.accent readonly property color splitRed: root.accent
readonly property color splitCyan: root.ink readonly property color splitCyan: root.alarm
function alpha(c: color, a: real): color { function alpha(c: color, a: real): color {
return Qt.rgba(c.r, c.g, c.b, a); return Qt.rgba(c.r, c.g, c.b, a);
@@ -122,11 +133,15 @@ Singleton {
a.a + (b.a - a.a) * k); a.a + (b.a - a.a) * k);
} }
// Load readouts sit white until the number actually matters, then bleed to // Load readouts sit at text until the number actually matters, then climb
// crimson. Not a hue cycle — red always means the same thing. // 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
// rather than as a rising number; routing through blue keeps every step of
// the ramp a colour the shell already uses.
function heat(pct: real): color { function heat(pct: real): color {
if (pct <= 55) return root.text; if (pct <= 45) return root.text;
return root.mix(root.text, root.accent, (pct - 55) / 45); if (pct <= 75) return root.mix(root.text, root.accent, (pct - 45) / 30);
return root.mix(root.accent, root.alarm, (pct - 75) / 25);
} }
// ----------------------------------------------------------------- fonts // ----------------------------------------------------------------- fonts
+4 -4
View File
@@ -199,7 +199,7 @@ Item {
text: surface.failed text: surface.failed
? (surface.status || "WRONG").toUpperCase() ? (surface.status || "WRONG").toUpperCase()
: (surface.busy ? "CHECKING…" : "WHO GOES THERE") : (surface.busy ? "CHECKING…" : "WHO GOES THERE")
color: surface.failed ? Theme.accent : Theme.text color: surface.failed ? Theme.alarm : Theme.text
pixelSize: Theme.fsTitle pixelSize: Theme.fsTitle
letterSpacing: 4 letterSpacing: 4
horizontalAlignment: Text.AlignHCenter horizontalAlignment: Text.AlignHCenter
@@ -223,10 +223,10 @@ Item {
: (input.activeFocus ? Theme.primary : Theme.outline) : (input.activeFocus ? Theme.primary : Theme.outline)
borderWidth: 2 borderWidth: 2
slash: true slash: true
slashColor: surface.failed ? Theme.accent : Theme.primary slashColor: surface.failed ? Theme.alarm : Theme.primary
slashWidth: 6 slashWidth: 6
halftone: true halftone: true
halftoneColor: surface.failed ? Theme.accent : Theme.primary halftoneColor: surface.failed ? Theme.alarm : Theme.primary
halftoneOpacity: 0.08 halftoneOpacity: 0.08
Row { Row {
@@ -241,7 +241,7 @@ Item {
required property int index required property int index
width: 10 width: 10
height: 20 height: 20
color: surface.failed ? Theme.accent : Theme.primary color: surface.failed ? Theme.alarm : Theme.primary
// Each new block snaps in. // Each new block snaps in.
Component.onCompleted: pop.start() Component.onCompleted: pop.start()
+1 -1
View File
@@ -182,7 +182,7 @@ PanelWindow {
icon: entry.modelData.icon icon: entry.modelData.icon
destructive: entry.modelData.danger destructive: entry.modelData.danger
selected: root.selectedAction === entry.index selected: root.selectedAction === entry.index
accent: entry.modelData.danger ? Theme.accent : Theme.primary accent: entry.modelData.danger ? Theme.alarm : Theme.primary
lean: Theme.skew lean: Theme.skew
lunge: -10 lunge: -10
onClicked: root.invoke(entry.modelData.act) onClicked: root.invoke(entry.modelData.act)
+1 -1
View File
@@ -59,7 +59,7 @@ Singleton {
readonly property color tint: { readonly property color tint: {
if (root.charging || root.full) return Theme.ok; if (root.charging || root.full) return Theme.ok;
if (root.critical) return Theme.accent; if (root.critical) return Theme.alarm;
if (root.low) return Theme.warn; if (root.low) return Theme.warn;
return Theme.primary; return Theme.primary;
} }
+1 -1
View File
@@ -81,7 +81,7 @@ Singleton {
// Urgency-driven accents for the popup chrome. // Urgency-driven accents for the popup chrome.
function urgencyColor(u: int): color { function urgencyColor(u: int): color {
switch (u) { switch (u) {
case NotificationUrgency.Critical: return Theme.accent; case NotificationUrgency.Critical: return Theme.alarm;
case NotificationUrgency.Low: return Theme.muted; case NotificationUrgency.Low: return Theme.muted;
default: return Theme.primary; default: return Theme.primary;
} }
+9
View File
@@ -0,0 +1,9 @@
Net/ThemeName "catppuccin-mocha-blue-standard+default"
Net/IconThemeName "Papirus-Dark"
Gtk/CursorThemeName "Bibata-Modern-Classic"
Net/EnableEventSounds 1
EnableInputFeedbackSounds 0
Xft/Antialias 1
Xft/Hinting 1
Xft/HintStyle "hintslight"
Xft/RGBA "rgb"