scripts: Add cosmetic fixes
Unify indentation in 2 spaces
Quote more variables and values
Unify indentation in 2 spaces
Quote more variables and values
by roundabout, Saturday, 16 June 2018, 06:35:24 (1529130924), pushed by roundabout, Sunday, 11 May 2025, 13:22:26 (1746969746)
Author identity: nana-4 <hnmaigo@gmail.com>
9b8c2b27e4663e407d1a6bc17a890bfb602a440b
# shellcheck disable=SC1090
#set -x
set -ueo pipefail
SRC_PATH=$(readlink -f "$(dirname "$0")")
SRC_PATH="$(readlink -f "$(dirname "$0")")"
darker () {
"$SRC_PATH/scripts/darker.sh" "$@"
darker() {
"$SRC_PATH/scripts/darker.sh" "$@"
}
mix () {
"$SRC_PATH/scripts/mix.sh" "$@"
mix() {
"$SRC_PATH/scripts/mix.sh" "$@"
}
is_dark() {
hexinput=$(tr '[:lower:]' '[:upper:]' <<< "$1")
half_darker="$(darker "$hexinput" 88)"
[[ "$half_darker" == "000000" ]]
hexinput="$(tr '[:lower:]' '[:upper:]' <<< "$1")"
half_darker="$(darker "$hexinput" 88)"
[[ "$half_darker" == "000000" ]]
}
print_usage() {
echo "usage: $0 [-o OUTPUT_THEME_NAME] [-p PATH_LIST] PATH_TO_PRESET"
echo "examples:"
# shellcheck disable=SC2028 # This is meant to be usage text.
echo " $0 -o my-theme-name <(echo -e \"BG=d8d8d8\\nFG=101010\\nMENU_BG=3c3c3c\\nMENU_FG=e6e6e6\\nSEL_BG=ad7fa8\\nSEL_FG=ffffff\\nTXT_BG=ffffff\\nTXT_FG=1a1a1a\\nBTN_BG=f5f5f5\\nBTN_FG=111111\\n\")"
echo " $0 ../colors/retro/twg"
echo " $0 --hidpi True ../colors/retro/clearlooks"
exit 1
echo "usage: $0 [-o OUTPUT_THEME_NAME] [-p PATH_LIST] PATH_TO_PRESET"
echo "examples:"
# shellcheck disable=SC2028 # This is meant to be usage text.
echo " $0 -o my-theme-name <(echo -e \"BG=d8d8d8\\nFG=101010\\nMENU_BG=3c3c3c\\nMENU_FG=e6e6e6\\nSEL_BG=ad7fa8\\nSEL_FG=ffffff\\nTXT_BG=ffffff\\nTXT_FG=1a1a1a\\nBTN_BG=f5f5f5\\nBTN_FG=111111\\n\")"
echo " $0 ../colors/retro/twg"
echo " $0 --hidpi True ../colors/retro/clearlooks"
exit 1
}
while [[ "$#" -gt 0 ]]
do
case "$1" in
-p|--path-list)
CUSTOM_PATHLIST="$2"
shift
;;
-o|--output)
OUTPUT_THEME_NAME="$2"
shift
;;
-d|--hidpi)
OPTION_GTK2_HIDPI="$2"
shift
;;
*)
if [[ "$1" == -* ]] || [[ "${THEME-}" ]]; then
echo "unknown option $1"
print_usage
exit 2
fi
THEME="$1"
;;
esac
shift
case "$1" in
-p|--path-list)
CUSTOM_PATHLIST="$2"
shift
;;
-o|--output)
OUTPUT_THEME_NAME="$2"
shift
;;
-d|--hidpi)
OPTION_GTK2_HIDPI="$2"
shift
;;
*)
if [[ "$1" == -* ]] || [[ "${THEME-}" ]]; then
echo "unknown option $1"
print_usage
exit 2
fi
THEME="$1"
;;
esac
shift
done
if [[ -z "${THEME:-}" ]] ; then
print_usage
if [[ -z "${THEME:-}" ]]; then
print_usage
fi
PATHLIST=(
'./src/chrome'
'./src/cinnamon'
'./src/cinnamon/assets'
'./src/gnome-shell'
'./src/gtk-2.0/gtkrc'
'./src/gtk-2.0/gtkrc-dark'
'./src/gtk-2.0/gtkrc-light'
'./src/_sass/_colors.scss'
'./src/gtk-2.0/assets.svg'
'./src/gtk-2.0/assets-dark.svg'
'./src/gtk/assets.svg'
'./src/metacity-1'
'./src/unity'
'./src/xfwm4'
'./src/chrome'
'./src/cinnamon'
'./src/cinnamon/assets'
'./src/gnome-shell'
'./src/gtk-2.0/gtkrc'
'./src/gtk-2.0/gtkrc-dark'
'./src/gtk-2.0/gtkrc-light'
'./src/_sass/_colors.scss'
'./src/gtk-2.0/assets.svg'
'./src/gtk-2.0/assets-dark.svg'
'./src/gtk/assets.svg'
'./src/metacity-1'
'./src/unity'
'./src/xfwm4'
)
if [ ! -z "${CUSTOM_PATHLIST:-}" ] ; then
IFS=', ' read -r -a PATHLIST <<< "${CUSTOM_PATHLIST:-}"
if [[ ! -z "${CUSTOM_PATHLIST:-}" ]]; then
IFS=', ' read -r -a PATHLIST <<< "${CUSTOM_PATHLIST:-}"
fi
EXPORT_QT5CT=0
for FILEPATH in "${PATHLIST[@]}"; do
if [[ "$FILEPATH" == *qt5ct* ]] ;then
EXPORT_QT5CT=1
fi
if [[ "$FILEPATH" == *qt5ct* ]]; then
EXPORT_QT5CT=1
fi
done
OPTION_GTK2_HIDPI=$(tr '[:upper:]' '[:lower:]' <<< "${OPTION_GTK2_HIDPI-False}")
if [[ "$THEME" == */* ]] || [[ "$THEME" == *.* ]] ; then
source "$THEME"
THEME=$(basename "$THEME")
if [[ "$THEME" == */* ]] || [[ "$THEME" == *.* ]]; then
source "$THEME"
THEME=$(basename "$THEME")
else
if [[ -f "$SRC_PATH/../colors/$THEME" ]] ; then
source "$SRC_PATH/../colors/$THEME"
else
echo "Theme '$THEME' not found"
exit 1
fi
if [[ -f "$SRC_PATH/../colors/$THEME" ]]; then
source "$SRC_PATH/../colors/$THEME"
else
echo "Theme '$THEME' not found"
exit 1
fi
fi
if [[ $(date +"%m%d") = "0401" ]] && grep -q "no-jokes" <<< "$*" ; then
echo -e "\\n\\nError patching uxtheme.dll\\n\\n"
ACCENT_BG=000000 BG=C0C0C0 BTN_BG=C0C0C0 BTN_FG=000000 FG=000000
GNOME_SHELL_PANEL_OPACITY=1 HDR_BTN_BG=C0C0C0 HDR_BTN_FG=000000 MENU_BG=C0C0C0
MENU_FG=000000 SEL_BG=000080 SEL_FG=FFFFFF TXT_BG=FFFFFF TXT_FG=000000
if [[ $(date +"%m%d") = "0401" ]] && grep -q "no-jokes" <<< "$*"; then
echo -e "\\n\\nError patching uxtheme.dll\\n\\n"
ACCENT_BG=000000 BG=C0C0C0 BTN_BG=C0C0C0 BTN_FG=000000 FG=000000
GNOME_SHELL_PANEL_OPACITY=1 HDR_BTN_BG=C0C0C0 HDR_BTN_FG=000000 MENU_BG=C0C0C0
MENU_FG=000000 SEL_BG=000080 SEL_FG=FFFFFF TXT_BG=FFFFFF TXT_FG=000000
fi
ACCENT_BG=${ACCENT_BG-$SEL_BG}
OUTPUT_THEME_NAME=${OUTPUT_THEME_NAME-oomox-$THEME}
DEST_PATH="$HOME/.themes/${OUTPUT_THEME_NAME/\//-}"
if [[ "$SRC_PATH" == "$DEST_PATH" ]]; then echo "can't do that"; exit 1; fi
if [[ "$SRC_PATH" == "$DEST_PATH" ]]; then
echo "can't do that"
exit 1
fi
tempdir=$(mktemp -d)
function post_clean_up {
rm -r "$tempdir" || :
post_clean_up() {
rm -r "$tempdir" || :
}
trap post_clean_up EXIT SIGHUP SIGINT SIGTERM
cp -r "$SRC_PATH/"* "$tempdir/"
# autodetection which color variant to use
if [[ -z "$MATERIA_COLOR_VARIANT" ]] ; then
if is_dark "$BG" ; then
echo "== Dark background color detected. Setting color variant to dark."
MATERIA_COLOR_VARIANT="dark"
elif is_dark "$MENU_BG" ; then
echo "== Dark headerbar background color detected. Setting color variant to standard."
MATERIA_COLOR_VARIANT="standard"
else
echo "== Light background color detected. Setting color variant to light."
MATERIA_COLOR_VARIANT="light"
fi
if [[ -z "$MATERIA_COLOR_VARIANT" ]]; then
if is_dark "$BG"; then
echo "== Dark background color detected. Setting color variant to dark."
MATERIA_COLOR_VARIANT="dark"
elif is_dark "$MENU_BG"; then
echo "== Dark headerbar background color detected. Setting color variant to standard."
MATERIA_COLOR_VARIANT="standard"
else
echo "== Light background color detected. Setting color variant to light."
MATERIA_COLOR_VARIANT="light"
fi
fi
echo "== Converting theme into template..."
for FILEPATH in "${PATHLIST[@]}"; do
if [[ "$MATERIA_COLOR_VARIANT" != "dark" ]] ; then
find "$FILEPATH" -type f -not -name '_color-palette.scss' -exec sed -i'' \
-e 's/#000000/%FG%/g' \
-e 's/#212121/%FG%/g' \
-e 's/#757575/%INACTIVE_FG%/g' \
-e 's/#BDBDBD/%INACTIVE_FG%/g' \
-e 's/#FAFAFA/%INACTIVE_TXT_BG%/g' \
-e 's/#F2F2F2/%BG%/g' \
-e 's/#FAFAFA/%BTN_BG%/g' \
-e 's/#01A299/%ACCENT_BG%/g' \
-e 's/#4285F4/%SEL_BG%/g' \
-e 's/#FFFFFF/%TXT_BG%/g' \
-e 's/#383838/%MENU_BG%/g' \
-e 's/#E0E0E0/%MENU_BG%/g' \
-e 's/#212121/%MENU_BG2%/g' \
-e 's/Materia/%OUTPUT_THEME_NAME%/g' \
{} \; ;
else
find "$FILEPATH" -type f -not -name '_color-palette.scss' -exec sed -i'' \
-e 's/#000000/%BG%/g' \
-e 's/#282828/%BG%/g' \
-e 's/#757575/%INACTIVE_FG%/g' \
-e 's/#BDBDBD/%INACTIVE_FG%/g' \
-e 's/#2C2C2C/%INACTIVE_TXT_BG%/g' \
-e 's/#FFFFFF/%FG%/g' \
-e 's/#FAFAFA/%BTN_FG%/g' \
-e 's/#424242/%BTN_BG%/g' \
-e 's/#01A299/%ACCENT_BG%/g' \
-e 's/#4285F4/%SEL_BG%/g' \
-e 's/#FFFFFF/%TXT_FG%/g' \
-e 's/#303030/%TXT_BG%/g' \
-e 's/#383838/%MENU_BG%/g' \
-e 's/#212121/%MENU_BG2%/g' \
-e 's/Materia/%OUTPUT_THEME_NAME%/g' \
{} \; ;
fi
if [[ "$MATERIA_COLOR_VARIANT" != "dark" ]]; then
find "$FILEPATH" -type f -not -name '_color-palette.scss' -exec sed -i'' \
-e 's/#000000/%FG%/g' \
-e 's/#212121/%FG%/g' \
-e 's/#757575/%INACTIVE_FG%/g' \
-e 's/#BDBDBD/%INACTIVE_FG%/g' \
-e 's/#FAFAFA/%INACTIVE_TXT_BG%/g' \
-e 's/#F2F2F2/%BG%/g' \
-e 's/#FAFAFA/%BTN_BG%/g' \
-e 's/#01A299/%ACCENT_BG%/g' \
-e 's/#4285F4/%SEL_BG%/g' \
-e 's/#FFFFFF/%TXT_BG%/g' \
-e 's/#383838/%MENU_BG%/g' \
-e 's/#E0E0E0/%MENU_BG%/g' \
-e 's/#212121/%MENU_BG2%/g' \
-e 's/Materia/%OUTPUT_THEME_NAME%/g' \
{} \; ;
else
find "$FILEPATH" -type f -not -name '_color-palette.scss' -exec sed -i'' \
-e 's/#000000/%BG%/g' \
-e 's/#282828/%BG%/g' \
-e 's/#757575/%INACTIVE_FG%/g' \
-e 's/#BDBDBD/%INACTIVE_FG%/g' \
-e 's/#2C2C2C/%INACTIVE_TXT_BG%/g' \
-e 's/#FFFFFF/%FG%/g' \
-e 's/#FAFAFA/%BTN_FG%/g' \
-e 's/#424242/%BTN_BG%/g' \
-e 's/#01A299/%ACCENT_BG%/g' \
-e 's/#4285F4/%SEL_BG%/g' \
-e 's/#FFFFFF/%TXT_FG%/g' \
-e 's/#303030/%TXT_BG%/g' \
-e 's/#383838/%MENU_BG%/g' \
-e 's/#212121/%MENU_BG2%/g' \
-e 's/Materia/%OUTPUT_THEME_NAME%/g' \
{} \; ;
fi
done
#Not implemented yet:
#-e 's/%HDR_BTN_BG%/'"$HDR_BTN_BG"'/g' \
#-e 's/%HDR_BTN_FG%/'"$HDR_BTN_FG"'/g' \
#-e 's/%WM_BORDER_FOCUS%/'"$WM_BORDER_FOCUS"'/g' \
#-e 's/%WM_BORDER_UNFOCUS%/'"$WM_BORDER_UNFOCUS"'/g' \
#-e 's/%ROUNDNESS%/'"$ROUNDNESS"'/g' \
#-e 's/%SPACING%/'"$SPACING"'/g' \
#-e 's/%INACTIVE_FG%/'"$INACTIVE_FG"'/g' \
#-e 's/%INACTIVE_TXT_FG%/'"$INACTIVE_TXT_FG"'/g' \
#-e 's/%INACTIVE_MENU_FG%/'"$INACTIVE_MENU_FG"'/g' \
if [[ "${DEBUG:-}" ]] ; then
echo "You can debug TEMP DIR: $tempdir, press [Enter] when finished"; read -r
#-e 's/%HDR_BTN_BG%/'"$HDR_BTN_BG"'/g' \
#-e 's/%HDR_BTN_FG%/'"$HDR_BTN_FG"'/g' \
#-e 's/%WM_BORDER_FOCUS%/'"$WM_BORDER_FOCUS"'/g' \
#-e 's/%WM_BORDER_UNFOCUS%/'"$WM_BORDER_UNFOCUS"'/g' \
#-e 's/%ROUNDNESS%/'"$ROUNDNESS"'/g' \
#-e 's/%SPACING%/'"$SPACING"'/g' \
#-e 's/%INACTIVE_FG%/'"$INACTIVE_FG"'/g' \
#-e 's/%INACTIVE_TXT_FG%/'"$INACTIVE_TXT_FG"'/g' \
#-e 's/%INACTIVE_MENU_FG%/'"$INACTIVE_MENU_FG"'/g' \
if [[ "${DEBUG:-}" ]]; then
echo "You can debug TEMP DIR: $tempdir, press [Enter] when finished"; read -r
fi
mv ./src/_sass/_colors.scss.template ./src/_sass/_colors.scss
echo "== Filling the template with the new colorscheme..."
for FILEPATH in "${PATHLIST[@]}"; do
find "$FILEPATH" -type f -exec sed -i'' \
-e 's/%BG%/#'"$BG"'/g' \
-e 's/%BG2%/#'"$(darker $BG)"'/g' \
-e 's/%FG%/#'"$FG"'/g' \
-e 's/%ACCENT_BG%/#'"$ACCENT_BG"'/g' \
-e 's/%SEL_BG%/#'"$SEL_BG"'/g' \
-e 's/%SEL_BG2%/#'"$(darker $SEL_BG -20)"'/g' \
-e 's/%SEL_FG%/#'"$SEL_FG"'/g' \
-e 's/%TXT_BG%/#'"$TXT_BG"'/g' \
-e 's/%TXT_FG%/#'"$TXT_FG"'/g' \
-e 's/%MENU_BG%/#'"$MENU_BG"'/g' \
-e 's/%MENU_BG2%/#'"$(darker $MENU_BG 10)"'/g' \
-e 's/%MENU_BG3%/#'"$(darker $MENU_BG 20)"'/g' \
-e 's/%MENU_FG%/#'"$MENU_FG"'/g' \
-e 's/%BTN_BG%/#'"$BTN_BG"'/g' \
-e 's/%BTN_FG%/#'"$BTN_FG"'/g' \
-e 's/%HDR_BTN_BG%/#'"$HDR_BTN_BG"'/g' \
-e 's/%HDR_BTN_FG%/#'"$HDR_BTN_FG"'/g' \
-e 's/%WM_BORDER_FOCUS%/#'"$WM_BORDER_FOCUS"'/g' \
-e 's/%WM_BORDER_UNFOCUS%/#'"$WM_BORDER_UNFOCUS"'/g' \
-e 's/%ROUNDNESS%/'"$ROUNDNESS"'/g' \
-e 's/%SPACING%/'"$SPACING"'/g' \
-e 's/%INACTIVE_FG%/#'"$INACTIVE_FG"'/g' \
-e 's/%INACTIVE_TXT_FG%/#'"$INACTIVE_TXT_FG"'/g' \
-e 's/%INACTIVE_TXT_BG%/#'"$INACTIVE_TXT_BG"'/g' \
-e 's/%INACTIVE_MENU_FG%/#'"$INACTIVE_MENU_FG"'/g' \
-e 's/%INACTIVE_MENU_BG%/#'"$INACTIVE_MENU_BG"'/g' \
-e 's/%TERMINAL_COLOR4%/#'"$TERMINAL_COLOR4"'/g' \
-e 's/%TERMINAL_COLOR5%/#'"$TERMINAL_COLOR5"'/g' \
-e 's/%TERMINAL_COLOR9%/#'"$TERMINAL_COLOR9"'/g' \
-e 's/%TERMINAL_COLOR10%/#'"$TERMINAL_COLOR10"'/g' \
-e 's/%TERMINAL_COLOR11%/#'"$TERMINAL_COLOR11"'/g' \
-e 's/%TERMINAL_COLOR12%/#'"$TERMINAL_COLOR12"'/g' \
-e 's/%GNOME_SHELL_PANEL_OPACITY%/'"$GNOME_SHELL_PANEL_OPACITY"'/g' \
-e 's/%OUTPUT_THEME_NAME%/'"$OUTPUT_THEME_NAME"'/g' \
{} \; ;
find "$FILEPATH" -type f -exec sed -i'' \
-e 's/%BG%/#'"$BG"'/g' \
-e 's/%BG2%/#'"$(darker $BG)"'/g' \
-e 's/%FG%/#'"$FG"'/g' \
-e 's/%ACCENT_BG%/#'"$ACCENT_BG"'/g' \
-e 's/%SEL_BG%/#'"$SEL_BG"'/g' \
-e 's/%SEL_BG2%/#'"$(darker $SEL_BG -20)"'/g' \
-e 's/%SEL_FG%/#'"$SEL_FG"'/g' \
-e 's/%TXT_BG%/#'"$TXT_BG"'/g' \
-e 's/%TXT_FG%/#'"$TXT_FG"'/g' \
-e 's/%MENU_BG%/#'"$MENU_BG"'/g' \
-e 's/%MENU_BG2%/#'"$(darker $MENU_BG 10)"'/g' \
-e 's/%MENU_BG3%/#'"$(darker $MENU_BG 20)"'/g' \
-e 's/%MENU_FG%/#'"$MENU_FG"'/g' \
-e 's/%BTN_BG%/#'"$BTN_BG"'/g' \
-e 's/%BTN_FG%/#'"$BTN_FG"'/g' \
-e 's/%HDR_BTN_BG%/#'"$HDR_BTN_BG"'/g' \
-e 's/%HDR_BTN_FG%/#'"$HDR_BTN_FG"'/g' \
-e 's/%WM_BORDER_FOCUS%/#'"$WM_BORDER_FOCUS"'/g' \
-e 's/%WM_BORDER_UNFOCUS%/#'"$WM_BORDER_UNFOCUS"'/g' \
-e 's/%ROUNDNESS%/'"$ROUNDNESS"'/g' \
-e 's/%SPACING%/'"$SPACING"'/g' \
-e 's/%INACTIVE_FG%/#'"$INACTIVE_FG"'/g' \
-e 's/%INACTIVE_TXT_FG%/#'"$INACTIVE_TXT_FG"'/g' \
-e 's/%INACTIVE_TXT_BG%/#'"$INACTIVE_TXT_BG"'/g' \
-e 's/%INACTIVE_MENU_FG%/#'"$INACTIVE_MENU_FG"'/g' \
-e 's/%INACTIVE_MENU_BG%/#'"$INACTIVE_MENU_BG"'/g' \
-e 's/%TERMINAL_COLOR4%/#'"$TERMINAL_COLOR4"'/g' \
-e 's/%TERMINAL_COLOR5%/#'"$TERMINAL_COLOR5"'/g' \
-e 's/%TERMINAL_COLOR9%/#'"$TERMINAL_COLOR9"'/g' \
-e 's/%TERMINAL_COLOR10%/#'"$TERMINAL_COLOR10"'/g' \
-e 's/%TERMINAL_COLOR11%/#'"$TERMINAL_COLOR11"'/g' \
-e 's/%TERMINAL_COLOR12%/#'"$TERMINAL_COLOR12"'/g' \
-e 's/%GNOME_SHELL_PANEL_OPACITY%/'"$GNOME_SHELL_PANEL_OPACITY"'/g' \
-e 's/%OUTPUT_THEME_NAME%/'"$OUTPUT_THEME_NAME"'/g' \
{} \; ;
done
if [[ "$MATERIA_COLOR_VARIANT" == "standard" ]] ; then
COLOR_VARIANTS=","
COLOR_VARIANT="standard"
if [[ "$MATERIA_COLOR_VARIANT" == "standard" ]]; then
COLOR_VARIANTS=","
COLOR_VARIANT="standard"
fi
if [[ "$MATERIA_COLOR_VARIANT" == "light" ]] ; then
COLOR_VARIANTS="-light"
COLOR_VARIANT="light"
if [[ "$MATERIA_COLOR_VARIANT" == "light" ]]; then
COLOR_VARIANTS="-light"
COLOR_VARIANT="light"
fi
if [[ "$MATERIA_COLOR_VARIANT" == "dark" ]] ; then
COLOR_VARIANTS="-dark"
COLOR_VARIANT="dark"
if [[ "$MATERIA_COLOR_VARIANT" == "dark" ]]; then
COLOR_VARIANTS="-dark"
COLOR_VARIANT="dark"
fi
if [[ "$OPTION_GTK2_HIDPI" == "true" ]] ; then
mv ./src/gtk-2.0/main.rc.hidpi ./src/gtk-2.0/main.rc
if [[ "$OPTION_GTK2_HIDPI" == "true" ]]; then
mv ./src/gtk-2.0/main.rc.hidpi ./src/gtk-2.0/main.rc
fi
if [[ "$EXPORT_QT5CT" = 1 ]] ; then
config_home=${XDG_CONFIG_HOME:-"$HOME/.config"}
qt5ct_colors_dir="$config_home/qt5ct/colors/"
test -d "$qt5ct_colors_dir" || mkdir -p "$qt5ct_colors_dir"
mv ./src/qt5ct_palette.conf "$qt5ct_colors_dir/$OUTPUT_THEME_NAME.conf"
if [[ "$EXPORT_QT5CT" = 1 ]]; then
config_home=${XDG_CONFIG_HOME:-"$HOME/.config"}
qt5ct_colors_dir="$config_home/qt5ct/colors/"
test -d "$qt5ct_colors_dir" || mkdir -p "$qt5ct_colors_dir"
mv ./src/qt5ct_palette.conf "$qt5ct_colors_dir/$OUTPUT_THEME_NAME.conf"
fi
if [[ "$UNITY_DEFAULT_LAUNCHER_STYLE" == "true" ]] ; then
rm ./src/unity/launcher*.svg
if [[ "$UNITY_DEFAULT_LAUNCHER_STYLE" == "true" ]]; then
rm ./src/unity/launcher*.svg
fi
if [[ "$MATERIA_STYLE_COMPACT" == "true" ]] ; then
SIZE_VARIANTS="-compact"
SIZE_VARIANT="compact"
if [[ "$MATERIA_STYLE_COMPACT" == "true" ]]; then
SIZE_VARIANTS="-compact"
SIZE_VARIANT="compact"
else
SIZE_VARIANTS=","
SIZE_VARIANT="standard"
SIZE_VARIANTS=","
SIZE_VARIANT="standard"
fi
SIZE_VARIANTS="$SIZE_VARIANTS" COLOR_VARIANTS="$COLOR_VARIANTS" THEME_DIR_BASE="$DEST_PATH" ./parse-sass.sh
# NOTE we use the functions we already have in render-assets.sh
echo "== Rendering GTK+2 assets..."
if [[ "$MATERIA_COLOR_VARIANT" != "dark" ]] ; then
GTK2_HIDPI="$OPTION_GTK2_HIDPI" ./render-assets.sh gtk2-light
if [[ "$MATERIA_COLOR_VARIANT" != "dark" ]]; then
GTK2_HIDPI="$OPTION_GTK2_HIDPI" ./render-assets.sh gtk2-light
else
GTK2_HIDPI="$OPTION_GTK2_HIDPI" ./render-assets.sh gtk2-dark
GTK2_HIDPI="$OPTION_GTK2_HIDPI" ./render-assets.sh gtk2-dark
fi
echo "== Rendering GTK+3 assets..."
./install.sh --dest "$HOME/.themes" --name "${OUTPUT_THEME_NAME/\//-}" --color "$COLOR_VARIANT" --size "$SIZE_VARIANT"
GENERATED_PATH="$DEST_PATH$(tr -d ',' <<< "$COLOR_VARIANTS")$(tr -d ',' <<< "$SIZE_VARIANTS")"
if [[ "$GENERATED_PATH" != "$DEST_PATH" ]] ; then
if [[ -d "$DEST_PATH" ]] ; then
rm -r "$DEST_PATH"
fi
mv "$GENERATED_PATH" "$DEST_PATH"
if [[ "$GENERATED_PATH" != "$DEST_PATH" ]]; then
if [[ -d "$DEST_PATH" ]]; then
rm -r "$DEST_PATH"
fi
mv "$GENERATED_PATH" "$DEST_PATH"
fi
echo
set -ueo pipefail
#set -x
REPO_DIR=$(cd "$(dirname "$0")" && pwd)
SRC_DIR=$REPO_DIR/src
REPO_DIR="$(cd "$(dirname "$0")" && pwd)"
SRC_DIR="$REPO_DIR/src"
DEST_DIR=/usr/share/themes
THEME_NAME=Materia
DEST_DIR="/usr/share/themes"
THEME_NAME="Materia"
COLOR_VARIANTS=('' '-dark' '-light')
SIZE_VARIANTS=('' '-compact')
GTK_VERSIONS=('3.18' '3.20' '3.22')
GS_VERSIONS=('3.18' '3.24' '3.26' '3.28')
LATEST_GS_VERSION=${GS_VERSIONS[-1]}
LATEST_GS_VERSION="${GS_VERSIONS[-1]}"
# Set a proper gnome-shell theme version
if [[ $(which gnome-shell 2> /dev/null) ]]; then
CURRENT_GS_VERSION=$(gnome-shell --version | cut -d ' ' -f 3 | cut -d . -f -2)
if [[ "$(which gnome-shell 2> /dev/null)" ]]; then
CURRENT_GS_VERSION="$(gnome-shell --version | cut -d ' ' -f 3 | cut -d . -f -2)"
for version in "${GS_VERSIONS[@]}"; do
if (( $(bc <<< "$CURRENT_GS_VERSION <= $version") )); then
GS_VERSION=$version
if (( "$(bc <<< "$CURRENT_GS_VERSION <= $version")" )); then
GS_VERSION="$version"
break
elif (( $(bc <<< "$CURRENT_GS_VERSION > $LATEST_GS_VERSION") )); then
GS_VERSION=$LATEST_GS_VERSION
elif (( "$(bc <<< "$CURRENT_GS_VERSION > $LATEST_GS_VERSION")" )); then
GS_VERSION="$LATEST_GS_VERSION"
break
fi
done
else
GS_VERSION=$LATEST_GS_VERSION
GS_VERSION="$LATEST_GS_VERSION"
fi
usage() {
}
install() {
local dest=$1
local name=$2
local color=$3
local size=$4
local dest="$1"
local name="$2"
local color="$3"
local size="$4"
[[ "$color" == '-dark' ]] && local ELSE_DARK=$color
[[ "$color" == '-light' ]] && local ELSE_LIGHT=$color
[[ "$color" == '-dark' ]] && local ELSE_DARK="$color"
[[ "$color" == '-light' ]] && local ELSE_LIGHT="$color"
local THEME_DIR=$dest/$name$color$size
local THEME_DIR="$dest/$name$color$size"
# SC2115: Protect /.
[[ -d "$THEME_DIR" ]] && rm -rf "${THEME_DIR:?}"
# Bakup and install files related to GDM theme
install_gdm() {
local THEME_DIR=$1/$2$3$4
local GS_THEME_FILE=/usr/share/gnome-shell/gnome-shell-theme.gresource
local UBUNTU_THEME_FILE=/usr/share/gnome-shell/theme/ubuntu.css
local THEME_DIR="$1/$2$3$4"
local GS_THEME_FILE="/usr/share/gnome-shell/gnome-shell-theme.gresource"
local UBUNTU_THEME_FILE="/usr/share/gnome-shell/theme/ubuntu.css"
if [[ -f "$GS_THEME_FILE" ]] && [[ "$(which glib-compile-resources 2> /dev/null)" ]]; then
echo "Installing '$GS_THEME_FILE'..."
shift 2
;;
-g|--gdm)
gdm=true
gdm='true'
shift 1
;;
-c|--color)
done
done
if [[ "${gdm:-}" == true ]]; then
if [[ "${gdm:-}" == 'true' ]]; then
install_gdm "${dest:-$DEST_DIR}" "${_name:-$THEME_NAME}" "$color" "$size"
fi
gtk2_dark
;;
*)
echo "Unknown argument: '$1'"
echo "Unknown argument '$1'"
echo "Use 'chrome', 'gtk', 'gtk2', 'gtk2-light' or 'gtk2-dark' as an argument."
exit 1
;;
#set -x
darker_channel() {
value="$1"
light_delta="$2"
result=$(bc <<< "ibase=16; $value - $light_delta")
if [[ "$result" -lt 0 ]] ; then
result=0
fi
if [[ "$result" -gt 255 ]] ; then
result=255
fi
echo "$result"
value="$1"
light_delta="$2"
result="$(bc <<< "ibase=16; $value - $light_delta")"
if [[ "$result" -lt 0 ]]; then
result=0
fi
if [[ "$result" -gt 255 ]]; then
result=255
fi
echo "$result"
}
darker() {
hexinput=$(tr '[:lower:]' '[:upper:]' <<< "$1")
light_delta="${2-10}"
hexinput="$(tr '[:lower:]' '[:upper:]' <<< "$1")"
light_delta="${2-10}"
a="$(cut -c-2 <<< "$hexinput")"
b="$(cut -c3-4 <<< "$hexinput")"
c="$(cut -c5-6 <<< "$hexinput")"
a="$(cut -c-2 <<< "$hexinput")"
b="$(cut -c3-4 <<< "$hexinput")"
c="$(cut -c5-6 <<< "$hexinput")"
r="$(darker_channel "$a" "$light_delta")"
g="$(darker_channel "$b" "$light_delta")"
b="$(darker_channel "$c" "$light_delta")"
r="$(darker_channel "$a" "$light_delta")"
g="$(darker_channel "$b" "$light_delta")"
b="$(darker_channel "$c" "$light_delta")"
printf '%02x%02x%02x\n' "$r" "$g" "$b"
printf '%02x%02x%02x\n' "$r" "$g" "$b"
}
darker "$@"
#set -x
mix_channel() {
value1="$(printf '%03d' "0x$1")"
value2="$(printf '%03d' "0x$2")"
ratio="$3"
result=$(bc <<< "scale=0; ($value1 * 100 * $ratio + $value2 * 100 * (1 - $ratio))/100")
if [[ "$result" -lt 0 ]] ; then
result=0
elif [[ "$result" -gt 255 ]] ; then
result=255
fi
echo "$result"
value1="$(printf '%03d' "0x$1")"
value2="$(printf '%03d' "0x$2")"
ratio="$3"
result="$(bc <<< "scale=0; ($value1 * 100 * $ratio + $value2 * 100 * (1 - $ratio)) / 100")"
if [[ "$result" -lt 0 ]]; then
result=0
elif [[ "$result" -gt 255 ]]; then
result=255
fi
echo "$result"
}
mix() {
hexinput1=$(tr '[:lower:]' '[:upper:]' <<< "$1")
hexinput2=$(tr '[:lower:]' '[:upper:]' <<< "$2")
ratio="${3-0.5}"
hexinput1="$(tr '[:lower:]' '[:upper:]' <<< "$1")"
hexinput2="$(tr '[:lower:]' '[:upper:]' <<< "$2")"
ratio="${3-0.5}"
a="$(cut -c-2 <<< "$hexinput1")"
b="$(cut -c3-4 <<< "$hexinput1")"
c="$(cut -c5-6 <<< "$hexinput1")"
d="$(cut -c-2 <<< "$hexinput2")"
e="$(cut -c3-4 <<< "$hexinput2")"
f="$(cut -c5-6 <<< "$hexinput2")"
a="$(cut -c-2 <<< "$hexinput1")"
b="$(cut -c3-4 <<< "$hexinput1")"
c="$(cut -c5-6 <<< "$hexinput1")"
d="$(cut -c-2 <<< "$hexinput2")"
e="$(cut -c3-4 <<< "$hexinput2")"
f="$(cut -c5-6 <<< "$hexinput2")"
r="$(mix_channel "$a" "$d" "$ratio")"
g="$(mix_channel "$b" "$e" "$ratio")"
b="$(mix_channel "$c" "$f" "$ratio")"
r="$(mix_channel "$a" "$d" "$ratio")"
g="$(mix_channel "$b" "$e" "$ratio")"
b="$(mix_channel "$c" "$f" "$ratio")"
printf '%02x%02x%02x\n' "$r" "$g" "$b"
printf '%02x%02x%02x\n' "$r" "$g" "$b"
}
mix "$@"
i="$2"
GTK2_HIDPI=$(echo "${GTK2_HIDPI-False}" | tr '[:upper:]' '[:lower:]')
GTK2_HIDPI="$(echo "${GTK2_HIDPI-False}" | tr '[:upper:]' '[:lower:]')"
if [[ "${GTK2_HIDPI}" == "true" ]] ; then
EXTRA_OPTIONS=("--export-dpi=192")
else
echo "Rendering '$ASSETS_DIR/$i.png'"
"$INKSCAPE" --export-id="$i" \
--export-id-only \
${EXTRA_OPTIONS+"${EXTRA_OPTIONS[@]}"} \
"${EXTRA_OPTIONS+"${EXTRA_OPTIONS[@]}"}" \
--export-png="$ASSETS_DIR/$i.png" "$SRC_FILE" >/dev/null \
&& "$OPTIPNG" -o7 --quiet "$ASSETS_DIR/$i.png"
# FIXME: Multiple arguments should be allowed.
set -ueo pipefail
REPO_DIR=$(cd "$(dirname "$0")" && pwd)
SRC_DIR=$REPO_DIR/src
REPO_DIR="$(cd "$(dirname "$0")" && pwd)"
SRC_DIR="$REPO_DIR/src"
DEST_DIR=$HOME/.themes
THEME_NAME=Materia.dev
DEST_DIR="$HOME/.themes"
THEME_NAME="Materia.dev"
# shellcheck disable=SC2034 # will this be used later?
COLOR_VARIANTS=('' '-dark' '-light')
# shellcheck disable=SC2034 # will this be used later?
GTK_VERSIONS=('3.18' '3.20' '3.22')
GS_VERSIONS=('3.18' '3.24' '3.26' '3.28')
LATEST_GS_VERSION=${GS_VERSIONS[-1]}
LATEST_GS_VERSION="${GS_VERSIONS[-1]}"
# Set a proper gnome-shell theme version
if [[ $(which gnome-shell 2> /dev/null) ]]; then
CURRENT_GS_VERSION=$(gnome-shell --version | cut -d ' ' -f 3 | cut -d . -f -2)
if [[ "$(which gnome-shell 2> /dev/null)" ]]; then
CURRENT_GS_VERSION="$(gnome-shell --version | cut -d ' ' -f 3 | cut -d . -f -2)"
for version in "${GS_VERSIONS[@]}"; do
if (( $(bc <<< "$CURRENT_GS_VERSION <= $version") )); then
GS_VERSION=$version
if (( "$(bc <<< "$CURRENT_GS_VERSION <= $version")" )); then
GS_VERSION="$version"
break
elif (( $(bc <<< "$CURRENT_GS_VERSION > $LATEST_GS_VERSION") )); then
GS_VERSION=$LATEST_GS_VERSION
elif (( "$(bc <<< "$CURRENT_GS_VERSION > $LATEST_GS_VERSION")" )); then
GS_VERSION="$LATEST_GS_VERSION"
break
fi
done
else
GS_VERSION=$LATEST_GS_VERSION
GS_VERSION="$LATEST_GS_VERSION"
fi
test() {
local color=$1
local size=$2
local color="$1"
local size="$2"
[[ "$color" == '-dark' ]] && local ELSE_DARK=$color
[[ "$color" == '-light' ]] && local ELSE_LIGHT=$color
[[ "$color" == '-dark' ]] && local ELSE_DARK="$color"
[[ "$color" == '-light' ]] && local ELSE_LIGHT="$color"
local THEME_DIR="${DEST_DIR:?}/$THEME_NAME$color$size"
ln -s "$SRC_DIR/xfwm4/"{*.svg,themerc} "$THEME_DIR/xfwm4"
ln -sT "$SRC_DIR/xfwm4/assets${ELSE_LIGHT:-}" "$THEME_DIR/xfwm4/assets"
echo Installed to "$THEME_DIR"
echo "Installed to '$THEME_DIR'"
}
case "${1:-}" in
rm -rf "${DEST_DIR:?}/$THEME_NAME"{,-compact,-dark,-dark-compact,-light,-light-compact}
;;
*)
echo "Invalid argument: ${1:-}"
echo "Valid arguments are: compact dark dark-compact light light-compact all uninstall"
echo "Invalid argument: '${1:-}'"
echo "Valid arguments are: 'compact' 'dark' 'dark-compact' 'light' 'light-compact' 'all' 'uninstall'"
;;
esac