Compare commits

..

No commits in common. "main" and "v1.0.5" have entirely different histories.
main ... v1.0.5

4 changed files with 191 additions and 297 deletions

View file

@ -22,7 +22,7 @@ My goal with this script is to keep it simple, just a single line that gives use
<hr> <hr>
### Installing: ### Installing:
#### Automatic Installation via Curl #### Via Curl
<sub>Bash:</sub> <sub>Bash:</sub>
``` ```
bash -c "$(curl -s https://raw.githubusercontent.com/G2-Games/welcome.sh/main/install.sh)" bash -c "$(curl -s https://raw.githubusercontent.com/G2-Games/welcome.sh/main/install.sh)"
@ -31,11 +31,20 @@ bash -c "$(curl -s https://raw.githubusercontent.com/G2-Games/welcome.sh/main/in
``` ```
zsh -c "$(curl -s https://raw.githubusercontent.com/G2-Games/welcome.sh/main/install.sh)" zsh -c "$(curl -s https://raw.githubusercontent.com/G2-Games/welcome.sh/main/install.sh)"
``` ```
#### Or wget
<sub>Bash:</sub>
```
bash -c "$(wget -q https://raw.githubusercontent.com/G2-Games/welcome.sh/main/install.sh -O -)"
```
<sub>Zsh:</sub>
```
zsh -c "$(wget -q https://raw.githubusercontent.com/G2-Games/welcome.sh/main/install.sh -O -)"
```
It installs to `~/.welcome/welcome.sh`, and adds a line to the bottom of `~/.bashrc` or `~/.zshrc` It installs to `~/.welcome/welcome.sh`, and adds a line to the bottom of `~/.bashrc` or `~/.zshrc`
#### Manual Installation #### Manual Installation
To install it manually, download the latest `welcome.sh` from <a href="https://github.com/G2-Games/welcome.sh/releases/latest">releases</a> and place it in your home directory. Then add `bash ~/welcome.sh` to your `.bashrc`. It works without the config file, but you can also add that to your home directory for easier manual updates. To use it, download the latest `welcome.sh` from <a href="https://github.com/G2-Games/welcome.sh/releases">releases</a> and place it in your home directory. Then add `bash ~/welcome.sh` to your `.bashrc`. It works without the config file, but you can also add that to your home directory for easier manual updates.
### Updating: ### Updating:
Run the script again to check for an update. If you have an older version it will prompt you. You can update **from** any version **to** any newer version. The proper files will be downloaded as necessary. Run the script again to check for an update. If you have an older version it will prompt you. You can update **from** any version **to** any newer version. The proper files will be downloaded as necessary.

View file

@ -1,25 +0,0 @@
#!/bin/bash
version=1
echo "Ensuring welcome.sh is installed in the new location..."
# Check if welcome.sh is installed in the old location
if [[ -f ~/.welcome ]]\
|| [[ -f ~/.welcome/welcome.sh ]]\
|| [[ -f ~/.welcome/config.cfg ]];
then
# Modify the files with proper paths
sed "${i}d" "$zshrc" > file.tmp && mv file.tmp "$zshrc"
# Create the directories in the proper spots
mkdir -p ~/.config/welcome.sh/
mkdir -p ~/.local/bin/
# Move the welcome files to the proper folders
mv ~/.welcome/config.cfg ~/.config/welcome.sh/config.cfg
mv ~/.welcome/welcome.sh ~/.local/bin/welcome.sh
echo "welcome.sh is now installed in the new location!"
else
echo "welcome.sh is already installed properly!"
fi

View file

