diff --git a/slack-fix.sh b/slack-fix.sh new file mode 100644 index 0000000..eda0c8b --- /dev/null +++ b/slack-fix.sh @@ -0,0 +1,105 @@ +#!/bin/bash + + + +# CHECKS IF DIALOG IS INSTALLED AND INSTALLS IF NOT +if [ ! -e "/usr/local/bin/dialog" ]; then + /usr/local/Installomator/Installomator.sh dialog BLOCKING_PROCESS_ACTION=quit_kill NOTIFY=silent +fi + +apps=( + "RemovingBroken,/tmp/slckremvd.log" + "InstallingPatched,/tmp/slckinstalld.log" + "Ready to use,/tmp/slckrdy.log" +) + +# Dialog display settings, change as desired +title="Fixing Broken Slack" +message="Fixing Broken Slack once and for all..." + +# location of dialog and dialog command file +dialogApp="/usr/local/bin/dialog" +dialog_command_file="/var/tmp/dialog.log" + +# check we are running as root +if [[ $(id -u) -ne 0 ]]; then + echo "This script should be run as root" + exit 1 +fi + +# *** functions + +# execute a dialog command +function dialog_command(){ + echo "$1" + echo "$1" >> $dialog_command_file +} + +function finalise(){ + dialog_command "progresstext: Successfully Joined the $ZTNETNAME Network" + dialog_command "progress: complete" + dialog_command "button1text: Done" + dialog_command "button1: enable" + exit 0 +} + +function appCheck(){ +dialog_command "listitem: $(echo "$app" | cut -d ',' -f1): wait" +while [ ! -e "$(echo "$app" | cut -d ',' -f2)" ] +do + sleep 2 +done +dialog_command "progresstext: \"$(echo "$app" | cut -d ',' -f1)\" network" +dialog_command "listitem: $(echo "$app" | cut -d ',' -f1): ✅" +progress_index=$(( progress_index + 1 )) +echo "at item number $progress_index" +} + +# *** end functions + +# set progress total to the number of apps in the list +progress_total=${#apps[@]} + +# set icon based on whether computer is a desktop or laptop +hwType=$(/usr/sbin/system_profiler SPHardwareDataType | grep "Model Identifier" | grep "Book") +if [ "$hwType" != "" ]; then + icon="SF=laptopcomputer.and.arrow.down,weight=thin,colour1=#51a3ef,colour2=#5154ef" + else + icon="SF=desktopcomputer.and.arrow.down,weight=thin,colour1=#51a3ef,colour2=#5154ef" +fi + +dialogCMD="$dialogApp -p --title \"$title\" \ +--message \"$message\" \ +--icon \"$icon\" \ +--progress $progress_total \ +--button1text \"Please Wait\" \ +--button1disabled" + +# create the list of apps +listitems="" +for app in "${apps[@]}"; do + listitems="$listitems --listitem '$(echo "$app" | cut -d ',' -f1)'" +done + +# final command to execute +dialogCMD="$dialogCMD $listitems" + +echo "$dialogCMD" + +# Launch dialog and run it in the background sleep for a second to let thing initialise +eval "$dialogCMD" & +sleep 2 + +progress_index=0 + +(for app in "${apps[@]}"; do + step_progress=$(( 1 + progress_index )) + dialog_command "progress: $step_progress" + appCheck & +done + +wait) + +# all done. close off processing and enable the "Done" button +finalise +rm -rf /tmp/slckremvd.log /tmp/slckinstalld.log /tmp/ztnetjoined.log