Files
2026-09-14 12:43:38 +02:00

227 lines
7.4 KiB
Bash
Executable File

#!/bin/bash
CUR_DIR=$(pwd)
THEMES_PROJECT_FOLDER="/home/lucas/Documents/Dokumente/Projekte/Handy/ThemeProject"
UNZIP=false
BUILD=false
FIND=false
FONT="DroidSans"
BUILD_NC_THEME=false
THEME_NAME="SolarSystemTheme"
usage() {
printf "Usage:
-build\t\tBuild the Theme
-build_NC\t\tBuild the NextCloud Theme
-unzip\t\tUnzip com.* folders in the Theme Project Folder
-name <name>\tAlternate Theme Name(Default: SolarSystemTheme)
-font <name>
-f <arg>\tFind arg in Theme Files
-p <path>\tPath of the Theme Project Folder(default: quiethost path)
-h\t\tDisplay Usage
-help\tDisplay Usage\n"
}
get_config() {
while [[ ${1:0:1} == - ]]; do
echo "Param: $1"
[[ $1 == -build ]] && {
BUILD=true
shift 1;
continue;
};
[[ $1 == -build_NC ]] && {
BUILD_NC_THEME=true
shift 1;
continue;
};
[[ $1 == -name ]] && {
if [ "$2" == "" ]; then echo "Too few arguments"; usage; exit; fi
THEME_NAME="$2"
shift 2;
continue;
};
[[ $1 == -font ]] && {
FIND=true
if [ "$2" == "" ]; then echo "Too few arguments"; usage; exit; fi
FONT="$(echo $2 | sed 's/.ttf//g')"
shift 2;
continue;
};
[[ $1 == -f ]] && {
FIND=true
if [ "$2" == "" ]; then echo "Too few arguments"; usage; exit; fi
FIND_arg="$2"
shift 2;
continue;
};
[[ $1 == -p ]] && {
if [ "$2" == "" ]; then
printf "Too few arguments\nPath: ${THEMES_PROJECT_FOLDER}\n"
shift 1
continue
fi
THEMES_PROJECT_FOLDER="$2"
shift 2;
continue;
};
[[ $1 == -unzip ]] && {
UNZIP=true
shift 1;
continue;
};
[[ $1 == -help ]] && {
usage
exit
};
echo "Parameter $1 discarded"
usage
shift 1;
done
}
build_theme() {
date=$(date +"%m%d%H%M%S")
if [ -d ".${THEME_NAME}_BUFF" ]; then
rm -dr .${THEME_NAME}_BUFF
fi
mkdir .${THEME_NAME}_BUFF
echo "${CUR_DIR}"
echo "Contacts Background"
ICON_str="${THEME_NAME}/ContactsBG/ContactsBG"
if [ -d "${THEME_NAME}/ContactsBG" ]; then
if [ "$(ls ${ICON_str}*png)" != "" ]; then
echo "Choose random Contacts Background"
RAND_NUM=$(($RANDOM % $(ls ${THEME_NAME}/ContactsBG/*png | wc -l) + 1 ))
echo "${ICON_str}${RAND_NUM}.png"
cp ${ICON_str}${RAND_NUM}.png ${THEME_NAME}/com.android.contacts/res/drawable-xxhdpi/contact_detail_list_background.9.png
cp ${ICON_str}${RAND_NUM}.png ${THEME_NAME}/framework-res-hwext/res/drawable-xxhdpi/background_emui.9.png
fi
fi
for folder in $(ls -d ${THEME_NAME}/com.*); do
folder="$(echo "${folder}" | rev | cut -f1 -d'/' | rev)"
echo ${folder}
if [ -d ".${THEME_NAME}_BUFF/${folder}" ]; then
rm -dr .${THEME_NAME}_BUFF/${folder}
fi
cp -r ${THEME_NAME}/framework-res-hwext ${THEME_NAME}/${folder}
cd ${THEME_NAME}/${folder}
zip -q -r ${folder} *
mv ${folder} ../../.${THEME_NAME}_BUFF/${folder}
cd ${THEMES_PROJECT_FOLDER}
rm -dr ${THEME_NAME}/${folder}/framework-res-hwext
done
if [ -f ".${THEME_NAME}_BUFF/icons" ]; then
rm .${THEME_NAME}_BUFF/icons
fi
echo "Icons"
ICON=("Toshl" "FoE" "Hangar")
HUAWEI_name=("com.thirdframestudios.android.expensoor.png" "com.innogames.foeandroid.png" "me.calebjones.spacelaunchnow.png")
for (( i=0 ; i<${#ICON[@]} ; i++ )); do
ICON_str="${THEME_NAME}/${ICON[$i]}/${ICON[$i]}"
if [ -d "${THEME_NAME}/${ICON[$i]}" ]; then
if [ "$(ls ${ICON_str}*png)" != "" ]; then
echo "Choose random ${ICON[$i]} Icon"
cp ${ICON_str}$(($RANDOM % $(ls ${ICON_str}*png | wc -l) + 1 )).png ${THEME_NAME}/icons/${HUAWEI_name[$i]}
fi
fi
done
cd ${THEME_NAME}/icons
zip -q -r icons.zip *
mv icons.zip ../../.${THEME_NAME}_BUFF/icons
cd ${THEMES_PROJECT_FOLDER}
if [ -f "${THEME_NAME}.zip" ]; then
rm ${THEME_NAME}.zip
fi
echo "Preview, Unlock, Wallpaper, font and description.xml"
if [ -f "${THEME_NAME}/fonts/${FONT}.ttf" ]; then
echo "Use font ${FONT}"
mkdir .${THEME_NAME}_BUFF/fonts
cp ${THEME_NAME}/fonts/${FONT}.ttf .${THEME_NAME}_BUFF/fonts/${FONT}Chinese.ttf
else
echo "Font ${RONT} not available"
fi
cp -r ${THEME_NAME}/preview .${THEME_NAME}_BUFF/
cp -r ${THEME_NAME}/unlock .${THEME_NAME}_BUFF/
cp -r ${THEME_NAME}/wallpaper .${THEME_NAME}_BUFF/
cp -r ${THEME_NAME}/description.xml .${THEME_NAME}_BUFF/
cd .${THEME_NAME}_BUFF
echo "Create ${THEME_NAME}_${date}.hwt"
sed -i 's/Theme<\/title/Theme_'"${date}"'<\/title/g' description.xml
zip -q -r ${THEME_NAME}.zip *
cp ${THEME_NAME}.zip ../${THEME_NAME}_${date}.hwt
cd ${THEMES_PROJECT_FOLDER}
echo "Remove Smartphone themecache, .cache and old ${THEME_NAME}s"
if [ "$(find /run/user/$(id -u $(whoami))/gvfs/mtp:host*/Inter*/Huawei/Themes/ -name "${THEME_NAME}*")" != "" ]; then
rm /run/user/$(id -u $(whoami))/gvfs/mtp:host*/Inter*/Huawei/Themes/${THEME_NAME}*
fi
if [ -d /run/user/$(id -u $(whoami))/gvfs/mtp:host*/Inter*/Huawei/Themes/themecache ]; then
rm -dr /run/user/$(id -u $(whoami))/gvfs/mtp:host*/Inter*/Huawei/Themes/themecache
fi
if [ -d /run/user/$(id -u $(whoami))/gvfs/mtp:host*/Inter*/Huawei/Themes/.cache ]; then
rm -dr /run/user/$(id -u $(whoami))/gvfs/mtp:host*/Inter*/Huawei/Themes/.cache
fi
echo "Transfer Theme to Smartphone"
cp --no-preserve=ownership,timestamps ${THEME_NAME}_${date}.hwt /run/user/$(id -u $(whoami))/gvfs/mtp:host*/Inter*/Huawei/Themes/
echo "Move local Theme to NC"
cp ${THEME_NAME}_${date}.hwt ${THEME_NAME}/${THEME_NAME}.hwt
rm -dr .${THEME_NAME}_BUFF
}
unzip_com() {
CUR_DIR="$(pwd)"
rm -dr ${THEME_NAME}/*
unzip ${THEME_NAME}.hwt -d ${THEME_NAME}/
for folder in $(ls -d ${THEME_NAME}/com.*); do
folder="$(echo "${folder}" | rev | cut -f1 -d'/' | rev)"
echo ${folder}
if [ -d "${THEME_NAME}/${folder}" ]; then
echo "${folder} is a Directory"
exit
fi
if [ -d "${THEME_NAME}/buf_${folder}" ]; then
rm -dr buf_${folder}
fi
cd ${THEME_NAME}
unzip -q ${folder} -d buf_${folder}
rm ${folder}
if [ -d "buf_${folder}" ];then
mv buf_${folder} ${folder}
fi
if [ -d "${folder}/framework-res-hwext" ];then
cp -r ${folder}/framework-res-hwext framework-res-hwext_${folder}
rm -dr ${folder}/framework-res-hwext
fi
cd ${CUR_DIR}
done
unzip ${THEME_NAME}/icons -d ${THEME_NAME}/icons_buff
rm ${THEME_NAME}/icons
mv ${THEME_NAME}/icons_buff ${THEME_NAME}/icons
}
find_themes() {
grep "${FIND_arg}" -r ${THEME_NAME}/*
}
build_NC_theme() {
NC_THEME_DIR="/home/lucas/Documents/Dokumente/Projekte/Server/serverhost/NextCloudThemes/"
theme_NUM=2
rsync -rlvz --delete ${NC_THEME_DIR}${THEME_NAME}${theme_NUM}/* /nextcloud/nextcloud/themes/${THEME_NAME}/
sudo chown -R www-data /nextcloud/nextcloud/themes/${THEME_NAME}
sudo chgrp -R www-data /nextcloud/nextcloud/themes/${THEME_NAME}
}
sync_image() {
echo "Sync Nextcloud"
if [ $(id -u) -eq 0 ]; then
sudo -u lucas /usr/bin/syncNC -t > /dev/null 2>&1
else
/usr/bin/syncNC -t > /dev/null 2>&1
fi
}
if [ $# -lt 1 ]; then usage; fi
get_config "$@"
echo "Move to ${THEMES_PROJECT_FOLDER}"
sync_image
cd ${THEMES_PROJECT_FOLDER}
if ${BUILD}; then build_theme; fi
if ${UNZIP}; then unzip_com; fi
if ${FIND}; then find_themes; fi
if ${BUILD_NC_THEME}; then build_NC_theme; fi
cd ${CUR_DIR}
sync_image