@ -1,207 +1,155 @@
getVersion () { version="${1:-1.0.4}"
local ver vernum=$(echo $version | sed 's/[.][.]*//g' )
ver=$(grep version ~/.welcome/welcome.sh 2> /dev/null | sed 's/.*=//') bashrc=~/.bashrc
zshrc=~/.zshrc
if [ -z "$ver" ]; then originaldir=$PWD
echo -e "\bUnknown" environment=$(ps -o args= -p $$ | grep -Em 1 -o '\w{0,5}sh' | head -1)
return if [ "$environment" = "bash" ] || [ "$environment" = "zsh" ];
then
if ! grep -qs 'bash ~/.welcome/welcome.sh' $bashrc && ! grep -qs 'zsh ~/.welcome/welcome.sh' $zshrc && ! grep -qs 'bash /home/$USER/.welcome/welcome.sh' $bashrc && ! grep -qs 'zsh /home/$USER/.welcome/welcome.sh' $zshrc || [ -z ~/.welcome/welcome.sh ];
then
echo "Welcome! Installing v$version in $environment..."
tput sc
cd ~/
mkdir -p ~/.welcome
if which curl >/dev/null ;
then
curl -SL https://github.com/G2-Games/welcome.sh/releases/download/v${version}/welcome.sh --output ~/.welcome/welcome.sh
if [[ $vernum -ge 100 ]]; then
curl -SL https://github.com/G2-Games/welcome.sh/releases/download/v${version}/config.cfg --output ~/.welcome/config.cfg
fi fi
elif which wget >/dev/null ;
echo "$ver" then
} wget https://github.com/G2-Games/welcome.sh/releases/download/v${version}/welcome.sh --P ~/.welcome/
if [[ $vernum -ge 100 ]]; then
# Universal read command for bash and zsh wget https://github.com/G2-Games/welcome.sh/releases/download/v${version}/config.cfg --P ~/.welcome/
univRead () {
echo -en "$1"
echo -en "\n[\e[36mY/n\e[0m]"
if [[ "$environment" = "bash" ]]; then
read -p " " -r
elif [[ "$environment" = "zsh" ]]; then
read -q "REPLY? " -r
fi fi
else
echo -e "\e[31mCannot download, neither Wget nor cURL is available!\e[0m"
exit 1
fi
chmod +x ~/.welcome/welcome.sh
if [[ "$environment" = "bash" ]];
then
echo "Installing to bashrc"
echo 'bash ~/.welcome/welcome.sh' >> $bashrc
elif [[ "$environment" = "zsh" ]];
then
echo "Installing to zshrc"
echo 'zsh ~/.welcome/welcome.sh' >> $zshrc
fi
cd "$originaldir"
tput rc && tput el && tput ed
echo -e "\e[36mInstalled! \e[0m"
else
tput sc
mkdir -p ~/.welcome
echo -e "\e[35mwelcome.sh\e[0m already installed!"
oldver=$(grep version ~/.welcome/welcome.sh 2> /dev/null | sed 's/.*=//' | sed 's/[.][.]*//g') && if ! [ -n "$oldver" ]; then oldver=0; fi
if [[ $vernum -gt $oldver ]]; then
if which curl >/dev/null ; then cfgver=$(echo $(curl -Ls https://github.com/G2-Games/welcome.sh/releases/download/v$version/config.cfg) | grep version | sed 's/.*=//' | sed 's/[.][.]*//g');
elif which wget >/dev/null ; then cfgver=$(echo $(wget -q https://github.com/G2-Games/welcome.sh/releases/download/v1.0.2/config.cfg -O -) | grep version | sed 's/.*=//' | sed 's/[.][.]*//g'); fi
echo -en "Do you want to \e[36mupdate \e[35mwelcome.sh\e[0m? (\e[36mv$(ver=$(grep version ~/.welcome/welcome.sh 2> /dev/null | sed 's/.*=//') && if ! [ -n "$ver" ]; then echo -e "\bUnknown"; else echo "$ver"; fi)\e[0m => \e[32mv$version\e[0m) \n\e[36mY/n\e[0m"
if [[ "$environment" = "bash" ]]; then read -p " " -n 1 -r;
elif [[ "$environment" = "zsh" ]]; then read -q "REPLY? " -n 1 -r; fi
echo echo
} if [[ $REPLY =~ ^[Yy]$ ]]; then
if [[ $cfgver -gt $(grep version ~/.welcome/config.cfg 2> /dev/null | sed 's/.*=//' | sed 's/[.][.]*//g') ]] && ! [ -z ~/.welcome/config.cfg ]; then
uninstall () { echo -en "Newer config version available. Do you want to \e[31moverwrite\e[0m your config? \nA backup will be created in the \e[36m.welcome\e[0m folder.\n\e[36mY/n\e[0m"
# Check if the user actually wishes to uninstall the script if [[ "$environment" = "bash" ]]; then read -p " " -n 1 -r;
univRead "Do you want to \e[31muninstall \e[35mwelcome.sh\e[0m?" elif [[ "$environment" = "zsh" ]]; then read -q "REPLY? " -n 1 -r; fi
if ! [[ $REPLY =~ ^[Yy]$ ]]; then echo
tput rc el ed if [[ $REPLY =~ ^[Yy]$ ]]; then
echo -e "\e[31mUninstall cancelled.\e[0m" overcfg=1
exit 0 fi
elif [ $oldver -lt 100 ]; then
overcfg=1
else
overcfg=0
fi
tput rc && tput el && tput ed
echo "Updating..."
tput sc
mkdir -p ~/.welcome
rm ~/.welcome/welcome.sh
if which curl >/dev/null ;
then
curl -SL https://github.com/G2-Games/welcome.sh/releases/download/v${version}/welcome.sh --output ~/.welcome/welcome.sh
if [[ $vernum -ge 100 ]] && [[ $overcfg -gt 0 ]]; then
echo "Backing up: config.cfg >> config_old.cfg"
mv ~/.welcome/config.cfg ~/.welcome/config_old.cfg
curl -SL https://github.com/G2-Games/welcome.sh/releases/download/v${version}/config.cfg --output ~/.welcome/config.cfg
fi
elif which wget >/dev/null ;
then
wget https://github.com/G2-Games/welcome.sh/releases/download/v${version}/welcome.sh --P ~/.welcome/
if [[ $vernum -ge 100 ]] && [[ $overcfg -gt 0 ]]; then
echo "Backing up: config.cfg >> config_old.cfg"
mv ~/.welcome/config.cfg ~/.welcome/config_old.cfg
wget https://github.com/G2-Games/welcome.sh/releases/download/v${version}/config.cfg --P ~/.welcome/
fi
else
echo -e "\e[31mCannot update, neither Wget nor cURL is available!\e[0m"
exit 1
fi fi
tput rc el ed # Check for older versions and replace bashrc lines
lines=$(grep -sn 'bash ~/.welcome/welcome.sh' $bashrc | sed -e 's/:.*//g' && grep -sn 'bash /home/$USER/.welcome/welcome.sh' $bashrc | sed -e 's/:.*//g')
lines=$(printf '%s\n' $lines | sed '1!G;h;$!d' | sed ':a;N;$!ba;s/\n/ /g')
for i in $( echo "$lines" ); do
sed "${i}d" $bashrc > file.tmp && mv file.tmp $bashrc
done
echo 'bash ~/.welcome/welcome.sh' >> $bashrc
lines=$(grep -sn 'zsh ~/.welcome/welcome.sh' $zshrc | sed -e 's/:.*//g' && grep -sn 'zsh /home/$USER/.welcome/welcome.sh' $zshrc | sed -e 's/:.*//g')
lines=$(printf '%s\n' $lines | sed '1!G;h;$!d' | sed ':a;N;$!ba;s/\n/ /g')
for i in $( echo "$lines" ); do
sed "${i}d" $zshrc > file.tmp && mv file.tmp $zshrc
done
echo 'zsh ~/.welcome/welcome.sh' >> $zshrc
tput rc && tput el && tput ed
echo -e "\e[32mUpdated to v$version! \e[0m"
exit 0
else
tput rc && tput el && tput ed
echo -e "\e[35mwelcome.sh\e[0m already installed!"
fi
fi
echo -en "Do you want to \e[31muninstall \e[35mwelcome.sh\e[0m?\n\e[36mY/n\e[0m"
if [[ "$environment" = "bash" ]]; then read -p " " -n 1 -r;
elif [[ "$environment" = "zsh" ]]; then read -q "REPLY? " -n 1 -r; fi
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
tput rc && tput el && tput ed
echo "Goodbye. Uninstalling..." echo "Goodbye. Uninstalling..."
tput sc tput sc
rm ~/.welcome/welcome.sh 2> /dev/null rm ~/.welcome/welcome.sh 2> /dev/null
rm ~/.welcome/install.sh 2> /dev/null
rm ~/.welcome/config.cfg 2> /dev/null rm ~/.welcome/config.cfg 2> /dev/null
rm ~/.welcome/config_old.cfg 2> /dev/null rm ~/.welcome/config_old.cfg 2> /dev/null
rm -r ~/.welcome rm -r ~/.welcome
#remove all lines that match the string #remove all lines that match the string
lines=$(grep -sn 'bash ~/.welcome/welcome.sh' "$bashrc" | sed -e 's/:.*//g' && grep -sn 'bash /home/$USER/.welcome/welcome.sh' "$bashrc" | sed -e 's/:.*//g') lines=$(grep -sn 'bash ~/.welcome/welcome.sh' $bashrc | sed -e 's/:.*//g' && grep -sn 'bash /home/$USER/.welcome/welcome.sh' $bashrc | sed -e 's/:.*//g')
lines=$(printf '%s\n' "$lines" | sed '1!G;h;$!d' | sed ':a;N;$!ba;s/\n/ /g') lines=$(printf '%s\n' $lines | sed '1!G;h;$!d' | sed ':a;N;$!ba;s/\n/ /g')
for i in $lines; do for i in $( echo "$lines" ); do
sed "${i}d" "$bashrc" > file.tmp && mv file.tmp "$bashrc" sed "${i}d" $bashrc > file.tmp && mv file.tmp $bashrc
done done
lines=$(grep -sn 'zsh ~/.welcome/welcome.sh' "$zshrc" | sed -e 's/:.*//g' && grep -sn 'zsh /home/$USER/.welcome/welcome.sh' "$zshrc" | sed -e 's/:.*//g') lines=$(grep -sn 'zsh ~/.welcome/welcome.sh' $zshrc | sed -e 's/:.*//g' && grep -sn 'zsh /home/$USER/.welcome/welcome.sh' $zshrc | sed -e 's/:.*//g')
lines=$(printf '%s\n' "$lines" | sed '1!G;h;$!d' | sed ':a;N;$!ba;s/\n/ /g') lines=$(printf '%s\n' $lines | sed '1!G;h;$!d' | sed ':a;N;$!ba;s/\n/ /g')
for i in $lines; do for i in $( echo "$lines" ); do
sed "${i}d" "$zshrc" > file.tmp && mv file.tmp "$zshrc" sed "${i}d" $zshrc > file.tmp && mv file.tmp $zshrc
done done
tput rc && tput el && tput ed tput rc && tput el && tput ed
echo -e "\e[36mUninstalled! \e[0m" echo -e "\e[36mUninstalled! \e[0m"
} else
tput rc && tput el && tput ed
update () { echo -e "\e[31mCancelled. \e[0m"
tput rc el ed
echo "Updating..."
tput sc
mkdir -p ~/.welcome
rm ~/.welcome/welcome.sh 2> /dev/null
rm ~/.welcome/install.sh 2> /dev/null
curl -SL https://github.com/G2-Games/welcome.sh/releases/download/v"${version}"/welcome.sh --output ~/.welcome/welcome.sh
curl -SL https://raw.githubusercontent.com/G2-Games/welcome.sh/main/install.sh --output ~/.welcome/install.sh
if [[ $vernum -ge 100 ]] && [[ $overcfg -gt 0 ]]; then
echo "Backing up: config.cfg >> config_old.cfg"
mv ~/.welcome/config.cfg ~/.welcome/config_old.cfg
curl -SL https://github.com/G2-Games/welcome.sh/releases/download/v"${version}"/config.cfg --output ~/.welcome/config.cfg
fi
# Check for older versions and replace bashrc lines
lines=$(grep -sn 'bash ~/.welcome/welcome.sh' "$bashrc" | sed -e 's/:.*//g' && grep -sn 'bash /home/$USER/.welcome/welcome.sh' "$bashrc" | sed -e 's/:.*//g') # Find target line number
lines=$(printf '%s\n' "$lines" | sed '1!G;h;$!d' | sed ':a;N;$!ba;s/\n/ /g') # Format the line number properly (macos doesn't have Cut)
for i in $lines; do
sed "${i}d" "$bashrc" > file.tmp && mv file.tmp "$bashrc"
done
echo 'bash ~/.welcome/welcome.sh' >> "$bashrc"
lines=$(grep -sn 'zsh ~/.welcome/welcome.sh' "$zshrc" | sed -e 's/:.*//g' && grep -sn 'zsh /home/$USER/.welcome/welcome.sh' "$zshrc" | sed -e 's/:.*//g')
lines=$(printf '%s\n' "$lines" | sed '1!G;h;$!d' | sed ':a;N;$!ba;s/\n/ /g')
for i in $lines; do
sed "${i}d" "$zshrc" > file.tmp && mv file.tmp "$zshrc"
done
echo 'zsh ~/.welcome/welcome.sh' >> "$zshrc"
tput rc el ed
echo -e "\e[32mUpdated to v$version! \e[0m"
}
tput sc
if [[ -z "$1" ]] && [[ $1 != "auto" ]]; then
echo "Checking for latest release..."
fi
if ! [[ $(command -v curl) ]]; then
exit 1
fi
latestver=$(curl -Ls https://github.com/G2-Games/welcome.sh/releases/latest/download/welcome.sh | grep version | cut -d= -f2)
oldver=$(grep version ~/.welcome/welcome.sh 2> /dev/null | cut -d= -f2 | sed 's/[.][.]*//g') && if [[ -z "$oldver" ]]; then oldver=0; fi
version="${1:-$latestver}"
if [[ $1 == "auto" ]] && [[ ${latestver//./} -le $oldver ]]; then
exit 0 exit 0
elif [[ $1 == "auto" ]]; then
version=$latestver
fi
vernum=${version//./}
bashrc=~/.bashrc
zshrc=~/.zshrc
originaldir=$PWD
environment=$(ps -o args= -p $$ | grep -Em 1 -o '\w{0,5}sh' | head -1)
# Check if the environment is bash or zsh
if [[ "$environment" != "bash" ]] && [[ "$environment" != "zsh" ]]; then
tput rc
printf "\e[31;5mERROR:\e[0m \e[31;3mThis script can only be installed in Bash or Zsh.\e[0m\n"
printf "\e[32mYou appear to be using %s, which is not a valid shell for\n\
this script!\e[0m Please use \e[3mBash \e[0mor \e[3mZsh.\e[0m\n" "${environment}"
exit 1
fi
# Check if already installed
if ! grep -qs 'bash ~/.welcome/welcome.sh' $bashrc &&
! grep -qs 'zsh ~/.welcome/welcome.sh' $zshrc &&
! grep -qs 'bash /home/$USER/.welcome/welcome.sh' $bashrc &&
! grep -qs 'zsh /home/$USER/.welcome/welcome.sh' $zshrc;
then
#==== Execute if first time installing...====#
tput rc
echo "Welcome! Installing v$version in $environment..."
tput sc
cd ~/ || exit 1
mkdir -p ~/.welcome
curl -SL https://github.com/G2-Games/welcome.sh/releases/download/v"${version}"/welcome.sh --output ~/.welcome/welcome.sh
curl -SL https://raw.githubusercontent.com/G2-Games/welcome.sh/main/install.sh --output ~/.welcome/install.sh
if [[ $vernum -ge 100 ]]; then
curl -SL https://github.com/G2-Games/welcome.sh/releases/download/v"${version}"/config.cfg --output ~/.welcome/config.cfg
fi fi
chmod +x ~/.welcome/welcome.sh
if [[ "$environment" = "bash" ]]; then
echo "Installing to bashrc"
echo 'bash ~/.welcome/welcome.sh' >> $bashrc
elif [[ "$environment" = "zsh" ]]; then
echo "Installing to zshrc"
echo 'zsh ~/.welcome/welcome.sh' >> $zshrc
fi fi
cd "$originaldir" || exit 1
tput rc el ed
echo -e "\e[36mInstalled! \e[0m"
else else
#==== Execute if already installed...====# printf "\e[31;5mERROR:\e[0m \e[31;3mThis script can only be installed in Bash or Zsh.\e[0m\n"
tput rc sc el ed
mkdir -p ~/.welcome
if ! [[ $1 == "auto" ]]; then
echo -e "\e[35mwelcome.sh\e[0m already installed!"
else
echo -e "\e[32mUpdate available for \e[35mwelcome.sh!\e[0m"
fi
if [[ $vernum -gt $oldver ]]; then
# Pull the new configuration version from github
newCfgVer=$(curl -Ls https://github.com/G2-Games/welcome.sh/releases/download/v"${version}"/config.cfg | grep version | cut -d= -f2)
univRead "Do you want to \e[36mupdate \e[35mwelcome.sh\e[0m? (\e[36mv$(getVersion)\e[0m => \e[32mv$version\e[0m)"
if ! [[ $REPLY =~ ^[Yy]$ ]]; then
tput rc sc el ed
echo -e "\e[31mUpdate cancelled.\e[0m"
update=0
else
update=1
fi
if [[ $newCfgVer -gt $(grep version ~/.welcome/config.cfg 2> /dev/null | cut -d= -f2) ]]; then
univRead "Newer \e[36mconfig\e[0m version available. Do you want to \e[31moverwrite\e[0m your \e[36mconfig\e[0m? \nA backup will be created in the \e[36m.welcome\e[0m folder."
if [[ $REPLY =~ ^[Yy]$ ]]; then
overcfg=1
fi
elif [[ $oldver -lt 100 ]]; then
overcfg=1
else
overcfg=0
fi
fi
if [[ update -gt 0 ]]; then
update
exit 0
fi
if ! [[ $1 == "auto" ]]; then
uninstall
exit 0
fi
fi fi

View file

@ -1,14 +1,8 @@
version=1.0.5
export LC_NUMERIC="en_US.UTF-8" &> /dev/null #Fix for locales that use , instead of . as a decimal delimiter export LC_NUMERIC="en_US.UTF-8" &> /dev/null #Fix for locales that use , instead of . as a decimal delimiter
# Define "global" variables
environment=$(ps -o args= -p $$ | grep -Em 1 -o '\w{0,5}sh' | head -1)
version=1.1.2
#========Welcome=======# #========Welcome=======#
welcome () { welcome () {
msg="Welcome" # Default msg="Welcome" # Default
greetingsLength=${#greetings[@]}
greetingsNumber=$((RANDOM % greetingsLength))
if command -v whoami &>/dev/null ; then if command -v whoami &>/dev/null ; then
usr=$(whoami) usr=$(whoami)
@ -19,7 +13,7 @@ welcome () {
fi fi
if [ "$randgreeting" = "on" ]; then if [ "$randgreeting" = "on" ]; then
msg=${greetings[@]:$greetingsNumber:1} msg=${greetings[$(($RANDOM % $(echo ${#greetings[@]})))]}
fi fi
# Print the welcome message # Print the welcome message
@ -28,10 +22,9 @@ welcome () {
#=========Time=========# #=========Time=========#
clock () { clock () {
bksp=""
# Set the current hour and minute # Set the current hour and minute
if [ "$twelvehour" = "on" ]; then if [ "$twelvehour" = "on" ]; then
if [[ "$(date +%_I)" -lt 10 ]]; then if [ $(date +%_I) -lt 10 ]; then
hour="\b$(date +%_I)" hour="\b$(date +%_I)"
else else
hour="$(date +%_I)" hour="$(date +%_I)"
@ -39,7 +32,7 @@ clock () {
ampm=$(date +%p) ampm=$(date +%p)
else else
hour=$(date +%H) hour=$(date +%H)
bksp="\b \b" # This is a hack to fix some spacing issues with AM and PM with different lengths of time bksp="\b \b"
fi fi
minute=$(date +%M) minute=$(date +%M)
@ -57,14 +50,13 @@ greeting () {
greet="Good" greet="Good"
fi fi
# Change color and greeting depending on the segment of day if [ $hour -le 11 ] && [ $hour -gt 6 ]; then
if [ "$hour" -le 11 ] && [ "$hour" -gt 6 ]; then
echo -en "$greet ${MORN}morning${NCOL}. " echo -en "$greet ${MORN}morning${NCOL}. "
elif [ "$hour" -eq 12 ]; then elif [ $hour -eq 12 ]; then
echo -en "It's ${AFTN}noon${NCOL}. " echo -en "It's ${AFTN}noon${NCOL}. "
elif [ "$hour" -le 17 ] && [ "$hour" -gt 12 ]; then elif [ $hour -le 17 ] && [ $hour -gt 12 ]; then
echo -en "$greet ${AFTN}afternoon${NCOL}. " echo -en "$greet ${AFTN}afternoon${NCOL}. "
elif [ "$hour" -le 19 ] && [ "$hour" -gt 17 ]; then elif [ $hour -le 19 ] && [ $hour -gt 17 ]; then
echo -en "$greet ${EVEN}evening${NCOL}. " echo -en "$greet ${EVEN}evening${NCOL}. "
else else
echo -en "It's ${NIGH}night${NCOL}. " echo -en "It's ${NIGH}night${NCOL}. "
@ -77,7 +69,6 @@ battery () {
# Set a default to prevent errors # Set a default to prevent errors
batlvl=0 batlvl=0
# Check the two usually used battery locations
if [[ -a "/sys/class/power_supply/BAT0/capacity" ]]; then if [[ -a "/sys/class/power_supply/BAT0/capacity" ]]; then
batlvl=$(cat /sys/class/power_supply/BAT0/capacity) batlvl=$(cat /sys/class/power_supply/BAT0/capacity)
elif [[ -a "/sys/class/power_supply/BAT1/capacity" ]]; then elif [[ -a "/sys/class/power_supply/BAT1/capacity" ]]; then
@ -89,13 +80,13 @@ battery () {
fi fi
# Change color depending on level # Change color depending on level
if [[ $batlvl -ge 100 ]]; then if [ $batlvl -ge 100 ]; then
echo -en "The battery is ${FULL}fully charged${NCOL}. " echo -en "The battery is ${FULL}fully charged${NCOL}. "
elif [[ $batlvl -gt 0 ]]; then elif [ $batlvl -gt 0 ]; then
echo -en "The battery level is " echo -en "The battery level is "
if [[ $batlvl -le 15 ]]; then if [ $batlvl -le 15 ]; then
echo -en "${CRIT}$batlvl%${NCOL}. " echo -en "${CRIT}$batlvl%${NCOL}. "
if [[ "$rechargenotif" = "on" ]]; then if [ "$rechargenotif" = "on" ]; then
echo -en "- ${NORM}You should probably recharge${NCOL}. " echo -en "- ${NORM}You should probably recharge${NCOL}. "
fi fi
elif [ $batlvl -le 30 ]; then elif [ $batlvl -le 30 ]; then
@ -118,16 +109,15 @@ updates () {
updates=0 updates=0
# Check for updates from different places... wonder if there's a better way # Check for updates from different places... wonder if there's a better way
updchk () { updchk () {
# Check for APT (Debian based) # Check for APT
if command -v apt-get &> /dev/null; then if command -v apt-get &> /dev/null; then
debian=$(apt-get -s dist-upgrade -V | grep -c '=>') debian=$(apt-get -s dist-upgrade -V 2> /dev/null | grep '=>' | awk '{print$1}' | wc -l)
fi fi
# Check for Arch things # Check for different Arch things
if command -v checkupdates &> /dev/null; then if command -v yay &> /dev/null; then
arch=$(checkupdates 2> /dev/null | wc -l)
elif command -v yay &> /dev/null; then
arch=$(yay -Qu 2> /dev/null | wc -l) arch=$(yay -Qu 2> /dev/null | wc -l)
elif command -v paru &> /dev/null; then elif command -v paru &> /dev/null; then
arch=$(paru -Quq 2> /dev/null | wc -l) arch=$(paru -Quq 2> /dev/null | wc -l)
@ -144,12 +134,6 @@ updates () {
fedora=$((fedora-1)) fedora=$((fedora-1))
fi fi
# Check for OpenSUSE things
if command -v zypper &> /dev/null; then
suse=$(zypper list-updates 2> /dev/null | wc -l)
suse=$((suse-4))
fi
# Check for Brew updates # Check for Brew updates
if command -v brew &> /dev/null; then if command -v brew &> /dev/null; then
brew=$(brew outdated 2> /dev/null | wc -l) brew=$(brew outdated 2> /dev/null | wc -l)
@ -159,28 +143,26 @@ updates () {
if command -v flatpak &> /dev/null && [ "$flatpakupd" = "on" ]; then if command -v flatpak &> /dev/null && [ "$flatpakupd" = "on" ]; then
flatpak=$(flatpak remote-ls --updates 2> /dev/null | wc -l) flatpak=$(flatpak remote-ls --updates 2> /dev/null | wc -l)
fi fi
# Add all update counts together # Add all update counts together
updates=$((debian + arch + fedora + suse + flatpak + brew)) updates=$(($debian + $arch + $fedora + $flatpak + $brew))
echo $updates >| ~/.welcome/updates echo $updates >| ~/.welcome/updates
pkill -P "${pid}" sleep # When update checking is finished, kill the sleep function running under this bash process pkill -P $pid sleep
sleep 5 sleep 5
if [[ -a ~/.welcome/updates ]]; then if [[ -a ~/.welcome/updates ]]; then
rm ~/.welcome/updates rm ~/.welcome/updates
fi fi
return 0
} }
pid=$$ # Grab the PID of the process pid=$(echo $$)
updchk & # Check for updates Asynchronously updchk & #Check for updates Asynchronously
set +e # Allow nonzero exit status for killing sleep exec 3>&2
exec 3>&2 # These exec commands simply supress the output of the "kill" command
exec 2> /dev/null exec 2> /dev/null
sleep 5 sleep 5
chk=$? chk=$(echo $?)
exec 2>&3 # And then re-enable it exec 2>&3
exec 3>&- exec 3>&-
set -e # Return to disallowing nonzero exit status
if [[ -a ~/.welcome/updates ]]; then if [[ -a ~/.welcome/updates ]]; then
updates=$(cat ~/.welcome/updates) updates=$(cat ~/.welcome/updates)
@ -191,10 +173,10 @@ updates () {
if [ $chk -lt 1 ]; then if [ $chk -lt 1 ]; then
echo -en "Update check timed out. " echo -en "Update check timed out. "
else else
if [ "${updates}" -eq 0 ]; then if [ $updates -eq 1 ]; then
echo -en "You have no pending updates. "
elif [ "${updates}" -eq 1 ]; then
echo -en "You have ${NORM}1${NCOL} pending update. " echo -en "You have ${NORM}1${NCOL} pending update. "
elif [ $updates -eq 0 ]; then
echo -en "You have no pending updates. "
else else
echo -en "You have ~${NORM}$updates${NCOL} pending updates. " echo -en "You have ~${NORM}$updates${NCOL} pending updates. "
fi fi
@ -208,12 +190,13 @@ randcolor() {
# to modify it for a light one # # to modify it for a light one #
cluma=0 cluma=0
loops=0 loops=0
while [ "$(printf %.0f $cluma)" -le 100 ] && [ $loops -le 10 ]; do while [ $(printf %.0f $cluma) -le 100 ] && [ $loops -le 10 ];
cr=$((0 + RANDOM % 255)) do
cr=$((0 + $RANDOM % 255))
crl=$(echo "$cr 0.299" | awk '{print $1 * $2}') crl=$(echo "$cr 0.299" | awk '{print $1 * $2}')
cg=$((0 + RANDOM % 255)) cg=$((0 + $RANDOM % 255))
cgl=$(echo "$cg 0.587" | awk '{print $1 * $2}') cgl=$(echo "$cg 0.587" | awk '{print $1 * $2}')
cb=$((0 + RANDOM % 255)) cb=$((0 + $RANDOM % 255))
cbl=$(echo "$cb 0.114" | awk '{print $1 * $2}') cbl=$(echo "$cb 0.114" | awk '{print $1 * $2}')
cluma=$(echo "$crl $cgl $cbl" | awk '{print $1 + $2 + $3}') cluma=$(echo "$crl $cgl $cbl" | awk '{print $1 + $2 + $3}')
loops=$((loops+1)) loops=$((loops+1))
@ -252,32 +235,11 @@ updatecheck="on" #< Check for general updates
flatpakupd="off" #< Check for flatpak updates, this slows startup down A LOT flatpakupd="off" #< Check for flatpak updates, this slows startup down A LOT
goodgreeting="on" #< Display greetings like "Good afternoon," else "It's afternoon" goodgreeting="on" #< Display greetings like "Good afternoon," else "It's afternoon"
# ALL the stuff above this line and below the colors line is in the config, changing it here will do nothing only if the config doesn't exist!
source ~/.welcome/config.cfg source ~/.welcome/config.cfg
welcome welcome
greeting greeting
clock clock
battery battery
if [ "$updatecheck" = "on" ]; then if [ "$updatecheck" = "on" ]; then updates; fi
updates
fi
echo # Properly line break at the end echo # Properly line break at the end
set +e
date=$(date +%s)
lastdate=$(cat ~/.welcome/udm 2>/dev/null)
if [[ $((date - lastdate)) -ge 86400 ]]; then
if [[ "$environment" = "bash" ]]; then
bash ~/.welcome/install.sh auto
elif [[ "$environment" = "zsh" ]]; then
zsh ~/.welcome/install.sh auto
fi
date +%s >| ~/.welcome/udm 2>/dev/null
elif ! [[ -f ~/.welcome/udm ]]; then
touch ~/.welcome/udm
date +%s >| ~/.welcome/udm 2>/dev/null
fi