consistent styling

This commit is contained in:
2026-09-21 22:39:09 +02:00
parent c54c7a2b9d
commit 90a9390f37
37 changed files with 1004 additions and 263 deletions
+24 -5
View File
@@ -1,6 +1,11 @@
local var_color_active_border = "rgba(74c7ecee)"
local var_color_inactive_border = "rgba(45475aee)"
local var_color_decoration_shadow = "rgba(74c7ecee)"
-- Central theme (basic/.config/themes): single source of truth for colors.
-- Consumers must use `theme.*` roles, never hardcoded hex, so a future
-- non-Catppuccin theme only adds a new directory. (HyprMod's
-- hyprland-gui.conf may additionally override borders at runtime.)
local theme = dofile(os.getenv("HOME") .. "/.config/themes/current/theme.lua")
local var_color_active_border = theme.border_active
local var_color_inactive_border = theme.border_inactive
local var_color_decoration_shadow = theme.shadow
local var_mainMod = "SUPER"
local var_terminal = "kitty"
local var_fileManager = "dolphin"
@@ -53,7 +58,7 @@ hl.env("XDG_SESSION_DESKTOP", "Hyprland")
hl.env("XDG_SESSION_TYPE", "wayland")
hl.env("XDG_MENU_PREFIX", "plasma-")
hl.env("GTK_USE_PORTAL", "1")
hl.env("GTK_THEME", "Adwaita:dark")
hl.env("GTK_THEME", os.getenv("THEME_GTK") or "Adwaita:dark")
hl.env("QT_WAYLAND_DISABLE_WINDOWDECORATION", "1")
hl.env("QT_QPA_PLATFORMTHEME", "kde")
@@ -65,7 +70,7 @@ hl.env("QT_QPA_PLATFORMTHEME", "kde")
-- ## COLOR SCHEMES ###
-- ####################
require("themes.mocha")
-- (Colors come from the central theme via `theme` above; no per-file copies.)
-- ####################
-- ## LOOK AND FEEL ###
@@ -699,6 +704,20 @@ hl.layer_rule({
},
blur_popups = true,
})
-- Central theme: blur behind the wofi popups (SUPER+SPACE drun, SUPER+K
-- keybind help), whose window itself is translucent (@bg_translucent).
hl.layer_rule({
match = {
namespace = "wofi",
},
blur = true,
})
hl.layer_rule({
match = {
namespace = "wofi",
},
blur_popups = true,
})
hl.window_rule({
name = "no-rounding-fullscreen",
match = {
+12 -4
View File
@@ -9,6 +9,11 @@
# you can get started by copying this config to ~/.config/hypr/hyprlock.conf
#
# Central theme: palette variables ($sapphire, $text, ...) come from
# basic/.config/themes via ~/.config/themes/current/hypr.conf.
# Edit colors there, never hardcoded values here.
source = ~/.config/themes/current/hypr.conf
$font = Monospace
general {
@@ -45,11 +50,11 @@ input-field {
outline_thickness = 3
inner_color = rgba(0, 0, 0, 0.0) # no fill
outer_color = rgba(33ccffee) rgba(00ff99ee) 45deg
check_color = rgba(00ff99ee) rgba(ff6633ee) 120deg
fail_color = rgba(ff6633ee) rgba(ff0066ee) 40deg
outer_color = $sapphire $lavender 45deg
check_color = $sapphire $peach 120deg
fail_color = $maroon $red 40deg
font_color = rgb(143, 143, 143)
font_color = $subtext0
fade_on_empty = false
rounding = 15
@@ -74,6 +79,7 @@ input-field {
label {
monitor =
text = $TIME # ref. https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock/#variable-substitution
color = $text
font_size = 90
font_family = $font
@@ -86,6 +92,7 @@ label {
label {
monitor =
text = cmd[update:60000] date +"%A, %d %B %Y" # update every 60 seconds
color = $subtext0
font_size = 25
font_family = $font
@@ -97,6 +104,7 @@ label {
label {
monitor =
text = $LAYOUT[en,ru]
color = $subtext0
font_size = 24
onclick = hyprctl switchxkblayout all next
-6
View File
@@ -1,6 +0,0 @@
#!/bin/bash
out_dir="$HOME/dotfiles/themes/.config/catppuccin/mocha.conf"
url="https://raw.githubusercontent.com/catppuccin/hyprland/main/themes/mocha.conf"
curl -o "$out_dir" "$url"
-78
View File
@@ -1,78 +0,0 @@
$rosewater = rgb(f5e0dc)
$rosewaterAlpha = f5e0dc
$flamingo = rgb(f2cdcd)
$flamingoAlpha = f2cdcd
$pink = rgb(f5c2e7)
$pinkAlpha = f5c2e7
$mauve = rgb(cba6f7)
$mauveAlpha = cba6f7
$red = rgb(f38ba8)
$redAlpha = f38ba8
$maroon = rgb(eba0ac)
$maroonAlpha = eba0ac
$peach = rgb(fab387)
$peachAlpha = fab387
$yellow = rgb(f9e2af)
$yellowAlpha = f9e2af
$green = rgb(a6e3a1)
$greenAlpha = a6e3a1
$teal = rgb(94e2d5)
$tealAlpha = 94e2d5
$sky = rgb(89dceb)
$skyAlpha = 89dceb
$sapphire = rgb(74c7ec)
$sapphireAlpha = 74c7ec
$blue = rgb(89b4fa)
$blueAlpha = 89b4fa
$lavender = rgb(b4befe)
$lavenderAlpha = b4befe
$text = rgb(cdd6f4)
$textAlpha = cdd6f4
$subtext1 = rgb(bac2de)
$subtext1Alpha = bac2de
$subtext0 = rgb(a6adc8)
$subtext0Alpha = a6adc8
$overlay2 = rgb(9399b2)
$overlay2Alpha = 9399b2
$overlay1 = rgb(7f849c)
$overlay1Alpha = 7f849c
$overlay0 = rgb(6c7086)
$overlay0Alpha = 6c7086
$surface2 = rgb(585b70)
$surface2Alpha = 585b70
$surface1 = rgb(45475a)
$surface1Alpha = 45475a
$surface0 = rgb(313244)
$surface0Alpha = 313244
$base = rgb(1e1e2e)
$baseAlpha = 1e1e2e
$mantle = rgb(181825)
$mantleAlpha = 181825
$crust = rgb(11111b)
$crustAlpha = 11111b
View File
+2 -1
View File
@@ -3,7 +3,8 @@ map ctrl+shift+c copy_to_clipboard
map ctrl+shift+v paste_from_clipboard
copy_on_select yes
# Coloer theme
# Color theme: central theme (basic/.config/themes). themes/mocha.conf is a
# symlink into the central palette — edit colors there, never here.
include themes/mocha.conf
# Font
-6
View File
@@ -1,6 +0,0 @@
#!/bin/bash
out_dir="$HOME/dotfiles/themes/.config/themes/kitty/catppuccin/mocha.conf"
url="https://raw.githubusercontent.com/catppuccin/kitty/main/themes/mocha.conf"
curl -o "$out_dir" "$url"
-84
View File
@@ -1,84 +0,0 @@
# vim:ft=kitty
## name: Catppuccin Kitty Mocha
## author: Catppuccin Org
## license: MIT
## upstream: https://github.com/catppuccin/kitty/blob/main/themes/mocha.conf
## blurb: Soothing pastel theme for the high-spirited!
# The basic colors
foreground #cdd6f4
background #1e1e2e
selection_foreground #1e1e2e
selection_background #f5e0dc
# Cursor colors
cursor #f5e0dc
cursor_text_color #1e1e2e
# Scrollbar colors
scrollbar_handle_color #9399b2
scrollbar_track_color #45475a
# URL color when hovering with mouse
url_color #f5e0dc
# Kitty window border colors
active_border_color #b4befe
inactive_border_color #6c7086
bell_border_color #f9e2af
# OS Window titlebar colors
wayland_titlebar_color system
macos_titlebar_color system
# Tab bar colors
active_tab_foreground #11111b
active_tab_background #cba6f7
inactive_tab_foreground #cdd6f4
inactive_tab_background #181825
tab_bar_background #11111b
# Colors for marks (marked text in the terminal)
mark1_foreground #1e1e2e
mark1_background #b4befe
mark2_foreground #1e1e2e
mark2_background #cba6f7
mark3_foreground #1e1e2e
mark3_background #74c7ec
# The 16 terminal colors
# black
color0 #45475a
color8 #585b70
# red
color1 #f38ba8
color9 #f38ba8
# green
color2 #a6e3a1
color10 #a6e3a1
# yellow
color3 #f9e2af
color11 #f9e2af
# blue
color4 #89b4fa
color12 #89b4fa
# magenta
color5 #f5c2e7
color13 #f5c2e7
# cyan
color6 #94e2d5
color14 #94e2d5
# white
color7 #bac2de
color15 #a6adc8
+1
View File
@@ -0,0 +1 @@
../../../../basic/.config/themes/themes/catppuccin-mocha/kitty.conf
+157
View File
@@ -0,0 +1,157 @@
// Managed by dotfiles: hypr/.config/rofi/themes/hyprltm-net.rasi
// (stowed to ~/.config/rofi/themes/hyprltm-net.rasi).
// Third-party layout from hyprltm-net 0.5.0 (Djalel Oukid), kept structurally
// identical: all colors resolve through @theme "ltmnight" (ltmnight.rasi),
// which maps onto the central theme (basic/.config/themes).
// Do not add hex colors here — the palette lives in ltmnight.rasi.
// __ __ __ ________ ___ _ __ __
// / / / /_ ______ _____/ / /_ __/ |/ / / | / /___/ /_
// / /_/ / / / / __ \/ ___/ / / / / /|_/ /_____ / |/ / _ / __/
// / __ / /_/ / /_/ / / / /___ / / / / / /_____ / /| / __/ /_
// /_/ /_/\__, / .___/_/ /_____//_/ /_/ /_/ /_/ |_/\___/\__/
// /____/_/
// Copyright © 2025-2026 Djalel Oukid (sniper1720)
@theme "ltmnight"
window {
background-color: @background;
border: 2px;
border-color: @primary-fixed;
padding: 0;
border-radius: 10px;
width: 50%;
location: 0;
x-offset: 0;
y-offset: 0;
transparency: "real";
}
mainbox {
enabled: true;
spacing: 0em;
padding: 10px;
orientation: vertical;
children: [ inputbar, message, listview ];
background-color: transparent;
}
inputbar {
enabled: true;
spacing: 0.5em;
padding: 8px 15px;
margin: 0 0 10px 0;
background-color: @selection;
border: 0px 0px 2px 0px;
border-color: @primary-fixed;
border-radius: 8px;
}
prompt {
enabled: true;
expand: false;
text-color: @prompt;
padding: 0px 5px;
background-color: transparent;
str: "";
}
entry {
enabled: true;
background-color: transparent;
text-color: @on-primary-fixed;
caret-color: @ltmnight8;
placeholder: "";
placeholder-color: @placeholder;
expand: true;
}
listview {
background-color: transparent;
border: 0;
padding: 5px;
cycle: true;
layout: vertical;
spacing: 2px;
scrollbar: false;
columns: 1;
dynamic: true;
fixed-height:false;
}
element {
enabled: true;
padding: 5px 10px;
margin: 2px 0;
background-color: transparent;
text-color: @foreground;
border: 0;
border-radius: 5px;
orientation: horizontal;
children: [ element-text ];
vertical-align: 0.5;
}
element-icon {
background-color: transparent;
size: 0px;
margin: 0px;
enabled: false;
}
element-text {
background-color: transparent;
text-color: inherit;
highlight-color: @ltmnight6;
expand: true;
vertical-align: 0.5;
format: "{text}";
}
element selected {
background-color: @selection;
text-color: @on-selection;
border-radius: 5px;
}
element urgent {
background-color: @error;
text-color: @on-error;
}
element active {
background-color: @primary;
text-color: @on-primary;
}
scrollbar {
handle-color: @ltmnight8;
background-color: @primary-fixed;
width: 4px;
padding: 0;
border-radius: 0px;
}
case-indicator {
enabled: false;
}
message {
enabled: true;
margin: 10px 0px 10px 0px;
padding: 10px;
border: 1px;
border-radius: 8px;
border-color: @message-border;
background-color: @message-background;
children: [ textbox ];
}
textbox {
background-color: @message-background;
text-color: @message-text;
vertical-align: 0.5;
horizontal-align: 0.0;
highlight: none;
}
+67
View File
@@ -0,0 +1,67 @@
// ltmnight Palette for Rofi — now mapped onto the CENTRAL theme
// (basic/.config/themes → ~/.config/themes/current/rofi.rasi, Catppuccin Mocha).
// Tracked in dotfiles: hypr/.config/rofi/themes/ltmnight.rasi
// (stowed to ~/.config/rofi/themes/ltmnight.rasi).
//
// Only the palette values changed to Mocha; every variable NAME below is
// unchanged, so hyprltm-net.rasi (@theme "ltmnight") and hyprltm-net's
// core.sh -theme-str overrides (@on-primary-fixed, @error-message, ...)
// keep working untouched. The two translucency values use #RRGGBBAA hex
// because rasi has no alpha() function — keep them in sync with @base /
// @surface0 from the central theme if you ever switch flavors.
@import "/home/mathias/.config/themes/current/rofi.rasi"
* {
ltmnight0: @base; /* Background */
ltmnight1: @surface0; /* Current Line / Secondary Background */
ltmnight2: @text; /* Foreground Text */
ltmnight3: @overlay1; /* Comment / Faded Foreground */
ltmnight4: @red; /* Red / Errors */
ltmnight5: @peach; /* Orange / Warnings */
ltmnight6: @yellow; /* Yellow / Warnings */
ltmnight7: @green; /* Green / Success */
ltmnight8: @sapphire; /* Cyan / Info */
ltmnight9: @mauve; /* Purple / Accents */
ltmnight10: @pink; /* Pink / Accents */
ltmnight11: @overlay0; /* Gray / Placeholders */
// Rofi Color Mappings to ltmnight Palette
background: #1e1e2ee6; /* @base at 90% */
foreground: @ltmnight2;
primary: @ltmnight9;
accent: @ltmnight10;
on-primary: @ltmnight2;
primary-fixed: @ltmnight1;
on-primary-fixed: @ltmnight2;
selection: #31324480; /* @surface0 at 50% */
on-selection: @ltmnight2;
error: @ltmnight4;
on-error: @ltmnight2;
surface: #1e1e2ee6; /* @base at 90% */
on-surface: @ltmnight2;
outline: @ltmnight3;
shadow: rgba(0, 0, 0, 0.5);
highlight: @ltmnight6;
prompt: @ltmnight11;
placeholder: @ltmnight11;
message-background: transparent;
message-border: @ltmnight8;
message-text: @ltmnight8;
error-message: @ltmnight4;
warning-message: @ltmnight5;
success-message: @ltmnight7;
info-message: @ltmnight8;
}
+1
View File
@@ -0,0 +1 @@
../../../basic/.config/themes/themes/catppuccin-mocha/theme.css
+59 -62
View File
@@ -1,29 +1,19 @@
/* -------------------------------------------------
Calm Glass (Hyprland / Waybar) — GTK CSS safe
-------------------------------------------------- */
/* Central theme: roles + palette imported from basic/.config/themes
* (mocha.css is a symlink into the current theme's theme.css).
* This file must use @role/@palette names only — never hardcoded colors —
* so a future theme only swaps the central files. */
@import url("mocha.css");
* {
font-family: "JetBrainsMono Nerd Font", FontAwesome, sans-serif;
font-size: 13px;
}
/* ---------- GTK Color Definitions ---------- */
@define-color fg rgba(235, 238, 242, 0.92);
@define-color fg-dim rgba(235, 238, 242, 0.72);
@define-color fg-muted rgba(235, 238, 242, 0.55);
@define-color glass rgba(18, 22, 30, 0.55);
@define-color glass_2 rgba(18, 22, 30, 0.32);
@define-color glass_3 rgba(18, 22, 30, 0.22);
@define-color stroke rgba(255, 255, 255, 0.12);
@define-color stroke_2 rgba(255, 255, 255, 0.07);
/* ---------- Waybar Container ---------- */
window#waybar {
background-color: @glass;
background-color: @bg_dim;
color: @fg;
border-bottom: 1px solid @stroke;
border-bottom: 1px solid @border;
box-shadow: 0 10px 30px rgba(0,0,0,0.30);
transition-property: background-color, opacity;
@@ -43,35 +33,35 @@ button {
button:hover {
background: inherit;
box-shadow: inset 0 -2px rgba(255,255,255,0.18);
box-shadow: inset 0 -2px @accent;
}
#workspaces button {
padding: 0 8px;
margin: 4px 3px;
background-color: rgba(255,255,255,0.04);
color: @fg-dim;
border: 1px solid rgba(255,255,255,0.06);
background-color: @surface;
color: @fg_dim;
border: 1px solid @border;
border-radius: 10px;
}
#workspaces button:hover {
background: rgba(255,255,255,0.07);
background: @border;
color: @fg;
}
#workspaces button.focused,
#workspaces button.active {
background-color: rgba(255,255,255,0.10);
color: @fg;
border: 1px solid rgba(255,255,255,0.12);
box-shadow: inset 0 -2px rgba(255,255,255,0.18);
background-color: @accent;
color: @bg_deep;
border: 1px solid @accent;
box-shadow: inset 0 -2px @accent2;
}
#workspaces button.urgent {
background-color: rgba(190,110,120,0.35);
border-color: rgba(190,110,120,0.50);
color: @fg;
background-color: @urgent;
border-color: @urgent;
color: @bg_deep;
}
#window,
@@ -99,6 +89,7 @@ button:hover {
#pulseaudio,
#wireplumber,
#custom-media,
#custom-gpu,
#tray,
#mode,
#idle_inhibitor,
@@ -111,8 +102,8 @@ button:hover {
#privacy-item {
padding: 0 10px;
color: @fg;
background-color: @glass_2;
border: 1px solid @stroke_2;
background-color: @surface;
border: 1px solid @border;
border-radius: 10px;
margin: 4px 4px;
}
@@ -121,31 +112,32 @@ button:hover {
#wireplumber:hover,
#network:hover,
#clock:hover {
background-color: @glass_3;
background-color: @border;
}
#clock {
border-color: rgba(140, 170, 190, 0.25);
border-color: @accent;
}
/* Battery */
#battery.charging,
#battery.plugged {
background-color: rgba(120,170,140,0.22);
border-color: rgba(120,170,140,0.34);
background-color: @ok;
border-color: @ok;
color: @bg_deep;
}
@keyframes blink {
to {
background-color: rgba(190,110,120,0.18);
border-color: rgba(190,110,120,0.50);
background-color: @urgent;
border-color: @urgent;
}
}
#battery.critical:not(.charging) {
background-color: rgba(190,110,120,0.35);
border-color: rgba(190,110,120,0.55);
color: @fg;
background-color: @urgent;
border-color: @urgent;
color: @bg_deep;
animation-name: blink;
animation-duration: 0.6s;
animation-timing-function: steps(10);
@@ -155,31 +147,33 @@ button:hover {
/* Network */
#network.disconnected {
background-color: rgba(190,110,120,0.30);
border-color: rgba(190,110,120,0.45);
background-color: @urgent;
border-color: @urgent;
color: @bg_deep;
}
/* Audio */
#pulseaudio:hover {
background-color: rgba(190,160,110,0.20);
border-color: rgba(190,160,110,0.28);
background-color: @border;
}
#pulseaudio.muted {
background-color: rgba(140,170,190,0.18);
border-color: rgba(140,170,190,0.26);
color: @fg-dim;
background-color: @surface;
border-color: @border;
color: @fg_muted;
}
#wireplumber.muted {
background-color: rgba(190,110,120,0.28);
border-color: rgba(190,110,120,0.40);
background-color: @urgent;
border-color: @urgent;
color: @bg_deep;
}
/* Temperature */
#temperature.critical {
background-color: rgba(190,110,120,0.30);
border-color: rgba(190,110,120,0.45);
background-color: @urgent;
border-color: @urgent;
color: @bg_deep;
}
/* Tray */
@@ -189,20 +183,20 @@ button:hover {
#tray > .needs-attention {
-gtk-icon-effect: highlight;
background-color: rgba(190,110,120,0.30);
background-color: @urgent;
border-radius: 10px;
}
/* Idle inhibitor */
#idle_inhibitor.activated {
background-color: rgba(255,255,255,0.10);
border-color: rgba(255,255,255,0.14);
color: @fg;
background-color: @accent;
border-color: @accent;
color: @bg_deep;
}
/* Scratchpad */
#scratchpad {
background: rgba(255,255,255,0.05);
background: @surface;
}
#scratchpad.empty {
@@ -223,14 +217,17 @@ button:hover {
}
#privacy-item.screenshare {
background-color: rgba(190,160,110,0.30);
border-color: rgba(190,160,110,0.40);
background-color: @warn;
border-color: @warn;
color: @bg_deep;
}
#privacy-item.audio-in {
background-color: rgba(120,170,140,0.25);
border-color: rgba(120,170,140,0.36);
background-color: @ok;
border-color: @ok;
color: @bg_deep;
}
#privacy-item.audio-out {
background-color: rgba(140,170,190,0.25);
border-color: rgba(140,170,190,0.36);
background-color: @accent;
border-color: @accent;
color: @bg_deep;
}
+12 -8
View File
@@ -1,17 +1,21 @@
/* Waypaper custom stylesheet (stowed to ~/.config/waypaper/style.css).
* Makes the currently selected wallpaper unmissable:
* thick Catppuccin-mocha sapphire border (#74c7ec, same as Hyprland
* active border) + tinted fill + outer glow.
/* Central theme: roles imported from basic/.config/themes.
* NOTE: waypaper loads this file via Gtk.CssProvider.load_from_data, so a
* relative @import would resolve against the process working directory and
* NOT against this file's location. The import MUST stay an absolute path.
* This file must use @role names only — never hardcoded colors.
* Makes the currently selected wallpaper unmissable: thick accent border
* (same role as the Hyprland active border) + tinted fill + outer glow.
* Selector `.highlighted-button` is the official waypaper hook
* (see waypaper docs: "Custom styles and colors"). */
@import url("/home/mathias/.config/themes/current/theme.css");
.highlighted-button {
background-image: none;
box-shadow: none;
background-color: rgba(116, 199, 236, 0.25);
border: 3px solid #74c7ec;
background-color: alpha(@accent, 0.25);
border: 3px solid @accent;
border-radius: 8px;
box-shadow: 0 0 0 2px rgba(116, 199, 236, 0.6), 0 0 14px rgba(116, 199, 236, 0.9);
box-shadow: 0 0 0 2px alpha(@accent, 0.6), 0 0 14px alpha(@accent, 0.9);
}
.highlighted-button > image,
@@ -20,5 +24,5 @@
}
button:hover {
border-color: #74c7ec;
border-color: @accent;
}
+1
View File
@@ -0,0 +1 @@
../../../basic/.config/themes/themes/catppuccin-mocha/theme.css
+69
View File
@@ -0,0 +1,69 @@
/* Central theme: roles + palette imported from basic/.config/themes
* (mocha.css is a symlink into the current theme's theme.css, so this
* resolves identically in the repo and once stowed — unlike a
* ../themes/... relative hop, which differs between the two).
* This file styles every wofi popup: SUPER+SPACE app launcher (drun) and
* SUPER+K keybind help (dmenu). Use @role/@palette names only. */
@import url("mocha.css");
window {
margin: 0px;
background-color: @bg_translucent;
border: 2px solid @accent;
border-radius: 12px;
}
#input {
margin: 8px;
padding: 6px 10px;
background-color: @surface;
color: @fg;
border: 1px solid @border;
border-radius: 8px;
}
#input:focus {
border-color: @accent;
}
#inner-box {
margin: 8px;
background-color: transparent;
}
#outer-box {
margin: 0px;
padding: 4px;
background-color: transparent;
}
#scroll {
margin: 0px;
background-color: transparent;
}
#entry {
padding: 6px 10px;
margin: 2px 0px;
background-color: transparent;
color: @fg;
border-radius: 8px;
}
#entry:selected {
background-color: @accent;
}
#entry:selected #text {
color: @bg_deep;
}
#text {
margin: 2px 6px;
color: @fg;
}
#img {
margin-right: 8px;
background-color: transparent;
}