mirror of
https://github.com/xsghetti/HyprCrux.git
synced 2025-07-03 05:40:38 -04:00
Install Script Testing
This commit is contained in:
parent
a523ee2b13
commit
a11d325a19
21 changed files with 1580 additions and 0 deletions
157
Scripts/themepatcher.sh
Normal file
157
Scripts/themepatcher.sh
Normal file
|
@ -0,0 +1,157 @@
|
|||
#!/bin/bash
|
||||
#|---/ /+------------------------------+---/ /|#
|
||||
#|--/ /-| Script to patch custom theme |--/ /-|#
|
||||
#|-/ /--| kRHYME7 |-/ /--|#
|
||||
#|/ /---+------------------------------+/ /---|#
|
||||
|
||||
source global_fn.sh
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "Error: unable to source global_fn.sh, please execute from $(dirname "$(realpath "$0")")..."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
set +e
|
||||
|
||||
|
||||
# error function
|
||||
ask_help(){
|
||||
cat << HELP
|
||||
...Usage...
|
||||
$0 "Theme-Name" "/Path/to/Configs"
|
||||
$0 "Theme-Name" "https://github.com/User/Repository"
|
||||
$0 "Theme-Name" "https://github.com/User/Repository/tree/branch"
|
||||
HELP
|
||||
}
|
||||
|
||||
if [[ -z $1 || -z $2 ]]; then ask_help ; exit 1 ; fi
|
||||
|
||||
|
||||
# set parameters
|
||||
Fav_Theme="$1"
|
||||
|
||||
if [ -d "$2" ]; then
|
||||
Theme_Dir="$2"
|
||||
|
||||
else Git_Repo=${2%/}
|
||||
if echo "$Git_Repo" | grep -q "/tree/"; then
|
||||
branch=${Git_Repo#*tree/} Git_Repo=${Git_Repo%/tree/*}
|
||||
else branches=$(curl -s "https://api.github.com/repos/${Git_Repo#*://*/}/branches" | jq -r '.[].name') ; branches=($branches)
|
||||
if [[ ${#branches[@]} -le 1 ]]; then
|
||||
branch=${branches[0]}
|
||||
else echo "Select a Branch"
|
||||
select branch in "${branches[@]}"; do [[ -n $branch ]] && break || echo "Invalid selection. Please try again." ; done
|
||||
fi
|
||||
fi
|
||||
|
||||
Git_Path=${Git_Repo#*://*/} Git_Owner=${Git_Path%/*} branch_dir=${branch//\//_}
|
||||
Theme_Dir="$HOME/Clone/HyprdotsPatch-$branch_dir"
|
||||
|
||||
if [ -d "$Theme_Dir" ]; then
|
||||
echo "Directory $Theme_Dir already exists. Using existing directory."
|
||||
if cd "$Theme_Dir"; then
|
||||
git stash 2> /dev/null ; git pull ; git stash pop 2> /dev/null ; cd -
|
||||
else
|
||||
echo -e "\033[0;31mCould not navigate to $Theme_Dir. Skipping git pull.\033[0m"
|
||||
fi
|
||||
else
|
||||
echo "Directory $Theme_Dir does not exist. Cloning repository into new directory."
|
||||
git clone -b "$branch" --depth 1 "$Git_Repo" "$Theme_Dir"
|
||||
if [ $? -ne 0 ]; then echo "Git clone failed" ; exit 1 ; fi
|
||||
fi
|
||||
fi
|
||||
|
||||
echo -e "\nPatching \033[0;32m--//${Fav_Theme}//--\033[0m from \033[0;34m${Theme_Dir}\033[0m\n"
|
||||
|
||||
|
||||
# required theme files
|
||||
config=( #!Hard Coded here to atleast Strictly meet requirements.
|
||||
".config/hypr/themes/$Fav_Theme.conf"
|
||||
".config/kitty/themes/$Fav_Theme.conf"
|
||||
".config/Kvantum/$Fav_Theme/$Fav_Theme.kvconfig"
|
||||
".config/Kvantum/$Fav_Theme/$Fav_Theme.svg"
|
||||
".config/qt5ct/colors/$Fav_Theme.conf"
|
||||
".config/qt6ct/colors/$Fav_Theme.conf"
|
||||
".config/rofi/themes/$Fav_Theme.rasi"
|
||||
".config/swww/$Fav_Theme/"
|
||||
".config/waybar/themes/$Fav_Theme.css"
|
||||
)
|
||||
|
||||
|
||||
# Loop through the config and check if these exist
|
||||
for fchk in "${config[@]}"; do
|
||||
if [[ -e "${Theme_Dir}/Configs/${fchk}" ]]; then
|
||||
echo -e "\033[0;32m[OK]\033[0m ${fchk}"
|
||||
else
|
||||
echo -e "\033[0;31m[ERROR]\033[0m ${fchk} --> does not exist in ${Theme_Dir}/Configs/"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
mapfile -d '' Wallist < <(find ${Theme_Dir}/Configs/.config/swww/"${Fav_Theme}"/ -type f \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" \) -print0 | sort -z)
|
||||
|
||||
if [ "${#Wallist[@]}" -eq 0 ] ; then
|
||||
echo -e "\033[0;31m[ERROR]\033[0m No wallpaper found in ${Theme_Dir}/Configs/.config/swww/"
|
||||
exit 1
|
||||
else
|
||||
WallSet=$(basename "${Wallist[0]}")
|
||||
echo -e "\nDefault wallpaper selected : \"${WallSet}\"\n"
|
||||
fi
|
||||
|
||||
|
||||
# extract arcs
|
||||
prefix=("Gtk" "Font" "Icon" "Cursor")
|
||||
declare -A TrgtDir
|
||||
TrgtDir["Gtk"]="$HOME/.themes" #mandatory
|
||||
TrgtDir["Font"]="${XDG_DATA_HOME:-$HOME/.local/share}/fonts" #optional
|
||||
TrgtDir["Icon"]="$HOME/.icons" #optional
|
||||
TrgtDir["Cursor"]="$HOME/.icons" #optional
|
||||
postfx=("tar.xz" "tar.gz")
|
||||
GtkFlag=0
|
||||
|
||||
|
||||
# Loop over the themes and extensions
|
||||
for pre in "${prefix[@]}"; do
|
||||
for ext in "${postfx[@]}"; do
|
||||
if [ -f "${Theme_Dir}/Source/arcs/${pre}_${Fav_Theme}.${ext}" ] ; then
|
||||
echo -e "\033[0;32m[Extacting]\033[0m ${Theme_Dir}/Source/arcs/${pre}_${Fav_Theme}.${ext} --> ${TrgtDir[$pre]}"
|
||||
tar -xf "${Theme_Dir}/Source/arcs/${pre}_${Fav_Theme}.${ext}" -C "${TrgtDir[$pre]}"
|
||||
if [ ${pre} == "Gtk" ] ; then
|
||||
GtkFlag=1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
if [ ${GtkFlag} -eq 0 ] ; then
|
||||
echo -e "\033[0;31m[ERROR]\033[0m Gtk pack not found --> ${Theme_Dir}/Source/arcs/${pre}_${Fav_Theme}.${ext}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
fc-cache -f
|
||||
|
||||
|
||||
# generate restore_cfg control
|
||||
cat << THEME > "${Fav_Theme}restore_cfg.lst"
|
||||
Y|Y|${HOME}/.config/hypr/themes|${Fav_Theme}.conf|hyprland
|
||||
Y|Y|${HOME}/.config/kitty/themes|${Fav_Theme}.conf|kitty
|
||||
Y|Y|${HOME}/.config/Kvantum|${Fav_Theme}|kvantum
|
||||
Y|Y|${HOME}/.config/qt5ct/colors|${Fav_Theme}.conf|qt5ct
|
||||
Y|Y|${HOME}/.config/qt6ct/colors|${Fav_Theme}.conf|qt6ct
|
||||
Y|Y|${HOME}/.config/rofi/themes|${Fav_Theme}.rasi|rofi
|
||||
Y|N|${HOME}/.config/swww|${Fav_Theme}|swww
|
||||
Y|Y|${HOME}/.config/waybar/themes|${Fav_Theme}.css|waybar
|
||||
THEME
|
||||
|
||||
if grep -q "^.|${Fav_Theme}|" "${ThemeCtl}" ; then
|
||||
awk -F '|' -v thm="${Fav_Theme}" -v cde="$3" '{OFS=FS} $2 == thm {$3 = cde} {print}' "${ThemeCtl}" > tmp && mv tmp "${ThemeCtl}"
|
||||
else
|
||||
echo "0|${Fav_Theme}|${3}|~/.config/swww/${Fav_Theme}/${WallSet}" >> "${ThemeCtl}"
|
||||
fi
|
||||
|
||||
|
||||
# restore configs with theme override
|
||||
echo -e "\033[0;32m[Restoring]\033[0m restore_cfg.sh \"${Fav_Theme}\" \"${Theme_Dir}/Configs\"\n"
|
||||
./restore_cfg.sh "$Fav_Theme" "$Theme_Dir/Configs"
|
||||
|
||||
rm "${Fav_Theme}restore_cfg.lst"
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue