diff --git a/build.sh b/build.sh
new file mode 100755
index 00000000..cddcb5b8
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,42 @@
+#! /usr/bin/env bash
+
+# Check command availability
+function has_command() {
+ command -v $1 > /dev/null
+}
+
+if [ ! "$(which sassc 2> /dev/null)" ]; then
+ echo sassc needs to be installed to generate the css.
+ if has_command zypper; then
+ sudo zypper in sassc
+ elif has_command apt; then
+ sudo apt install sassc
+ elif has_command dnf; then
+ sudo dnf install -y sassc
+ elif has_command yum; then
+ sudo yum install sassc
+ elif has_command pacman; then
+ sudo pacman -S --noconfirm sassc
+ fi
+fi
+
+SASSC_OPT="-M -t expanded"
+
+_COLOR_VARIANTS=('' '-Light' '-Dark')
+if [ ! -z "${COLOR_VARIANTS:-}" ]; then
+ IFS=', ' read -r -a _COLOR_VARIANTS <<< "${COLOR_VARIANTS:-}"
+fi
+
+cp -rf src/sass/_tweaks.scss src/sass/_tweaks-temp.scss
+cp -rf src/sass/gnome-shell/_common.scss src/sass/gnome-shell/_common-temp.scss
+
+for color in "${_COLOR_VARIANTS[@]}"; do
+ sassc $SASSC_OPT src/main/gtk-3.0/gtk${color}.{scss,css}
+ echo "==> Generating the 3.0 gtk${color}.css..."
+ sassc $SASSC_OPT src/main/gtk-4.0/gtk${color}.{scss,css}
+ echo "==> Generating the 4.0 gtk${color}.css..."
+ sassc $SASSC_OPT src/main/gnome-shell/gnome-shell${color}.{scss,css}
+ echo "==> Generating the gnome-shell${color}.css..."
+ sassc $SASSC_OPT src/main/cinnamon/cinnamon${color}.{scss,css}
+ echo "==> Generating the cinnamon${color}.css..."
+done
diff --git a/clean-old-theme.sh b/clean-old-theme.sh
new file mode 100755
index 00000000..ba0edd50
--- /dev/null
+++ b/clean-old-theme.sh
@@ -0,0 +1,55 @@
+#! /usr/bin/env bash
+
+ROOT_UID=0
+DEST_DIR=
+
+# Destination directory
+if [ "$UID" -eq "$ROOT_UID" ]; then
+ DEST_DIR="/usr/share/themes"
+else
+ DEST_DIR="$HOME/.themes"
+fi
+
+THEME_NAME=Colloid
+THEME_VARIANTS=('' '-purple' '-pink' '-red' '-orange' '-yellow' '-green' '-teal' '-grey')
+COLOR_VARIANTS=('' '-light' '-dark')
+SIZE_VARIANTS=('' '-compact')
+TYPE_VARIANTS=('' '-nord' '-dracula')
+SCREEN_VARIANTS=('' '-hdpi' '-xhdpi')
+
+clean() {
+ local dest=${1}
+ local name=${2}
+ local theme=${3}
+ local color=${4}
+ local size=${5}
+ local type=${6}
+ local screen=${7}
+
+ local THEME_DIR=${dest}/${name}${theme}${color}${size}${type}${screen}
+
+ if [[ ${theme} == '' && ${color} == '' && ${size} == '' && ${type} == '' ]]; 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 "${themes[@]-${THEME_VARIANTS[@]}}"; do
+ for color in "${colors[@]-${COLOR_VARIANTS[@]}}"; do
+ for size in "${sizes[@]-${SIZE_VARIANTS[@]}}"; do
+ for type in "${types[@]-${TYPE_VARIANTS[@]}}"; do
+ for screen in "${screens[@]-${SCREEN_VARIANTS[@]}}"; do
+ clean "${dest:-${DEST_DIR}}" "${name:-${THEME_NAME}}" "${theme}" "${color}" "${size}" "${type}" "${screen}"
+ done
+ done
+ done
+ done
+ done
+}
+
+clean_theme
+
+exit 0
diff --git a/gtkrc.sh b/gtkrc.sh
new file mode 100755
index 00000000..432bbb9d
--- /dev/null
+++ b/gtkrc.sh
@@ -0,0 +1,275 @@
+make_gtkrc() {
+ local dest="${1}"
+ local name="${2}"
+ local theme="${3}"
+ local color="${4}"
+ local size="${5}"
+ local ctype="${6}"
+ local window="${7}"
+
+ [[ "${color}" == '-Light' ]] && local ELSE_LIGHT="${color}"
+ [[ "${color}" == '-Dark' ]] && local ELSE_DARK="${color}"
+
+ local GTKRC_DIR="${SRC_DIR}/main/gtk-2.0"
+ local THEME_DIR="${1}/${2}${3}${4}${5}${6}"
+
+ if [[ "${color}" != '-Dark' ]]; then
+ case "$theme" in
+ '')
+ theme_color='#8caaee'
+ ;;
+ -Purple)
+ theme_color='#ca9ee6'
+ ;;
+ -Pink)
+ theme_color='#f4b8e4'
+ ;;
+ -Red)
+ theme_color='#e78284'
+ ;;
+ -Orange)
+ theme_color='#ef9f76'
+ ;;
+ -Yellow)
+ theme_color='#e5c890'
+ ;;
+ -Green)
+ theme_color='#a6d189'
+ ;;
+ -Teal)
+ theme_color='#81c8be'
+ ;;
+ -Grey)
+ theme_color='#7c7f93'
+ ;;
+ esac
+
+ if [[ "$ctype" == '-Nord' ]]; then
+ case "$theme" in
+ '')
+ theme_color='#5e81ac'
+ ;;
+ -Purple)
+ theme_color='#b57daa'
+ ;;
+ -Pink)
+ theme_color='#cd7092'
+ ;;
+ -Red)
+ theme_color='#c35b65'
+ ;;
+ -Orange)
+ theme_color='#d0846c'
+ ;;
+ -Yellow)
+ theme_color='#e4b558'
+ ;;
+ -Green)
+ theme_color='#82ac5d'
+ ;;
+ -Teal)
+ theme_color='#83b9b8'
+ ;;
+ -Grey)
+ theme_color='#3a4150'
+ ;;
+ esac
+ fi
+
+ if [[ "$ctype" == '-Dracula' ]]; then
+ case "$theme" in
+ '')
+ theme_color='#a679ec'
+ ;;
+ -Purple)
+ theme_color='#a679ec'
+ ;;
+ -Pink)
+ theme_color='#f04cab'
+ ;;
+ -Red)
+ theme_color='#f44d4d'
+ ;;
+ -Orange)
+ theme_color='#f8a854'
+ ;;
+ -Yellow)
+ theme_color='#e8f467'
+ ;;
+ -Green)
+ theme_color='#4be772'
+ ;;
+ -Teal)
+ theme_color='#20eed9'
+ ;;
+ -Grey)
+ theme_color='#3c3f51'
+ ;;
+ esac
+ fi
+ else
+ case "$theme" in
+ '')
+ theme_color='#8caaee'
+ ;;
+ -Purple)
+ theme_color='#ca9ee6'
+ ;;
+ -Pink)
+ theme_color='#f4b8e4'
+ ;;
+ -Red)
+ theme_color='#e78284'
+ ;;
+ -Orange)
+ theme_color='#ef9f76'
+ ;;
+ -Yellow)
+ theme_color='#e5c890'
+ ;;
+ -Green)
+ theme_color='#a6d189'
+ ;;
+ -Teal)
+ theme_color='#81c8be'
+ ;;
+ -Grey)
+ theme_color='#7c7f93'
+ ;;
+ esac
+
+ if [[ "$ctype" == '-Nord' ]]; then
+ case "$theme" in
+ '')
+ theme_color='#89a3c2'
+ ;;
+ -Purple)
+ theme_color='#c89dbf'
+ ;;
+ -Pink)
+ theme_color='#dc98b1'
+ ;;
+ -Red)
+ theme_color='#d4878f'
+ ;;
+ -Orange)
+ theme_color='#dca493'
+ ;;
+ -Yellow)
+ theme_color='#eac985'
+ ;;
+ -Green)
+ theme_color='#a0c082'
+ ;;
+ -Teal)
+ theme_color='#83b9b8'
+ ;;
+ -Grey)
+ theme_color='#d9dce3'
+ ;;
+ esac
+ fi
+
+ if [[ "$ctype" == '-Dracula' ]]; then
+ case "$theme" in
+ '')
+ theme_color='#bd93f9'
+ ;;
+ -Purple)
+ theme_color='#bd93f9'
+ ;;
+ -Pink)
+ theme_color='#ff79c6'
+ ;;
+ -Red)
+ theme_color='#ff5555'
+ ;;
+ -Orange)
+ theme_color='#ffb86c'
+ ;;
+ -Yellow)
+ theme_color='#f1fa8c'
+ ;;
+ -Green)
+ theme_color='#50fa7b'
+ ;;
+ -Teal)
+ theme_color='#50fae9'
+ ;;
+ -Grey)
+ theme_color='#d9dae3'
+ ;;
+ esac
+ fi
+ fi
+
+ if [[ "$blackness" == 'true' ]]; then
+ case "$ctype" in
+ '')
+ background_light='#eff1f5'
+ background_dark='#232634'
+ background_darker='#11111b'
+ background_alt='#212121'
+ titlebar_light='#dce0e8'
+ titlebar_dark='#232634'
+ ;;
+ -Nord)
+ background_light='#f8fafc'
+ background_dark='#0d0e11'
+ background_darker='#0f1115'
+ background_alt='#1c1f26'
+ titlebar_light='#f0f1f4'
+ titlebar_dark='#020203'
+ ;;
+ -Dracula)
+ background_light='#f9f9fb'
+ background_dark='#0d0d11'
+ background_darker='#0f1015'
+ background_alt='#1c1e26'
+ titlebar_light='#f0f1f4'
+ titlebar_dark='#020203'
+ ;;
+ esac
+ else
+ case "$ctype" in
+ '')
+ background_light='#eff1f5'
+ background_dark='#232634'
+ background_darker='#11111b'
+ background_alt='#464646'
+ titlebar_light='#dce0e8'
+ titlebar_dark='#232634'
+ ;;
+ -Nord)
+ background_light='#f8fafc'
+ background_dark='#242932'
+ background_darker='#333a47'
+ background_alt='#3a4150'
+ titlebar_light='#f0f1f4'
+ titlebar_dark='#1e222a'
+ ;;
+ -Dracula)
+ background_light='#f9f9fb'
+ background_dark='#242632'
+ background_darker='#343746'
+ background_alt='#3c3f51'
+ titlebar_light='#f0f1f4'
+ titlebar_dark='#1f2029'
+ ;;
+ esac
+ fi
+
+ cp -r "${GTKRC_DIR}/gtkrc${ELSE_DARK:-}-default" "${THEME_DIR}/gtk-2.0/gtkrc"
+ sed -i "s/#FFFFFF/${background_light}/g" "${THEME_DIR}/gtk-2.0/gtkrc"
+ sed -i "s/#2C2C2C/${background_dark}/g" "${THEME_DIR}/gtk-2.0/gtkrc"
+ sed -i "s/#464646/${background_alt}/g" "${THEME_DIR}/gtk-2.0/gtkrc"
+
+ if [[ "${color}" == '-Dark' ]]; then
+ sed -i "s/#5b9bf8/${theme_color}/g" "${THEME_DIR}/gtk-2.0/gtkrc"
+ sed -i "s/#3C3C3C/${background_darker}/g" "${THEME_DIR}/gtk-2.0/gtkrc"
+ sed -i "s/#242424/${titlebar_dark}/g" "${THEME_DIR}/gtk-2.0/gtkrc"
+ else
+ sed -i "s/#3c84f7/${theme_color}/g" "${THEME_DIR}/gtk-2.0/gtkrc"
+ sed -i "s/#F2F2F2/${titlebar_light}/g" "${THEME_DIR}/gtk-2.0/gtkrc"
+ fi
+}
diff --git a/install.sh b/install.sh
new file mode 100755
index 00000000..37a66500
--- /dev/null
+++ b/install.sh
@@ -0,0 +1,517 @@
+#! /usr/bin/env bash
+
+set -Eeo pipefail
+
+REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
+SRC_DIR="${REPO_DIR}/src"
+
+source "${REPO_DIR}/gtkrc.sh"
+
+ROOT_UID=0
+DEST_DIR=
+
+ctype=
+window=
+
+# Destination directory
+if [ "$UID" -eq "$ROOT_UID" ]; then
+ DEST_DIR="/usr/share/themes"
+else
+ DEST_DIR="$HOME/.themes"
+fi
+
+SASSC_OPT="-M -t expanded"
+
+THEME_NAME=Catppuccin-Mocha
+THEME_VARIANTS=('' '-Purple' '-Pink' '-Red' '-Orange' '-Yellow' '-Green' '-Teal' '-Grey')
+COLOR_VARIANTS=('' '-Light' '-Dark')
+SIZE_VARIANTS=('' '-Compact')
+
+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 "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="42-0"
+fi
+
+usage() {
+cat << EOF
+Usage: $0 [OPTION]...
+
+OPTIONS:
+ -d, --dest DIR Specify destination directory (Default: $DEST_DIR)
+
+ -n, --name NAME Specify theme name (Default: $THEME_NAME)
+
+ -t, --theme VARIANT Specify theme color variant(s) [default|purple|pink|red|orange|yellow|green|teal|grey|all] (Default: blue)
+
+ -c, --color VARIANT Specify color variant(s) [standard|light|dark] (Default: All variants))
+
+ -s, --size VARIANT Specify size variant [standard|compact] (Default: standard variant)
+
+ --tweaks Specify versions for tweaks [nord|dracula|black|rimless|normal] (only nord and dracula can not mix use with!)
+ 1. nord: Nord ColorScheme version
+ 2. dracula Dracula ColorScheme version
+ 3. black: Blackness color version
+ 4. rimless: Remove the 1px border about windows and menus
+ 5. normal: Normal windows button style (titlebuttons: max/min/close)
+
+ -h, --help Show help
+EOF
+}
+
+install() {
+ local dest="${1}"
+ local name="${2}"
+ local theme="${3}"
+ local color="${4}"
+ local size="${5}"
+ local ctype="${6}"
+ local window="${7}"
+
+ [[ "${color}" == '-Light' ]] && local ELSE_LIGHT="${color}"
+ [[ "${color}" == '-Dark' ]] && local ELSE_DARK="${color}"
+
+ local THEME_DIR="${1}/${2}${3}${4}${5}${6}"
+
+ [[ -d "${THEME_DIR}" ]] && rm -rf "${THEME_DIR}"
+
+ echo "Installing '${THEME_DIR}'..."
+
+ theme_tweaks
+
+ mkdir -p "${THEME_DIR}"
+
+ echo "[Desktop Entry]" >> "${THEME_DIR}/index.theme"
+ echo "Type=X-GNOME-Metatheme" >> "${THEME_DIR}/index.theme"
+ echo "Name=${2}${3}${4}${5}${6}" >> "${THEME_DIR}/index.theme"
+ echo "Comment=An Flat Gtk+ theme based on Elegant Design" >> "${THEME_DIR}/index.theme"
+ echo "Encoding=UTF-8" >> "${THEME_DIR}/index.theme"
+ echo "" >> "${THEME_DIR}/index.theme"
+ echo "[X-GNOME-Metatheme]" >> "${THEME_DIR}/index.theme"
+ echo "GtkTheme=${2}${3}${4}${5}${6}" >> "${THEME_DIR}/index.theme"
+ echo "MetacityTheme=${2}${3}${4}${5}${6}" >> "${THEME_DIR}/index.theme"
+ echo "IconTheme=Tela-circle${ELSE_DARK:-}" >> "${THEME_DIR}/index.theme"
+ echo "CursorTheme=${2}-cursors" >> "${THEME_DIR}/index.theme"
+ echo "ButtonLayout=close,minimize,maximize:menu" >> "${THEME_DIR}/index.theme"
+
+ mkdir -p "${THEME_DIR}/gnome-shell"
+ cp -r "${SRC_DIR}/main/gnome-shell/pad-osd.css" "${THEME_DIR}/gnome-shell"
+ sassc $SASSC_OPT "${SRC_DIR}/main/gnome-shell/gnome-shell${color}.scss" "${THEME_DIR}/gnome-shell/gnome-shell.css"
+
+ cp -r "${SRC_DIR}/assets/gnome-shell/common-assets" "${THEME_DIR}/gnome-shell/assets"
+ cp -r "${SRC_DIR}/assets/gnome-shell/assets${ELSE_DARK:-}/"*.svg "${THEME_DIR}/gnome-shell/assets"
+ cp -r "${SRC_DIR}/assets/gnome-shell/theme${theme}${ctype}/"*.svg "${THEME_DIR}/gnome-shell/assets"
+
+ cd "${THEME_DIR}/gnome-shell"
+ ln -s assets/no-events.svg no-events.svg
+ ln -s assets/process-working.svg process-working.svg
+ ln -s assets/no-notifications.svg no-notifications.svg
+
+ mkdir -p "${THEME_DIR}/gtk-2.0"
+ # cp -r "${SRC_DIR}/main/gtk-2.0/gtkrc${theme}${ELSE_DARK:-}${ctype}" "${THEME_DIR}/gtk-2.0/gtkrc"
+ cp -r "${SRC_DIR}/main/gtk-2.0/common/"*'.rc' "${THEME_DIR}/gtk-2.0"
+ cp -r "${SRC_DIR}/assets/gtk-2.0/assets-common${ELSE_DARK:-}" "${THEME_DIR}/gtk-2.0/assets"
+ cp -r "${SRC_DIR}/assets/gtk-2.0/assets${theme}${ELSE_DARK:-}${ctype}/"*"png" "${THEME_DIR}/gtk-2.0/assets"
+
+ mkdir -p "${THEME_DIR}/gtk-3.0"
+ cp -r "${SRC_DIR}/assets/gtk/assets${theme}${ctype}" "${THEME_DIR}/gtk-3.0/assets"
+ cp -r "${SRC_DIR}/assets/gtk/scalable" "${THEME_DIR}/gtk-3.0/assets"
+ cp -r "${SRC_DIR}/assets/gtk/thumbnails/thumbnail${theme}${ctype}${ELSE_DARK:-}.png" "${THEME_DIR}/gtk-3.0/thumbnail.png"
+ sassc $SASSC_OPT "${SRC_DIR}/main/gtk-3.0/gtk${color}.scss" "${THEME_DIR}/gtk-3.0/gtk.css"
+ sassc $SASSC_OPT "${SRC_DIR}/main/gtk-3.0/gtk-Dark.scss" "${THEME_DIR}/gtk-3.0/gtk-dark.css"
+
+ mkdir -p "${THEME_DIR}/gtk-4.0"
+ cp -r "${SRC_DIR}/assets/gtk/assets${theme}${ctype}" "${THEME_DIR}/gtk-4.0/assets"
+ cp -r "${SRC_DIR}/assets/gtk/scalable" "${THEME_DIR}/gtk-4.0/assets"
+ cp -r "${SRC_DIR}/assets/gtk/thumbnails/thumbnail${theme}${ctype}${ELSE_DARK:-}.png" "${THEME_DIR}/gtk-4.0/thumbnail.png"
+ sassc $SASSC_OPT "${SRC_DIR}/main/gtk-4.0/gtk${color}.scss" "${THEME_DIR}/gtk-4.0/gtk.css"
+ sassc $SASSC_OPT "${SRC_DIR}/main/gtk-4.0/gtk-Dark.scss" "${THEME_DIR}/gtk-4.0/gtk-dark.css"
+
+ # link gtk4.0 for libadwaita
+ mkdir -p "${HOME}/.config/gtk-4.0"
+ rm -rf "${HOME}/.config/gtk-4.0/"{assets,gtk.css,gtk-dark.css}
+ 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"
+
+ mkdir -p "${THEME_DIR}/cinnamon"
+ cp -r "${SRC_DIR}/assets/cinnamon/common-assets" "${THEME_DIR}/cinnamon/assets"
+ cp -r "${SRC_DIR}/assets/cinnamon/assets${ELSE_DARK:-}/"*'.svg' "${THEME_DIR}/cinnamon/assets"
+ cp -r "${SRC_DIR}/assets/cinnamon/theme${theme}${ctype}/"*'.svg' "${THEME_DIR}/cinnamon/assets"
+ sassc $SASSC_OPT "${SRC_DIR}/main/cinnamon/cinnamon${color}.scss" "${THEME_DIR}/cinnamon/cinnamon.css"
+ cp -r "${SRC_DIR}/assets/cinnamon/thumbnails/thumbnail${theme}${ctype}${color}.png" "${THEME_DIR}/cinnamon/thumbnail.png"
+
+ mkdir -p "${THEME_DIR}/metacity-1"
+ cp -r "${SRC_DIR}/main/metacity-1/metacity-theme-3${window}.xml" "${THEME_DIR}/metacity-1/metacity-theme-3.xml"
+ cp -r "${SRC_DIR}/assets/metacity-1/assets${window}" "${THEME_DIR}/metacity-1/assets"
+ cp -r "${SRC_DIR}/assets/metacity-1/thumbnail${ELSE_DARK:-}.png" "${THEME_DIR}/metacity-1/thumbnail.png"
+ cd "${THEME_DIR}/metacity-1" && ln -s metacity-theme-3.xml metacity-theme-1.xml && ln -s metacity-theme-3.xml metacity-theme-2.xml
+
+ mkdir -p "${THEME_DIR}/xfwm4"
+ cp -r "${SRC_DIR}/assets/xfwm4/assets${ELSE_LIGHT:-}${ctype}${window}/"*.png "${THEME_DIR}/xfwm4"
+ cp -r "${SRC_DIR}/main/xfwm4/themerc${ELSE_LIGHT:-}" "${THEME_DIR}/xfwm4/themerc"
+ mkdir -p "${THEME_DIR}-hdpi/xfwm4"
+ cp -r "${SRC_DIR}/assets/xfwm4/assets${ELSE_LIGHT:-}${ctype}${window}-hdpi/"*.png "${THEME_DIR}-hdpi/xfwm4"
+ cp -r "${SRC_DIR}/main/xfwm4/themerc${ELSE_LIGHT:-}" "${THEME_DIR}-hdpi/xfwm4/themerc"
+ sed -i "s/button_offset=6/button_offset=9/" "${THEME_DIR}-hdpi/xfwm4/themerc"
+ mkdir -p "${THEME_DIR}-xhdpi/xfwm4"
+ cp -r "${SRC_DIR}/assets/xfwm4/assets${ELSE_LIGHT:-}${ctype}${window}-xhdpi/"*.png "${THEME_DIR}-xhdpi/xfwm4"
+ cp -r "${SRC_DIR}/main/xfwm4/themerc${ELSE_LIGHT:-}" "${THEME_DIR}-xhdpi/xfwm4/themerc"
+ sed -i "s/button_offset=6/button_offset=12/" "${THEME_DIR}-xhdpi/xfwm4/themerc"
+
+ mkdir -p "${THEME_DIR}/plank"
+ if [[ "$color" == '-Light' ]]; then
+ cp -r "${SRC_DIR}/main/plank/theme-Light${ctype}/"* "${THEME_DIR}/plank"
+ else
+ cp -r "${SRC_DIR}/main/plank/theme-Dark${ctype}/"* "${THEME_DIR}/plank"
+ fi
+}
+
+themes=()
+colors=()
+sizes=()
+
+while [[ $# -gt 0 ]]; do
+ case "${1}" in
+ -d|--dest)
+ dest="${2}"
+ if [[ ! -d "${dest}" ]]; then
+ echo "Destination directory does not exist. Let's make a new one..."
+ mkdir -p ${dest}
+ fi
+ shift 2
+ ;;
+ -n|--name)
+ name="${2}"
+ shift 2
+ ;;
+ -c|--color)
+ shift
+ for color in "${@}"; do
+ case "${color}" in
+ standard)
+ colors+=("${COLOR_VARIANTS[0]}")
+ shift
+ ;;
+ light)
+ colors+=("${COLOR_VARIANTS[1]}")
+ shift
+ ;;
+ dark)
+ colors+=("${COLOR_VARIANTS[2]}")
+ shift
+ ;;
+ -*|--*)
+ break
+ ;;
+ *)
+ echo "ERROR: Unrecognized color variant '$1'."
+ echo "Try '$0 --help' for more information."
+ exit 1
+ ;;
+ esac
+ done
+ ;;
+ -t|--theme)
+ accent='true'
+ shift
+ for variant in "$@"; do
+ case "$variant" in
+ default)
+ themes+=("${THEME_VARIANTS[0]}")
+ shift
+ ;;
+ purple)
+ themes+=("${THEME_VARIANTS[1]}")
+ shift
+ ;;
+ pink)
+ themes+=("${THEME_VARIANTS[2]}")
+ shift
+ ;;
+ red)
+ themes+=("${THEME_VARIANTS[3]}")
+ shift
+ ;;
+ orange)
+ themes+=("${THEME_VARIANTS[4]}")
+ shift
+ ;;
+ yellow)
+ themes+=("${THEME_VARIANTS[5]}")
+ shift
+ ;;
+ green)
+ themes+=("${THEME_VARIANTS[6]}")
+ shift
+ ;;
+ teal)
+ themes+=("${THEME_VARIANTS[7]}")
+ shift
+ ;;
+ grey)
+ themes+=("${THEME_VARIANTS[8]}")
+ shift
+ ;;
+ all)
+ themes+=("${THEME_VARIANTS[@]}")
+ shift
+ ;;
+ -*)
+ break
+ ;;
+ *)
+ echo "ERROR: Unrecognized theme variant '$1'."
+ echo "Try '$0 --help' for more information."
+ exit 1
+ ;;
+ esac
+ done
+ ;;
+ -s|--size)
+ shift
+ for variant in "$@"; do
+ case "$variant" in
+ standard)
+ sizes+=("${SIZE_VARIANTS[0]}")
+ shift
+ ;;
+ compact)
+ sizes+=("${SIZE_VARIANTS[1]}")
+ compact='true'
+ shift
+ ;;
+ -*)
+ break
+ ;;
+ *)
+ echo "ERROR: Unrecognized size variant '${1:-}'."
+ echo "Try '$0 --help' for more information."
+ exit 1
+ ;;
+ esac
+ done
+ ;;
+ --tweaks)
+ shift
+ for variant in $@; do
+ case "$variant" in
+ nord)
+ nord="true"
+ ctype="-Nord"
+ echo -e "Install Nord ColorScheme version! ..."
+ shift
+ ;;
+ dracula)
+ dracula="true"
+ ctype="-Dracula"
+ echo -e "Install Dracula ColorScheme version! ..."
+ shift
+ ;;
+ black)
+ blackness="true"
+ echo -e "Install Blackness version! ..."
+ shift
+ ;;
+ rimless)
+ rimless="true"
+ echo -e "Install Rimless version! ..."
+ shift
+ ;;
+ normal)
+ normal="true"
+ window="-Normal"
+ echo -e "Install Normal window button version! ..."
+ shift
+ ;;
+ -*)
+ break
+ ;;
+ *)
+ echo "ERROR: Unrecognized tweaks variant '$1'."
+ echo "Try '$0 --help' for more information."
+ exit 1
+ ;;
+ esac
+ done
+ ;;
+ -h|--help)
+ usage
+ exit 0
+ ;;
+ *)
+ echo "ERROR: Unrecognized installation option '$1'."
+ echo "Try '$0 --help' for more information."
+ exit 1
+ ;;
+ esac
+done
+
+if [[ "${#themes[@]}" -eq 0 ]] ; then
+ themes=("${THEME_VARIANTS[0]}")
+fi
+
+if [[ "${#colors[@]}" -eq 0 ]] ; then
+ colors=("${COLOR_VARIANTS[@]}")
+fi
+
+if [[ "${#sizes[@]}" -eq 0 ]] ; then
+ sizes=("${SIZE_VARIANTS[0]}")
+fi
+
+# Check command avalibility
+function has_command() {
+ command -v $1 > /dev/null
+}
+
+# Install needed packages
+install_package() {
+ if [ ! "$(which sassc 2> /dev/null)" ]; then
+ echo sassc needs to be installed to generate the css.
+ if has_command zypper; then
+ sudo zypper in sassc
+ elif has_command apt-get; then
+ sudo apt-get install sassc
+ elif has_command dnf; then
+ sudo dnf install sassc
+ elif has_command dnf; then
+ sudo dnf install sassc
+ elif has_command pacman; then
+ sudo pacman -S --noconfirm sassc
+ fi
+ fi
+}
+
+tweaks_temp() {
+ cp -rf ${SRC_DIR}/sass/_tweaks.scss ${SRC_DIR}/sass/_tweaks-temp.scss
+}
+
+compact_size() {
+ sed -i "/\$compact:/s/false/true/" ${SRC_DIR}/sass/_tweaks-temp.scss
+}
+
+nord_color() {
+ sed -i "/\@import/s/color-palette-default/color-palette-nord/" ${SRC_DIR}/sass/_tweaks-temp.scss
+ sed -i "/\$colorscheme:/s/default/nord/" ${SRC_DIR}/sass/_tweaks-temp.scss
+}
+
+dracula_color() {
+ sed -i "/\@import/s/color-palette-default/color-palette-dracula/" ${SRC_DIR}/sass/_tweaks-temp.scss
+ sed -i "/\$colorscheme:/s/default/dracula/" ${SRC_DIR}/sass/_tweaks-temp.scss
+}
+
+blackness_color() {
+ sed -i "/\$blackness:/s/false/true/" ${SRC_DIR}/sass/_tweaks-temp.scss
+}
+
+border_rimless() {
+ sed -i "/\$rimless:/s/false/true/" ${SRC_DIR}/sass/_tweaks-temp.scss
+}
+
+normal_winbutton() {
+ sed -i "/\$window_button:/s/mac/normal/" ${SRC_DIR}/sass/_tweaks-temp.scss
+}
+
+gnome_shell_version() {
+ cp -rf ${SRC_DIR}/sass/gnome-shell/_common.scss ${SRC_DIR}/sass/gnome-shell/_common-temp.scss
+
+ sed -i "/\widgets/s/40-0/${GS_VERSION}/" ${SRC_DIR}/sass/gnome-shell/_common-temp.scss
+
+ if [[ "${GS_VERSION}" == '3-28' ]]; then
+ sed -i "/\extensions/s/40-0/${GS_VERSION}/" ${SRC_DIR}/sass/gnome-shell/_common-temp.scss
+ fi
+}
+
+theme_color() {
+ if [[ "$theme" != '' ]]; then
+ case "$theme" in
+ -Purple)
+ theme_color='purple'
+ ;;
+ -Pink)
+ theme_color='pink'
+ ;;
+ -Red)
+ theme_color='red'
+ ;;
+ -Orange)
+ theme_color='orange'
+ ;;
+ -Yellow)
+ theme_color='yellow'
+ ;;
+ -Green)
+ theme_color='green'
+ ;;
+ -Teal)
+ theme_color='teal'
+ ;;
+ -Grey)
+ theme_color='grey'
+ ;;
+ esac
+ tweaks_temp
+ sed -i "/\$theme:/s/default/${theme_color}/" ${SRC_DIR}/sass/_tweaks-temp.scss
+ fi
+}
+
+theme_tweaks() {
+ if [[ "$accent" = "true" ]] ; then
+ theme_color
+ fi
+
+ if [[ "$compact" = "true" ]] ; then
+ compact_size
+ fi
+
+ if [[ "$nord" = "true" ]] ; then
+ nord_color
+ fi
+
+ if [[ "$dracula" = "true" ]] ; then
+ dracula_color
+ fi
+
+ if [[ "$blackness" = "true" ]] ; then
+ blackness_color
+ fi
+
+ if [[ "$rimless" = "true" ]] ; then
+ border_rimless
+ fi
+
+ if [[ "$normal" = "true" ]] ; then
+ normal_winbutton
+ fi
+}
+
+install_theme() {
+ for theme in "${themes[@]}"; do
+ for color in "${colors[@]}"; do
+ for size in "${sizes[@]}"; do
+ install "${dest:-$DEST_DIR}" "${_name:-$THEME_NAME}" "$theme" "$color" "$size" "$ctype" "$window"
+ make_gtkrc "${dest:-$DEST_DIR}" "${_name:-$THEME_NAME}" "$theme" "$color" "$size" "$ctype" "$window"
+ done
+ done
+ done
+
+ if [[ "$DESKTOP_SESSION" == 'xfce' ]]; then
+ sed -i "s|.*menu-opacity=.*|menu-opacity=95|" "$HOME/.config/xfce4/panel/whiskermenu"*".rc"
+ fi
+}
+
+./clean-old-theme.sh
+
+install_package && tweaks_temp && gnome_shell_version && install_theme
+
+echo
+echo Done.
diff --git a/src/assets/cinnamon/assets-Dark/calendar-arrow-left.svg b/src/assets/cinnamon/assets-Dark/calendar-arrow-left.svg
new file mode 100644
index 00000000..dcf8298b
--- /dev/null
+++ b/src/assets/cinnamon/assets-Dark/calendar-arrow-left.svg
@@ -0,0 +1,56 @@
+
+
diff --git a/src/assets/cinnamon/assets-Dark/calendar-arrow-right.svg b/src/assets/cinnamon/assets-Dark/calendar-arrow-right.svg
new file mode 100644
index 00000000..ed66559d
--- /dev/null
+++ b/src/assets/cinnamon/assets-Dark/calendar-arrow-right.svg
@@ -0,0 +1,56 @@
+
+
diff --git a/src/assets/cinnamon/assets-Dark/checkbox-off.svg b/src/assets/cinnamon/assets-Dark/checkbox-off.svg
new file mode 100644
index 00000000..b00efa63
--- /dev/null
+++ b/src/assets/cinnamon/assets-Dark/checkbox-off.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/assets/cinnamon/assets-Dark/radiobutton-off.svg b/src/assets/cinnamon/assets-Dark/radiobutton-off.svg
new file mode 100644
index 00000000..b00efa63
--- /dev/null
+++ b/src/assets/cinnamon/assets-Dark/radiobutton-off.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/assets/cinnamon/assets-Dark/toggle-off.svg b/src/assets/cinnamon/assets-Dark/toggle-off.svg
new file mode 100644
index 00000000..d19c3e68
--- /dev/null
+++ b/src/assets/cinnamon/assets-Dark/toggle-off.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/cinnamon/assets-Dark/trash-icon.svg b/src/assets/cinnamon/assets-Dark/trash-icon.svg
new file mode 100644
index 00000000..d78a123e
--- /dev/null
+++ b/src/assets/cinnamon/assets-Dark/trash-icon.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/assets/cinnamon/assets/checkbox-off.svg b/src/assets/cinnamon/assets/checkbox-off.svg
index 8517604b..bd8d1941 100644
--- a/src/assets/cinnamon/assets/checkbox-off.svg
+++ b/src/assets/cinnamon/assets/checkbox-off.svg
@@ -1,3 +1,3 @@
-