Skip to content

Instantly share code, notes, and snippets.

@Gemba
Last active May 28, 2023 03:42
Show Gist options
  • Save Gemba/bc41f9b2570486b855d6bfa57b3cbdc5 to your computer and use it in GitHub Desktop.
Save Gemba/bc41f9b2570486b855d6bfa57b3cbdc5 to your computer and use it in GitHub Desktop.
Bash Welcome Extra: Scriptmodule for RetroPie-Setup with additional versions output on bash start.

INSTALLATION

On RetroPie shell as user pi:

cd RetroPie-Setup
mkdir -p ext/local/scriptmodules/supplementary
pushd ext/local/scriptmodules/supplementary
wget -O bashwelcomeextra.sh https://gist.githubusercontent.com/Gemba/bc41f9b2570486b855d6bfa57b3cbdc5/raw/d03b9f101212a0acb37d8750f9006f8639fcc54e/bashwelcomeextra.sh
popd
# remove genuine scriptmodule and install this one
sudo ./retropie_packages.sh bashwelcometweak remove
sudo ./retropie_packages.sh bashwelcomeextra install
# both modules can also be found in the RetroPie-Setup UI in the Configuration/Tools section
# relogon to test or
source ~/.bashrc
#!/usr/bin/env bash
# This file is a derivation of the bashwelcometweak scriptmodule which is part
# of The RetroPie Project.
#
# The RetroPie Project is the legal property of its developers, whose names are
# too numerous to list here. Please refer to the COPYRIGHT.md file distributed
# with this source.
#
# See the LICENSE.md file at the top-level directory of this distribution and at
# https://raw.githubusercontent.com/RetroPie/RetroPie-Setup/master/LICENSE.md
#
rp_module_id="bashwelcomeextra"
rp_module_desc="Bash Welcome Extra: Adds extra version info (Raspberry Pi"
rp_module_desc+=" model, RetroPie-Setup, RetroArch) to the shell logon banner."
rp_module_help="Displays the RetroPie ASCII art alongside with additional"
rp_module_help+=" information about the\nsystem when the pi account logs in"
rp_module_help+=" similar to the genuine bashwelcometweak\nscriptmodule. Extra"
rp_module_help+=" output of Raspbery model, RetroPie-Setup version and"
rp_module_help+="\nRetroArch version."
rp_module_section="config"
function install_bashwelcomeextra() {
remove_bashwelcomeextra
cat >> "$home/.bashrc" <<\_EOF_
# RETROPIE PROFILE START
function getIPAddress() {
local ip_route
ip_route=$(ip -4 route get 9.9.9.9 2>/dev/null)
if [[ -z "$ip_route" ]]; then
ip_route=$(ip -6 route get 2001:4860:4860::8888 2>/dev/null)
fi
[[ -n "$ip_route" ]] && grep -oP "src \K[^\s]+" <<< "$ip_route"
}
function retropie_welcome() {
local upSeconds="$(/usr/bin/cut -d. -f1 /proc/uptime)"
local secs=$((upSeconds%60))
local mins=$((upSeconds/60%60))
local hours=$((upSeconds/3600%24))
local days=$((upSeconds/86400))
local UPTIME=$(printf "%d days, %02dh%02dm%02ds" "$days" "$hours" "$mins" \
"$secs")
# calculate rough CPU and GPU temperatures:
local cpuTempC
local cpuTempF
local gpuTempC
local gpuTempF
if [[ -f "/sys/class/thermal/thermal_zone0/temp" ]]; then
cpuTempC=$(($(cat /sys/class/thermal/thermal_zone0/temp)/1000)) \
&& cpuTempF=$((cpuTempC*9/5+32))
fi
if [[ -f "/opt/vc/bin/vcgencmd" ]]; then
if gpuTempC=$(/opt/vc/bin/vcgencmd measure_temp); then
gpuTempC=${gpuTempC:5:2}
gpuTempF=$((gpuTempC*9/5+32))
else
gpuTempC=""
fi
fi
local df_out=()
local line
while read line; do
df_out+=("$line")
done < <(df -h /)
local rpi_model
if [[ -e "/proc/device-tree/model" ]]; then
rpi_model="$(tr -d '\0' < /proc/device-tree/model)"
fi
local rp_version="$(< /opt/retropie/VERSION)"
local retroarch_ver
if [[ -f "/opt/retropie/emulators/retroarch/retropie.pkg" ]]; then
retroarch_ver=$(grep pkg_repo_branch < \
/opt/retropie/emulators/retroarch/retropie.pkg \
| cut -d '=' -f 2 | tr -d '"')
fi
local rst="$(tput sgr0)"
local fgblk="${rst}$(tput setaf 0)" # Black - Regular
local fgred="${rst}$(tput setaf 1)" # Red
local fggrn="${rst}$(tput setaf 2)" # Green
local fgylw="${rst}$(tput setaf 3)" # Yellow
local fgblu="${rst}$(tput setaf 4)" # Blue
local fgpur="${rst}$(tput setaf 5)" # Purple
local fgcyn="${rst}$(tput setaf 6)" # Cyan
local fgwht="${rst}$(tput setaf 7)" # White
local bld="$(tput bold)"
local bfgblk="${bld}$(tput setaf 0)"
local bfgred="${bld}$(tput setaf 1)"
local bfggrn="${bld}$(tput setaf 2)"
local bfgylw="${bld}$(tput setaf 3)"
local bfgblu="${bld}$(tput setaf 4)"
local bfgpur="${bld}$(tput setaf 5)"
local bfgcyn="${bld}$(tput setaf 6)"
local bfgwht="${bld}$(tput setaf 7)"
local logo=(
" "
"${fgred} .***. "
"${fgred} ***${bfgwht}*${fgred}* "
"${fgred} \`***' "
"${bfgwht} |*| "
"${bfgwht} |*| "
"${bfgred} ..${bfgwht}|*|${bfgred}.. "
"${bfgred}.*** ${bfgwht}*${bfgred} ***."
"${bfgred}*******${fggrn}@@${bfgred}**"
"${fgred}\`*${bfgred}****${bfgylw}@@${bfgred}*${fgred}*'"
"${fgred} \`*******'${fgrst} "
"${fgred} \`\"\"\"'${fgrst} "
" "
)
local out
local i
for i in "${!logo[@]}"; do
out+=" ${logo[$i]} "
case "$i" in
0)
out+="${fggrn}$(date +"%A, %e %B %Y, %X")"
;;
1)
out+="${fggrn}$(uname -srmo)"
;;
2)
out+="${fggrn}"
if [[ ! -z "$rpi_model" ]]; then
out+="$rpi_model"
fi
;;
3)
out+="${fggrn}RetroPie $rp_version"
if [[ ! -z "$retroarch_ver" ]]; then
out+=", RetroArch $retroarch_ver"
fi
;;
5)
out+="${fgylw}${df_out[0]}"
;;
6)
out+="${fgwht}${df_out[1]}"
;;
7)
out+="${fgred}Uptime.............: ${UPTIME}"
;;
8)
out+="${fgred}Memory.............: $(grep MemFree /proc/meminfo\
| awk {'print $2'})kB (Free) / $(grep MemTotal\
/proc/meminfo | awk {'print $2'})kB (Total)"
;;
9)
out+="${fgred}Running Processes..: $(ps ax | wc -l | tr -d " ")"
;;
10)
out+="${fgred}IP Address.........: $(getIPAddress)"
;;
11)
out+="Temperature........: CPU ${cpuTempC}°C/${cpuTempF}°F,"
out+=" GPU ${gpuTempC}°C/${gpuTempF}°F"
;;
12)
out+="${fgwht}The RetroPie Project, https://retropie.org.uk"
;;
esac
out+="${rst}\n"
done
echo -e "\n$out"
}
retropie_welcome
# RETROPIE PROFILE END
_EOF_
}
function remove_bashwelcomeextra() {
sed -i '/RETROPIE PROFILE START/,/RETROPIE PROFILE END/d' "$home/.bashrc"
}
function gui_bashwelcomeextra() {
local title="Bash Welcome Extra"
local cmd=(dialog --backtitle "$__backtitle" --menu "$title Configuration"\
22 86 16)
local options=(
1 "Install $title"
2 "Remove $title"
)
local choice=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty)
if [[ -n "$choice" ]]; then
case "$choice" in
1)
rp_callModule bashwelcomeextra install
printMsgs "dialog" "Installed $title."
;;
2)
rp_callModule bashwelcomeextra remove
printMsgs "dialog" "Removed $title."
;;
esac
fi
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment