build: start new build system
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -6,6 +6,8 @@ venv/
|
|||||||
bin/
|
bin/
|
||||||
lib*/
|
lib*/
|
||||||
*.cfg
|
*.cfg
|
||||||
|
.direnv
|
||||||
|
build/
|
||||||
|
|
||||||
# Releases folder
|
# Releases folder
|
||||||
releases
|
releases
|
||||||
|
|||||||
674
build.py
Executable file
674
build.py
Executable file
@@ -0,0 +1,674 @@
|
|||||||
|
#! /usr/bin/env python3
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
import shutil
|
||||||
|
import subprocess
|
||||||
|
import argparse
|
||||||
|
|
||||||
|
from catppuccin import PALETTE
|
||||||
|
from catppuccin.models import Flavor
|
||||||
|
|
||||||
|
THIS_DIR = os.path.dirname(os.path.realpath(__file__))
|
||||||
|
SRC_DIR = f"{THIS_DIR}/colloid/src"
|
||||||
|
SASSC_OPT = ["-M", "-t", "expanded"]
|
||||||
|
|
||||||
|
def make_theme_dir(dest, name, theme, color, size, scheme):
|
||||||
|
return f"{dest}/{name}-{theme}-{color}-{size}-{scheme}"
|
||||||
|
|
||||||
|
def install(dest, name, theme, color, size, scheme, window):
|
||||||
|
dark_suffix = ''
|
||||||
|
light_suffix = ''
|
||||||
|
window_suffix = ''
|
||||||
|
scheme_suffix = '-Catppuccin'
|
||||||
|
|
||||||
|
if window == 'normal':
|
||||||
|
window_suffix = '-Normal'
|
||||||
|
|
||||||
|
if color == "light":
|
||||||
|
light_suffix = "-Light"
|
||||||
|
suffix = '-Light'
|
||||||
|
|
||||||
|
if color == "dark":
|
||||||
|
dark_suffix = "-Dark"
|
||||||
|
suffix = '-Dark'
|
||||||
|
|
||||||
|
|
||||||
|
theme_dir = make_theme_dir(dest, name, theme, color, size, scheme)
|
||||||
|
# [[ -d "${THEME_DIR}" ]] && rm -rf "${THEME_DIR}"
|
||||||
|
print(f"Building into '{theme_dir}'...")
|
||||||
|
|
||||||
|
theme_tweaks()
|
||||||
|
|
||||||
|
os.makedirs(theme_dir, exist_ok=True)
|
||||||
|
|
||||||
|
with open(f"{theme_dir}/index.theme", 'w') as file:
|
||||||
|
file.write("[Desktop Entry]\n")
|
||||||
|
file.write("Type=X-GNOME-Metatheme\n")
|
||||||
|
file.write(f"Name={name}-{theme}-{color}-{size}-{scheme}\n")
|
||||||
|
file.write("Comment=An Flat Gtk+ theme based on Elegant Design\n")
|
||||||
|
file.write("Encoding=UTF-8\n")
|
||||||
|
file.write("\n")
|
||||||
|
file.write("[X-GNOME-Metatheme]\n")
|
||||||
|
file.write(f"GtkTheme={name}-{theme}-{color}-{size}-{scheme}\n")
|
||||||
|
file.write(f"MetacityTheme={name}-{theme}-{color}-{size}-{scheme}\n")
|
||||||
|
file.write(f"IconTheme=Tela-circle{dark_suffix}\n")
|
||||||
|
file.write(f"CursorTheme={theme}-cursors\n")
|
||||||
|
file.write("ButtonLayout=close,minimize,maximize:menu\n")
|
||||||
|
|
||||||
|
os.makedirs(f"{theme_dir}/gnome-shell", exist_ok=True)
|
||||||
|
shutil.copyfile(
|
||||||
|
f"{SRC_DIR}/main/gnome-shell/pad-osd.css", f"{theme_dir}/gnome-shell/pad-osd.css"
|
||||||
|
)
|
||||||
|
subprocess.check_call(
|
||||||
|
[
|
||||||
|
"sassc",
|
||||||
|
*SASSC_OPT,
|
||||||
|
f"{SRC_DIR}/main/gnome-shell/gnome-shell{suffix}.scss",
|
||||||
|
f"{theme_dir}/gnome-shell/gnome-shell.css",
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
os.makedirs(f"{theme_dir}/gtk-2.0", exist_ok=True)
|
||||||
|
|
||||||
|
# Commented out upstream:
|
||||||
|
# cp -r "${SRC_DIR}/main/gtk-2.0/gtkrc${theme}${ELSE_DARK:-}${scheme}" "${THEME_DIR}/gtk-2.0/gtkrc"
|
||||||
|
|
||||||
|
for rc in ["apps", "hacks", "main"]:
|
||||||
|
shutil.copyfile(
|
||||||
|
f"{SRC_DIR}/main/gtk-2.0/common/{rc}.rc", f"{theme_dir}/gtk-2.0/{rc}.rc"
|
||||||
|
)
|
||||||
|
|
||||||
|
os.makedirs(f"{theme_dir}/gtk-3.0", exist_ok=True)
|
||||||
|
subprocess.check_call(
|
||||||
|
[
|
||||||
|
"sassc",
|
||||||
|
*SASSC_OPT,
|
||||||
|
f"{SRC_DIR}/main/gtk-3.0/gtk{suffix}.scss",
|
||||||
|
f"{theme_dir}/gtk-3.0/gtk.css",
|
||||||
|
]
|
||||||
|
)
|
||||||
|
subprocess.check_call(
|
||||||
|
[
|
||||||
|
"sassc",
|
||||||
|
*SASSC_OPT,
|
||||||
|
f"{SRC_DIR}/main/gtk-3.0/gtk-Dark.scss",
|
||||||
|
f"{theme_dir}/gtk-3.0/gtk-dark.css",
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
os.makedirs(f"{theme_dir}/gtk-4.0", exist_ok=True)
|
||||||
|
subprocess.check_call(
|
||||||
|
[
|
||||||
|
"sassc",
|
||||||
|
*SASSC_OPT,
|
||||||
|
f"{SRC_DIR}/main/gtk-4.0/gtk{suffix}.scss",
|
||||||
|
f"{theme_dir}/gtk-4.0/gtk.css",
|
||||||
|
]
|
||||||
|
)
|
||||||
|
subprocess.check_call(
|
||||||
|
[
|
||||||
|
"sassc",
|
||||||
|
*SASSC_OPT,
|
||||||
|
f"{SRC_DIR}/main/gtk-4.0/gtk-Dark.scss",
|
||||||
|
f"{theme_dir}/gtk-4.0/gtk-dark.css",
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
os.makedirs(f"{theme_dir}/cinnamon", exist_ok=True)
|
||||||
|
subprocess.check_call(
|
||||||
|
[
|
||||||
|
"sassc",
|
||||||
|
*SASSC_OPT,
|
||||||
|
f"{SRC_DIR}/main/cinnamon/cinnamon{suffix}.scss",
|
||||||
|
f"{theme_dir}/cinnamon/cinnamon.css",
|
||||||
|
]
|
||||||
|
)
|
||||||
|
subprocess.check_call(
|
||||||
|
[
|
||||||
|
"sassc",
|
||||||
|
*SASSC_OPT,
|
||||||
|
f"{SRC_DIR}/main/gtk-4.0/gtk-Dark.scss",
|
||||||
|
f"{theme_dir}/gtk-4.0/gtk-dark.css",
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
os.makedirs(f"{theme_dir}/metacity-1", exist_ok=True)
|
||||||
|
shutil.copyfile(
|
||||||
|
f"{SRC_DIR}/main/metacity-1/metacity-theme-3{window_suffix}.xml",
|
||||||
|
f"{theme_dir}/metacity-1/metacity-theme-3.xml",
|
||||||
|
)
|
||||||
|
os.symlink(
|
||||||
|
f"{theme_dir}/metacity-1/metacity-theme-3.xml",
|
||||||
|
f"{theme_dir}/metacity-1/metacity-theme-2.xml",
|
||||||
|
)
|
||||||
|
os.symlink(
|
||||||
|
f"{theme_dir}/metacity-1/metacity-theme-3.xml",
|
||||||
|
f"{theme_dir}/metacity-1/metacity-theme-1.xml",
|
||||||
|
)
|
||||||
|
|
||||||
|
os.makedirs(f"{theme_dir}/xfwm4", exist_ok=True)
|
||||||
|
shutil.copyfile(
|
||||||
|
f"{SRC_DIR}/main/xfwm4/themerc{light_suffix}",
|
||||||
|
f"{theme_dir}/xfwm4/themerc",
|
||||||
|
)
|
||||||
|
|
||||||
|
os.makedirs(f"{theme_dir}-hdpi/xfwm4", exist_ok=True)
|
||||||
|
shutil.copyfile(
|
||||||
|
f"{SRC_DIR}/main/xfwm4/themerc{light_suffix}",
|
||||||
|
f"{theme_dir}-hdpi/xfwm4/themerc",
|
||||||
|
)
|
||||||
|
# TODO:
|
||||||
|
# sed -i "s/button_offset=6/button_offset=9/" "${THEME_DIR}-hdpi/xfwm4/themerc"
|
||||||
|
|
||||||
|
os.makedirs(f"{theme_dir}-xhdpi/xfwm4", exist_ok=True)
|
||||||
|
shutil.copyfile(
|
||||||
|
f"{SRC_DIR}/main/xfwm4/themerc{light_suffix or ''}",
|
||||||
|
f"{theme_dir}-xhdpi/xfwm4/themerc",
|
||||||
|
)
|
||||||
|
# TODO:
|
||||||
|
# sed -i "s/button_offset=6/button_offset=12/" "${THEME_DIR}-xhdpi/xfwm4/themerc"
|
||||||
|
|
||||||
|
if color == "-Light":
|
||||||
|
shutil.copytree(
|
||||||
|
f"{SRC_DIR}/main/plank/theme-Light{scheme_suffix}/", f"{theme_dir}/plank"
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
shutil.copytree(
|
||||||
|
f"{SRC_DIR}/main/plank/theme-Dark{scheme_suffix}/", f"{theme_dir}/plank"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def tweaks_temp():
|
||||||
|
shutil.copyfile(f"{SRC_DIR}/sass/_tweaks.scss", f"{SRC_DIR}/sass/_tweaks-temp.scss")
|
||||||
|
|
||||||
|
def subst_text(path, _from, to):
|
||||||
|
with open(path, "r+") as f:
|
||||||
|
content = f.read()
|
||||||
|
f.seek(0)
|
||||||
|
f.truncate()
|
||||||
|
f.write(re.sub(_from, to, content))
|
||||||
|
|
||||||
|
|
||||||
|
def write_tweak(key, default, value):
|
||||||
|
subst_text(
|
||||||
|
f"{SRC_DIR}/sass/_tweaks-temp.scss", f"\\${key}: {default}", f"${key}: {value}"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def compact_size():
|
||||||
|
write_tweak("compact", "'false'", "'true'")
|
||||||
|
|
||||||
|
|
||||||
|
def blackness_color():
|
||||||
|
write_tweak("blackness", "false'", "'true'")
|
||||||
|
|
||||||
|
|
||||||
|
def border_rimless():
|
||||||
|
write_tweak("rimless", "false'", "'true'")
|
||||||
|
|
||||||
|
|
||||||
|
def normal_winbutton():
|
||||||
|
write_tweak("window_button", "'mac'", "'normal'")
|
||||||
|
|
||||||
|
|
||||||
|
def float_panel():
|
||||||
|
write_tweak("float", "false'", "'true'")
|
||||||
|
|
||||||
|
|
||||||
|
def color_schemes():
|
||||||
|
subst_text(
|
||||||
|
f"{SRC_DIR}/sass/_tweaks-temp.scss",
|
||||||
|
"@import 'color-palette-default';",
|
||||||
|
"@import 'color-palette-catppuccin';",
|
||||||
|
)
|
||||||
|
write_tweak("colorscheme", "'default'", "'catppuccin'")
|
||||||
|
|
||||||
|
|
||||||
|
GS_VERSION = "46-0"
|
||||||
|
"""
|
||||||
|
if [[ "$(command -v gnome-shell)" ]]; then
|
||||||
|
gnome-shell --version
|
||||||
|
SHELL_VERSION="$(gnome-shell --version | cut -d ' ' -f 3 | cut -d . -f -1)"
|
||||||
|
if [[ "${SHELL_VERSION:-}" -ge "46" ]]; then
|
||||||
|
GS_VERSION="46-0"
|
||||||
|
elif [[ "${SHELL_VERSION:-}" -ge "44" ]]; then
|
||||||
|
GS_VERSION="44-0"
|
||||||
|
elif [[ "${SHELL_VERSION:-}" -ge "42" ]]; then
|
||||||
|
GS_VERSION="42-0"
|
||||||
|
elif [[ "${SHELL_VERSION:-}" -ge "40" ]]; then
|
||||||
|
GS_VERSION="40-0"
|
||||||
|
else
|
||||||
|
GS_VERSION="3-28"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "'gnome-shell' not found, using styles for last gnome-shell version available."
|
||||||
|
GS_VERSION="46-0"
|
||||||
|
fi
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
def gnome_shell_version():
|
||||||
|
shutil.copyfile(
|
||||||
|
f"{SRC_DIR}/sass/gnome-shell/_common.scss",
|
||||||
|
f"{SRC_DIR}/sass/gnome-shell/_common-temp.scss",
|
||||||
|
)
|
||||||
|
subst_text(
|
||||||
|
f"{SRC_DIR}/sass/gnome-shell/_common-temp.scss",
|
||||||
|
"@import 'widgets-40-0';",
|
||||||
|
f"@import 'widgets-{GS_VERSION}';",
|
||||||
|
)
|
||||||
|
|
||||||
|
if GS_VERSION == "3-28":
|
||||||
|
subst_text(
|
||||||
|
f"{SRC_DIR}/sass/gnome-shell/_common-temp.scss",
|
||||||
|
"@import 'extensions-40-0';",
|
||||||
|
f"@import 'extensions-{GS_VERSION}';",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# Accent settings
|
||||||
|
ctp_to_colloid = {
|
||||||
|
"rosewater": "pink",
|
||||||
|
"flamingo": "pink",
|
||||||
|
"pink": "pink",
|
||||||
|
"mauve": "purple",
|
||||||
|
"red": "red",
|
||||||
|
"maroon": "red",
|
||||||
|
"peach": "orange",
|
||||||
|
"yellow": "yellow",
|
||||||
|
"green": "green",
|
||||||
|
"teal": "teal",
|
||||||
|
"sky": "teal",
|
||||||
|
"sapphire": "default",
|
||||||
|
"blue": "default",
|
||||||
|
"lavender": "default",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def translate_accent(ctp_accent):
|
||||||
|
return ctp_to_colloid[ctp_accent]
|
||||||
|
|
||||||
|
def theme_color():
|
||||||
|
write_tweak("theme", "'default'", translate_accent(args.accent))
|
||||||
|
|
||||||
|
def theme_tweaks():
|
||||||
|
if args.accent:
|
||||||
|
theme_color()
|
||||||
|
|
||||||
|
if args.size == "compact":
|
||||||
|
compact_size()
|
||||||
|
|
||||||
|
# We always set up our scheme
|
||||||
|
color_schemes()
|
||||||
|
|
||||||
|
if "black" in args.tweaks:
|
||||||
|
blackness_color()
|
||||||
|
|
||||||
|
if "rimless" in args.tweaks:
|
||||||
|
border_rimless()
|
||||||
|
|
||||||
|
if "normal" in args.tweaks:
|
||||||
|
normal_winbutton()
|
||||||
|
|
||||||
|
if "float" in args.tweaks:
|
||||||
|
float_panel()
|
||||||
|
|
||||||
|
|
||||||
|
def make_gtkrc(dest, name, theme, color, size, scheme):
|
||||||
|
gtkrc_dir = f"{SRC_DIR}/main/gtk-2.0"
|
||||||
|
|
||||||
|
else_dark = ''
|
||||||
|
if color == "dark":
|
||||||
|
else_dark = "-Dark"
|
||||||
|
|
||||||
|
theme_dir = make_theme_dir(dest, name, theme, color, size, scheme)
|
||||||
|
palette = getattr(PALETTE, args.flavor)
|
||||||
|
theme_color = getattr(palette.colors, args.accent).hex
|
||||||
|
|
||||||
|
if "black" in args.tweaks:
|
||||||
|
background_light = "#FFFFFF"
|
||||||
|
background_dark = "#0F0F0F"
|
||||||
|
background_darker = "#121212"
|
||||||
|
background_alt = "#212121"
|
||||||
|
titlebar_light = "#F2F2F2"
|
||||||
|
titlebar_dark = "#030303"
|
||||||
|
else:
|
||||||
|
background_light = "#FFFFFF"
|
||||||
|
background_dark = "#2C2C2C"
|
||||||
|
background_darker = "#3C3C3C"
|
||||||
|
background_alt = "#464646"
|
||||||
|
titlebar_light = "#F2F2F2"
|
||||||
|
titlebar_dark = "#242424"
|
||||||
|
|
||||||
|
shutil.copyfile(
|
||||||
|
f"{gtkrc_dir}/gtkrc{else_dark}-default", f"{theme_dir}/gtk-2.0/gtkrc"
|
||||||
|
)
|
||||||
|
|
||||||
|
subst_text(f"{theme_dir}/gtk-2.0/gtkrc", "#FFFFFF", background_light)
|
||||||
|
subst_text(f"{theme_dir}/gtk-2.0/gtkrc", "#2C2C2C", background_dark)
|
||||||
|
subst_text(f"{theme_dir}/gtk-2.0/gtkrc", "#464646", background_alt)
|
||||||
|
|
||||||
|
if color == "-Dark":
|
||||||
|
subst_text(f"{theme_dir}/gtk-2.0/gtkrc", "#5b9bf8", theme_color)
|
||||||
|
|
||||||
|
subst_text(f"{theme_dir}/gtk-2.0/gtkrc", "#3C3C3C", background_darker)
|
||||||
|
|
||||||
|
subst_text(f"{theme_dir}/gtk-2.0/gtkrc", "#242424", titlebar_dark)
|
||||||
|
else:
|
||||||
|
subst_text(f"{theme_dir}/gtk-2.0/gtkrc", "#3c84f7", theme_color)
|
||||||
|
|
||||||
|
subst_text(f"{theme_dir}/gtk-2.0/gtkrc", "#F2F2F2", titlebar_light)
|
||||||
|
|
||||||
|
|
||||||
|
def make_assets(**_):
|
||||||
|
print("FIXME: Implement asset generation")
|
||||||
|
|
||||||
|
|
||||||
|
def install_theme():
|
||||||
|
if args.flavor == "latte":
|
||||||
|
color = "light"
|
||||||
|
else:
|
||||||
|
color = "light"
|
||||||
|
|
||||||
|
if "normal" in args.tweaks:
|
||||||
|
window = "normal"
|
||||||
|
else:
|
||||||
|
window = ''
|
||||||
|
|
||||||
|
install(
|
||||||
|
dest=args.dest,
|
||||||
|
name=args.name,
|
||||||
|
theme=translate_accent(args.accent),
|
||||||
|
color=color,
|
||||||
|
size=args.size,
|
||||||
|
scheme="catppuccin",
|
||||||
|
window=window,
|
||||||
|
)
|
||||||
|
|
||||||
|
make_gtkrc(
|
||||||
|
dest=args.dest,
|
||||||
|
name=args.name,
|
||||||
|
theme=translate_accent(args.accent),
|
||||||
|
color=color,
|
||||||
|
size=args.size,
|
||||||
|
scheme="catppuccin",
|
||||||
|
)
|
||||||
|
|
||||||
|
make_assets(
|
||||||
|
dest=args.dest,
|
||||||
|
name=args.name,
|
||||||
|
theme=translate_accent(args.accent),
|
||||||
|
color=color,
|
||||||
|
size=args.size,
|
||||||
|
scheme="catppuccin",
|
||||||
|
)
|
||||||
|
|
||||||
|
"""
|
||||||
|
if (command -v xfce4-popup-whiskermenu &> /dev/null) && $(sed -i "s|.*menu-opacity=.*|menu-opacity=95|" "$HOME/.config/xfce4/panel/whiskermenu"*".rc" &> /dev/null); then
|
||||||
|
sed -i "s|.*menu-opacity=.*|menu-opacity=95|" "$HOME/.config/xfce4/panel/whiskermenu"*".rc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if (pgrep xfce4-session &> /dev/null); then
|
||||||
|
xfce4-panel -r
|
||||||
|
fi
|
||||||
|
"""
|
||||||
|
|
||||||
|
def apply_patches():
|
||||||
|
if os.path.isfile('colloid/.patched'):
|
||||||
|
print('Patches seem to be applied, remove "colloid/.patched" to force application (this may fail)')
|
||||||
|
return
|
||||||
|
|
||||||
|
# Change into colloid
|
||||||
|
for patch in [
|
||||||
|
'plank-dark.patch',
|
||||||
|
'plank-light.patch',
|
||||||
|
'sass-colors.patch',
|
||||||
|
'sass-palette.patch',
|
||||||
|
]:
|
||||||
|
path = f'./patches/colloid/{patch}'
|
||||||
|
print(f"Applying patch '{patch}', located at '{path}'")
|
||||||
|
subprocess.check_call(['git', 'apply', path, '--directory', f'colloid'])
|
||||||
|
|
||||||
|
with open('colloid/.patched', 'w') as f:
|
||||||
|
f.write('true')
|
||||||
|
|
||||||
|
def uninstall(dest, name, theme, color, size, scheme, window):
|
||||||
|
theme_dir = make_theme_dir(dest, name, theme, color, size, scheme)
|
||||||
|
print("Would remove", f"'{theme_dir}'")
|
||||||
|
"""
|
||||||
|
if [[ -d "${THEME_DIR}" ]]; then
|
||||||
|
echo -e "Uninstall ${THEME_DIR}... "
|
||||||
|
rm -rf "${THEME_DIR}"
|
||||||
|
fi
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
def uninstall_theme():
|
||||||
|
if args.flavor == "latte":
|
||||||
|
color = "light"
|
||||||
|
else:
|
||||||
|
color = "light"
|
||||||
|
|
||||||
|
if "normal" in args.tweaks:
|
||||||
|
window = "normal"
|
||||||
|
else:
|
||||||
|
window = ''
|
||||||
|
|
||||||
|
uninstall(
|
||||||
|
dest=args.dest,
|
||||||
|
name=args.name,
|
||||||
|
theme=translate_accent(args.accent),
|
||||||
|
color=color,
|
||||||
|
size=args.size,
|
||||||
|
scheme="catppuccin",
|
||||||
|
window=window,
|
||||||
|
)
|
||||||
|
|
||||||
|
"""
|
||||||
|
uninstall_link() {
|
||||||
|
rm -rf "${HOME}/.config/gtk-4.0/"{assets,windows-assets,gtk.css,gtk-dark.css}
|
||||||
|
}
|
||||||
|
|
||||||
|
link_libadwaita() {
|
||||||
|
local dest="${1}"
|
||||||
|
local name="${2}"
|
||||||
|
local theme="${3}"
|
||||||
|
local color="${4}"
|
||||||
|
local size="${5}"
|
||||||
|
local scheme="${6}"
|
||||||
|
|
||||||
|
local THEME_DIR="${1}/${2}${3}${4}${5}${6}"
|
||||||
|
|
||||||
|
rm -rf "${HOME}/.config/gtk-4.0/"{assets,gtk.css,gtk-dark.css}
|
||||||
|
|
||||||
|
echo -e "\nLink '$THEME_DIR/gtk-4.0' to '${HOME}/.config/gtk-4.0' for libadwaita..."
|
||||||
|
|
||||||
|
mkdir -p "${HOME}/.config/gtk-4.0"
|
||||||
|
ln -sf "${THEME_DIR}/gtk-4.0/assets" "${HOME}/.config/gtk-4.0/assets"
|
||||||
|
ln -sf "${THEME_DIR}/gtk-4.0/gtk.css" "${HOME}/.config/gtk-4.0/gtk.css"
|
||||||
|
ln -sf "${THEME_DIR}/gtk-4.0/gtk-dark.css" "${HOME}/.config/gtk-4.0/gtk-dark.css"
|
||||||
|
}
|
||||||
|
|
||||||
|
link_theme() {
|
||||||
|
for theme in "${themes[@]}"; do
|
||||||
|
for color in "${lcolors[@]}"; do
|
||||||
|
for size in "${sizes[@]}"; do
|
||||||
|
for scheme in "${schemes[@]}"; do
|
||||||
|
link_libadwaita "${dest:-$DEST_DIR}" "${name:-$THEME_NAME}" "$theme" "$color" "$size" "$scheme"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
done
|
||||||
|
done
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
|
||||||
|
"""
|
||||||
|
clean() {
|
||||||
|
local dest="${1}"
|
||||||
|
local name="${2}"
|
||||||
|
local theme="${3}"
|
||||||
|
local color="${4}"
|
||||||
|
local size="${5}"
|
||||||
|
local scheme="${6}"
|
||||||
|
local screen="${7}"
|
||||||
|
|
||||||
|
local THEME_DIR="${1}/${2}${3}${4}${5}${6}${7}"
|
||||||
|
|
||||||
|
if [[ ${theme} == '' && ${color} == '' && ${size} == '' && ${scheme} == '' ]]; then
|
||||||
|
cleantheme='none'
|
||||||
|
elif [[ -d ${THEME_DIR} ]]; then
|
||||||
|
rm -rf ${THEME_DIR}
|
||||||
|
echo -e "Find: ${THEME_DIR} ! removing it ..."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
|
||||||
|
"""
|
||||||
|
clean_theme() {
|
||||||
|
for theme in '' '-purple' '-pink' '-red' '-orange' '-yellow' '-green' '-teal' '-grey'; do
|
||||||
|
for color in '' '-light' '-dark'; do
|
||||||
|
for size in '' '-compact'; do
|
||||||
|
for scheme in '' '-nord' '-dracula' '-gruvbox' '-everforest'; do
|
||||||
|
for screen in '' '-hdpi' '-xhdpi'; do
|
||||||
|
clean "${dest:-${DEST_DIR}}" "${name:-${THEME_NAME}}" "${theme}" "${color}" "${size}" "${scheme}" "${screen}"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
done
|
||||||
|
done
|
||||||
|
done
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument(
|
||||||
|
"flavor",
|
||||||
|
type=str,
|
||||||
|
choices=["mocha", "frappe", "macchiato", "latte"],
|
||||||
|
help="Flavor of the theme to apply.",
|
||||||
|
)
|
||||||
|
|
||||||
|
parser.add_argument(
|
||||||
|
"--name",
|
||||||
|
"-n",
|
||||||
|
type=str,
|
||||||
|
default="catppuccin",
|
||||||
|
dest="name",
|
||||||
|
help="Name of the theme to apply.",
|
||||||
|
)
|
||||||
|
|
||||||
|
parser.add_argument(
|
||||||
|
"--dest",
|
||||||
|
"-d",
|
||||||
|
type=str,
|
||||||
|
required=True,
|
||||||
|
dest="dest",
|
||||||
|
help="Destination of the files.",
|
||||||
|
)
|
||||||
|
|
||||||
|
parser.add_argument(
|
||||||
|
"--accent",
|
||||||
|
"-a",
|
||||||
|
type=str,
|
||||||
|
default="mauve",
|
||||||
|
dest="accent",
|
||||||
|
choices=[
|
||||||
|
"rosewater",
|
||||||
|
"flamingo",
|
||||||
|
"pink",
|
||||||
|
"mauve",
|
||||||
|
"red",
|
||||||
|
"maroon",
|
||||||
|
"peach",
|
||||||
|
"yellow",
|
||||||
|
"green",
|
||||||
|
"teal",
|
||||||
|
"sky",
|
||||||
|
"sapphire",
|
||||||
|
"blue",
|
||||||
|
"lavender",
|
||||||
|
],
|
||||||
|
help="Accent of the theme.",
|
||||||
|
)
|
||||||
|
|
||||||
|
parser.add_argument(
|
||||||
|
"--size",
|
||||||
|
"-s",
|
||||||
|
type=str,
|
||||||
|
default="standard",
|
||||||
|
dest="size",
|
||||||
|
choices=["standard", "compact"],
|
||||||
|
help="Size variant of the theme.",
|
||||||
|
)
|
||||||
|
|
||||||
|
parser.add_argument(
|
||||||
|
"--tweaks",
|
||||||
|
type=str,
|
||||||
|
default=[],
|
||||||
|
nargs="+",
|
||||||
|
dest="tweaks",
|
||||||
|
choices=["black", "rimless", "normal", "float"],
|
||||||
|
help="Tweaks to apply to the build.",
|
||||||
|
)
|
||||||
|
|
||||||
|
parser.add_argument(
|
||||||
|
"-l",
|
||||||
|
"--link",
|
||||||
|
help="Link advaita themes to our catppuccin theme",
|
||||||
|
type=bool,
|
||||||
|
default=False,
|
||||||
|
action=argparse.BooleanOptionalAction,
|
||||||
|
dest="link",
|
||||||
|
)
|
||||||
|
|
||||||
|
parser.add_argument(
|
||||||
|
"--zip",
|
||||||
|
help="Zip catppuccin theme",
|
||||||
|
type=bool,
|
||||||
|
default=False,
|
||||||
|
action=argparse.BooleanOptionalAction,
|
||||||
|
dest="zip",
|
||||||
|
)
|
||||||
|
|
||||||
|
parser.add_argument(
|
||||||
|
"--recreate-asset",
|
||||||
|
help="Recreate assets for xfwm4 and such",
|
||||||
|
type=bool,
|
||||||
|
default=False,
|
||||||
|
action=argparse.BooleanOptionalAction,
|
||||||
|
dest="rec_asset",
|
||||||
|
)
|
||||||
|
|
||||||
|
parser.add_argument(
|
||||||
|
"--uninstall",
|
||||||
|
help="Uninstall the theme",
|
||||||
|
type=bool,
|
||||||
|
default=False,
|
||||||
|
action=argparse.BooleanOptionalAction,
|
||||||
|
dest="uninstall",
|
||||||
|
)
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
def main():
|
||||||
|
apply_patches()
|
||||||
|
|
||||||
|
if args.uninstall:
|
||||||
|
"""
|
||||||
|
if [[ "$libadwaita" == 'true' ]]; then
|
||||||
|
echo -e "\nUninstall ${HOME}/.config/gtk-4.0 links ..."
|
||||||
|
uninstall_link
|
||||||
|
else
|
||||||
|
echo && uninstall_theme && uninstall_link
|
||||||
|
fi
|
||||||
|
"""
|
||||||
|
uninstall_theme()
|
||||||
|
else:
|
||||||
|
tweaks_temp()
|
||||||
|
gnome_shell_version()
|
||||||
|
install_theme()
|
||||||
|
|
||||||
|
try:
|
||||||
|
main()
|
||||||
|
except Exception as e:
|
||||||
|
print("Something went wrong when installing the theme:")
|
||||||
|
raise e
|
||||||
109
install.py
109
install.py
@@ -1,109 +0,0 @@
|
|||||||
"""
|
|
||||||
Main script to clone, recolor and install the theme.
|
|
||||||
Run this from the root of the repo.
|
|
||||||
|
|
||||||
Usage:
|
|
||||||
python install.py [options]
|
|
||||||
"""
|
|
||||||
import argparse
|
|
||||||
import os
|
|
||||||
import subprocess
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
parser = argparse.ArgumentParser(description="Catppuccin theme")
|
|
||||||
parser.add_argument("flavor",
|
|
||||||
metavar="theme flavor",
|
|
||||||
type=str,
|
|
||||||
nargs="+",
|
|
||||||
choices=["mocha", "frappe", "macchiato", "latte", "all"],
|
|
||||||
help="Flavor of the theme to apply. Can be frappe, mocha, macchiato, latte")
|
|
||||||
|
|
||||||
parser.add_argument("--name", "-n",
|
|
||||||
metavar="theme name",
|
|
||||||
type=str,
|
|
||||||
default=theme_name,
|
|
||||||
dest="name",
|
|
||||||
help="Name of the theme to apply. Defaults to Catppuccin")
|
|
||||||
|
|
||||||
parser.add_argument("--dest", "-d",
|
|
||||||
metavar="destination",
|
|
||||||
type=str,
|
|
||||||
dest="dest",
|
|
||||||
help="Destination of the files. defaults to releases folder inside the root")
|
|
||||||
|
|
||||||
parser.add_argument("--accent", "-a",
|
|
||||||
metavar="Accent of the theme",
|
|
||||||
type=str,
|
|
||||||
nargs="+",
|
|
||||||
default=["blue"],
|
|
||||||
dest="accent",
|
|
||||||
choices=["rosewater", "flamingo", "pink", "mauve", "red", "maroon", "peach",
|
|
||||||
"yellow", "green", "teal", "sky", "sapphire", "blue", "lavender", "all"],
|
|
||||||
help="Accent of the theme. Can include 'rosewater', 'flamingo', 'pink', 'mauve', 'red', 'maroon', \
|
|
||||||
'peach', 'yellow', 'green', 'teal', 'sky', 'sapphire', 'blue', 'lavender'")
|
|
||||||
|
|
||||||
parser.add_argument("--size", "-s",
|
|
||||||
metavar="Size of the theme",
|
|
||||||
type=str,
|
|
||||||
default="standard",
|
|
||||||
dest="size",
|
|
||||||
choices=["standard", "compact"],
|
|
||||||
help="Size variant of the theme. Can be standard or compact")
|
|
||||||
|
|
||||||
parser.add_argument("--tweaks",
|
|
||||||
metavar="Colloid specific tweaks",
|
|
||||||
type=str,
|
|
||||||
default=[],
|
|
||||||
nargs="+",
|
|
||||||
dest="tweaks",
|
|
||||||
choices=["black", "rimless", "normal", "float"],
|
|
||||||
help="Some specifc tweaks. like black, rimless, normal buttons")
|
|
||||||
|
|
||||||
parser.add_argument("-l", "--link",
|
|
||||||
help="Link advaita themes to our catppuccin theme",
|
|
||||||
type=bool,
|
|
||||||
default=False,
|
|
||||||
action=argparse.BooleanOptionalAction,
|
|
||||||
dest="link")
|
|
||||||
|
|
||||||
parser.add_argument("--zip",
|
|
||||||
help="Zip catppuccin theme",
|
|
||||||
type=bool,
|
|
||||||
default=False,
|
|
||||||
action=argparse.BooleanOptionalAction,
|
|
||||||
dest="zip")
|
|
||||||
|
|
||||||
parser.add_argument("--recreate-asset",
|
|
||||||
help="Recreate assets for xfwm4 and such",
|
|
||||||
type=bool,
|
|
||||||
default=False,
|
|
||||||
action=argparse.BooleanOptionalAction,
|
|
||||||
dest="rec_asset")
|
|
||||||
|
|
||||||
args = parser.parse_args()
|
|
||||||
|
|
||||||
if "all" in args.flavor:
|
|
||||||
flavors = get_all_flavors()
|
|
||||||
else:
|
|
||||||
flavors = args.flavor
|
|
||||||
|
|
||||||
if "all" in args.accent:
|
|
||||||
accents = get_all_accent()
|
|
||||||
else:
|
|
||||||
accents = args.accent
|
|
||||||
|
|
||||||
if args.dest:
|
|
||||||
dest = args.dest
|
|
||||||
elif os.geteuid() == 0: # Sudo
|
|
||||||
dest = "/usr/share/themes"
|
|
||||||
else:
|
|
||||||
dest = os.path.expanduser('~') + "/.themes"
|
|
||||||
|
|
||||||
if not os.listdir(work_dir):
|
|
||||||
subprocess.call("git submodule update --init --recursive", shell=True)
|
|
||||||
|
|
||||||
filename = create_theme(flavors, accents, dest,
|
|
||||||
args.link, args.name, args.size, args.tweaks, args.zip, args.rec_asset)
|
|
||||||
70
patches/colloid/plank-dark.patch
Normal file
70
patches/colloid/plank-dark.patch
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
diff --git a/src/main/plank/theme-Dark-Catppuccin/dock.theme b/src/main/plank/theme-Dark-Catppuccin/dock.theme
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000..26a6a747
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/main/plank/theme-Dark-Catppuccin/dock.theme
|
||||||
|
@@ -0,0 +1,64 @@
|
||||||
|
+#This file based on:
|
||||||
|
+#https://git.launchpad.net/plank/tree/data/themes/Default/dock.theme
|
||||||
|
+
|
||||||
|
+[PlankTheme]
|
||||||
|
+#The roundness of the top corners.
|
||||||
|
+TopRoundness=16
|
||||||
|
+#The roundness of the bottom corners.
|
||||||
|
+BottomRoundness=0
|
||||||
|
+#The thickness (in pixels) of lines drawn.
|
||||||
|
+LineWidth=0
|
||||||
|
+#The color (RGBA) of the outer stroke.
|
||||||
|
+OuterStrokeColor=0;;0;;0;;0
|
||||||
|
+#The starting color (RGBA) of the fill gradient.
|
||||||
|
+FillStartColor=33;;33;;33;;255
|
||||||
|
+#The ending color (RGBA) of the fill gradient.
|
||||||
|
+FillEndColor=33;;33;;33;;255
|
||||||
|
+#The color (RGBA) of the inner stroke.
|
||||||
|
+InnerStrokeColor=33;;33;;33;;255
|
||||||
|
+
|
||||||
|
+[PlankDockTheme]
|
||||||
|
+#The padding on the left/right dock edges, in tenths of a percent of IconSize.
|
||||||
|
+HorizPadding=2
|
||||||
|
+#The padding on the top dock edge, in tenths of a percent of IconSize.
|
||||||
|
+TopPadding=2
|
||||||
|
+#The padding on the bottom dock edge, in tenths of a percent of IconSize.
|
||||||
|
+BottomPadding=1
|
||||||
|
+#The padding between items on the dock, in tenths of a percent of IconSize.
|
||||||
|
+ItemPadding=2
|
||||||
|
+#The size of item indicators, in tenths of a percent of IconSize.
|
||||||
|
+IndicatorSize=5
|
||||||
|
+#The size of the icon-shadow behind every item, in tenths of a percent of IconSize.
|
||||||
|
+IconShadowSize=0
|
||||||
|
+#The height (in percent of IconSize) to bounce an icon when the application sets urgent.
|
||||||
|
+UrgentBounceHeight=1.6666666666666667
|
||||||
|
+#The height (in percent of IconSize) to bounce an icon when launching an application.
|
||||||
|
+LaunchBounceHeight=0.625
|
||||||
|
+#The opacity value (0 to 1) to fade the dock to when hiding it.
|
||||||
|
+FadeOpacity=1
|
||||||
|
+#The amount of time (in ms) for click animations.
|
||||||
|
+ClickTime=0
|
||||||
|
+#The amount of time (in ms) to bounce an urgent icon.
|
||||||
|
+UrgentBounceTime=600
|
||||||
|
+#The amount of time (in ms) to bounce an icon when launching an application.
|
||||||
|
+LaunchBounceTime=600
|
||||||
|
+#The amount of time (in ms) for active window indicator animations.
|
||||||
|
+ActiveTime=150
|
||||||
|
+#The amount of time (in ms) to slide icons into/out of the dock.
|
||||||
|
+SlideTime=300
|
||||||
|
+#The time (in ms) to fade the dock in/out on a hide (if FadeOpacity is < 1).
|
||||||
|
+FadeTime=250
|
||||||
|
+#The time (in ms) to slide the dock in/out on a hide (if FadeOpacity is 1).
|
||||||
|
+HideTime=250
|
||||||
|
+#The size of the urgent glow (shown when dock is hidden), in tenths of a percent of IconSize.
|
||||||
|
+GlowSize=30
|
||||||
|
+#The total time (in ms) to show the hidden-dock urgent glow.
|
||||||
|
+GlowTime=10000
|
||||||
|
+#The time (in ms) of each pulse of the hidden-dock urgent glow.
|
||||||
|
+GlowPulseTime=2000
|
||||||
|
+#The hue-shift (-180 to 180) of the urgent indicator color.
|
||||||
|
+UrgentHueShift=150
|
||||||
|
+#The time (in ms) to move an item to its new position or its addition/removal to/from the dock.
|
||||||
|
+ItemMoveTime=450
|
||||||
|
+#Whether background and icons will unhide/hide with different speeds. The top-border of both will leave/hit the screen-edge at the same time.
|
||||||
|
+CascadeHide=true
|
||||||
70
patches/colloid/plank-light.patch
Normal file
70
patches/colloid/plank-light.patch
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
diff --git a/src/main/plank/theme-Light-Catppuccin/dock.theme b/src/main/plank/theme-Light-Catppuccin/dock.theme
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000..a4029c96
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/main/plank/theme-Light-Catppuccin/dock.theme
|
||||||
|
@@ -0,0 +1,64 @@
|
||||||
|
+#This file based on:
|
||||||
|
+#https://git.launchpad.net/plank/tree/data/themes/Default/dock.theme
|
||||||
|
+
|
||||||
|
+[PlankTheme]
|
||||||
|
+#The roundness of the top corners.
|
||||||
|
+TopRoundness=16
|
||||||
|
+#The roundness of the bottom corners.
|
||||||
|
+BottomRoundness=0
|
||||||
|
+#The thickness (in pixels) of lines drawn.
|
||||||
|
+LineWidth=0
|
||||||
|
+#The color (RGBA) of the outer stroke.
|
||||||
|
+OuterStrokeColor=0;;0;;0;;0
|
||||||
|
+#The starting color (RGBA) of the fill gradient.
|
||||||
|
+FillStartColor=242;;242;;242;;255
|
||||||
|
+#The ending color (RGBA) of the fill gradient.
|
||||||
|
+FillEndColor=242;;242;;242;;255
|
||||||
|
+#The color (RGBA) of the inner stroke.
|
||||||
|
+InnerStrokeColor=242;;242;;242;;255
|
||||||
|
+
|
||||||
|
+[PlankDockTheme]
|
||||||
|
+#The padding on the left/right dock edges, in tenths of a percent of IconSize.
|
||||||
|
+HorizPadding=2
|
||||||
|
+#The padding on the top dock edge, in tenths of a percent of IconSize.
|
||||||
|
+TopPadding=2
|
||||||
|
+#The padding on the bottom dock edge, in tenths of a percent of IconSize.
|
||||||
|
+BottomPadding=1
|
||||||
|
+#The padding between items on the dock, in tenths of a percent of IconSize.
|
||||||
|
+ItemPadding=2
|
||||||
|
+#The size of item indicators, in tenths of a percent of IconSize.
|
||||||
|
+IndicatorSize=5
|
||||||
|
+#The size of the icon-shadow behind every item, in tenths of a percent of IconSize.
|
||||||
|
+IconShadowSize=0
|
||||||
|
+#The height (in percent of IconSize) to bounce an icon when the application sets urgent.
|
||||||
|
+UrgentBounceHeight=1.6666666666666667
|
||||||
|
+#The height (in percent of IconSize) to bounce an icon when launching an application.
|
||||||
|
+LaunchBounceHeight=0.625
|
||||||
|
+#The opacity value (0 to 1) to fade the dock to when hiding it.
|
||||||
|
+FadeOpacity=1
|
||||||
|
+#The amount of time (in ms) for click animations.
|
||||||
|
+ClickTime=0
|
||||||
|
+#The amount of time (in ms) to bounce an urgent icon.
|
||||||
|
+UrgentBounceTime=600
|
||||||
|
+#The amount of time (in ms) to bounce an icon when launching an application.
|
||||||
|
+LaunchBounceTime=600
|
||||||
|
+#The amount of time (in ms) for active window indicator animations.
|
||||||
|
+ActiveTime=150
|
||||||
|
+#The amount of time (in ms) to slide icons into/out of the dock.
|
||||||
|
+SlideTime=300
|
||||||
|
+#The time (in ms) to fade the dock in/out on a hide (if FadeOpacity is < 1).
|
||||||
|
+FadeTime=250
|
||||||
|
+#The time (in ms) to slide the dock in/out on a hide (if FadeOpacity is 1).
|
||||||
|
+HideTime=250
|
||||||
|
+#The size of the urgent glow (shown when dock is hidden), in tenths of a percent of IconSize.
|
||||||
|
+GlowSize=30
|
||||||
|
+#The total time (in ms) to show the hidden-dock urgent glow.
|
||||||
|
+GlowTime=10000
|
||||||
|
+#The time (in ms) of each pulse of the hidden-dock urgent glow.
|
||||||
|
+GlowPulseTime=2000
|
||||||
|
+#The hue-shift (-180 to 180) of the urgent indicator color.
|
||||||
|
+UrgentHueShift=150
|
||||||
|
+#The time (in ms) to move an item to its new position or its addition/removal to/from the dock.
|
||||||
|
+ItemMoveTime=450
|
||||||
|
+#Whether background and icons will unhide/hide with different speeds. The top-border of both will leave/hit the screen-edge at the same time.
|
||||||
|
+CascadeHide=true
|
||||||
47
patches/colloid/sass-colors.patch
Normal file
47
patches/colloid/sass-colors.patch
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
diff --git a/src/sass/_colors.scss b/src/sass/_colors.scss
|
||||||
|
index e8366fa0..97fa670c 100644
|
||||||
|
--- a/src/sass/_colors.scss
|
||||||
|
+++ b/src/sass/_colors.scss
|
||||||
|
@@ -57,9 +57,8 @@
|
||||||
|
@else { @return rgba($white, 0.1); }
|
||||||
|
}
|
||||||
|
|
||||||
|
-@function theme($color) {
|
||||||
|
+@function theme() {
|
||||||
|
@if ($variant == 'light') {
|
||||||
|
- @if ($theme == 'default') { @return $default-dark; }
|
||||||
|
@if ($theme == 'purple') { @return $purple-dark; }
|
||||||
|
@if ($theme == 'pink') { @return $pink-dark; }
|
||||||
|
@if ($theme == 'red') { @return $red-dark; }
|
||||||
|
@@ -68,8 +67,9 @@
|
||||||
|
@if ($theme == 'green') { @return $green-dark; }
|
||||||
|
@if ($theme == 'teal') { @return $teal-dark; }
|
||||||
|
@if ($theme == 'grey') { @return $grey-600; }
|
||||||
|
+
|
||||||
|
+ @return $default-dark;
|
||||||
|
} @else {
|
||||||
|
- @if ($theme == 'default') { @return $default-light; }
|
||||||
|
@if ($theme == 'purple') { @return $purple-light; }
|
||||||
|
@if ($theme == 'pink') { @return $pink-light; }
|
||||||
|
@if ($theme == 'red') { @return $red-light; }
|
||||||
|
@@ -78,6 +78,8 @@
|
||||||
|
@if ($theme == 'green') { @return $green-light; }
|
||||||
|
@if ($theme == 'teal') { @return $teal-light; }
|
||||||
|
@if ($theme == 'grey') { @return $grey-200; }
|
||||||
|
+
|
||||||
|
+ @return $default-light;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -113,9 +115,9 @@
|
||||||
|
// Basic colors
|
||||||
|
//
|
||||||
|
|
||||||
|
-$primary: theme(color);
|
||||||
|
+$primary: theme();
|
||||||
|
$drop_target_color: $orange-dark;
|
||||||
|
-$indicator: theme(color);
|
||||||
|
+$indicator: theme();
|
||||||
|
$titlebar-indicator: if($variant == 'dark', currentColor, $primary);
|
||||||
|
$inverse-indicator: if($theme == 'grey', $white, $primary);
|
||||||
|
$applet-primary: if($theme == 'grey' and variant == 'light' and $topbar == 'dark', $grey-200, $primary);
|
||||||
78
patches/colloid/sass-palette.patch
Normal file
78
patches/colloid/sass-palette.patch
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
diff --git a/src/sass/_color-palette-catppuccin.scss b/src/sass/_color-palette-catppuccin.scss
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000..8a905942
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/sass/_color-palette-catppuccin.scss
|
||||||
|
@@ -0,0 +1,72 @@
|
||||||
|
+// Default Theme Color Palette
|
||||||
|
+
|
||||||
|
+// Red
|
||||||
|
+$red-light: #F44336;
|
||||||
|
+$red-dark: #E53935;
|
||||||
|
+
|
||||||
|
+// Pink
|
||||||
|
+$pink-light: #F06292;
|
||||||
|
+$pink-dark: #EC407A;
|
||||||
|
+
|
||||||
|
+// Purple
|
||||||
|
+$purple-light: #BA68C8;
|
||||||
|
+$purple-dark: #AB47BC;
|
||||||
|
+
|
||||||
|
+// Blue
|
||||||
|
+$blue-light: #5b9bf8;
|
||||||
|
+$blue-dark: #3c84f7;
|
||||||
|
+
|
||||||
|
+// Teal
|
||||||
|
+$teal-light: #4DB6AC;
|
||||||
|
+$teal-dark: #009688;
|
||||||
|
+
|
||||||
|
+// Green
|
||||||
|
+$green-light: #66BB6A;
|
||||||
|
+$green-dark: #4CAF50;
|
||||||
|
+
|
||||||
|
+// Yellow
|
||||||
|
+$yellow-light: #FBC02D;
|
||||||
|
+$yellow-dark: #FFD600;
|
||||||
|
+
|
||||||
|
+// Orange
|
||||||
|
+$orange-light: #FF8A65;
|
||||||
|
+$orange-dark: #FF7043;
|
||||||
|
+
|
||||||
|
+// Grey
|
||||||
|
+$grey-050: #FAFAFA;
|
||||||
|
+$grey-100: #F2F2F2;
|
||||||
|
+$grey-150: #EEEEEE;
|
||||||
|
+$grey-200: #DDDDDD;
|
||||||
|
+$grey-250: #CCCCCC;
|
||||||
|
+$grey-300: #BFBFBF;
|
||||||
|
+$grey-350: #A0A0A0;
|
||||||
|
+$grey-400: #9E9E9E;
|
||||||
|
+$grey-450: #868686;
|
||||||
|
+$grey-500: #727272;
|
||||||
|
+$grey-550: #555555;
|
||||||
|
+$grey-600: #464646;
|
||||||
|
+$grey-650: #3C3C3C;
|
||||||
|
+$grey-700: #2C2C2C;
|
||||||
|
+$grey-750: #242424;
|
||||||
|
+$grey-800: #212121;
|
||||||
|
+$grey-850: #121212;
|
||||||
|
+$grey-900: #0F0F0F;
|
||||||
|
+$grey-950: #030303;
|
||||||
|
+
|
||||||
|
+// White
|
||||||
|
+$white: #FFFFFF;
|
||||||
|
+
|
||||||
|
+// Black
|
||||||
|
+$black: #000000;
|
||||||
|
+
|
||||||
|
+// Button
|
||||||
|
+$button-close: #fd5f51;
|
||||||
|
+$button-max: #38c76a;
|
||||||
|
+$button-min: #fdbe04;
|
||||||
|
+
|
||||||
|
+// Link
|
||||||
|
+$links: #5bd3f8;
|
||||||
|
+
|
||||||
|
+// Theme
|
||||||
|
+$default-light: $blue-light;
|
||||||
|
+$default-dark: $blue-dark;
|
||||||
@@ -1,88 +0,0 @@
|
|||||||
from catppuccin import PALETTE
|
|
||||||
import os
|
|
||||||
import shutil
|
|
||||||
import subprocess
|
|
||||||
from typing import List
|
|
||||||
|
|
||||||
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,
|
|
||||||
name: str = theme_name, size: str = "standard", tweaks=[], zip = False, recreate_assets = False) -> None:
|
|
||||||
|
|
||||||
try:
|
|
||||||
os.makedirs(dest) # Create our destination directory
|
|
||||||
except FileExistsError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
for type in types:
|
|
||||||
if recreate_assets:
|
|
||||||
recreate_xfwm4_assets(type)
|
|
||||||
|
|
||||||
for accent in accents:
|
|
||||||
# Recolor colloid wrt our selection like mocha. latte
|
|
||||||
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:
|
|
||||||
install_cmd += f" --tweaks {' '.join([tweak for tweak in tweaks])}"
|
|
||||||
shutil.rmtree(f"{repo_dir}/chrome", ignore_errors=True)
|
|
||||||
shutil.copytree(f"{src_dir}/other/firefox/chrome", f"{repo_dir}/chrome")
|
|
||||||
os.chdir(work_dir)
|
|
||||||
subprocess.call("./build.sh", shell=True) # Rebuild all scss
|
|
||||||
subprocess.call(install_cmd, shell=True) # Install the theme globally for you
|
|
||||||
subprocess.call("git reset --hard HEAD", shell=True) # reset colloid repo to original state
|
|
||||||
|
|
||||||
try:
|
|
||||||
# Rename colloid generated files as per catppuccin
|
|
||||||
new_filename = dest + \
|
|
||||||
f"/{name}-{type.capitalize()}-{size.capitalize()}-{accent.capitalize()}-{theme_style.title()}"
|
|
||||||
filename = f"{name}"
|
|
||||||
if def_color_map[accent] != 'default':
|
|
||||||
filename += f"-{def_color_map[accent].capitalize()}"
|
|
||||||
filename += f"-{theme_style.capitalize()}"
|
|
||||||
if size == 'compact':
|
|
||||||
filename += '-Compact'
|
|
||||||
try:
|
|
||||||
shutil.rmtree(new_filename + '-hdpi')
|
|
||||||
shutil.rmtree(new_filename + '-xhdpi')
|
|
||||||
shutil.rmtree(new_filename)
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
os.rename(dest + "/" + filename + '-hdpi',
|
|
||||||
new_filename + '-hdpi')
|
|
||||||
os.rename(dest + "/" + filename + '-xhdpi',
|
|
||||||
new_filename + '-xhdpi')
|
|
||||||
os.rename(dest + "/" + filename, new_filename)
|
|
||||||
replacetext(new_filename + '/index.theme', filename, new_filename.split("/")[-1])
|
|
||||||
print("Successfully renamed file")
|
|
||||||
except Exception as e:
|
|
||||||
print("Failed to rename the files due to:", e)
|
|
||||||
|
|
||||||
if link:
|
|
||||||
try:
|
|
||||||
# Attempte relinking all the libadvaita files
|
|
||||||
subprocess.call(
|
|
||||||
'rm -rf "${HOME}/.config/gtk-4.0/"{assets,gtk.css,gtk-dark.css}', shell=True)
|
|
||||||
HOME = os.path.expanduser('~')
|
|
||||||
|
|
||||||
try:
|
|
||||||
os.makedirs(f"{HOME}/.config/gtk-4.0")
|
|
||||||
except FileExistsError:
|
|
||||||
pass
|
|
||||||
os.symlink(f"{new_filename}/gtk-4.0/assets",
|
|
||||||
f"{HOME}/.config/gtk-4.0/assets")
|
|
||||||
os.symlink(f"{new_filename}/gtk-4.0/gtk.css",
|
|
||||||
f"{HOME}/.config/gtk-4.0/gtk.css")
|
|
||||||
os.symlink(f"{new_filename}/gtk-4.0/gtk-dark.css",
|
|
||||||
f"{HOME}/.config/gtk-4.0/gtk-dark.css")
|
|
||||||
print("Successfully created symlinks for libadvaita")
|
|
||||||
except Exception as e:
|
|
||||||
print("Failed to link due to :", e)
|
|
||||||
|
|
||||||
if zip:
|
|
||||||
foldernames = [new_filename, new_filename + '-xhdpi', new_filename + '-hdpi']
|
|
||||||
zip_multiple_folders(foldernames, new_filename + ".zip", not link)
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
from catppuccin import PALETTE
|
|
||||||
import dataclasses
|
|
||||||
|
|
||||||
|
|
||||||
def get_all_flavors():
|
|
||||||
return [f.name for f in dataclasses.fields(PALETTE)]
|
|
||||||
|
|
||||||
|
|
||||||
def get_all_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]
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
import os
|
|
||||||
import shutil
|
|
||||||
import subprocess
|
|
||||||
|
|
||||||
from scripts.var import src_dir, repo_dir, work_dir
|
|
||||||
|
|
||||||
def recreate_xfwm4_assets(flavour):
|
|
||||||
"""
|
|
||||||
Recolors xfwm4 assets based on the flavour
|
|
||||||
|
|
||||||
Args:
|
|
||||||
flavour (Flavour): The flavour to recolor
|
|
||||||
"""
|
|
||||||
|
|
||||||
# Delete assets that already exists and copy new assets file
|
|
||||||
folders = ["assets", "assets-Light"]
|
|
||||||
variants = ["", "-Normal"]
|
|
||||||
sizes = ["", "-hdpi", "-xhdpi"]
|
|
||||||
assets_folder = f"{src_dir}/assets/xfwm4"
|
|
||||||
|
|
||||||
for folder in folders:
|
|
||||||
for variant in variants:
|
|
||||||
for size in sizes:
|
|
||||||
shutil.rmtree(f"{assets_folder}/{folder}{variant}{size}", ignore_errors=True)
|
|
||||||
|
|
||||||
|
|
||||||
patched_asset = f"{repo_dir}/patches/xfwm4/{folder}-Catppuccin-{flavour}{variant}.svg"
|
|
||||||
shutil.copy(patched_asset, f"{assets_folder}/{folder}{variant}.svg")
|
|
||||||
|
|
||||||
os.chdir(assets_folder)
|
|
||||||
subprocess.call(f"{assets_folder}/render-assets.sh", shell=True) # Rebuild all assets
|
|
||||||
os.chdir(work_dir)
|
|
||||||
@@ -1,190 +0,0 @@
|
|||||||
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(colors, accent: str = "blue"):
|
|
||||||
"""
|
|
||||||
Recolors the accent color in a file.
|
|
||||||
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]], 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]], getattr(PALETTE.latte.colors, accent).hex)
|
|
||||||
|
|
||||||
|
|
||||||
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", 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", 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", 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", 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):
|
|
||||||
"""
|
|
||||||
Recolor the theme. currently hard code it frappe
|
|
||||||
"""
|
|
||||||
print("Recoloring to suit catppuccin theme")
|
|
||||||
print("Recoloring accents")
|
|
||||||
colors = flavor.colors
|
|
||||||
latte_colors = PALETTE.latte.colors
|
|
||||||
mocha_colors = PALETTE.mocha.colors
|
|
||||||
recolor_accent(colors, accent)
|
|
||||||
print("Recoloring firefox")
|
|
||||||
recolor_firefox(colors, accent)
|
|
||||||
|
|
||||||
print("MOD: Gtkrc.sh")
|
|
||||||
replacetext(f"{work_dir}/gtkrc.sh", "background_light='#FFFFFF'",
|
|
||||||
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='{latte_colors.crust.hex}'") # use latte_crust for titlebar_light
|
|
||||||
replacetext(f"{work_dir}/gtkrc.sh",
|
|
||||||
"titlebar_light='#F2F2F2'", f"titlebar_light='{latte_colors.crust.hex}'")
|
|
||||||
|
|
||||||
if flavor.name == PALETTE.latte.name:
|
|
||||||
replacetext(f"{work_dir}/gtkrc.sh", "background_dark='#0F0F0F'",
|
|
||||||
f"background_dark='{mocha_colors.base.hex}'")
|
|
||||||
replacetext(f"{work_dir}/gtkrc.sh", "background_darker='#121212'",
|
|
||||||
f"background_darker='{mocha_colors.mantle.hex}'")
|
|
||||||
replacetext(f"{work_dir}/gtkrc.sh",
|
|
||||||
"background_alt='#212121'", f"background_alt='{mocha_colors.crust.hex}'")
|
|
||||||
replacetext(f"{work_dir}/gtkrc.sh", "titlebar_dark='#030303'",
|
|
||||||
f"titlebar_dark='{mocha_colors.crust.hex}'")
|
|
||||||
replacetext(f"{work_dir}/gtkrc.sh", "background_dark='#2C2C2C'",
|
|
||||||
f"background_dark='{mocha_colors.base.hex}'")
|
|
||||||
replacetext(f"{work_dir}/gtkrc.sh", "background_darker='#3C3C3C'",
|
|
||||||
f"background_darker='{mocha_colors.mantle.hex}'")
|
|
||||||
replacetext(f"{work_dir}/gtkrc.sh",
|
|
||||||
"background_alt='#464646'", f"background_alt='{mocha_colors.crust.hex}'")
|
|
||||||
replacetext(f"{work_dir}/gtkrc.sh",
|
|
||||||
"titlebar_dark='#242424'", f"titlebar_dark='{mocha_colors.crust.hex}'")
|
|
||||||
else:
|
|
||||||
replacetext(f"{work_dir}/gtkrc.sh", "background_dark='#0F0F0F'",
|
|
||||||
f"background_dark='{colors.base.hex}'")
|
|
||||||
replacetext(f"{work_dir}/gtkrc.sh", "background_darker='#121212'",
|
|
||||||
f"background_darker='{colors.mantle.hex}'")
|
|
||||||
replacetext(f"{work_dir}/gtkrc.sh",
|
|
||||||
"background_alt='#212121'", f"background_alt='{colors.crust.hex}'")
|
|
||||||
replacetext(f"{work_dir}/gtkrc.sh", "titlebar_dark='#030303'",
|
|
||||||
f"titlebar_dark='{colors.crust.hex}'")
|
|
||||||
replacetext(f"{work_dir}/gtkrc.sh", "background_dark='#2C2C2C'",
|
|
||||||
f"background_dark='{colors.base.hex}'")
|
|
||||||
replacetext(f"{work_dir}/gtkrc.sh", "background_darker='#3C3C3C'",
|
|
||||||
f"background_darker='{colors.mantle.hex}'")
|
|
||||||
replacetext(f"{work_dir}/gtkrc.sh",
|
|
||||||
"background_alt='#464646'", f"background_alt='{colors.crust.hex}'")
|
|
||||||
replacetext(f"{work_dir}/gtkrc.sh",
|
|
||||||
"titlebar_dark='#242424'", f"titlebar_dark='{colors.crust.hex}'")
|
|
||||||
|
|
||||||
print("Mod SASS Color_Palette_default")
|
|
||||||
|
|
||||||
# Greys
|
|
||||||
if flavor.name == PALETTE.latte.name:
|
|
||||||
replacetext(f"{src_dir}/sass/_color-palette-default.scss",
|
|
||||||
"grey-050: #FAFAFA", f"grey-050: {colors.crust.hex}")
|
|
||||||
replacetext(f"{src_dir}/sass/_color-palette-default.scss",
|
|
||||||
"grey-100: #F2F2F2", f"grey-100: {colors.mantle.hex}")
|
|
||||||
replacetext(f"{src_dir}/sass/_color-palette-default.scss",
|
|
||||||
"grey-150: #EEEEEE", f"grey-150: {colors.base.hex}")
|
|
||||||
replacetext(f"{src_dir}/sass/_color-palette-default.scss",
|
|
||||||
"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: {colors.surface1.hex}") # D = Surface 1 Late
|
|
||||||
replacetext(f"{src_dir}/sass/_color-palette-default.scss",
|
|
||||||
"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: {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: {mocha_colors.crust.hex}") # F $base-alt
|
|
||||||
replacetext(f"{src_dir}/sass/_color-palette-default.scss",
|
|
||||||
"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",
|
|
||||||
"grey-900: #0F0F0F", f"grey-900: #010101") # G Darknes
|
|
||||||
replacetext(f"{src_dir}/sass/_color-palette-default.scss",
|
|
||||||
"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: {colors.overlay2.hex}")
|
|
||||||
replacetext(f"{src_dir}/sass/_color-palette-default.scss",
|
|
||||||
"grey-100: #F2F2F2", f"grey-100: {colors.overlay1.hex}")
|
|
||||||
replacetext(f"{src_dir}/sass/_color-palette-default.scss",
|
|
||||||
"grey-150: #EEEEEE", f"grey-150: {colors.overlay0.hex}")
|
|
||||||
replacetext(f"{src_dir}/sass/_color-palette-default.scss",
|
|
||||||
"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: {colors.surface1.hex}") # D = Surface 1 Late
|
|
||||||
replacetext(f"{src_dir}/sass/_color-palette-default.scss",
|
|
||||||
"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: {colors.base.hex}") # G $background; $base; titlebar-backdrop; $popover
|
|
||||||
replacetext(f"{src_dir}/sass/_color-palette-default.scss",
|
|
||||||
"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: {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",
|
|
||||||
"grey-900: #0F0F0F", f"grey-900: #010101") # G Darknes
|
|
||||||
replacetext(f"{src_dir}/sass/_color-palette-default.scss",
|
|
||||||
"grey-950: #030303", f"grey-950: #000000") # F Darknes
|
|
||||||
|
|
||||||
# Make the hover black
|
|
||||||
replacetext(f"{src_dir}/sass/gtk/_common-3.0.scss",
|
|
||||||
"if\(\$colorscheme != 'dracula', white, rgba\(black, 0\.5\)\)", "rgba(black, 0.5)")
|
|
||||||
replacetext(f"{src_dir}/sass/gtk/_common-4.0.scss",
|
|
||||||
"if\(\$colorscheme != 'dracula', white, rgba\(black, 0\.5\)\)", "rgba(black, 0.5)")
|
|
||||||
|
|
||||||
# Buttons
|
|
||||||
replacetext(f"{src_dir}/sass/_color-palette-default.scss",
|
|
||||||
"button-close: #fd5f51", f"button-close: {colors.red.hex}")
|
|
||||||
replacetext(f"{src_dir}/sass/_color-palette-default.scss",
|
|
||||||
"button-max: #38c76a", f"button-max: {colors.green.hex}")
|
|
||||||
replacetext(f"{src_dir}/sass/_color-palette-default.scss",
|
|
||||||
"button-min: #fdbe04", f"button-min: {colors.yellow.hex}")
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
import os
|
|
||||||
import re
|
|
||||||
import shutil
|
|
||||||
import zipfile
|
|
||||||
|
|
||||||
|
|
||||||
def replacetext(filepath: str, search_text: str, replace_text: str) -> None:
|
|
||||||
"""
|
|
||||||
Helper function to replace the color in the file.
|
|
||||||
Can be used to replace any text in the file.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
filepath (str): The file to replace the text in.
|
|
||||||
search_text (str): The text to be replaced.
|
|
||||||
replace_text (str): The text to replace with.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
None
|
|
||||||
"""
|
|
||||||
|
|
||||||
try:
|
|
||||||
with open(filepath, 'r+') as f:
|
|
||||||
file = f.read()
|
|
||||||
file = re.sub(search_text, replace_text, file)
|
|
||||||
f.seek(0)
|
|
||||||
f.write(file)
|
|
||||||
f.truncate()
|
|
||||||
except Exception:
|
|
||||||
print(f"Failed to recolor {filepath}")
|
|
||||||
|
|
||||||
|
|
||||||
def replaceAllText(start_dir: str, search_text: str, replace_text: str) -> None:
|
|
||||||
for path, _, files in os.walk(os.path.abspath(start_dir)):
|
|
||||||
for filename in files:
|
|
||||||
filepath = os.path.join(path, filename)
|
|
||||||
if filepath.endswith(".png"):
|
|
||||||
continue
|
|
||||||
replacetext(filepath, search_text, replace_text)
|
|
||||||
|
|
||||||
|
|
||||||
def zipdir(path, ziph):
|
|
||||||
"""
|
|
||||||
Takes in a oath of a directory and zips it in a ziph.
|
|
||||||
Util to zip a directory.
|
|
||||||
Thanks https://stackoverflow.com/questions/46229764/python-zip-multiple-directories-into-one-zip-file
|
|
||||||
"""
|
|
||||||
for root, _, files in os.walk(path):
|
|
||||||
for file in files:
|
|
||||||
ziph.write(os.path.join(root, file),
|
|
||||||
os.path.relpath(os.path.join(root, file),
|
|
||||||
os.path.join(path, '..')))
|
|
||||||
|
|
||||||
|
|
||||||
def zip_multiple_folders(dir_list, zip_name, remove=True):
|
|
||||||
zipf = zipfile.ZipFile(zip_name, 'w', zipfile.ZIP_DEFLATED)
|
|
||||||
for dir in dir_list:
|
|
||||||
zipdir(dir, zipf)
|
|
||||||
if remove:
|
|
||||||
shutil.rmtree(dir)
|
|
||||||
zipf.close()
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
import os
|
|
||||||
|
|
||||||
|
|
||||||
repo_dir = os.getcwd()
|
|
||||||
work_dir = f"{repo_dir}/colloid"
|
|
||||||
src_dir = f"{work_dir}/src"
|
|
||||||
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 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 = {
|
|
||||||
'rosewater': 'pink',
|
|
||||||
'flamingo': 'pink',
|
|
||||||
'pink': 'pink',
|
|
||||||
'mauve': 'purple',
|
|
||||||
'red': 'red',
|
|
||||||
'maroon': 'red',
|
|
||||||
'peach': 'orange',
|
|
||||||
'yellow': 'yellow',
|
|
||||||
'green': 'green',
|
|
||||||
'teal': 'teal',
|
|
||||||
'sky': 'teal',
|
|
||||||
'sapphire': 'default',
|
|
||||||
'blue': 'default',
|
|
||||||
'lavender': 'default'}
|
|
||||||
|
|
||||||
def_accent_light = {
|
|
||||||
'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'
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user