2021-04-08 02:09:27 +02:00
|
|
|
# WARNING: Please make this shell not working-directory dependant, for example
|
2021-06-03 01:43:49 +02:00
|
|
|
# instead of using 'ls blabla', use 'ls "${REPO_DIR}/blabla"'
|
2021-04-08 02:09:27 +02:00
|
|
|
#
|
|
|
|
# WARNING: Don't use "cd" in this shell, use it in a subshell instead,
|
|
|
|
# for example ( cd blabla && do_blabla ) or $( cd .. && do_blabla )
|
|
|
|
|
|
|
|
###############################################################################
|
|
|
|
# VARIABLES #
|
|
|
|
###############################################################################
|
|
|
|
|
|
|
|
source "${REPO_DIR}/lib-core.sh"
|
2021-06-02 18:04:59 +02:00
|
|
|
WHITESUR_SOURCE+=("lib-install.sh")
|
2021-04-08 02:09:27 +02:00
|
|
|
|
|
|
|
###############################################################################
|
|
|
|
# DEPENDENCIES #
|
|
|
|
###############################################################################
|
|
|
|
|
2021-06-09 03:14:30 +02:00
|
|
|
# Be careful of some distro mechanism, some of them use rolling-release
|
|
|
|
# based installation instead of point-release, e.g., Arch Linux
|
|
|
|
|
|
|
|
# Rolling-release based distro doesn't have a seprate repo for each different
|
|
|
|
# build. This can cause a system call error since an app require the compatible
|
|
|
|
# version of dependencies. In other words, if you install an new app (which you
|
|
|
|
# definitely reinstall/upgrade the dependency for that app), but your other
|
|
|
|
# dependencies are old/expired, you'll end up with broken system.
|
|
|
|
|
|
|
|
# That's why we need a full system upgrade there
|
|
|
|
|
|
|
|
#---------------------SWUPD--------------------#
|
|
|
|
# 'swupd' bundles just don't make any sense. It takes about 30GB of space only
|
|
|
|
# for installing a util, e.g. 'sassc' (from 'desktop-dev' bundle, or
|
|
|
|
# 'os-utils-gui-dev' bundle, or any other 'sassc' provider bundle)
|
|
|
|
|
2021-06-10 03:51:40 +02:00
|
|
|
# Manual package installation is needed for that, but please don't use 'dnf'.
|
|
|
|
# The known worst impact of using 'dnf' is you install 'sassc' and then you
|
|
|
|
# remove it, and you run 'sudo dnf upgrade', and boom! Your 'sudo' and other
|
|
|
|
# system utilities have gone!
|
2021-06-09 03:14:30 +02:00
|
|
|
|
2021-06-11 04:17:28 +02:00
|
|
|
#----------------------APT---------------------#
|
|
|
|
# Some apt version doesn't update the repo list before it install some app.
|
|
|
|
# It may cause "unable to fetch..." when you're trying to install them
|
|
|
|
|
2021-06-14 03:02:52 +02:00
|
|
|
#--------------------PACMAN--------------------#
|
|
|
|
# 'Syu' (with a single y) may causes "could not open ... decompression failed"
|
|
|
|
# and "target not found <package>". We got to force 'pacman' to update the repos
|
|
|
|
|
2021-06-11 13:59:07 +02:00
|
|
|
#--------------------OTHERS--------------------#
|
2021-06-11 10:04:34 +02:00
|
|
|
# Sometimes, some Ubuntu distro doesn't enable automatic time. This can cause
|
2021-06-11 13:59:07 +02:00
|
|
|
# 'Release file for ... is not valid yet'. This may also happen on other distros
|
2021-06-11 10:04:34 +02:00
|
|
|
|
2021-06-11 13:59:07 +02:00
|
|
|
#============================================#
|
|
|
|
|
|
|
|
#-------------------Prepare------------------#
|
2021-06-08 16:03:41 +02:00
|
|
|
installation_sorry() {
|
|
|
|
prompt -w "WARNING: We're sorry, your distro isn't officially supported yet."
|
|
|
|
prompt -i "INSTRUCTION: Please make sure you have installed all of the required dependencies. We'll continue the installation in 15 seconds"
|
|
|
|
prompt -i "INSTRUCTION: Press 'ctrl'+'c' to cancel the installation if you haven't install them yet"
|
|
|
|
start_animation; sleep 15; stop_animation
|
|
|
|
}
|
|
|
|
|
2021-06-11 13:59:07 +02:00
|
|
|
prepare_deps() {
|
2021-06-12 09:01:28 +02:00
|
|
|
local remote_time=""
|
|
|
|
local local_time=""
|
|
|
|
|
|
|
|
prompt -i "DEPS: Checking your internet connection..."
|
|
|
|
|
2021-06-14 03:02:52 +02:00
|
|
|
local_time="$(date -u "+%s")"
|
|
|
|
|
|
|
|
if ! remote_time="$(get_utc_epoch_time)"; then
|
2021-06-12 09:01:28 +02:00
|
|
|
prompt -e "DEPS ERROR: You have an internet connection issue\n"; exit 1
|
|
|
|
fi
|
|
|
|
|
2021-06-14 03:02:52 +02:00
|
|
|
# 5 minutes is the maximum reasonable time delay, so we choose '4' here just
|
|
|
|
# in case
|
|
|
|
if (( local_time < remote_time-(4*60) )); then
|
2021-06-12 09:01:28 +02:00
|
|
|
prompt -w "DEPS: Your system clock is wrong"
|
|
|
|
prompt -i "DEPS: Updating your system clock..."
|
2021-06-14 03:02:52 +02:00
|
|
|
# Add "+ 25" here to accomodate potential time delay by sudo prompt
|
|
|
|
sudo date -s "@$((remote_time + 25))"; sudo hwclock --systohc
|
2021-06-11 13:59:07 +02:00
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2021-06-08 04:53:53 +02:00
|
|
|
prepare_swupd() {
|
2021-06-10 10:54:13 +02:00
|
|
|
[[ "${swupd_prepared}" == "true" ]] && return 0
|
|
|
|
|
2021-06-09 03:14:30 +02:00
|
|
|
local remove=""
|
|
|
|
local ver=""
|
|
|
|
local conf=""
|
|
|
|
local dist=""
|
2021-06-08 04:53:53 +02:00
|
|
|
|
2021-06-09 03:14:30 +02:00
|
|
|
if has_command dnf; then
|
2021-06-12 05:07:19 +02:00
|
|
|
prompt -w "CLEAR LINUX: You have 'dnf' installed in your system. It may break your system especially when you remove a package"
|
2021-06-11 07:11:02 +02:00
|
|
|
confirm remove "CLEAR LINUX: You wanna remove it?"; echo
|
2021-06-09 03:14:30 +02:00
|
|
|
fi
|
|
|
|
|
2021-06-10 05:57:01 +02:00
|
|
|
if ! sudo swupd update -y; then
|
2021-06-09 11:48:52 +02:00
|
|
|
ver="$(curl -s -o - "${swupd_ver_url}")"
|
2021-06-09 03:14:30 +02:00
|
|
|
dist="NAME=\"Clear Linux OS\"\nVERSION=1\nID=clear-linux-os\nID_LIKE=clear-linux-os\n"
|
|
|
|
dist+="VERSION_ID=${ver}\nANSI_COLOR=\"1;35\"\nSUPPORT_URL=\"https://clearlinux.org\"\nBUILD_ID=${ver}"
|
2021-06-08 04:53:53 +02:00
|
|
|
|
2021-06-10 03:51:40 +02:00
|
|
|
prompt -w "\n CLEAR LINUX: Your 'swupd' is broken"
|
2021-06-09 18:53:49 +02:00
|
|
|
prompt -i "CLEAR LINUX: Patching 'swupd' distro version detection and try again...\n"
|
2021-06-10 05:57:01 +02:00
|
|
|
sudo rm -rf "/etc/os-release"; echo -e "${dist}" | sudo tee "/usr/lib/os-release" > /dev/null
|
|
|
|
sudo ln -s "/usr/lib/os-release" "/etc/os-release"
|
2021-06-09 03:14:30 +02:00
|
|
|
|
2021-06-10 05:57:01 +02:00
|
|
|
sudo swupd update -y
|
2021-06-09 03:14:30 +02:00
|
|
|
fi
|
|
|
|
|
2021-06-10 05:57:01 +02:00
|
|
|
if ! has_command bsdtar; then sudo swupd bundle-add libarchive; fi
|
|
|
|
if [[ "${remove}" == "y" ]]; then sudo swupd bundle-remove -y dnf; fi
|
2021-06-10 10:54:13 +02:00
|
|
|
|
|
|
|
swupd_prepared="true"
|
2021-06-09 03:14:30 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
install_swupd_packages() {
|
|
|
|
if [[ ! "${swupd_packages}" ]]; then
|
2021-06-09 11:48:52 +02:00
|
|
|
swupd_packages="$(curl -s -o - "${swupd_url}" | awk -F '"' '/-bin-|-lib-/{print $2}')"
|
2021-06-09 03:14:30 +02:00
|
|
|
fi
|
|
|
|
|
|
|
|
for key in "${@}"; do
|
|
|
|
for pkg in $(echo "${swupd_packages}" | grep -F "${key}"); do
|
2021-06-10 05:57:01 +02:00
|
|
|
curl -s -o - "${swupd_url}/${pkg}" | sudo bsdtar -xf - -C "/"
|
2021-06-09 03:14:30 +02:00
|
|
|
done
|
|
|
|
done
|
2021-06-08 04:53:53 +02:00
|
|
|
}
|
|
|
|
|
2021-06-12 05:07:19 +02:00
|
|
|
prepare_install_apt_packages() {
|
2021-06-12 05:37:11 +02:00
|
|
|
local status="0"
|
2021-06-11 15:48:43 +02:00
|
|
|
|
2021-06-12 05:37:11 +02:00
|
|
|
sudo apt update -y; sudo apt install -y "${@}" || status="${?}"
|
2021-06-12 05:25:56 +02:00
|
|
|
|
|
|
|
if [[ "${status}" == "100" ]]; then
|
2021-06-12 05:07:19 +02:00
|
|
|
prompt -w "\n APT: Your repo lists might be broken"
|
2021-06-11 15:48:43 +02:00
|
|
|
prompt -i "APT: Full-cleaning your repo lists and try again...\n"
|
2021-06-12 05:07:19 +02:00
|
|
|
sudo apt clean -y; sudo rm -rf /var/lib/apt/lists
|
|
|
|
sudo apt update -y; sudo apt install -y "${@}"
|
2021-06-11 15:48:43 +02:00
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2021-06-08 04:53:53 +02:00
|
|
|
prepare_xbps() {
|
2021-06-10 10:54:13 +02:00
|
|
|
[[ "${xbps_prepared}" == "true" ]] && return 0
|
|
|
|
|
2021-06-11 02:16:45 +02:00
|
|
|
# 'xbps-install' requires 'xbps' to be always up-to-date
|
|
|
|
sudo xbps-install -Syu xbps
|
2021-06-10 10:54:13 +02:00
|
|
|
|
2021-06-11 07:11:02 +02:00
|
|
|
# System upgrading can't remove the old kernel files by it self. It eats the
|
|
|
|
# boot partition and may cause kernel panic when there is no enough space
|
|
|
|
sudo vkpurge rm all; sudo xbps-install -Syu
|
|
|
|
|
2021-06-10 10:54:13 +02:00
|
|
|
xbps_prepared="true"
|
2021-06-08 04:53:53 +02:00
|
|
|
}
|
|
|
|
|
2021-06-11 13:59:07 +02:00
|
|
|
#-----------------Deps-----------------#
|
|
|
|
|
2021-04-08 02:09:27 +02:00
|
|
|
install_theme_deps() {
|
2021-06-13 01:59:11 +02:00
|
|
|
if ! has_command glib-compile-resources || ! has_command sassc || ! has_command xmllint; then
|
|
|
|
prompt -w "DEPS: 'glib2.0', 'sassc', and 'xmllint' are required for theme installation."
|
2021-06-11 13:59:07 +02:00
|
|
|
prepare_deps
|
2021-04-08 02:09:27 +02:00
|
|
|
|
|
|
|
if has_command zypper; then
|
2021-06-13 01:59:11 +02:00
|
|
|
sudo zypper in -y sassc glib2-devel libxml2-tools
|
2021-06-08 01:08:06 +02:00
|
|
|
elif has_command swupd; then
|
|
|
|
# Rolling release
|
2021-06-10 05:57:01 +02:00
|
|
|
prepare_swupd && sudo swupd bundle-add libglib libxml2 && install_swupd_packages sassc libsass
|
2021-04-08 02:09:27 +02:00
|
|
|
elif has_command apt; then
|
2021-06-13 01:59:11 +02:00
|
|
|
prepare_install_apt_packages sassc libglib2.0-dev-bin libxml2-utils
|
2021-04-08 02:09:27 +02:00
|
|
|
elif has_command dnf; then
|
2021-06-13 01:59:11 +02:00
|
|
|
sudo dnf install -y sassc glib2-devel libxml2
|
2021-04-08 02:09:27 +02:00
|
|
|
elif has_command yum; then
|
2021-06-13 01:59:11 +02:00
|
|
|
sudo yum install -y sassc glib2-devel libxml2
|
2021-04-08 02:09:27 +02:00
|
|
|
elif has_command pacman; then
|
2021-06-07 03:32:52 +02:00
|
|
|
# Rolling release
|
2021-06-13 01:59:11 +02:00
|
|
|
sudo pacman -Syyu --noconfirm --needed sassc glib2 libxml2
|
2021-06-07 03:32:52 +02:00
|
|
|
elif has_command xbps-install; then
|
|
|
|
# Rolling release
|
2021-06-08 04:53:53 +02:00
|
|
|
# 'libxml2' is already included here, and it's gonna broke the installation
|
|
|
|
# if you add it
|
2021-06-13 01:59:11 +02:00
|
|
|
prepare_xbps && sudo xbps-install -Sy sassc glib-devel
|
2021-06-25 08:41:42 +02:00
|
|
|
elif has_command eopkg; then
|
|
|
|
# Rolling release
|
2021-06-25 10:16:50 +02:00
|
|
|
sudo eopkg -y upgrade; sudo eopkg -y install sassc glib2 libxml2
|
2021-04-08 02:09:27 +02:00
|
|
|
else
|
2021-06-08 16:03:41 +02:00
|
|
|
installation_sorry
|
2021-04-08 02:09:27 +02:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2021-04-10 09:09:46 +02:00
|
|
|
install_beggy_deps() {
|
2021-04-21 14:56:32 +02:00
|
|
|
if ! has_command convert; then
|
2021-06-12 09:01:28 +02:00
|
|
|
prompt -w "DEPS: 'imagemagick' is required for background editing."
|
2021-06-17 05:37:58 +02:00
|
|
|
prepare_deps; stop_animation
|
2021-04-10 09:09:46 +02:00
|
|
|
|
|
|
|
if has_command zypper; then
|
2021-06-10 05:57:01 +02:00
|
|
|
sudo zypper in -y ImageMagick
|
2021-06-08 01:08:06 +02:00
|
|
|
elif has_command swupd; then
|
|
|
|
# Rolling release
|
2021-06-10 05:57:01 +02:00
|
|
|
prepare_swupd && sudo swupd bundle-add ImageMagick
|
2021-04-10 09:09:46 +02:00
|
|
|
elif has_command apt; then
|
2021-06-12 05:07:19 +02:00
|
|
|
prepare_install_apt_packages imagemagick
|
2021-04-10 09:09:46 +02:00
|
|
|
elif has_command dnf; then
|
2021-06-10 05:57:01 +02:00
|
|
|
sudo dnf install -y ImageMagick
|
2021-04-10 09:09:46 +02:00
|
|
|
elif has_command yum; then
|
2021-06-10 05:57:01 +02:00
|
|
|
sudo yum install -y ImageMagick
|
2021-04-10 09:09:46 +02:00
|
|
|
elif has_command pacman; then
|
2021-06-07 03:32:52 +02:00
|
|
|
# Rolling release
|
2021-06-14 03:02:52 +02:00
|
|
|
sudo pacman -Syyu --noconfirm --needed imagemagick
|
2021-06-07 03:32:52 +02:00
|
|
|
elif has_command xbps-install; then
|
|
|
|
# Rolling release
|
2021-06-10 05:57:01 +02:00
|
|
|
prepare_xbps && sudo xbps-install -Sy ImageMagick
|
2021-06-25 08:41:42 +02:00
|
|
|
elif has_command eopkg; then
|
|
|
|
# Rolling release
|
2021-06-25 10:16:50 +02:00
|
|
|
sudo eopkg -y upgrade; sudo eopkg -y install imagemagick
|
2021-04-10 09:09:46 +02:00
|
|
|
else
|
2021-06-08 16:03:41 +02:00
|
|
|
installation_sorry
|
2021-04-10 09:09:46 +02:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
install_dialog_deps() {
|
2021-06-15 15:15:34 +02:00
|
|
|
[[ "${silent_mode}" == "true" ]] && return 0
|
|
|
|
|
2021-04-21 14:56:32 +02:00
|
|
|
if ! has_command dialog; then
|
2021-06-12 09:01:28 +02:00
|
|
|
prompt -w "DEPS: 'dialog' is required for this option."
|
2021-06-11 13:59:07 +02:00
|
|
|
prepare_deps
|
2021-04-10 09:09:46 +02:00
|
|
|
|
|
|
|
if has_command zypper; then
|
2021-06-10 05:57:01 +02:00
|
|
|
sudo zypper in -y dialog
|
2021-06-08 01:08:06 +02:00
|
|
|
elif has_command swupd; then
|
|
|
|
# Rolling release
|
2021-06-09 03:14:30 +02:00
|
|
|
prepare_swupd && install_swupd_packages dialog
|
2021-04-10 09:09:46 +02:00
|
|
|
elif has_command apt; then
|
2021-06-12 05:07:19 +02:00
|
|
|
prepare_install_apt_packages dialog
|
2021-04-10 09:09:46 +02:00
|
|
|
elif has_command dnf; then
|
2021-06-10 05:57:01 +02:00
|
|
|
sudo dnf install -y dialog
|
2021-04-10 09:09:46 +02:00
|
|
|
elif has_command yum; then
|
2021-06-10 05:57:01 +02:00
|
|
|
sudo yum install -y dialog
|
2021-04-10 09:09:46 +02:00
|
|
|
elif has_command pacman; then
|
2021-06-07 03:32:52 +02:00
|
|
|
# Rolling release
|
2021-06-14 03:02:52 +02:00
|
|
|
sudo pacman -Syyu --noconfirm --needed dialog
|
2021-06-07 03:32:52 +02:00
|
|
|
elif has_command xbps-install; then
|
|
|
|
# Rolling release
|
2021-06-10 05:57:01 +02:00
|
|
|
prepare_xbps && sudo xbps-install -Sy dialog
|
2021-06-25 08:41:42 +02:00
|
|
|
elif has_command eopkg; then
|
|
|
|
# Rolling release
|
2021-06-25 10:16:50 +02:00
|
|
|
sudo eopkg -y upgrade; sudo eopkg -y install dialog
|
2021-04-10 09:09:46 +02:00
|
|
|
else
|
2021-06-08 16:03:41 +02:00
|
|
|
installation_sorry
|
2021-04-10 09:09:46 +02:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2021-04-08 02:09:27 +02:00
|
|
|
###############################################################################
|
|
|
|
# THEME MODULES #
|
|
|
|
###############################################################################
|
|
|
|
|
|
|
|
install_beggy() {
|
|
|
|
local CONVERT_OPT=""
|
|
|
|
|
2021-04-29 04:54:34 +02:00
|
|
|
[[ "${no_blur}" == "false" ]] && CONVERT_OPT+=" -scale 1280x -blur 0x50 "
|
2021-05-24 07:18:19 +02:00
|
|
|
[[ "${no_darken}" == "false" ]] && CONVERT_OPT+=" -fill black -colorize 45% "
|
2021-04-08 02:09:27 +02:00
|
|
|
|
|
|
|
case "${background}" in
|
|
|
|
blank)
|
|
|
|
cp -r "${THEME_SRC_DIR}/assets/gnome-shell/common-assets/background-blank.png" "${WHITESUR_TMP_DIR}/beggy.png" ;;
|
|
|
|
default)
|
2021-05-24 07:18:19 +02:00
|
|
|
if [[ "${no_blur}" == "false" && "${no_darken}" == "true" ]]; then
|
2021-05-23 09:46:03 +02:00
|
|
|
cp -r "${THEME_SRC_DIR}/assets/gnome-shell/common-assets/background-blur.png" "${WHITESUR_TMP_DIR}/beggy.png"
|
2021-05-24 07:18:19 +02:00
|
|
|
elif [[ "${no_blur}" == "false" && "${no_darken}" == "false" ]]; then
|
2021-05-23 09:46:03 +02:00
|
|
|
cp -r "${THEME_SRC_DIR}/assets/gnome-shell/common-assets/background-blur-darken.png" "${WHITESUR_TMP_DIR}/beggy.png"
|
2021-05-24 07:18:19 +02:00
|
|
|
elif [[ "${no_blur}" == "true" && "${no_darken}" == "true" ]]; then
|
2021-05-23 09:46:03 +02:00
|
|
|
cp -r "${THEME_SRC_DIR}/assets/gnome-shell/common-assets/background-default.png" "${WHITESUR_TMP_DIR}/beggy.png"
|
2021-04-29 04:58:54 +02:00
|
|
|
else
|
2021-05-23 09:46:03 +02:00
|
|
|
cp -r "${THEME_SRC_DIR}/assets/gnome-shell/common-assets/background-darken.png" "${WHITESUR_TMP_DIR}/beggy.png"
|
2021-04-29 04:58:54 +02:00
|
|
|
fi
|
2021-04-29 05:24:03 +02:00
|
|
|
;;
|
2021-04-08 02:09:27 +02:00
|
|
|
*)
|
2021-05-09 05:05:51 +02:00
|
|
|
if [[ "${no_blur}" == "false" || "${darken}" == "true" ]]; then
|
2021-06-17 05:37:58 +02:00
|
|
|
install_beggy_deps
|
2021-06-08 12:19:57 +02:00
|
|
|
convert "${background}" ${CONVERT_OPT} "${WHITESUR_TMP_DIR}/beggy.png"
|
2021-05-09 05:05:51 +02:00
|
|
|
else
|
|
|
|
cp -r "${background}" "${WHITESUR_TMP_DIR}/beggy.png"
|
|
|
|
fi
|
|
|
|
;;
|
2021-04-08 02:09:27 +02:00
|
|
|
esac
|
|
|
|
}
|
|
|
|
|
|
|
|
install_darky() {
|
|
|
|
local opacity="$(destify ${1})"
|
|
|
|
local theme="$(destify ${2})"
|
|
|
|
|
2021-06-12 17:45:49 +02:00
|
|
|
install_theme_deps
|
2021-05-14 10:19:14 +02:00
|
|
|
sassc ${SASSC_OPT} "${THEME_SRC_DIR}/main/gtk-3.0/gtk-dark.scss" "${WHITESUR_TMP_DIR}/darky-3.css"
|
|
|
|
sassc ${SASSC_OPT} "${THEME_SRC_DIR}/main/gtk-4.0/gtk-dark.scss" "${WHITESUR_TMP_DIR}/darky-4.css"
|
2021-04-08 02:09:27 +02:00
|
|
|
}
|
|
|
|
|
2021-04-19 13:35:20 +02:00
|
|
|
install_xfwmy() {
|
|
|
|
local color="$(destify ${1})"
|
|
|
|
|
2021-04-21 10:39:47 +02:00
|
|
|
local TARGET_DIR="${dest}/${name}${color}"
|
2021-04-19 13:35:20 +02:00
|
|
|
local HDPI_TARGET_DIR="${dest}/${name}${color}-hdpi"
|
|
|
|
local XHDPI_TARGET_DIR="${dest}/${name}${color}-xhdpi"
|
|
|
|
|
|
|
|
mkdir -p "${TARGET_DIR}/xfwm4"
|
|
|
|
cp -r "${THEME_SRC_DIR}/assets/xfwm4/assets${color}/"*".png" "${TARGET_DIR}/xfwm4"
|
|
|
|
cp -r "${THEME_SRC_DIR}/main/xfwm4/themerc${color}" "${TARGET_DIR}/xfwm4/themerc"
|
|
|
|
|
|
|
|
mkdir -p "${HDPI_TARGET_DIR}/xfwm4"
|
|
|
|
cp -r "${THEME_SRC_DIR}/assets/xfwm4/assets${color}-hdpi/"*".png" "${HDPI_TARGET_DIR}/xfwm4"
|
|
|
|
cp -r "${THEME_SRC_DIR}/main/xfwm4/themerc${color}" "${HDPI_TARGET_DIR}/xfwm4/themerc"
|
|
|
|
|
|
|
|
mkdir -p "${XHDPI_TARGET_DIR}/xfwm4"
|
|
|
|
cp -r "${THEME_SRC_DIR}/assets/xfwm4/assets${color}-xhdpi/"*".png" "${XHDPI_TARGET_DIR}/xfwm4"
|
|
|
|
cp -r "${THEME_SRC_DIR}/main/xfwm4/themerc${color}" "${XHDPI_TARGET_DIR}/xfwm4/themerc"
|
|
|
|
}
|
|
|
|
|
2021-04-08 02:09:27 +02:00
|
|
|
install_shelly() {
|
|
|
|
local color="$(destify ${1})"
|
|
|
|
local opacity="$(destify ${2})"
|
|
|
|
local alt="$(destify ${3})"
|
|
|
|
local theme="$(destify ${4})"
|
|
|
|
local icon="$(destify ${5})"
|
|
|
|
local TARGET_DIR=
|
|
|
|
|
|
|
|
if [[ -z "${6}" ]]; then
|
|
|
|
TARGET_DIR="${dest}/${name}${color}${opacity}${alt}${theme}/gnome-shell"
|
2021-06-02 18:04:59 +02:00
|
|
|
else
|
|
|
|
TARGET_DIR="${6}"
|
|
|
|
fi
|
2021-04-08 02:09:27 +02:00
|
|
|
|
2021-06-11 13:59:07 +02:00
|
|
|
install_theme_deps
|
|
|
|
|
2021-04-08 02:09:27 +02:00
|
|
|
mkdir -p "${TARGET_DIR}"
|
|
|
|
mkdir -p "${TARGET_DIR}/assets"
|
|
|
|
cp -r "${THEME_SRC_DIR}/assets/gnome-shell/icons" "${TARGET_DIR}"
|
|
|
|
cp -r "${THEME_SRC_DIR}/main/gnome-shell/pad-osd.css" "${TARGET_DIR}"
|
2021-04-08 16:59:05 +02:00
|
|
|
|
|
|
|
if [[ "${GNOME_VERSION}" == 'new' ]]; then
|
2021-05-12 08:01:57 +02:00
|
|
|
sassc ${SASSC_OPT} "${THEME_SRC_DIR}/main/gnome-shell/shell-40-0/gnome-shell${color}.scss" "${TARGET_DIR}/gnome-shell.css"
|
2021-04-08 16:59:05 +02:00
|
|
|
else
|
2021-05-12 08:01:57 +02:00
|
|
|
sassc ${SASSC_OPT} "${THEME_SRC_DIR}/main/gnome-shell/shell-3-28/gnome-shell${color}.scss" "${TARGET_DIR}/gnome-shell.css"
|
2021-04-08 16:59:05 +02:00
|
|
|
fi
|
|
|
|
|
2021-04-08 02:09:27 +02:00
|
|
|
cp -r "${THEME_SRC_DIR}/assets/gnome-shell/common-assets/"*".svg" "${TARGET_DIR}/assets"
|
|
|
|
|
|
|
|
if [[ "${theme}" != '' ]]; then
|
|
|
|
cp -r "${THEME_SRC_DIR}/assets/gnome-shell/common-assets${theme}/"*".svg" "${TARGET_DIR}/assets"
|
|
|
|
fi
|
|
|
|
|
|
|
|
cp -r "${THEME_SRC_DIR}/assets/gnome-shell/assets${color}/"*".svg" "${TARGET_DIR}/assets"
|
|
|
|
cp -r "${THEME_SRC_DIR}/assets/gnome-shell/activities/activities${icon}.svg" "${TARGET_DIR}/assets/activities.svg"
|
2021-05-09 05:05:51 +02:00
|
|
|
cp -r "${WHITESUR_TMP_DIR}/beggy.png" "${TARGET_DIR}/assets/background.png"
|
2021-04-19 14:33:44 +02:00
|
|
|
|
2021-04-08 02:09:27 +02:00
|
|
|
(
|
|
|
|
cd "${TARGET_DIR}"
|
|
|
|
mv -f "assets/no-events.svg" "no-events.svg"
|
|
|
|
mv -f "assets/process-working.svg" "process-working.svg"
|
|
|
|
mv -f "assets/no-notifications.svg" "no-notifications.svg"
|
|
|
|
)
|
|
|
|
|
|
|
|
if [[ "${alt}" == '-alt' || "${opacity}" == '-solid' ]] && [[ "${color}" == '-light' ]]; then
|
|
|
|
cp -r "${THEME_SRC_DIR}/assets/gnome-shell/activities-black/activities${icon}.svg" "${TARGET_DIR}/assets/activities.svg"
|
|
|
|
cp -r "${THEME_SRC_DIR}/assets/gnome-shell/activities/activities${icon}.svg" "${TARGET_DIR}/assets/activities-white.svg"
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
install_theemy() {
|
|
|
|
local color="$(destify ${1})"
|
|
|
|
local opacity="$(destify ${2})"
|
|
|
|
local alt="$(destify ${3})"
|
|
|
|
local theme="$(destify ${4})"
|
|
|
|
local icon="$(destify ${5})"
|
|
|
|
|
2021-06-06 16:45:33 +02:00
|
|
|
if [[ "${color}" == '-light' ]]; then
|
|
|
|
local iconcolor=''
|
|
|
|
elif [[ "${color}" == '-dark' ]]; then
|
|
|
|
local iconcolor='-dark'
|
|
|
|
fi
|
|
|
|
|
2021-04-08 02:09:27 +02:00
|
|
|
local TARGET_DIR="${dest}/${name}${color}${opacity}${alt}${theme}"
|
2021-04-09 14:03:06 +02:00
|
|
|
local TMP_DIR_T="${WHITESUR_TMP_DIR}/gtk-3.0${color}${opacity}${alt}${theme}"
|
|
|
|
local TMP_DIR_F="${WHITESUR_TMP_DIR}/gtk-4.0${color}${opacity}${alt}${theme}"
|
2021-04-08 02:09:27 +02:00
|
|
|
|
|
|
|
mkdir -p "${TARGET_DIR}"
|
2021-06-08 10:36:57 +02:00
|
|
|
|
|
|
|
local desktop_entry="[Desktop Entry]\n"
|
|
|
|
desktop_entry+="Type=X-GNOME-Metatheme\n"
|
|
|
|
desktop_entry+="Name=${name}${color}${opacity}${alt}${theme}\n"
|
|
|
|
desktop_entry+="Comment=A MacOS BigSur like Gtk+ theme based on Elegant Design\n"
|
|
|
|
desktop_entry+="Encoding=UTF-8\n\n"
|
|
|
|
|
|
|
|
desktop_entry+="[X-GNOME-Metatheme]\n"
|
|
|
|
desktop_entry+="GtkTheme=${name}${color}${opacity}${alt}${theme}\n"
|
|
|
|
desktop_entry+="MetacityTheme=${name}${color}${opacity}${alt}${theme}\n"
|
|
|
|
desktop_entry+="IconTheme=${name}${iconcolor}\n"
|
|
|
|
desktop_entry+="CursorTheme=WhiteSur-cursors\n"
|
|
|
|
desktop_entry+="ButtonLayout=close,minimize,maximize:menu\n"
|
|
|
|
|
2021-06-09 18:00:46 +02:00
|
|
|
echo -e "${desktop_entry}" > "${TARGET_DIR}/index.theme"
|
2021-04-08 02:09:27 +02:00
|
|
|
|
2021-06-12 17:45:49 +02:00
|
|
|
install_theme_deps
|
|
|
|
|
2021-04-09 14:03:06 +02:00
|
|
|
#--------------------GTK-3.0--------------------#
|
2021-04-08 02:09:27 +02:00
|
|
|
|
2021-04-09 14:03:06 +02:00
|
|
|
mkdir -p "${TMP_DIR_T}"
|
|
|
|
cp -r "${THEME_SRC_DIR}/assets/gtk/common-assets/assets" "${TMP_DIR_T}"
|
|
|
|
cp -r "${THEME_SRC_DIR}/assets/gtk/common-assets/sidebar-assets/"*".png" "${TMP_DIR_T}/assets"
|
|
|
|
cp -r "${THEME_SRC_DIR}/assets/gtk/windows-assets/titlebutton${alt}" "${TMP_DIR_T}/windows-assets"
|
2021-04-08 02:09:27 +02:00
|
|
|
|
|
|
|
if [[ "${theme}" != '' ]]; then
|
2021-04-09 14:03:06 +02:00
|
|
|
cp -r "${THEME_SRC_DIR}/assets/gtk/common-assets/assets${theme}/"*".png" "${TMP_DIR_T}/assets"
|
2021-04-08 02:09:27 +02:00
|
|
|
fi
|
|
|
|
|
2021-05-12 08:01:57 +02:00
|
|
|
sassc ${SASSC_OPT} "${THEME_SRC_DIR}/main/gtk-3.0/gtk${color}.scss" "${TMP_DIR_T}/gtk.css"
|
|
|
|
sassc ${SASSC_OPT} "${THEME_SRC_DIR}/main/gtk-3.0/gtk-dark.scss" "${TMP_DIR_T}/gtk-dark.css"
|
2021-04-08 02:09:27 +02:00
|
|
|
|
|
|
|
mkdir -p "${TARGET_DIR}/gtk-3.0"
|
2021-04-09 14:03:06 +02:00
|
|
|
cp -r "${THEME_SRC_DIR}/assets/gtk/thumbnails/thumbnail${color}${theme}.png" "${TARGET_DIR}/gtk-3.0/thumbnail.png"
|
2021-04-08 02:09:27 +02:00
|
|
|
echo '@import url("resource:///org/gnome/theme/gtk.css");' > "${TARGET_DIR}/gtk-3.0/gtk.css"
|
|
|
|
echo '@import url("resource:///org/gnome/theme/gtk-dark.css");' > "${TARGET_DIR}/gtk-3.0/gtk-dark.css"
|
2021-04-09 14:03:06 +02:00
|
|
|
glib-compile-resources --sourcedir="${TMP_DIR_T}" --target="${TARGET_DIR}/gtk-3.0/gtk.gresource" "${THEME_SRC_DIR}/main/gtk-3.0/gtk.gresource.xml"
|
|
|
|
|
|
|
|
#--------------------GTK-4.0--------------------#
|
|
|
|
|
|
|
|
mkdir -p "${TMP_DIR_F}"
|
|
|
|
cp -r "${TMP_DIR_T}/assets" "${TMP_DIR_F}"
|
|
|
|
cp -r "${TMP_DIR_T}/windows-assets" "${TMP_DIR_F}"
|
|
|
|
|
2021-05-12 08:01:57 +02:00
|
|
|
sassc ${SASSC_OPT} "${THEME_SRC_DIR}/main/gtk-4.0/gtk${color}.scss" "${TMP_DIR_F}/gtk.css"
|
|
|
|
sassc ${SASSC_OPT} "${THEME_SRC_DIR}/main/gtk-4.0/gtk-dark.scss" "${TMP_DIR_F}/gtk-dark.css"
|
2021-04-09 14:03:06 +02:00
|
|
|
|
|
|
|
mkdir -p "${TARGET_DIR}/gtk-4.0"
|
|
|
|
cp -r "${THEME_SRC_DIR}/assets/gtk/thumbnails/thumbnail${color}${theme}.png" "${TARGET_DIR}/gtk-4.0/thumbnail.png"
|
|
|
|
echo '@import url("resource:///org/gnome/theme/gtk.css");' > "${TARGET_DIR}/gtk-4.0/gtk.css"
|
|
|
|
echo '@import url("resource:///org/gnome/theme/gtk-dark.css");' > "${TARGET_DIR}/gtk-4.0/gtk-dark.css"
|
|
|
|
glib-compile-resources --sourcedir="${TMP_DIR_F}" --target="${TARGET_DIR}/gtk-4.0/gtk.gresource" "${THEME_SRC_DIR}/main/gtk-4.0/gtk.gresource.xml"
|
2021-04-08 02:09:27 +02:00
|
|
|
|
|
|
|
#----------------Cinnamon-----------------#
|
|
|
|
|
|
|
|
mkdir -p "${TARGET_DIR}/cinnamon"
|
2021-05-12 08:01:57 +02:00
|
|
|
sassc ${SASSC_OPT} "${THEME_SRC_DIR}/main/cinnamon/cinnamon${color}.scss" "${TARGET_DIR}/cinnamon/cinnamon.css"
|
2021-04-08 02:09:27 +02:00
|
|
|
cp -r "${THEME_SRC_DIR}/assets/cinnamon/common-assets" "${TARGET_DIR}/cinnamon/assets"
|
|
|
|
|
|
|
|
if [[ ${theme} != '' ]]; then
|
|
|
|
cp -r "${THEME_SRC_DIR}/assets/cinnamon/common-assets${theme}/"*".svg" "${TARGET_DIR}/cinnamon/assets"
|
|
|
|
fi
|
|
|
|
|
|
|
|
cp -r "${THEME_SRC_DIR}/assets/cinnamon/assets${color}/"*".svg" "${TARGET_DIR}/cinnamon/assets"
|
|
|
|
cp -r "${THEME_SRC_DIR}/assets/cinnamon/thumbnails/thumbnail${color}${theme}.png" "${TARGET_DIR}/cinnamon/thumbnail.png"
|
|
|
|
|
|
|
|
#----------------Misc------------------#
|
|
|
|
|
|
|
|
mkdir -p "${TARGET_DIR}/gtk-2.0"
|
|
|
|
cp -r "${THEME_SRC_DIR}/main/gtk-2.0/gtkrc${color}${theme}" "${TARGET_DIR}/gtk-2.0/gtkrc"
|
|
|
|
cp -r "${THEME_SRC_DIR}/main/gtk-2.0/menubar-toolbar${color}.rc" "${TARGET_DIR}/gtk-2.0/menubar-toolbar.rc"
|
|
|
|
cp -r "${THEME_SRC_DIR}/main/gtk-2.0/common/"*".rc" "${TARGET_DIR}/gtk-2.0"
|
|
|
|
cp -r "${THEME_SRC_DIR}/assets/gtk-2.0/assets${color}" "${TARGET_DIR}/gtk-2.0/assets"
|
|
|
|
|
|
|
|
if [[ "${theme}" != '' ]]; then
|
|
|
|
cp -r "${THEME_SRC_DIR}/assets/gtk-2.0/assets${color}${theme}/"*".png" "${TARGET_DIR}/gtk-2.0/assets"
|
|
|
|
fi
|
|
|
|
|
|
|
|
mkdir -p "${TARGET_DIR}/metacity-1"
|
|
|
|
cp -r "${THEME_SRC_DIR}/main/metacity-1/metacity-theme${color}.xml" "${TARGET_DIR}/metacity-1/metacity-theme-1.xml"
|
|
|
|
cp -r "${THEME_SRC_DIR}/main/metacity-1/metacity-theme-3.xml" "${TARGET_DIR}/metacity-1"
|
2021-05-31 05:57:50 +02:00
|
|
|
cp -r "${THEME_SRC_DIR}/assets/metacity-1/titlebuttons${color}" "${TARGET_DIR}/metacity-1/titlebuttons"
|
2021-04-08 02:09:27 +02:00
|
|
|
cp -r "${THEME_SRC_DIR}/assets/metacity-1/thumbnail${color}.png" "${TARGET_DIR}/metacity-1/thumbnail.png"
|
|
|
|
( cd "${TARGET_DIR}/metacity-1" && ln -s "metacity-theme-1.xml" "metacity-theme-2.xml" )
|
|
|
|
|
|
|
|
mkdir -p "${TARGET_DIR}/plank"
|
|
|
|
cp -r "${THEME_SRC_DIR}/other/plank/theme${color}/"*".theme" "${TARGET_DIR}/plank"
|
|
|
|
}
|
|
|
|
|
|
|
|
remove_packy() {
|
|
|
|
rm -rf "${dest}/${name}$(destify ${1})$(destify ${2})$(destify ${3})$(destify ${4})"
|
2021-04-21 14:56:32 +02:00
|
|
|
rm -rf "${dest}/${name}$(destify ${1})"
|
2021-04-13 05:07:53 +02:00
|
|
|
rm -rf "${dest}/${name}$(destify ${1})-hdpi"
|
|
|
|
rm -rf "${dest}/${name}$(destify ${1})-xhdpi"
|
2021-04-21 14:56:32 +02:00
|
|
|
|
|
|
|
# Backward compatibility
|
|
|
|
rm -rf "${dest}/${name}$(destify ${1})-mdpi"
|
2021-04-08 02:09:27 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
###############################################################################
|
|
|
|
# THEMES #
|
|
|
|
###############################################################################
|
|
|
|
|
|
|
|
install_themes() {
|
2021-05-23 15:04:01 +02:00
|
|
|
# "install_theemy" and "install_shelly" require "gtk_base", so multithreading
|
|
|
|
# isn't possible
|
|
|
|
|
2021-06-11 13:59:07 +02:00
|
|
|
install_theme_deps; start_animation; install_beggy
|
2021-04-08 02:09:27 +02:00
|
|
|
|
|
|
|
for opacity in "${opacities[@]}"; do
|
|
|
|
for alt in "${alts[@]}"; do
|
|
|
|
for theme in "${themes[@]}"; do
|
2021-05-12 08:01:57 +02:00
|
|
|
install_xfwmy "${color}"
|
2021-04-08 02:09:27 +02:00
|
|
|
|
|
|
|
for color in "${colors[@]}"; do
|
2021-05-23 09:46:03 +02:00
|
|
|
gtk_base "${color}" "${opacity}" "${theme}" "${compact}"
|
|
|
|
install_theemy "${color}" "${opacity}" "${alt}" "${theme}" "${icon}"
|
|
|
|
install_shelly "${color}" "${opacity}" "${alt}" "${theme}" "${icon}"
|
2021-04-08 02:09:27 +02:00
|
|
|
done
|
|
|
|
done
|
|
|
|
done
|
|
|
|
done
|
|
|
|
|
|
|
|
stop_animation
|
|
|
|
}
|
|
|
|
|
|
|
|
remove_themes() {
|
|
|
|
process_ids=()
|
|
|
|
|
|
|
|
for color in "${COLOR_VARIANTS[@]}"; do
|
|
|
|
for opacity in "${OPACITY_VARIANTS[@]}"; do
|
|
|
|
for alt in "${ALT_VARIANTS[@]}"; do
|
|
|
|
for theme in "${THEME_VARIANTS[@]}"; do
|
|
|
|
remove_packy "${color}" "${opacity}" "${alt}" "${theme}" &
|
|
|
|
process_ids+=("${!}")
|
|
|
|
done
|
|
|
|
done
|
|
|
|
done
|
|
|
|
done
|
|
|
|
|
2021-04-21 10:39:47 +02:00
|
|
|
wait ${process_ids[*]} &> /dev/null
|
2021-04-08 02:09:27 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
install_gdm_theme() {
|
|
|
|
local TARGET=
|
|
|
|
|
|
|
|
# Let's go!
|
2021-06-12 10:58:03 +02:00
|
|
|
install_theme_deps
|
2021-05-23 09:46:03 +02:00
|
|
|
rm -rf "${WHITESUR_GS_DIR}"; install_beggy
|
|
|
|
gtk_base "${colors[0]}" "${opacities[0]}" "${themes[0]}"
|
2021-04-08 02:09:27 +02:00
|
|
|
|
|
|
|
if check_theme_file "${COMMON_CSS_FILE}"; then # CSS-based theme
|
2021-05-16 03:31:41 +02:00
|
|
|
install_shelly "${colors[0]}" "${opacities[0]}" "${alts[0]}" "${themes[0]}" "${icon}" "${WHITESUR_GS_DIR}"
|
2021-05-13 13:36:29 +02:00
|
|
|
sed $SED_OPT "s|assets|${WHITESUR_GS_DIR}/assets|" "${WHITESUR_GS_DIR}/gnome-shell.css"
|
2021-04-08 02:09:27 +02:00
|
|
|
|
|
|
|
if check_theme_file "${UBUNTU_CSS_FILE}"; then
|
|
|
|
TARGET="${UBUNTU_CSS_FILE}"
|
|
|
|
elif check_theme_file "${ZORIN_CSS_FILE}"; then
|
|
|
|
TARGET="${ZORIN_CSS_FILE}"
|
|
|
|
fi
|
|
|
|
|
|
|
|
backup_file "${COMMON_CSS_FILE}"; backup_file "${TARGET}"
|
|
|
|
ln -sf "${WHITESUR_GS_DIR}/gnome-shell.css" "${COMMON_CSS_FILE}"
|
|
|
|
ln -sf "${WHITESUR_GS_DIR}/gnome-shell.css" "${TARGET}"
|
|
|
|
|
|
|
|
# Fix previously installed WhiteSur
|
|
|
|
restore_file "${ETC_CSS_FILE}"
|
|
|
|
else # GR-based theme
|
2021-05-16 03:31:41 +02:00
|
|
|
install_shelly "${colors[0]}" "${opacities[0]}" "${alts[0]}" "${themes[0]}" "${icon}" "${WHITESUR_TMP_DIR}/shelly"
|
2021-05-13 13:36:29 +02:00
|
|
|
sed $SED_OPT "s|assets|resource:///org/gnome/shell/theme/assets|" "${WHITESUR_TMP_DIR}/shelly/gnome-shell.css"
|
2021-04-08 02:09:27 +02:00
|
|
|
|
2021-05-23 09:46:03 +02:00
|
|
|
if check_theme_file "$POP_OS_GR_FILE"; then
|
2021-04-08 02:09:27 +02:00
|
|
|
TARGET="${POP_OS_GR_FILE}"
|
|
|
|
elif check_theme_file "$YARU_GR_FILE"; then
|
|
|
|
TARGET="${YARU_GR_FILE}"
|
|
|
|
elif check_theme_file "$MISC_GR_FILE"; then
|
|
|
|
TARGET="${MISC_GR_FILE}"
|
|
|
|
fi
|
|
|
|
|
|
|
|
backup_file "${TARGET}"
|
|
|
|
glib-compile-resources --sourcedir="${WHITESUR_TMP_DIR}/shelly" --target="${TARGET}" "${GS_GR_XML_FILE}"
|
|
|
|
|
|
|
|
# Fix previously installed WhiteSur
|
|
|
|
restore_file "${ETC_GR_FILE}"
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
revert_gdm_theme() {
|
|
|
|
rm -rf "${WHITESUR_GS_DIR}"
|
|
|
|
restore_file "${COMMON_CSS_FILE}"; restore_file "${UBUNTU_CSS_FILE}"
|
|
|
|
restore_file "${ZORIN_CSS_FILE}"; restore_file "${ETC_CSS_FILE}"
|
|
|
|
restore_file "${POP_OS_GR_FILE}"; restore_file "${YARU_GR_FILE}"
|
|
|
|
restore_file "${MISC_GR_FILE}"; restore_file "${ETC_GR_FILE}"
|
|
|
|
}
|
|
|
|
|
|
|
|
###############################################################################
|
|
|
|
# FIREFOX #
|
|
|
|
###############################################################################
|
|
|
|
|
|
|
|
install_firefox_theme() {
|
2021-05-31 12:04:08 +02:00
|
|
|
if has_snap_app firefox; then
|
|
|
|
local TARGET_DIR="${FIREFOX_SNAP_THEME_DIR}"
|
|
|
|
elif has_flatpak_app org.mozilla.firefox; then
|
2021-05-30 14:53:57 +02:00
|
|
|
local TARGET_DIR="${FIREFOX_FLATPAK_THEME_DIR}"
|
|
|
|
else
|
|
|
|
local TARGET_DIR="${FIREFOX_THEME_DIR}"
|
|
|
|
fi
|
|
|
|
|
2021-04-08 02:09:27 +02:00
|
|
|
remove_firefox_theme
|
2021-06-10 05:57:01 +02:00
|
|
|
udo mkdir -p "${TARGET_DIR}"
|
2021-06-24 04:55:17 +02:00
|
|
|
udo cp -rf "${FIREFOX_SRC_DIR}"/customChrome.css "${TARGET_DIR}"
|
|
|
|
|
|
|
|
if [[ "${monterey}" == 'true' ]]; then
|
|
|
|
udo cp -rf "${FIREFOX_SRC_DIR}"/Monterey "${TARGET_DIR}"
|
|
|
|
udo cp -rf "${FIREFOX_SRC_DIR}"/WhiteSur/{icons,titlebuttons} "${TARGET_DIR}"/Monterey
|
|
|
|
udo cp -rf "${FIREFOX_SRC_DIR}"/userChrome-Monterey.css "${TARGET_DIR}"/userChrome.css
|
|
|
|
else
|
|
|
|
udo cp -rf "${FIREFOX_SRC_DIR}"/WhiteSur "${TARGET_DIR}"
|
|
|
|
udo cp -rf "${FIREFOX_SRC_DIR}"/userChrome-WhiteSur.css "${TARGET_DIR}"/userChrome.css
|
|
|
|
fi
|
|
|
|
|
2021-04-08 02:09:27 +02:00
|
|
|
config_firefox
|
|
|
|
}
|
|
|
|
|
|
|
|
config_firefox() {
|
2021-05-31 12:04:08 +02:00
|
|
|
if has_snap_app firefox; then
|
|
|
|
local TARGET_DIR="${FIREFOX_SNAP_THEME_DIR}"
|
|
|
|
local FIREFOX_DIR="${FIREFOX_SNAP_DIR_HOME}"
|
|
|
|
elif has_flatpak_app org.mozilla.firefox; then
|
2021-05-30 14:53:57 +02:00
|
|
|
local TARGET_DIR="${FIREFOX_FLATPAK_THEME_DIR}"
|
|
|
|
local FIREFOX_DIR="${FIREFOX_FLATPAK_DIR_HOME}"
|
|
|
|
else
|
|
|
|
local TARGET_DIR="${FIREFOX_THEME_DIR}"
|
|
|
|
local FIREFOX_DIR="${FIREFOX_DIR_HOME}"
|
|
|
|
fi
|
2021-04-08 02:09:27 +02:00
|
|
|
|
2021-05-30 14:53:57 +02:00
|
|
|
killall "firefox" "firefox-bin" &> /dev/null || true
|
|
|
|
|
|
|
|
for d in "${FIREFOX_DIR}/"*"default"*; do
|
2021-05-27 18:23:57 +02:00
|
|
|
if [[ -f "${d}/prefs.js" ]]; then
|
2021-06-10 05:57:01 +02:00
|
|
|
rm -rf "${d}/chrome"
|
|
|
|
udo ln -sf "${TARGET_DIR}" "${d}/chrome"
|
|
|
|
udoify_file "${d}/prefs.js"
|
|
|
|
echo "user_pref(\"toolkit.legacyUserProfileCustomizations.stylesheets\", true);" >> "${d}/prefs.js"
|
|
|
|
echo "user_pref(\"browser.tabs.drawInTitlebar\", true);" >> "${d}/prefs.js"
|
|
|
|
echo "user_pref(\"browser.uidensity\", 0);" >> "${d}/prefs.js"
|
|
|
|
echo "user_pref(\"layers.acceleration.force-enabled\", true);" >> "${d}/prefs.js"
|
|
|
|
echo "user_pref(\"mozilla.widget.use-argb-visuals\", true);" >> "${d}/prefs.js"
|
2021-05-27 18:23:57 +02:00
|
|
|
fi
|
2021-04-08 02:09:27 +02:00
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
edit_firefox_theme_prefs() {
|
2021-05-31 12:04:08 +02:00
|
|
|
if has_snap_app firefox; then
|
|
|
|
local TARGET_DIR="${FIREFOX_SNAP_THEME_DIR}"
|
|
|
|
elif has_flatpak_app org.mozilla.firefox; then
|
2021-05-30 14:53:57 +02:00
|
|
|
local TARGET_DIR="${FIREFOX_FLATPAK_THEME_DIR}"
|
|
|
|
else
|
|
|
|
local TARGET_DIR="${FIREFOX_THEME_DIR}"
|
|
|
|
fi
|
|
|
|
|
|
|
|
[[ ! -d "${TARGET_DIR}" ]] && install_firefox_theme ; config_firefox
|
2021-06-10 05:57:01 +02:00
|
|
|
udo ${EDITOR:-nano} "${TARGET_DIR}/userChrome.css"
|
|
|
|
udo ${EDITOR:-nano} "${TARGET_DIR}/customChrome.css"
|
2021-04-08 02:09:27 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
remove_firefox_theme() {
|
|
|
|
rm -rf "${FIREFOX_DIR_HOME}/"*"default"*"/chrome"
|
2021-05-30 16:31:14 +02:00
|
|
|
rm -rf "${FIREFOX_THEME_DIR}"
|
2021-05-30 14:53:57 +02:00
|
|
|
rm -rf "${FIREFOX_FLATPAK_DIR_HOME}/"*"default"*"/chrome"
|
|
|
|
rm -rf "${FIREFOX_FLATPAK_THEME_DIR}"
|
2021-05-31 12:04:08 +02:00
|
|
|
rm -rf "${FIREFOX_SNAP_DIR_HOME}/"*"default"*"/chrome"
|
|
|
|
rm -rf "${FIREFOX_SNAP_THEME_DIR}"
|
2021-04-08 02:09:27 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
###############################################################################
|
|
|
|
# DASH TO DOCK #
|
|
|
|
###############################################################################
|
|
|
|
|
|
|
|
install_dash_to_dock_theme() {
|
2021-05-23 09:46:03 +02:00
|
|
|
gtk_base "${colors[0]}" "${opacities[0]}" "${themes[0]}"
|
|
|
|
|
2021-04-08 02:09:27 +02:00
|
|
|
if [[ -d "${DASH_TO_DOCK_DIR_HOME}" ]]; then
|
2021-06-10 05:57:01 +02:00
|
|
|
backup_file "${DASH_TO_DOCK_DIR_HOME}/stylesheet.css" "udo"
|
|
|
|
udoify_file "${DASH_TO_DOCK_DIR_HOME}/stylesheet.css"
|
|
|
|
udo sassc ${SASSC_OPT} "${DASH_TO_DOCK_SRC_DIR}/stylesheet$(destify ${colors[0]}).scss" "${DASH_TO_DOCK_DIR_HOME}/stylesheet.css"
|
2021-04-08 02:09:27 +02:00
|
|
|
elif [[ -d "${DASH_TO_DOCK_DIR_ROOT}" ]]; then
|
2021-06-10 05:57:01 +02:00
|
|
|
backup_file "${DASH_TO_DOCK_DIR_ROOT}/stylesheet.css" "sudo"
|
|
|
|
sudo sassc ${SASSC_OPT} "${DASH_TO_DOCK_SRC_DIR}/stylesheet$(destify ${colors[0]}).scss" "${DASH_TO_DOCK_DIR_ROOT}/stylesheet.css"
|
2021-04-08 02:09:27 +02:00
|
|
|
fi
|
|
|
|
|
2021-06-10 05:57:01 +02:00
|
|
|
udo dbus-launch dconf write /org/gnome/shell/extensions/dash-to-dock/apply-custom-theme true
|
2021-04-08 02:09:27 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
revert_dash_to_dock_theme() {
|
|
|
|
if [[ -d "${DASH_TO_DOCK_DIR_HOME}" ]]; then
|
2021-06-10 05:57:01 +02:00
|
|
|
restore_file "${DASH_TO_DOCK_DIR_HOME}/stylesheet.css" "udo"
|
2021-04-08 02:09:27 +02:00
|
|
|
elif [[ -d "${DASH_TO_DOCK_DIR_ROOT}" ]]; then
|
2021-06-10 05:57:01 +02:00
|
|
|
restore_file "${DASH_TO_DOCK_DIR_ROOT}/stylesheet.css" "sudo"
|
2021-04-08 02:09:27 +02:00
|
|
|
fi
|
2021-06-25 06:17:37 +02:00
|
|
|
|
|
|
|
udo dbus-launch dconf write /org/gnome/shell/extensions/dash-to-dock/apply-custom-theme false
|
2021-04-08 02:09:27 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
###############################################################################
|
|
|
|
# FLATPAK & SNAP #
|
|
|
|
###############################################################################
|
|
|
|
|
|
|
|
connect_flatpak() {
|
2021-06-10 05:57:01 +02:00
|
|
|
sudo flatpak override --filesystem=~/.themes
|
2021-04-08 02:09:27 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
disconnect_flatpak() {
|
2021-06-10 05:57:01 +02:00
|
|
|
sudo flatpak override --nofilesystem=~/.themes
|
2021-04-08 02:09:27 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
connect_snap() {
|
2021-06-10 05:57:01 +02:00
|
|
|
sudo snap install whitesur-gtk-theme
|
2021-04-08 02:09:27 +02:00
|
|
|
|
|
|
|
for i in $(snap connections | grep gtk-common-themes | awk '{print $2}' | cut -f1 -d: | sort -u); do
|
2021-06-10 05:57:01 +02:00
|
|
|
sudo snap connect "${i}:gtk-3-themes" "whitesur-gtk-theme:gtk-3-themes"
|
|
|
|
sudo snap connect "${i}:icon-themes" "whitesur-gtk-theme:icon-themes"
|
2021-04-08 02:09:27 +02:00
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
disconnect_snap() {
|
|
|
|
for i in $(snap connections | grep gtk-common-themes | awk '{print $2}' | cut -f1 -d: | sort -u); do
|
2021-06-10 05:57:01 +02:00
|
|
|
sudo snap disconnect "${i}:gtk-3-themes" "whitesur-gtk-theme:gtk-3-themes"
|
|
|
|
sudo snap disconnect "${i}:icon-themes" "whitesur-gtk-theme:icon-themes"
|
2021-04-08 02:09:27 +02:00
|
|
|
done
|
|
|
|
}
|
|
|
|
|
2021-05-12 08:01:57 +02:00
|
|
|
#########################################################################
|
|
|
|
# GTK BASE #
|
|
|
|
#########################################################################
|
|
|
|
|
|
|
|
gtk_base() {
|
2021-05-13 13:44:00 +02:00
|
|
|
cp -rf "${THEME_SRC_DIR}/sass/_gtk-base"{".scss","-temp.scss"}
|
2021-05-12 08:01:57 +02:00
|
|
|
|
|
|
|
# Theme base options
|
2021-05-15 02:14:04 +02:00
|
|
|
sed $SED_OPT "/\$laptop/s/false/${compact}/" "${THEME_SRC_DIR}/sass/_gtk-base-temp.scss"
|
2021-05-12 08:01:57 +02:00
|
|
|
|
|
|
|
if [[ "${opacity}" == 'solid' ]]; then
|
2021-05-15 02:14:04 +02:00
|
|
|
sed $SED_OPT "/\$trans/s/true/false/" "${THEME_SRC_DIR}/sass/_gtk-base-temp.scss"
|
2021-05-12 08:01:57 +02:00
|
|
|
fi
|
|
|
|
|
|
|
|
if [[ "${color}" == 'light' && ${opacity} == 'solid' ]]; then
|
2021-05-15 02:14:04 +02:00
|
|
|
sed $SED_OPT "/\$black/s/false/true/" "${THEME_SRC_DIR}/sass/_gtk-base-temp.scss"
|
2021-05-12 08:01:57 +02:00
|
|
|
fi
|
|
|
|
|
|
|
|
if [[ "${theme}" != '' ]]; then
|
2021-05-15 02:14:04 +02:00
|
|
|
sed $SED_OPT "/\$theme/s/default/${theme}/" "${THEME_SRC_DIR}/sass/_gtk-base-temp.scss"
|
2021-05-12 08:01:57 +02:00
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2021-04-08 02:09:27 +02:00
|
|
|
###############################################################################
|
|
|
|
# CUSTOMIZATIONS #
|
|
|
|
###############################################################################
|
|
|
|
|
|
|
|
customize_theme() {
|
|
|
|
cp -rf "${THEME_SRC_DIR}/sass/_theme-options"{".scss","-temp.scss"}
|
|
|
|
|
|
|
|
# Change gnome-shell panel transparency
|
|
|
|
if [[ "${panel_opacity}" != 'default' ]]; then
|
2021-05-15 02:14:04 +02:00
|
|
|
prompt -s "Changing panel transparency ..."
|
|
|
|
sed $SED_OPT "/\$panel_opacity/s/0.15/0.${panel_opacity}/" "${THEME_SRC_DIR}/sass/_theme-options-temp.scss"
|
2021-04-08 02:09:27 +02:00
|
|
|
fi
|
|
|
|
|
2021-04-21 12:40:03 +02:00
|
|
|
# Change gnome-shell show apps button style
|
|
|
|
if [[ "${showapps_normal}" == 'true' ]]; then
|
2021-05-15 02:14:04 +02:00
|
|
|
prompt -s "Changing gnome-shell show apps button style ..."
|
|
|
|
sed $SED_OPT "/\$showapps_button/s/bigsur/normal/" "${THEME_SRC_DIR}/sass/_theme-options-temp.scss"
|
2021-04-21 12:40:03 +02:00
|
|
|
fi
|
|
|
|
|
2021-04-08 02:09:27 +02:00
|
|
|
# Change Nautilus sidarbar size
|
|
|
|
if [[ "${sidebar_size}" != 'default' ]]; then
|
2021-05-15 02:14:04 +02:00
|
|
|
prompt -s "Changing Nautilus sidebar size ..."
|
|
|
|
sed $SED_OPT "/\$sidebar_size/s/200px/${sidebar_size}px/" "${THEME_SRC_DIR}/sass/_theme-options-temp.scss"
|
2021-04-08 02:09:27 +02:00
|
|
|
fi
|
|
|
|
|
|
|
|
# Change Nautilus style
|
2021-04-10 17:18:34 +02:00
|
|
|
if [[ "${nautilus_style}" != 'stable' ]]; then
|
2021-05-15 02:14:04 +02:00
|
|
|
prompt -s "Changing Nautilus style ..."
|
|
|
|
sed $SED_OPT "/\$nautilus_style/s/stable/${nautilus_style}/" "${THEME_SRC_DIR}/sass/_theme-options-temp.scss"
|
2021-04-08 02:09:27 +02:00
|
|
|
fi
|
2021-04-09 17:06:04 +02:00
|
|
|
|
2021-05-09 08:25:44 +02:00
|
|
|
# Change Nautilus titlebutton placement style
|
|
|
|
if [[ "${right_placement}" == 'true' ]]; then
|
2021-05-15 02:14:04 +02:00
|
|
|
prompt -s "Changing Nautilus titlebutton placement style ..."
|
|
|
|
sed $SED_OPT "/\$placement/s/left/right/" "${THEME_SRC_DIR}/sass/_theme-options-temp.scss"
|
2021-05-09 08:25:44 +02:00
|
|
|
fi
|
|
|
|
|
2021-04-09 17:06:04 +02:00
|
|
|
# Change maximized window radius
|
|
|
|
if [[ "${max_round}" == 'true' ]]; then
|
2021-05-15 02:14:04 +02:00
|
|
|
prompt -s "Changing maximized window style ..."
|
|
|
|
sed $SED_OPT "/\$max_window_style/s/square/round/" "${THEME_SRC_DIR}/sass/_theme-options-temp.scss"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [[ "${compact}" == 'false' ]]; then
|
|
|
|
prompt -s "Changing Definition mode to HD (Bigger font, Bigger size) ..."
|
2021-06-25 06:17:37 +02:00
|
|
|
#FIXME: @vince is it not implemented yet? (Only Gnome-shell and Gtk theme finished!)
|
2021-04-09 17:06:04 +02:00
|
|
|
fi
|
2021-04-08 02:09:27 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
#-----------------------------------DIALOGS------------------------------------#
|
|
|
|
|
|
|
|
# The default values here should get manually set and updated. Some of default
|
|
|
|
# values are taken from _variables.scss
|
|
|
|
|
|
|
|
show_panel_opacity_dialog() {
|
2021-06-11 13:59:07 +02:00
|
|
|
install_dialog_deps
|
2021-06-10 15:33:31 +02:00
|
|
|
dialogify panel_opacity "${THEME_NAME}" "Choose your panel opacity (Default is 15)" ${PANEL_OPACITY_VARIANTS[*]}
|
2021-04-08 02:09:27 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
show_sidebar_size_dialog() {
|
2021-06-11 13:59:07 +02:00
|
|
|
install_dialog_deps
|
2021-06-10 15:33:31 +02:00
|
|
|
dialogify sidebar_size "${THEME_NAME}" "Choose your Nautilus minimum sidebar size (default is 200px)" ${SIDEBAR_SIZE_VARIANTS[*]}
|
2021-04-08 02:09:27 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
show_nautilus_style_dialog() {
|
2021-06-11 13:59:07 +02:00
|
|
|
install_dialog_deps
|
2021-06-10 15:33:31 +02:00
|
|
|
dialogify nautilus_style "${THEME_NAME}" "Choose your Nautilus style (default is BigSur-like style)" ${NAUTILUS_STYLE_VARIANTS[*]}
|
2021-04-08 02:09:27 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
show_needed_dialogs() {
|
2021-05-27 14:58:12 +02:00
|
|
|
if [[ "${need_dialog["-p"]}" == "true" ]]; then show_panel_opacity_dialog; fi
|
|
|
|
if [[ "${need_dialog["-s"]}" == "true" ]]; then show_sidebar_size_dialog; fi
|
|
|
|
if [[ "${need_dialog["-N"]}" == "true" ]]; then show_nautilus_style_dialog; fi
|
2021-04-08 02:09:27 +02:00
|
|
|
}
|