File indexing completed on 2024-04-21 05:26:01

0001 #!/bin/sh
0002 set -e
0003 
0004 # Usage: create_folders <target-directory>
0005 create_folders () {
0006   for j in gtk-2.0 gtk-3.0 gtk-4.0; do
0007     if ! [ -d "$1/$j" ]; then
0008         mkdir -p "$1/$j"
0009     fi
0010   done 
0011 }
0012 
0013 # Usage: build_sass <source-directory> <target-directory> <include-directory>
0014 build_sass() {
0015   if command -v sassc >/dev/null 2>&1; then
0016       sassc -I "$3" "$1" "$2"
0017   else
0018       sass -I "$3" --cache-location /tmp/sass-cache "$1" "$2"
0019   fi
0020 }
0021 
0022 # Usage: install_theme <theme-directory> <theme-name> <install-target-dir>
0023 # If <install-target-dir> is unset or empty, install to $HOME/.local/share/themes/$THEME_NAME
0024 install_theme () {
0025   THEME_INSTALL_TARGET="$3"
0026   if [ -z "${THEME_INSTALL_TARGET}" ]; then
0027     THEME_INSTALL_TARGET="${HOME}/.local/share/themes/$2"
0028   fi
0029   echo "Installing into ${THEME_INSTALL_TARGET}"
0030   mkdir -p "${THEME_INSTALL_TARGET}"
0031   for dir in assets gtk-2.0 gtk-3.0 gtk-4.0; do
0032     if [ -d "${THEME_INSTALL_TARGET}/$dir" ]; then
0033       rm -rf "${THEME_INSTALL_TARGET:?}/$dir"
0034     fi
0035     mv -f "$1/$dir" "${THEME_INSTALL_TARGET}"
0036   done
0037   rmdir "$1"
0038 }
0039 
0040 # Usage render_theme <colorscheme> <theme-name> <theme-install-target> <colorschemebase>
0041 render_theme () {
0042   THEME_BUILD_DIR="$(mktemp -d)"
0043   create_folders "${THEME_BUILD_DIR}"
0044   cp -R gtk2/* "${THEME_BUILD_DIR}/gtk-2.0/"
0045   @Python3_EXECUTABLE@ render_assets.py -c "$1" -a "${THEME_BUILD_DIR}/assets" \
0046     -g "${THEME_BUILD_DIR}/gtk-2.0" -G "${THEME_BUILD_DIR}" -b "$4"
0047   build_sass gtk3/gtk.scss "${THEME_BUILD_DIR}/gtk-3.0/gtk.css" "${THEME_BUILD_DIR}"
0048   build_sass gtk4/gtk.scss "${THEME_BUILD_DIR}/gtk-4.0/gtk.css" "${THEME_BUILD_DIR}"
0049   rm -f "${THEME_BUILD_DIR}/_global.scss"
0050   install_theme "${THEME_BUILD_DIR}" "$2" "$3"
0051 }
0052 
0053 COLOR_SCHEME=""
0054 INSTALL_TARGET=""
0055 THEME_NAME=""
0056 COLOR_SCHEME_ROOT="/usr/share/color-schemes"
0057 
0058 while [ "$#" -gt 0 ]; do
0059   case "$1" in
0060     -h|--help)
0061       echo "$0: build Breeze theme"
0062       echo "Usage: $0 [-c COLOR_SCHEME] [-r COLOR_SCHEME_ROOT] [-t TARGET_DIRECTORY]"
0063       echo
0064       echo "Arguments:"
0065       echo "  -h, --help           show this help"
0066       echo "  -c COLOR_SCHEME      use color scheme with name COLOR_SCHEME. If unset or"
0067       echo "                       empty, the value from ~/.config/kdeglobals is used"
0068       echo "  -r COLOR_SCHEME_ROOT The base path of all color schemes or"
0069       echo "                       /usr/share/color-schemes if unset"
0070       echo "  -t TARGET_DIRECTORY  the directory to install the color scheme. If unset or"
0071       echo "                       empty, it is installed into"
0072       echo "                       ~/.local/share/themes/THEME_NAME"
0073       exit 0
0074     ;;
0075     -c)
0076       shift
0077       COLOR_SCHEME="$1"
0078     ;;
0079     -t)
0080       shift
0081       INSTALL_TARGET="$1"
0082     ;;
0083     -r)
0084       shift
0085       COLOR_SCHEME_ROOT="$1"
0086     ;;
0087   esac
0088   shift
0089 done
0090 
0091 if [ -z "${COLOR_SCHEME}" ]; then
0092   THEME_NAME="Breeze"
0093   if [ -f "${HOME}/.config/kdeglobals" ]; then
0094     COLOR_SCHEME="${HOME}/.config/kdeglobals"
0095   else
0096     echo "${HOME}/.config/kdeglobals not found, using defaults"
0097     COLOR_SCHEME="${COLOR_SCHEME_ROOT}/BreezeLight.colors"
0098   fi
0099 else
0100   THEME_NAME="${COLOR_SCHEME}"
0101   if [ -f "${COLOR_SCHEME_ROOT}/${COLOR_SCHEME}.colors" ]; then
0102     COLOR_SCHEME="${COLOR_SCHEME_ROOT}/${COLOR_SCHEME}.colors"
0103   elif [ -f "${HOME}/.local/share/color-schemes/${COLOR_SCHEME}.colors" ]; then
0104     COLOR_SCHEME="${HOME}/.local/share/color-schemes/${COLOR_SCHEME}.colors"
0105   else
0106     echo "colorscheme ${COLOR_SCHEME} not found"
0107     exit 1
0108   fi
0109 fi
0110 
0111 render_theme "${COLOR_SCHEME}" "${THEME_NAME}" "${INSTALL_TARGET}" "${COLOR_SCHEME_ROOT}/BreezeLight.colors"
0112 [ -z "${INSTALL_TARGET}" ] && INSTALL_TARGET="${HOME}/.local/share/themes/${THEME_NAME}"
0113 cp -r assets/ "${INSTALL_TARGET}"