2021-04-08 02:09:27 +02:00
#! /bin/bash
# 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 )
###############################################################################
# VARIABLES & HELP #
###############################################################################
readonly REPO_DIR = " $( dirname " $( readlink -m " ${ 0 } " ) " ) "
source " ${ REPO_DIR } /lib-install.sh "
usage( ) {
# 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 "-f, --firefox" "" " Install ' ${ THEME_NAME } ' theme for Firefox and connect it to the current Firefox profiles " ""
helpify "-e, --edit-firefox" "" " Edit ' ${ THEME_NAME } ' theme for Firefox settings and also connect the theme to the current Firefox profiles " ""
helpify "-F, --flatpak" "" " Connect ' ${ THEME_NAME } ' theme to Flatpak " ""
helpify "-s, --snap" "" " Connect ' ${ THEME_NAME } ' theme the currently installed snap apps " ""
helpify "-g, --gdm" "" " Install ' ${ THEME_NAME } ' theme for GDM " "Requires to run this shell as root"
helpify "-d, --dash-to-dock" "" " Install ' ${ THEME_NAME } ' theme for Dash to Dock and connect it to the current Dash to Dock installation(s) " ""
helpify "-D, --darken" "" " Darken ' ${ THEME_NAME } ' GDM theme background image " ""
helpify "-n, --no-blur" "" " Don't blur ' ${ THEME_NAME } ' GDM theme background image " ""
helpify "-b, --background" "[default|blank|IMAGE_PATH]" " Set ' ${ THEME_NAME } ' GDM theme background image " "Default is BigSur-like wallpaper"
helpify "-o, --opacity" " [ $( IFS = '|' ; echo " ${ OPACITY_VARIANTS [*] } " ) ] " " Set ' ${ THEME_NAME } ' GDM theme opacity variants " "Default is 'normal'"
helpify "-c, --color" " [ $( IFS = '|' ; echo " ${ COLOR_VARIANTS [*] } " ) ] " " Set ' ${ THEME_NAME } ' GDM and Dash to Dock theme color variants " "Default is 'light'"
helpify "-t, --theme" " [ $( IFS = '|' ; echo " ${ THEME_VARIANTS [*] } " ) ] " " Set ' ${ THEME_NAME } ' GDM theme accent color " "Default is BigSur-like theme"
helpify "-p, --panel" " [ $( IFS = '|' ; echo " ${ PANEL_OPACITY_VARIANTS [*] } " ) ] " " Set ' ${ THEME_NAME } ' GDM (GNOME Shell) theme panel transparency " "Default is 15%"
helpify "-i, --icon" " [ $( IFS = '|' ; echo " ${ ICON_VARIANTS [*] } " ) ] " " Set ' ${ THEME_NAME } ' GDM (GNOME Shell) 'Activities' icon " "Default is 'standard'"
helpify "-r, --remove, --revert" "" "Revert to the original themes, do the opposite things of install and connect" ""
helpify "-h, --help" "" "Show this help" ""
}
###############################################################################
# MAIN #
###############################################################################
#-----------------------------PARSE ARGUMENTS---------------------------------#
while [ [ $# -gt 0 ] ] ; do
# 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
case " ${ 1 } " in
# Parameters that don't require value
-r| --remove| --revert)
uninstall = 'true' ; shift ; ;
-h| --help)
need_help = "true" ; shift ; ;
-f| --firefox| -e| --edit-firefox)
case " ${ 1 } " in
-f| --firefox)
firefox = "true" ; ;
-e| --edit-firefox)
edit_firefox = "true" ; ;
esac
2021-04-21 14:56:32 +02:00
if ! has_command firefox; then
2021-04-08 02:09:27 +02:00
prompt -e " ' ${ 1 } ' ERROR: There's no Firefox installed in your system "
has_any_error = "true"
elif [ [ ! -d " ${ FIREFOX_DIR_HOME } " ] ] ; then
prompt -e " ' ${ 1 } ' ERROR: Firefox is installed but not yet initialized. "
prompt -w " ' ${ 1 } ': Don't forget to close it after you run/initialize it "
has_any_error = "true"
2021-04-12 17:20:38 +02:00
elif pidof "firefox" & > /dev/null; then
2021-04-08 02:09:27 +02:00
prompt -e " ' ${ 1 } ' ERROR: Firefox is running, please close it "
has_any_error = "true"
fi ; shift ; ;
-F| --flatpak)
flatpak = "true" ;
2021-04-21 14:56:32 +02:00
if ! has_command flatpak; then
2021-04-08 02:09:27 +02:00
prompt -e " ' ${ 1 } ' ERROR: There's no Flatpak installed in your system "
has_any_error = "true"
fi ; shift ; ;
-s| --snap)
snap = "true" ;
2021-04-21 14:56:32 +02:00
if ! has_command snap; then
2021-04-08 02:09:27 +02:00
prompt -e " ' ${ 1 } ' ERROR: There's no Snap installed in your system "
has_any_error = "true"
fi ; shift ; ;
-g| --gdm)
gdm = "true" ; full_rootify " ${ 1 } "
2021-04-21 14:56:32 +02:00
if ! has_command gdm && ! has_command gdm3; then
2021-04-08 02:09:27 +02:00
prompt -e " ' ${ 1 } ' ERROR: There's no GDM installed in your system "
has_any_error = "true"
fi ; shift ; ;
-d| --dash-to-dock)
dash_to_dock = "true"
if [ [ ! -d " ${ DASH_TO_DOCK_DIR_HOME } " && ! -d " ${ DASH_TO_DOCK_DIR_ROOT } " ] ] ; then
prompt -e " ' ${ 1 } ' ERROR: There's no Dash to Dock installed in your system "
has_any_error = "true"
fi ; shift ; ;
-D| --darken)
darken = "true" ; shift ; ;
-n| --no-blur)
no_blur = "true" ; shift ; ;
# Parameters that require value, single use
-b| --background)
check_param " ${ 1 } " " ${ 1 } " " ${ 2 } " "must" "must" "must" "false" && shift 2 || shift ; ;
-i| --icon)
check_param " ${ 1 } " " ${ 1 } " " ${ 2 } " "must" "must" "must" "false" && shift 2 || shift ; ;
-p| --panel)
check_param " ${ 1 } " " ${ 1 } " " ${ 2 } " "must" "optional" "optional" "false" && shift 2 || shift ; ;
-o| --opacity)
check_param " ${ 1 } " " ${ 1 } " " ${ 2 } " "must" "must" "must" "false" && shift 2 || shift ; ;
-c| --color)
check_param " ${ 1 } " " ${ 1 } " " ${ 2 } " "must" "must" "must" "false" && shift 2 || shift ; ;
-t| --theme)
check_param " ${ 1 } " " ${ 1 } " " ${ 2 } " "must" "must" "must" "false" && shift 2 || shift ; ;
*)
prompt -e " ERROR: Unrecognized tweak option ' ${ 1 } '. "
has_any_error = "true" ; shift ; ;
esac
done
finalize_argument_parsing
#---------------------------START INSTALL THEMES-------------------------------#
if [ [ " ${ uninstall } " = = 'true' ] ] ; then
echo; prompt -w "REMOVAL: Non file-related parameters will be ignored."
if [ [ " ${ gdm } " = = 'true' ] ] ; then
echo; prompt -i " Removing ' ${ name } ' GDM theme... "
revert_gdm_theme
echo; prompt -s " Done! ' ${ name } ' GDM theme has been removed. "
fi
if [ [ " ${ dash_to_dock } " = = 'true' ] ] ; then
echo; prompt -i " Removing ' ${ name } ' Dash to Dock theme... "
revert_dash_to_dock_theme
echo; prompt -s " Done! ' ${ name } ' Dash to Dock theme has been removed. "
fi
if [ [ " ${ firefox } " = = 'true' ] ] ; then
echo; prompt -i " Removing ' ${ name } ' Firefox theme... "
remove_firefox_theme
echo; prompt -s " Done! ' ${ name } ' Firefox theme has been removed. "
fi
if [ [ " ${ snap } " = = 'true' ] ] ; then
echo; prompt -i " Disconnecting ' ${ name } ' theme from your installed snap apps... "
disconnect_snap
echo; prompt -s " Done! ' ${ name } ' theme has been disconnected from your snap apps. "
fi
if [ [ " ${ flatpak } " = = 'true' ] ] ; then
echo; prompt -i " Disconnecting ' ${ name } ' theme from your Flatpak... "
disconnect_flatpak
echo; prompt -s " Done! ' ${ name } ' theme has been disconnected from your Flatpak. "
fi
else
2021-04-10 09:09:46 +02:00
show_needed_dialogs; customize_theme
2021-04-08 02:09:27 +02:00
if [ [ " ${ gdm } " = = 'true' ] ] ; then
echo; prompt -i " Installing ' ${ name } ' GDM theme... "
2021-04-20 13:17:18 +02:00
install_gdm_deps; install_gdm_theme
2021-04-08 02:09:27 +02:00
echo; prompt -s " Done! ' ${ name } ' GDM theme has been installed. "
fi
if [ [ " ${ dash_to_dock } " = = 'true' ] ] ; then
echo; prompt -i " Installing ' ${ name } ' ${ colors [0] } Dash to Dock theme... "
install_dash_to_dock_theme
echo; prompt -s " Done! ' ${ name } ' Dash to Dock theme has been installed. "
prompt -w "DASH TO DOCK: You may need to logout to take effect."
fi
if [ [ " ${ firefox } " = = 'true' || " ${ edit_firefox } " = = 'true' ] ] ; then
if [ [ " ${ firefox } " = = 'true' ] ] ; then
echo; prompt -i " Installing ' ${ name } ' Firefox theme... "
install_firefox_theme
echo; prompt -s " Done! ' ${ name } ' Firefox theme has been installed. "
fi
if [ [ " ${ edit_firefox } " = = 'true' ] ] ; then
echo; prompt -i " Editing ' ${ name } ' Firefox theme preferences... "
edit_firefox_theme_prefs
echo; prompt -s " Done! ' ${ name } ' Firefox theme preferences has been edited. "
fi
echo
prompt -w "FIREFOX: Please go to [Firefox menu] > [Customize...], and customize your Firefox to make it work. Move your 'new tab' button to the titlebar instead of tab-switcher."
2021-04-19 13:35:20 +02:00
prompt -w " FIREFOX: Anyways, you can also edit 'userChrome.css' and 'customChrome.css' later in ' ${ FIREFOX_THEME_DIR } '. "
2021-04-08 02:09:27 +02:00
fi
if [ [ " ${ snap } " = = 'true' ] ] ; then
echo; prompt -i " Connecting ' ${ name } ' theme to your installed snap apps... "
connect_snap
echo; prompt -s " Done! ' ${ name } ' theme has been connected to your snap apps. "
fi
if [ [ " ${ flatpak } " = = 'true' ] ] ; then
echo; prompt -i " Connecting ' ${ name } ' theme to your Flatpak... "
connect_flatpak
echo; prompt -s " Done! ' ${ name } ' theme has been connected to your Flatpak. "
fi
fi
if [ [ " ${ firefox } " = = "false" && " ${ edit_firefox } " = = "false" && " ${ flatpak } " = = "false" && " ${ snap } " = = "false" && " ${ gdm } " = = "false" && " ${ dash_to_dock } " = = "false" ] ] ; then
echo; prompt -e "Oops... there's nothing to tweaks..."
2021-04-29 05:24:03 +02:00
echo; prompt -i "Run ./tweaks.sh -h for help!..."
2021-04-08 02:09:27 +02:00
fi
echo