From d727836cc9effb716fc3de89d06123e05feb823b Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Fri, 15 Aug 2025 15:53:39 +1000 Subject: theme: better qt theming Switch to Darkly for default QT style Use qt5ct-kde and qt6ct-kde --- src/caelestia/data/templates/qtcolors.conf | 4 - src/caelestia/data/templates/qtct.conf | 4 +- src/caelestia/data/templates/qtdark.colors | 149 ++++++++++++++++++++++++++++ src/caelestia/data/templates/qtlight.colors | 149 ++++++++++++++++++++++++++++ src/caelestia/utils/material/generator.py | 16 +++ src/caelestia/utils/theme.py | 19 +++- 6 files changed, 332 insertions(+), 9 deletions(-) delete mode 100644 src/caelestia/data/templates/qtcolors.conf create mode 100644 src/caelestia/data/templates/qtdark.colors create mode 100644 src/caelestia/data/templates/qtlight.colors (limited to 'src') 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) -- cgit v1.2.3-freya