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}"