summaryrefslogtreecommitdiff
path: root/src/caelestia
diff options
context:
space:
mode:
author2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-08-15 15:53:39 +1000
committer2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-08-15 15:53:39 +1000
commitd727836cc9effb716fc3de89d06123e05feb823b (patch)
tree2b53227c00202c83afd9d896a03e2fa2b09f1f79 /src/caelestia
parent[CI] chore: update flake (diff)
downloadcaelestia-cli-d727836cc9effb716fc3de89d06123e05feb823b.tar.gz
caelestia-cli-d727836cc9effb716fc3de89d06123e05feb823b.tar.bz2
caelestia-cli-d727836cc9effb716fc3de89d06123e05feb823b.zip
theme: better qt theming
Switch to Darkly for default QT style Use qt5ct-kde and qt6ct-kde
Diffstat (limited to 'src/caelestia')
-rw-r--r--src/caelestia/data/templates/qtcolors.conf4
-rw-r--r--src/caelestia/data/templates/qtct.conf4
-rw-r--r--src/caelestia/data/templates/qtdark.colors149
-rw-r--r--src/caelestia/data/templates/qtlight.colors149
-rw-r--r--src/caelestia/utils/material/generator.py16
-rw-r--r--src/caelestia/utils/theme.py19
6 files changed, 332 insertions, 9 deletions
diff --git a/src/caelestia/data/templates/qtcolors.conf b/src/caelestia/data/templates/qtcolors.conf
deleted file mode 100644
index 74ed990..0000000
--- a/src/caelestia/data/templates/qtcolors.conf
+++ /dev/null
@@ -1,4 +0,0 @@
-[ColorScheme]
-active_colors = {{ $onSurface }}, {{ $surfaceContainer }}, {{ $surfaceContainerHighest }}, {{ $surfaceContainerHigh }}, {{ $surfaceContainerLowest }}, {{ $surfaceContainerLow }}, {{ $onSurface }}, {{ $onSurface }}, {{ $onSurface }}, {{ $surface }}, {{ $surfaceContainer }}, {{ $shadow }}, {{ $primaryContainer }}, {{ $onPrimaryContainer }}, {{ $secondary }}, {{ $primary }}, {{ $surface }}, {{ $scrim }}, {{ $surfaceContainer }}, {{ $onSurface }}, {{ $secondary }}
-inactive_colors = {{ $onSurface }}, {{ $surfaceContainer }}, {{ $surfaceContainerHighest }}, {{ $surfaceContainerHigh }}, {{ $surfaceContainerLowest }}, {{ $surfaceContainerLow }}, {{ $onSurface }}, {{ $onSurface }}, {{ $onSurface }}, {{ $surface }}, {{ $surfaceContainer }}, {{ $shadow }}, {{ $primaryContainer }}, {{ $onPrimaryContainer }}, {{ $secondary }}, {{ $primary }}, {{ $surface }}, {{ $scrim }}, {{ $surfaceContainer }}, {{ $onSurface }}, {{ $secondary }}
-disabled_colors = {{ $outline }}, {{ $surface }}, {{ $surfaceContainerHigh }}, {{ $surfaceContainer }}, {{ $surfaceContainerLow }}, {{ $surfaceContainer }}, {{ $outline }}, {{ $onSurfaceVariant }}, {{ $onSurfaceVariant }}, {{ $surface }}, {{ $surfaceContainer }}, {{ $shadow }}, {{ $surfaceContainerHigh }}, {{ $onSurface }}, {{ $onSurfaceVariant }}, {{ $onSurface }}, {{ $surface }}, {{ $scrim }}, {{ $surfaceContainer }}, {{ $onSurface }}, {{ $secondary }}
diff --git a/src/caelestia/data/templates/qtct.conf b/src/caelestia/data/templates/qtct.conf
index 53c2f6f..578085a 100644
--- a/src/caelestia/data/templates/qtct.conf
+++ b/src/caelestia/data/templates/qtct.conf
@@ -1,6 +1,6 @@
[Appearance]
-color_scheme_path={{ $config }}/colors/caelestia.conf
+color_scheme_path={{ $config }}/colors/caelestia.colors
custom_palette=true
icon_theme=Papirus-{{ $mode }}
standard_dialogs=default
-style=Fusion
+style=Darkly
diff --git a/src/caelestia/data/templates/qtdark.colors b/src/caelestia/data/templates/qtdark.colors
new file mode 100644
index 0000000..0d8ce6b
--- /dev/null
+++ b/src/caelestia/data/templates/qtdark.colors
@@ -0,0 +1,149 @@
+[ColorEffects:Disabled]
+Color={{ $surfaceContainer }}
+ColorAmount=0.5
+ColorEffect=3
+ContrastAmount=0
+ContrastEffect=0
+IntensityAmount=0
+IntensityEffect=0
+
+[ColorEffects:Inactive]
+ChangeSelectionColor=true
+Color={{ $surfaceContainerLowest }}
+ColorAmount=0.025
+ColorEffect=0
+ContrastAmount=0.1
+ContrastEffect=0
+Enable=true
+IntensityAmount=0
+IntensityEffect=0
+
+[Colors:Button]
+BackgroundAlternate={{ $surfaceVariant }}
+BackgroundNormal={{ $surfaceContainerHigh }}
+DecorationFocus={{ $primary }}
+DecorationHover={{ $primary }}
+ForegroundActive={{ $onSurface }}
+ForegroundInactive={{ $outline }}
+ForegroundLink={{ $klink }}
+ForegroundNegative={{ $knegative }}
+ForegroundNeutral={{ $kneutral }}
+ForegroundNormal={{ $onSurface }}
+ForegroundPositive={{ $kpositive }}
+ForegroundVisited={{ $kvisited }}
+
+[Colors:Complementary]
+BackgroundAlternate={{ $surface }}
+BackgroundNormal={{ $surfaceContainer }}
+DecorationFocus={{ $primary }}
+DecorationHover={{ $primary }}
+ForegroundActive={{ $inverseSurface }}
+ForegroundInactive={{ $outline }}
+ForegroundLink={{ $klink }}
+ForegroundNegative={{ $knegative }}
+ForegroundNeutral={{ $kneutral }}
+ForegroundNormal={{ $onSurfaceVariant }}
+ForegroundPositive={{ $kpositive }}
+ForegroundVisited={{ $kvisited }}
+
+[Colors:Header]
+BackgroundAlternate={{ $surfaceContainer }}
+BackgroundNormal={{ $surfaceContainer }}
+DecorationFocus={{ $primary }}
+DecorationHover={{ $primary }}
+ForegroundActive={{ $inverseSurface }}
+ForegroundInactive={{ $outline }}
+ForegroundLink={{ $klink }}
+ForegroundNegative={{ $knegative }}
+ForegroundNeutral={{ $kneutral }}
+ForegroundNormal={{ $onSurfaceVariant }}
+ForegroundPositive={{ $kpositive }}
+ForegroundVisited={{ $kvisited }}
+
+[Colors:Header][Inactive]
+BackgroundAlternate={{ $surfaceContainer }}
+BackgroundNormal={{ $surfaceContainer }}
+DecorationFocus={{ $primary }}
+DecorationHover={{ $primary }}
+ForegroundActive={{ $inverseSurface }}
+ForegroundInactive={{ $outline }}
+ForegroundLink={{ $klink }}
+ForegroundNegative={{ $knegative }}
+ForegroundNeutral={{ $kneutral }}
+ForegroundNormal={{ $onSurfaceVariant }}
+ForegroundPositive={{ $kpositive }}
+ForegroundVisited={{ $kvisited }}
+
+[Colors:Selection]
+BackgroundAlternate={{ $primary }}
+BackgroundNormal={{ $primary }}
+DecorationFocus={{ $primary }}
+DecorationHover={{ $secondary }}
+ForegroundActive={{ $onPrimary }}
+ForegroundInactive={{ $onPrimary }}
+ForegroundLink={{ $klinkSelection }}
+ForegroundNegative={{ $knegativeSelection }}
+ForegroundNeutral={{ $kneutralSelection }}
+ForegroundNormal={{ $onPrimary }}
+ForegroundPositive={{ $kpositiveSelection }}
+ForegroundVisited={{ $kvisitedSelection }}
+
+[Colors:Tooltip]
+BackgroundAlternate={{ $surfaceVariant }}
+BackgroundNormal={{ $surfaceContainer }}
+DecorationFocus={{ $primary }}
+DecorationHover={{ $primary }}
+ForegroundActive={{ $onSurface }}
+ForegroundInactive={{ $outline }}
+ForegroundLink={{ $klink }}
+ForegroundNegative={{ $knegative }}
+ForegroundNeutral={{ $kneutral }}
+ForegroundNormal={{ $onSurface }}
+ForegroundPositive={{ $kpositive }}
+ForegroundVisited={{ $kvisited }}
+
+[Colors:View]
+BackgroundAlternate={{ $surfaceContainer }}
+BackgroundNormal={{ $surfaceDim }}
+DecorationFocus={{ $primary }}
+#-----------------------------------------------
+DecorationHover={{ $inversePrimary }}
+ForegroundActive={{ $inverseSurface }}
+ForegroundInactive={{ $outline }}
+ForegroundLink={{ $klink }}
+ForegroundNegative={{ $knegative }}
+ForegroundNeutral={{ $kneutral }}
+ForegroundNormal={{ $onSurface }}
+ForegroundPositive={{ $kpositive }}
+ForegroundVisited={{ $kvisited }}
+
+[Colors:Window]
+BackgroundAlternate={{ $surfaceVariant }}
+BackgroundNormal={{ $surfaceContainer }}
+DecorationFocus={{ $primary }}
+DecorationHover={{ $primary }}
+ForegroundActive={{ $klink }}
+ForegroundInactive={{ $outline }}
+ForegroundLink={{ $klink }}
+ForegroundNegative={{ $knegative }}
+ForegroundNeutral={{ $kneutral }}
+#--- Window titles, context icons
+ForegroundNormal={{ $onSurfaceVariant }}
+ForegroundPositive={{ $kpositive }}
+ForegroundVisited={{ $kvisited }}
+
+[General]
+ColorScheme=Caelestia
+Name=Caelestia
+shadeSortColumn=true
+
+[KDE]
+contrast=4
+
+[WM]
+activeBackground={{ $surfaceContainerHighest }}
+activeBlend=252,252,252
+activeForeground={{ $onSurface }}
+inactiveBackground={{ $secondaryContainer }}
+inactiveBlend=161,169,177
+inactiveForeground={{ $onSecondaryContainer }}
diff --git a/src/caelestia/data/templates/qtlight.colors b/src/caelestia/data/templates/qtlight.colors
new file mode 100644
index 0000000..1ae60e5
--- /dev/null
+++ b/src/caelestia/data/templates/qtlight.colors
@@ -0,0 +1,149 @@
+[ColorEffects:Disabled]
+Color={{ $surfaceContainer }}
+ColorAmount=0.5
+ColorEffect=3
+ContrastAmount=0
+ContrastEffect=0
+IntensityAmount=0
+IntensityEffect=0
+
+[ColorEffects:Inactive]
+ChangeSelectionColor=true
+Color={{ $surfaceContainerLowest }}
+ColorAmount=0.025
+ColorEffect=0
+ContrastAmount=0.1
+ContrastEffect=0
+Enable=false
+IntensityAmount=0
+IntensityEffect=0
+
+[Colors:Button]
+BackgroundAlternate={{ $surfaceVariant }}
+BackgroundNormal={{ $surfaceContainerHigh }}
+DecorationFocus={{ $primary }}
+DecorationHover={{ $primary }}
+ForegroundActive={{ $onSurface }}
+ForegroundInactive={{ $outline }}
+ForegroundLink={{ $klink }}
+ForegroundNegative={{ $knegative }}
+ForegroundNeutral={{ $kneutral }}
+ForegroundNormal={{ $onSurface }}
+ForegroundPositive={{ $kpositive }}
+ForegroundVisited={{ $kvisited }}
+
+[Colors:Complementary]
+BackgroundAlternate={{ $surface }}
+BackgroundNormal={{ $surfaceContainer }}
+DecorationFocus={{ $primary }}
+DecorationHover={{ $primary }}
+ForegroundActive={{ $inverseSurface }}
+ForegroundInactive={{ $outline }}
+ForegroundLink={{ $klink }}
+ForegroundNegative={{ $knegative }}
+ForegroundNeutral={{ $kneutral }}
+ForegroundNormal={{ $onSurfaceVariant }}
+ForegroundPositive={{ $kpositive }}
+ForegroundVisited={{ $kvisited }}
+
+[Colors:Header]
+BackgroundAlternate={{ $surfaceContainer }}
+BackgroundNormal={{ $surfaceContainer }}
+DecorationFocus={{ $primary }}
+DecorationHover={{ $primary }}
+ForegroundActive={{ $inverseSurface }}
+ForegroundInactive={{ $outline }}
+ForegroundLink={{ $klink }}
+ForegroundNegative={{ $knegative }}
+ForegroundNeutral={{ $kneutral }}
+ForegroundNormal={{ $onSurfaceVariant }}
+ForegroundPositive={{ $kpositive }}
+ForegroundVisited={{ $kvisited }}
+
+[Colors:Header][Inactive]
+BackgroundAlternate={{ $surfaceContainer }}
+BackgroundNormal={{ $surfaceContainer }}
+DecorationFocus={{ $primary }}
+DecorationHover={{ $primary }}
+ForegroundActive={{ $inverseSurface }}
+ForegroundInactive={{ $outline }}
+ForegroundLink={{ $klink }}
+ForegroundNegative={{ $knegative }}
+ForegroundNeutral={{ $kneutral }}
+ForegroundNormal={{ $onSurfaceVariant }}
+ForegroundPositive={{ $kpositive }}
+ForegroundVisited={{ $kvisited }}
+
+[Colors:Selection]
+BackgroundAlternate={{ $primary }}
+BackgroundNormal={{ $primary }}
+DecorationFocus={{ $primary }}
+DecorationHover={{ $secondary }}
+ForegroundActive={{ $onPrimary }}
+ForegroundInactive={{ $onPrimary }}
+ForegroundLink={{ $klinkSelection }}
+ForegroundNegative={{ $knegativeSelection }}
+ForegroundNeutral={{ $kneutralSelection }}
+ForegroundNormal={{ $onPrimary }}
+ForegroundPositive={{ $kpositiveSelection }}
+ForegroundVisited={{ $kvisitedSelection }}
+
+[Colors:Tooltip]
+BackgroundAlternate={{ $surfaceVariant }}
+BackgroundNormal={{ $surfaceContainer }}
+DecorationFocus={{ $primary }}
+DecorationHover={{ $primary }}
+ForegroundActive={{ $onSurface }}
+ForegroundInactive={{ $outline }}
+ForegroundLink={{ $klink }}
+ForegroundNegative={{ $knegative }}
+ForegroundNeutral={{ $kneutral }}
+ForegroundNormal={{ $onSurface }}
+ForegroundPositive={{ $kpositive }}
+ForegroundVisited={{ $kvisited }}
+
+[Colors:View]
+BackgroundAlternate={{ $surfaceContainer }}
+BackgroundNormal={{ $surfaceBright }}
+DecorationFocus={{ $primary }}
+#-----------------------------------------------
+DecorationHover={{ $secondaryFixed }}
+ForegroundActive={{ $inverseSurface }}
+ForegroundInactive={{ $outline }}
+ForegroundLink={{ $klink }}
+ForegroundNegative={{ $knegative }}
+ForegroundNeutral={{ $kneutral }}
+ForegroundNormal={{ $onSurface }}
+ForegroundPositive={{ $kpositive }}
+ForegroundVisited={{ $kvisited }}
+
+[Colors:Window]
+BackgroundAlternate={{ $surfaceVariant }}
+BackgroundNormal={{ $surfaceContainer }}
+DecorationFocus={{ $primary }}
+DecorationHover={{ $primary }}
+ForegroundActive={{ $klink }}
+ForegroundInactive={{ $outline }}
+ForegroundLink={{ $klink }}
+ForegroundNegative={{ $knegative }}
+ForegroundNeutral={{ $kneutral }}
+#--- Window titles, context icons
+ForegroundNormal={{ $onSurfaceVariant }}
+ForegroundPositive={{ $kpositive }}
+ForegroundVisited={{ $kvisited }}
+
+[General]
+ColorScheme=Caelestia
+Name=Caelestia
+shadeSortColumn=true
+
+[KDE]
+contrast=4
+
+[WM]
+activeBackground={{ $surfaceContainerHighest }}
+activeBlend=227,229,231
+activeForeground={{ $onSurface }}
+inactiveBackground={{ $secondaryContainer }}
+inactiveBlend=239,240,241
+inactiveForeground={{ $onSurfaceVariant }}
diff --git a/src/caelestia/utils/material/generator.py b/src/caelestia/utils/material/generator.py
index d304d7a..200fa7f 100644
--- a/src/caelestia/utils/material/generator.py
+++ b/src/caelestia/utils/material/generator.py
@@ -92,6 +92,14 @@ dark_catppuccin = [
hex_to_hct("b4befe"),
]
+kcolours = [
+ {"name": "klink", "hct": hex_to_hct("2980b9")},
+ {"name": "kvisited", "hct": hex_to_hct("9b59b6")},
+ {"name": "knegative", "hct": hex_to_hct("da4453")},
+ {"name": "kneutral", "hct": hex_to_hct("f67400")},
+ {"name": "kpositive", "hct": hex_to_hct("27ae60")},
+]
+
colour_names = [
"rosewater",
"flamingo",
@@ -185,6 +193,14 @@ def gen_scheme(scheme, primary: Hct) -> dict[str, str]:
else:
colours[colour_names[i]] = harmonize(hct, colours["primary_paletteKeyColor"], (-0.2 if light else 0.05))
+ # KColours
+ for colour in kcolours:
+ colours[colour["name"]] = harmonize(colour["hct"], colours["primary"], 0.1)
+ colours[f"{colour['name']}Selection"] = harmonize(colour["hct"], colours["onPrimaryFixedVariant"], 0.1)
+ if scheme.variant == "monochrome":
+ colours[colour["name"]] = grayscale(colours[colour["name"]], light)
+ colours[f"{colour['name']}Selection"] = grayscale(colours[f"{colour['name']}Selection"], light)
+
if scheme.variant == "neutral":
for name, hct in colours.items():
colours[name].chroma -= 15
diff --git a/src/caelestia/utils/theme.py b/src/caelestia/utils/theme.py
index ead3e29..b3261d8 100644
--- a/src/caelestia/utils/theme.py
+++ b/src/caelestia/utils/theme.py
@@ -159,15 +159,28 @@ def apply_gtk(colours: dict[str, str], mode: str) -> None:
def apply_qt(colours: dict[str, str], mode: str) -> None:
- template = gen_replace(colours, templates_dir / "qtcolors.conf", hash=True)
- write_file(config_dir / "qt5ct/colors/caelestia.conf", template)
- write_file(config_dir / "qt6ct/colors/caelestia.conf", template)
+ template = gen_replace(colours, templates_dir / f"qt{mode}.colors", hash=True)
+ write_file(config_dir / "qt5ct/colors/caelestia.colors", template)
+ write_file(config_dir / "qt6ct/colors/caelestia.colors", template)
qtct = (templates_dir / "qtct.conf").read_text()
qtct = qtct.replace("{{ $mode }}", mode.capitalize())
for ver in 5, 6:
conf = qtct.replace("{{ $config }}", str(config_dir / f"qt{ver}ct"))
+
+ if ver == 5:
+ conf += """
+[Fonts]
+fixed="Monospace,12,-1,5,50,0,0,0,0,0"
+general="Sans Serif,12,-1,5,50,0,0,0,0,0"
+"""
+ else:
+ conf += """
+[Fonts]
+fixed="Monospace,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1"
+general="Sans Serif,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1"
+"""
write_file(config_dir / f"qt{ver}ct/qt{ver}ct.conf", conf)