From 7000de38a166a589319729e34a8dbd8dc629d145 Mon Sep 17 00:00:00 2001 From: Jonathan Conder Date: Sat, 23 Mar 2024 09:05:08 +1300 Subject: [PATCH] fix(install): update catppuccin dependency --- install.py | 6 +- requirements.txt | 2 +- scripts/create_theme.py | 6 +- scripts/ctp_colors.py | 21 ++--- scripts/recolor.py | 167 ++++++++++++++++++++-------------------- scripts/var.py | 34 ++++---- 6 files changed, 117 insertions(+), 119 deletions(-) diff --git a/install.py b/install.py index 67914088..4a5de802 100644 --- a/install.py +++ b/install.py @@ -9,7 +9,7 @@ import argparse import os import subprocess -from scripts.ctp_colors import ctp_colors, get_all_accent +from scripts.ctp_colors import get_all_accent, get_all_flavors from scripts.create_theme import create_theme from scripts.var import theme_name, work_dir @@ -86,12 +86,12 @@ parser.add_argument("--recreate-asset", args = parser.parse_args() if "all" in args.flavor: - flavors = ctp_colors.keys() + flavors = get_all_flavors() else: flavors = args.flavor if "all" in args.accent: - accents = get_all_accent().keys() + accents = get_all_accent() else: accents = args.accent diff --git a/requirements.txt b/requirements.txt index 9286bfa2..5f6ff882 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -catppuccin>=1.1.1,<2.0.0 \ No newline at end of file +catppuccin>=2.0.0 diff --git a/scripts/create_theme.py b/scripts/create_theme.py index 074dc430..1bae20d7 100644 --- a/scripts/create_theme.py +++ b/scripts/create_theme.py @@ -1,16 +1,16 @@ +from catppuccin import PALETTE import os import shutil import subprocess from typing import List -from scripts.ctp_colors import ctp_colors from scripts.patches import recreate_xfwm4_assets from scripts.recolor import recolor from scripts.utils import replacetext, zip_multiple_folders from scripts.var import def_color_map, repo_dir, src_dir, theme_name, work_dir -def create_theme(types: List[str], accents: List[str], dest: str, link: bool = False, +def create_theme(types: List[str], accents: List[str], dest: str, link: bool = False, name: str = theme_name, size: str = "standard", tweaks=[], zip = False, recreate_assets = False) -> None: try: @@ -24,7 +24,7 @@ def create_theme(types: List[str], accents: List[str], dest: str, link: bool = F for accent in accents: # Recolor colloid wrt our selection like mocha. latte - recolor(ctp_colors[type], accent) + recolor(getattr(PALETTE, type), accent) theme_style: str = "light" if type == "latte" else "dark" install_cmd: str = f"./install.sh -c {theme_style} -s {size} -n {name} -d {dest} -t {def_color_map[accent]}" if tweaks: diff --git a/scripts/ctp_colors.py b/scripts/ctp_colors.py index 788537ff..9859cfa4 100644 --- a/scripts/ctp_colors.py +++ b/scripts/ctp_colors.py @@ -1,16 +1,11 @@ -from catppuccin import Flavour +from catppuccin import PALETTE +import dataclasses + + +def get_all_flavors(): + return [f.name for f in dataclasses.fields(PALETTE)] -ctp_colors = { - "latte": Flavour.latte(), - "mocha": Flavour.mocha(), - "frappe": Flavour.frappe(), - "macchiato": Flavour.macchiato() -} def get_all_accent(): - accent = {} - for key, value in Flavour.latte().__dict__.items(): - if key not in ['white', 'black', 'text', 'subtext0', 'subtext1', 'overlay0', 'overlay1', 'overlay2', 'surface0', 'surface1', 'surface2', 'base', 'mantle', 'crust']: - accent[key] = value - - return accent + exclude = ['white', 'black', 'text', 'subtext0', 'subtext1', 'overlay0', 'overlay1', 'overlay2', 'surface0', 'surface1', 'surface2', 'base', 'mantle', 'crust'] + return [f.name for f in dataclasses.fields(PALETTE.latte.colors) if f.name not in exclude] diff --git a/scripts/recolor.py b/scripts/recolor.py index 5d671feb..acb26200 100644 --- a/scripts/recolor.py +++ b/scripts/recolor.py @@ -1,69 +1,69 @@ -from catppuccin import Flavour +from catppuccin import PALETTE from .utils import replacetext, replaceAllText from .var import (def_accent_dark, def_accent_light, def_color_map, src_dir, work_dir) -def recolor_accent(flavor, accent: str = "blue"): +def recolor_accent(colors, accent: str = "blue"): """ Recolors the accent color in a file. - flavor: + colors: The flavor to recolor to. Like mocha, frappe, latte, etc. accent: The accent color to replace. Defaults to Blue """ print(f"Recoloring all accents") replaceAllText( # Recolor as per base for dark theme. - work_dir, def_accent_dark[def_color_map[accent]], flavor.__dict__[accent].hex) + work_dir, def_accent_dark[def_color_map[accent]], getattr(colors, accent).hex) replaceAllText( # Recolor as per accent for light. Hard code it as latte - work_dir, def_accent_light[def_color_map[accent]], Flavour.latte().__dict__[accent].hex) + work_dir, def_accent_light[def_color_map[accent]], getattr(PALETTE.latte.colors, accent).hex) -def recolor_firefox(flavor, accent: str = "blue"): +def recolor_firefox(colors, accent: str = "blue"): """ Recolor the custom gnomish firefox to catpuccin color """ firefox_color_file_dark = f"{src_dir}/other/firefox/chrome/Colloid/colors/dark.css" firefox_color_file_light = f"{src_dir}/other/firefox/chrome/Colloid/colors/light.css" - replacetext(firefox_color_file_light, "2e3436", flavor.base.hex) - replacetext(firefox_color_file_light, "fafafa", Flavour.latte().base.hex) - replacetext(firefox_color_file_light, "f2f2f2", flavor.crust.hex) - replacetext(firefox_color_file_light, "303030", Flavour.mocha().base.hex) - replacetext(firefox_color_file_light, "ffffff", flavor.base.hex) - replacetext(firefox_color_file_light, "5b9bf8", flavor.surface0.hex) - replacetext(firefox_color_file_light, "3c84f7", flavor.__dict__[accent].hex) - replacetext(firefox_color_file_light, "dedede", flavor.surface1.hex) - replacetext(firefox_color_file_light, "f0f0f0", flavor.surface0.hex) - replacetext(firefox_color_file_light, "FAFAFA", flavor.surface1.hex) - replacetext(firefox_color_file_light, "fafafa", flavor.surface0.hex) - replacetext(firefox_color_file_light, "323232", flavor.mantle.hex) - replacetext(firefox_color_file_light, "d5d0cc", flavor.subtext1.hex) + replacetext(firefox_color_file_light, "#2e3436", colors.base.hex) + replacetext(firefox_color_file_light, "#fafafa", PALETTE.latte.colors.base.hex) + replacetext(firefox_color_file_light, "#f2f2f2", colors.crust.hex) + replacetext(firefox_color_file_light, "#303030", PALETTE.mocha.colors.base.hex) + replacetext(firefox_color_file_light, "#ffffff", colors.base.hex) + replacetext(firefox_color_file_light, "#5b9bf8", colors.surface0.hex) + replacetext(firefox_color_file_light, "#3c84f7", getattr(colors, accent).hex) + replacetext(firefox_color_file_light, "#dedede", colors.surface1.hex) + replacetext(firefox_color_file_light, "#f0f0f0", colors.surface0.hex) + replacetext(firefox_color_file_light, "#FAFAFA", colors.surface1.hex) + replacetext(firefox_color_file_light, "#fafafa", colors.surface0.hex) + replacetext(firefox_color_file_light, "#323232", colors.mantle.hex) + replacetext(firefox_color_file_light, "#d5d0cc", colors.subtext1.hex) # Buttons - replacetext(firefox_color_file_light, "fd5f51", flavor.red.hex) - replacetext(firefox_color_file_light, "38c76a", flavor.green.hex) - replacetext(firefox_color_file_light, "fdbe04", flavor.yellow.hex) + replacetext(firefox_color_file_light, "#fd5f51", colors.red.hex) + replacetext(firefox_color_file_light, "#38c76a", colors.green.hex) + replacetext(firefox_color_file_light, "#fdbe04", colors.yellow.hex) # Dark - replacetext(firefox_color_file_dark, "eeeeee", flavor.base.hex) - replacetext(firefox_color_file_dark, "2c2c2c", Flavour.mocha().base.hex) - replacetext(firefox_color_file_dark, "242424", flavor.crust.hex) - replacetext(firefox_color_file_dark, "ffffff", Flavour.latte().base.hex) - replacetext(firefox_color_file_dark, "383838", flavor.base.hex) - replacetext(firefox_color_file_dark, "3584e4", flavor.surface0.hex) - replacetext(firefox_color_file_dark, "78aeed", flavor.__dict__[accent].hex) - replacetext(firefox_color_file_dark, "363636", flavor.surface1.hex) - replacetext(firefox_color_file_dark, "404040", flavor.surface0.hex) - replacetext(firefox_color_file_dark, "4F4F4F", flavor.surface1.hex) - replacetext(firefox_color_file_dark, "444444", flavor.surface0.hex) - replacetext(firefox_color_file_dark, "323232", flavor.mantle.hex) - replacetext(firefox_color_file_dark, "919191", flavor.subtext1.hex) + replacetext(firefox_color_file_dark, "#eeeeee", colors.base.hex) + replacetext(firefox_color_file_dark, "#2c2c2c", PALETTE.mocha.colors.base.hex) + replacetext(firefox_color_file_dark, "#242424", colors.crust.hex) + replacetext(firefox_color_file_dark, "#ffffff", PALETTE.latte.colors.base.hex) + replacetext(firefox_color_file_dark, "#383838", colors.base.hex) + replacetext(firefox_color_file_dark, "#3584e4", colors.surface0.hex) + replacetext(firefox_color_file_dark, "#78aeed", getattr(colors, accent).hex) + replacetext(firefox_color_file_dark, "#363636", colors.surface1.hex) + replacetext(firefox_color_file_dark, "#404040", colors.surface0.hex) + replacetext(firefox_color_file_dark, "#4F4F4F", colors.surface1.hex) + replacetext(firefox_color_file_dark, "#444444", colors.surface0.hex) + replacetext(firefox_color_file_dark, "#323232", colors.mantle.hex) + replacetext(firefox_color_file_dark, "#919191", colors.subtext1.hex) # Buttons - replacetext(firefox_color_file_dark, "fd5f51", flavor.red.hex) - replacetext(firefox_color_file_dark, "38c76a", flavor.green.hex) - replacetext(firefox_color_file_dark, "fdbe04", flavor.yellow.hex) + replacetext(firefox_color_file_dark, "#fd5f51", colors.red.hex) + replacetext(firefox_color_file_dark, "#38c76a", colors.green.hex) + replacetext(firefox_color_file_dark, "#fdbe04", colors.yellow.hex) def recolor(flavor, accent: str): """ @@ -71,75 +71,78 @@ def recolor(flavor, accent: str): """ print("Recoloring to suit catppuccin theme") print("Recoloring accents") - recolor_accent(flavor, accent) + colors = flavor.colors + latte_colors = PALETTE.latte.colors + mocha_colors = PALETTE.mocha.colors + recolor_accent(colors, accent) print("Recoloring firefox") - recolor_firefox(flavor, accent) + recolor_firefox(colors, accent) print("MOD: Gtkrc.sh") replacetext(f"{work_dir}/gtkrc.sh", "background_light='#FFFFFF'", - f"background_light='#{Flavour.latte().base.hex}'") # use latte_base for background_light + f"background_light='{latte_colors.base.hex}'") # use latte_base for background_light replacetext(f"{work_dir}/gtkrc.sh", "titlebar_light='#F2F2F2'", - f"titlebar_light='#{Flavour.latte().crust.hex}'") # use latte_crust for titlebar_light + f"titlebar_light='{latte_colors.crust.hex}'") # use latte_crust for titlebar_light replacetext(f"{work_dir}/gtkrc.sh", - "titlebar_light='#F2F2F2'", f"titlebar_light='#{Flavour.latte().crust.hex}'") + "titlebar_light='#F2F2F2'", f"titlebar_light='{latte_colors.crust.hex}'") - if flavor == Flavour.latte(): + if flavor.name == "latte": replacetext(f"{work_dir}/gtkrc.sh", "background_dark='#0F0F0F'", - f"background_dark='#{Flavour.mocha().base.hex}'") + f"background_dark='{mocha_colors.base.hex}'") replacetext(f"{work_dir}/gtkrc.sh", "background_darker='#121212'", - f"background_darker='#{Flavour.mocha().mantle.hex}'") + f"background_darker='{mocha_colors.mantle.hex}'") replacetext(f"{work_dir}/gtkrc.sh", - "background_alt='#212121'", f"background_alt='#{Flavour.mocha().crust.hex}'") + "background_alt='#212121'", f"background_alt='{mocha_colors.crust.hex}'") replacetext(f"{work_dir}/gtkrc.sh", "titlebar_dark='#030303'", - f"titlebar_dark='#{Flavour.mocha().crust.hex}'") + f"titlebar_dark='{mocha_colors.crust.hex}'") replacetext(f"{work_dir}/gtkrc.sh", "background_dark='#2C2C2C'", - f"background_dark='#{Flavour.mocha().base.hex}'") + f"background_dark='{mocha_colors.base.hex}'") replacetext(f"{work_dir}/gtkrc.sh", "background_darker='#3C3C3C'", - f"background_darker='#{Flavour.mocha().mantle.hex}'") + f"background_darker='{mocha_colors.mantle.hex}'") replacetext(f"{work_dir}/gtkrc.sh", - "background_alt='#464646'", f"background_alt='#{Flavour.mocha().crust.hex}'") + "background_alt='#464646'", f"background_alt='{mocha_colors.crust.hex}'") replacetext(f"{work_dir}/gtkrc.sh", - "titlebar_dark='#242424'", f"titlebar_dark='#{Flavour.mocha().crust.hex}'") + "titlebar_dark='#242424'", f"titlebar_dark='{mocha_colors.crust.hex}'") else: replacetext(f"{work_dir}/gtkrc.sh", "background_dark='#0F0F0F'", - f"background_dark='#{flavor.base.hex}'") + f"background_dark='{colors.base.hex}'") replacetext(f"{work_dir}/gtkrc.sh", "background_darker='#121212'", - f"background_darker='#{flavor.mantle.hex}'") + f"background_darker='{colors.mantle.hex}'") replacetext(f"{work_dir}/gtkrc.sh", - "background_alt='#212121'", f"background_alt='#{flavor.crust.hex}'") + "background_alt='#212121'", f"background_alt='{colors.crust.hex}'") replacetext(f"{work_dir}/gtkrc.sh", "titlebar_dark='#030303'", - f"titlebar_dark='#{flavor.crust.hex}'") + f"titlebar_dark='{colors.crust.hex}'") replacetext(f"{work_dir}/gtkrc.sh", "background_dark='#2C2C2C'", - f"background_dark='#{flavor.base.hex}'") + f"background_dark='{colors.base.hex}'") replacetext(f"{work_dir}/gtkrc.sh", "background_darker='#3C3C3C'", - f"background_darker='#{flavor.mantle.hex}'") + f"background_darker='{colors.mantle.hex}'") replacetext(f"{work_dir}/gtkrc.sh", - "background_alt='#464646'", f"background_alt='#{flavor.crust.hex}'") + "background_alt='#464646'", f"background_alt='{colors.crust.hex}'") replacetext(f"{work_dir}/gtkrc.sh", - "titlebar_dark='#242424'", f"titlebar_dark='#{flavor.crust.hex}'") + "titlebar_dark='#242424'", f"titlebar_dark='{colors.crust.hex}'") print("Mod SASS Color_Palette_default") # Greys - if flavor == Flavour.latte(): # Hardcode till someone smarter than me comes along + if flavor.name == "latte": # Hardcode till someone smarter than me comes along replacetext(f"{src_dir}/sass/_color-palette-default.scss", - "grey-050: #FAFAFA", f"grey-050: #{flavor.crust.hex}") + "grey-050: #FAFAFA", f"grey-050: {colors.crust.hex}") replacetext(f"{src_dir}/sass/_color-palette-default.scss", - "grey-100: #F2F2F2", f"grey-100: #{flavor.mantle.hex}") + "grey-100: #F2F2F2", f"grey-100: {colors.mantle.hex}") replacetext(f"{src_dir}/sass/_color-palette-default.scss", - "grey-150: #EEEEEE", f"grey-150: #{flavor.base.hex}") + "grey-150: #EEEEEE", f"grey-150: {colors.base.hex}") replacetext(f"{src_dir}/sass/_color-palette-default.scss", - "grey-200: #DDDDDD", f"grey-200: #{flavor.surface0.hex}") # Surface 0 Late + "grey-200: #DDDDDD", f"grey-200: {colors.surface0.hex}") # Surface 0 Late replacetext(f"{src_dir}/sass/_color-palette-default.scss", - "grey-250: #CCCCCC", f"grey-250: #{flavor.surface1.hex}") # D = Surface 1 Late + "grey-250: #CCCCCC", f"grey-250: {colors.surface1.hex}") # D = Surface 1 Late replacetext(f"{src_dir}/sass/_color-palette-default.scss", - "grey-650: #3C3C3C", f"grey-650: #{Flavour.mocha().surface0.hex}") # H $surface $tooltip + "grey-650: #3C3C3C", f"grey-650: {mocha_colors.surface0.hex}") # H $surface $tooltip replacetext(f"{src_dir}/sass/_color-palette-default.scss", "grey-700: #2C2C2C", - f"grey-700: #{Flavour.mocha().base.hex}") # G $background; $base; titlebar-backdrop; $popover + f"grey-700: {mocha_colors.base.hex}") # G $background; $base; titlebar-backdrop; $popover replacetext(f"{src_dir}/sass/_color-palette-default.scss", - "grey-750: #242424", f"grey-750: #{Flavour.mocha().crust.hex}") # F $base-alt + "grey-750: #242424", f"grey-750: {mocha_colors.crust.hex}") # F $base-alt replacetext(f"{src_dir}/sass/_color-palette-default.scss", - "grey-800: #212121", f"grey-800: #{Flavour.mocha().crust.hex}") # E $panel-solid;p + "grey-800: #212121", f"grey-800: {mocha_colors.crust.hex}") # E $panel-solid;p replacetext(f"{src_dir}/sass/_color-palette-default.scss", "grey-850: #121212", f"grey-850: #020202") # H Darknes replacetext(f"{src_dir}/sass/_color-palette-default.scss", @@ -148,23 +151,23 @@ def recolor(flavor, accent: str): "grey-950: #030303", f"grey-950: #000000") # F Darknes else: replacetext(f"{src_dir}/sass/_color-palette-default.scss", - "grey-050: #FAFAFA", f"grey-050: #{flavor.overlay2.hex}") + "grey-050: #FAFAFA", f"grey-050: {colors.overlay2.hex}") replacetext(f"{src_dir}/sass/_color-palette-default.scss", - "grey-100: #F2F2F2", f"grey-100: #{flavor.overlay1.hex}") + "grey-100: #F2F2F2", f"grey-100: {colors.overlay1.hex}") replacetext(f"{src_dir}/sass/_color-palette-default.scss", - "grey-150: #EEEEEE", f"grey-150: #{flavor.overlay0.hex}") + "grey-150: #EEEEEE", f"grey-150: {colors.overlay0.hex}") replacetext(f"{src_dir}/sass/_color-palette-default.scss", - "grey-200: #DDDDDD", f"grey-200: #{flavor.surface2.hex}") # Surface 0 Late + "grey-200: #DDDDDD", f"grey-200: {colors.surface2.hex}") # Surface 0 Late replacetext(f"{src_dir}/sass/_color-palette-default.scss", - "grey-250: #CCCCCC", f"grey-250: #{flavor.surface1.hex}") # D = Surface 1 Late + "grey-250: #CCCCCC", f"grey-250: {colors.surface1.hex}") # D = Surface 1 Late replacetext(f"{src_dir}/sass/_color-palette-default.scss", - "grey-650: #3C3C3C", f"grey-650: #{flavor.surface0.hex}") # H $surface $tooltip + "grey-650: #3C3C3C", f"grey-650: {colors.surface0.hex}") # H $surface $tooltip replacetext(f"{src_dir}/sass/_color-palette-default.scss", "grey-700: #2C2C2C", - f"grey-700: #{flavor.base.hex}") # G $background; $base; titlebar-backdrop; $popover + f"grey-700: {colors.base.hex}") # G $background; $base; titlebar-backdrop; $popover replacetext(f"{src_dir}/sass/_color-palette-default.scss", - "grey-750: #242424", f"grey-750: #{flavor.crust.hex}") # F $base-alt + "grey-750: #242424", f"grey-750: {colors.crust.hex}") # F $base-alt replacetext(f"{src_dir}/sass/_color-palette-default.scss", - "grey-800: #212121", f"grey-800: #{flavor.crust.hex}") # E $panel-solid;p + "grey-800: #212121", f"grey-800: {colors.crust.hex}") # E $panel-solid;p replacetext(f"{src_dir}/sass/_color-palette-default.scss", "grey-850: #121212", f"grey-850: #020202") # H Darknes replacetext(f"{src_dir}/sass/_color-palette-default.scss", @@ -180,8 +183,8 @@ def recolor(flavor, accent: str): # Buttons replacetext(f"{src_dir}/sass/_color-palette-default.scss", - "button-close: #fd5f51", f"button-close: #{flavor.red.hex}") + "button-close: #fd5f51", f"button-close: {colors.red.hex}") replacetext(f"{src_dir}/sass/_color-palette-default.scss", - "button-max: #38c76a", f"button-max: #{flavor.green.hex}") + "button-max: #38c76a", f"button-max: {colors.green.hex}") replacetext(f"{src_dir}/sass/_color-palette-default.scss", - "button-min: #fdbe04", f"button-min: #{flavor.yellow.hex}") + "button-min: #fdbe04", f"button-min: {colors.yellow.hex}") diff --git a/scripts/var.py b/scripts/var.py index c55d766c..46272ca8 100644 --- a/scripts/var.py +++ b/scripts/var.py @@ -8,7 +8,7 @@ tmp_dir = f"{repo_dir}/releases" theme_name = "Catppuccin" # Map catppuccin colors to colloid ones -# These are mostly unused except for resources for lower gtk versions. +# These are mostly unused except for resources for lower gtk versions. # These assets are in png format and I am not really interested right now to recolor them using opencv # Maybe someone more motivated can follow through def_color_map = { @@ -28,23 +28,23 @@ def_color_map = { 'lavender': 'default'} def_accent_light = { - 'default': '3c84f7', - 'purple': 'AB47BC', - 'pink': 'EC407A', - 'red': 'E53935', - 'orange': 'F57C00', - 'yellow': 'FBC02D', - 'green': '4CAF50', - 'teal': '009688' + 'default': '#3c84f7', + 'purple': '#AB47BC', + 'pink': '#EC407A', + 'red': '#E53935', + 'orange': '#F57C00', + 'yellow': '#FBC02D', + 'green': '#4CAF50', + 'teal': '#009688' } def_accent_dark = { - 'default': '5b9bf8', - 'purple': 'BA68C8', - 'pink': 'F06292', - 'red': 'F44336', - 'orange': 'FB8C00', - 'yellow': 'FFD600', - 'green': '66BB6A', - 'teal': '4DB6AC' + 'default': '#5b9bf8', + 'purple': '#BA68C8', + 'pink': '#F06292', + 'red': '#F44336', + 'orange': '#FB8C00', + 'yellow': '#FFD600', + 'green': '#66BB6A', + 'teal': '#4DB6AC' }