2021-04-08 06:12:34 +02:00
|
|
|
#! /usr/bin/env bash
|
2020-07-14 18:35:03 +02:00
|
|
|
|
2021-04-08 02:09:27 +02:00
|
|
|
# WARNING: Please make this shell not working-directory dependant, for example
|
|
|
|
# instead of using 'cd blabla', use 'cd "${REPO_DIR}/blabla"'
|
|
|
|
#
|
|
|
|
# WARNING: Please don't use sudo directly here since it steals our EXIT trap
|
|
|
|
#
|
|
|
|
# WARNING: Don't use "cd" in this shell, use it in a subshell instead,
|
|
|
|
# for example ( cd blabla && do_blabla ) or $( cd .. && do_blabla )
|
2020-07-14 18:35:03 +02:00
|
|
|
|
2021-04-08 02:09:27 +02:00
|
|
|
###############################################################################
|
|
|
|
# VARIABLES & HELP #
|
|
|
|
###############################################################################
|
2020-07-14 18:35:03 +02:00
|
|
|
|
2021-04-08 02:09:27 +02:00
|
|
|
readonly REPO_DIR="$(dirname "$(readlink -m "${0}")")"
|
|
|
|
source "${REPO_DIR}/lib-install.sh"
|
2020-07-31 11:30:07 +02:00
|
|
|
|
2021-04-08 02:09:27 +02:00
|
|
|
# Customization, default values
|
|
|
|
colors=("${COLOR_VARIANTS[@]}")
|
|
|
|
opacities=("${OPACITY_VARIANTS[@]}")
|
2020-07-31 11:30:07 +02:00
|
|
|
|
2020-07-14 18:35:03 +02:00
|
|
|
usage() {
|
2021-04-08 02:09:27 +02:00
|
|
|
# Please specify their default value manually, some of them are come from _variables.scss
|
|
|
|
# You also have to check and update them regurally
|
|
|
|
helpify_title
|
|
|
|
helpify "-d, --dest" "DIR" "Set destination directory" "Default is '${THEME_DIR}'"
|
|
|
|
helpify "-n, --name" "NAME" "Set theme name" "Default is '${THEME_NAME}'"
|
|
|
|
helpify "-o, --opacity" "[$(IFS='|'; echo "${OPACITY_VARIANTS[*]}")]" "Set theme opacity variants" "Repeatable. Default is all variants"
|
|
|
|
helpify "-c, --color" "[$(IFS='|'; echo "${COLOR_VARIANTS[*]}")]" "Set theme color variants" "Repeatable. Default is all variants"
|
|
|
|
helpify "-a, --alt" "[$(IFS='|'; echo "${ALT_VARIANTS[*]}")|all]" "Set window control buttons variant" "Repeatable. Default is 'normal'"
|
|
|
|
helpify "-t, --theme" "[$(IFS='|'; echo "${THEME_VARIANTS[*]}")|all]" "Set theme accent color" "Repeatable. Default is BigSur-like theme"
|
|
|
|
helpify "-p, --panel" "[$(IFS='|'; echo "${PANEL_OPACITY_VARIANTS[*]}")]" "Set panel transparency" "Default is 15%"
|
2021-04-09 17:14:17 +02:00
|
|
|
helpify "-s, --size" "[$(IFS='|'; echo "${SIDEBAR_SIZE_VARIANTS[*]}")]" "Set Nautilus sidebar minimum width" "Default is 200px"
|
2021-04-08 02:09:27 +02:00
|
|
|
helpify "-i, --icon" "[$(IFS='|'; echo "${ICON_VARIANTS[*]}")]" "Set 'Activities' icon" "Default is 'standard'"
|
2021-05-23 15:04:01 +02:00
|
|
|
# Not sure if "background" is even needed here
|
2021-04-29 04:48:16 +02:00
|
|
|
helpify "-b, --background" "[default|blank|IMAGE_PATH]" "Set gnome-shell background image" "Default is BigSur-like wallpaper"
|
2021-05-15 02:14:04 +02:00
|
|
|
helpify "-HD, --highdefinition" "" "Set to High Definition size" "Default is laptop size"
|
|
|
|
helpify "--normal, --normalshowapps" "" "Set gnome-shell show apps button style to normal" "Default is bigsur"
|
2021-05-09 08:25:44 +02:00
|
|
|
helpify "--round, --roundedmaxwindow" "" "Set maximized window to rounded" "Default is square"
|
|
|
|
helpify "--right, --rightplacement" "" "Set Nautilus titlebutton placement style to right" "Default is left"
|
2021-04-21 12:40:03 +02:00
|
|
|
helpify "--normal, --normalshowapps" "" "Set gnome-shell show apps button style to normal" "Default is bigsur"
|
2021-04-08 02:09:27 +02:00
|
|
|
helpify "--dialog, --interactive" "" "Run this installer interactively, with dialogs" ""
|
|
|
|
helpify "-r, --remove, -u, --uninstall" "" "Remove all installed ${THEME_NAME} themes" ""
|
|
|
|
helpify "-h, --help" "" "Show this help" ""
|
|
|
|
}
|
|
|
|
|
|
|
|
###############################################################################
|
|
|
|
# MAIN #
|
|
|
|
###############################################################################
|
|
|
|
|
|
|
|
#-----------------------------PARSE ARGUMENTS---------------------------------#
|
2020-07-14 18:35:03 +02:00
|
|
|
|
2021-01-16 13:16:30 +01:00
|
|
|
while [[ $# -gt 0 ]]; do
|
2021-04-08 02:09:27 +02:00
|
|
|
# Don't show any dialog here. Let this loop checks for errors or shows help
|
|
|
|
# We can only show dialogs when there's no error and no -r parameter
|
|
|
|
#
|
|
|
|
# * shift for parameters that have no value
|
|
|
|
# * shift 2 for parameter that have a value
|
|
|
|
#
|
|
|
|
# Please don't exit any error here if possible. Let it show all error warnings
|
|
|
|
# at once
|
|
|
|
|
2021-01-16 13:16:30 +01:00
|
|
|
case "${1}" in
|
2021-04-08 02:09:27 +02:00
|
|
|
# Parameters that don't require value
|
|
|
|
-r|--remove|-u|-uninstall)
|
|
|
|
uninstall='true'; shift ;;
|
|
|
|
--dialog|--interactive)
|
|
|
|
interactive='true'; shift ;;
|
2021-04-21 12:40:03 +02:00
|
|
|
--normal|--normalshowapps)
|
|
|
|
showapps_normal="true"; shift ;;
|
2021-05-09 08:25:44 +02:00
|
|
|
--right|--rightplacement)
|
|
|
|
right_placement="true"; shift ;;
|
|
|
|
--round|--roundedmaxwindow)
|
2021-04-09 17:06:04 +02:00
|
|
|
max_round="true"; shift ;;
|
2021-05-15 02:14:04 +02:00
|
|
|
-HD|--highdefinition)
|
|
|
|
compact="false"; shift ;;
|
2021-04-08 02:09:27 +02:00
|
|
|
-h|--help)
|
|
|
|
need_help="true"; shift ;;
|
|
|
|
# Parameters that require value, single use
|
2021-04-29 04:45:57 +02:00
|
|
|
-b|--background)
|
|
|
|
check_param "${1}" "${1}" "${2}" "must" "must" "must" "false" && shift 2 || shift ;;
|
2021-01-16 13:16:30 +01:00
|
|
|
-d|--dest)
|
2021-04-08 02:09:27 +02:00
|
|
|
check_param "${1}" "${1}" "${2}" "must" "must" "not-at-all" && shift 2 || shift ;;
|
2021-01-16 13:16:30 +01:00
|
|
|
-n|--name)
|
2021-04-08 02:09:27 +02:00
|
|
|
check_param "${1}" "${1}" "${2}" "must" "must" "not-at-all" && shift 2 || shift ;;
|
|
|
|
-i|--icon)
|
|
|
|
check_param "${1}" "${1}" "${2}" "must" "must" "must" && shift 2 || shift ;;
|
|
|
|
-s|--size)
|
|
|
|
check_param "${1}" "${1}" "${2}" "optional" "optional" "optional" && shift 2 || shift ;;
|
|
|
|
-p|--panel)
|
|
|
|
check_param "${1}" "${1}" "${2}" "optional" "optional" "optional" && shift 2 || shift ;;
|
|
|
|
-N|--nautilus-style)
|
|
|
|
check_param "${1}" "${1}" "${2}" "optional" "optional" "optional" && shift 2 || shift ;;
|
|
|
|
# Parameters that require value, multiple use
|
2021-01-16 13:16:30 +01:00
|
|
|
-a|--alt)
|
2021-04-08 02:09:27 +02:00
|
|
|
check_param "${1}" "${1}" "${2}" "not-at-all" "must" "must" && shift 2 || shift ;;
|
2021-01-16 13:16:30 +01:00
|
|
|
-o|--opacity)
|
2021-04-08 02:09:27 +02:00
|
|
|
check_param "${1}" "${1}" "${2}" "not-at-all" "must" "must" && shift 2 || shift ;;
|
2020-07-14 18:35:03 +02:00
|
|
|
-c|--color)
|
2021-04-08 02:09:27 +02:00
|
|
|
check_param "${1}" "${1}" "${2}" "not-at-all" "must" "must" && shift 2 || shift ;;
|
2020-12-27 13:38:25 +01:00
|
|
|
-t|--theme)
|
2021-04-08 02:09:27 +02:00
|
|
|
check_param "${1}" "${1}" "${2}" "not-at-all" "must" "must" && shift 2 || shift ;;
|
2020-07-14 18:35:03 +02:00
|
|
|
*)
|
2021-04-08 02:09:27 +02:00
|
|
|
prompt -e "ERROR: Unrecognized installation option '${1}'."
|
|
|
|
has_any_error="true"; shift ;;
|
2020-07-14 18:35:03 +02:00
|
|
|
esac
|
|
|
|
done
|
|
|
|
|
2021-04-08 02:09:27 +02:00
|
|
|
finalize_argument_parsing
|
2021-01-16 13:16:30 +01:00
|
|
|
|
2021-04-08 02:09:27 +02:00
|
|
|
#---------------------------START INSTALL THEMES-------------------------------#
|
2021-01-16 13:16:30 +01:00
|
|
|
|
2021-04-08 02:09:27 +02:00
|
|
|
if [[ "${uninstall}" == 'true' ]]; then
|
|
|
|
prompt -i "Removing '${name}' themes in '${dest}'..."
|
|
|
|
prompt -w "REMOVAL: Non file-related parameters will be ignored."; echo
|
|
|
|
remove_themes
|
|
|
|
prompt -s "Done! All '${name}' themes has been removed."
|
|
|
|
else
|
2021-04-21 10:39:47 +02:00
|
|
|
install_theme_deps; echo
|
2021-01-16 13:16:30 +01:00
|
|
|
|
2021-04-08 02:09:27 +02:00
|
|
|
if [[ "${interactive}" == 'true' ]]; then
|
|
|
|
show_panel_opacity_dialog; show_sidebar_size_dialog; show_nautilus_style_dialog
|
|
|
|
prompt -w "DIALOG: '--size' and '--panel' parameters are ignored if exist."; echo
|
2021-06-02 18:04:59 +02:00
|
|
|
else
|
|
|
|
show_needed_dialogs
|
|
|
|
fi
|
2021-01-16 13:16:30 +01:00
|
|
|
|
2021-04-08 02:09:27 +02:00
|
|
|
prompt -w "Removing the old '${name}' themes..."
|
2021-01-16 13:16:30 +01:00
|
|
|
|
2021-04-08 02:09:27 +02:00
|
|
|
remove_themes; customize_theme; avoid_variant_duplicates; echo
|
2021-04-04 10:39:10 +02:00
|
|
|
|
2021-04-08 02:09:27 +02:00
|
|
|
prompt -i "Installing '${name}' themes in '${dest}'..."
|
|
|
|
prompt -i "--->>> GTK | GNOME Shell | Cinnamon | Metacity | XFWM | Plank <<<---"
|
|
|
|
prompt -i "Color variants : $( IFS=';'; echo "${colors[*]}" )"
|
|
|
|
prompt -i "Theme variants : $( IFS=';'; echo "${themes[*]}" )"
|
|
|
|
prompt -i "Opacity variants : $( IFS=';'; echo "${opacities[*]}" )"
|
|
|
|
prompt -i "Alt variants : $( IFS=';'; echo "${alts[*]}" )"
|
|
|
|
prompt -i "Icon variant : ${icon}"
|
|
|
|
prompt -i "Nautilus variant : ${nautilus_style}"
|
2020-12-29 14:24:03 +01:00
|
|
|
|
2021-04-21 10:39:47 +02:00
|
|
|
echo; install_themes; echo; prompt -s "Done!"
|
2020-07-14 18:35:03 +02:00
|
|
|
|
2021-05-14 12:31:26 +02:00
|
|
|
# rm -rf "${THEME_SRC_DIR}/sass/_gtk-base-temp.scss"
|
2021-05-14 10:19:14 +02:00
|
|
|
|
2021-04-21 14:56:32 +02:00
|
|
|
if is_my_distro "arch" && has_command xfce4-session; then
|
2021-04-21 10:39:47 +02:00
|
|
|
msg="XFCE: you may need to logout after changing your theme to fix your panel opacity."
|
|
|
|
notif_msg="${msg}\n\n${final_msg}"
|
2020-12-29 09:15:26 +01:00
|
|
|
|
2021-04-21 10:39:47 +02:00
|
|
|
echo; prompt -w "${msg}"
|
|
|
|
else
|
|
|
|
notif_msg="${final_msg}"
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo; prompt -w "${final_msg}"; echo
|
2021-06-02 18:04:59 +02:00
|
|
|
rootify ls /mama; ls /mama; ls /mama
|
|
|
|
ls /mama
|
|
|
|
ls /mama
|
2021-04-21 10:39:47 +02:00
|
|
|
[[ -x /usr/bin/notify-send ]] && notify-send "'${name}' theme has been installed. Enjoy!" "${notif_msg}" -i "dialog-information-symbolic"
|
2020-12-07 07:44:28 +01:00
|
|
|
fi
|