Files

84 lines
2.1 KiB
Bash

# So both have export
export PATH=/home/shark/.opencode/bin:$PATH
# Status display theming
BOLD='\e[1m'
DIM='\e[2m'
RESET='\e[0m'
RED='\e[31m'
GREEN='\e[32m'
YELLOW='\e[33m'
CYAN='\e[36m'
MAGENTA='\e[35m'
header() {
local title="$1" width pad
width=51
pad=$(( width - ${#title} - 6 ))
printf "${CYAN}┌──${BOLD} %s ${RESET}${CYAN}" "$title"
for ((i=0; i < pad; i++)); do printf '─'; done
printf "┐${RESET}\n"
}
footer() {
local i
printf "${CYAN}"
for ((i=0; i<50; i++)); do printf '─'; done
printf "┘${RESET}\n"
}
battery_status() {
local pct full now color
pct=$(cat /sys/class/power_supply/BAT0/capacity 2>/dev/null) || { echo " No battery found"; return; }
full=$(cat /sys/class/power_supply/BAT0/energy_full 2>/dev/null)
now=$(cat /sys/class/power_supply/BAT0/energy_now 2>/dev/null)
if (( pct <= 20 )); then color="$RED"
elif (( pct <= 60 )); then color="$YELLOW"
else color="$GREEN"
fi
printf " Level: ${BOLD}${color}%s%%${RESET}\n" "$pct"
[ -n "$full" ] && [ -n "$now" ] && printf " Energy: ${DIM}%s / %s Wh${RESET}\n" "$now" "$full"
}
tunnel_status() {
local output
output=$(ip -br a show 2>/dev/null | while IFS= read -r line; do
case "$line" in
*mullvad*|*wg*|*tun*|*us*|*nl*)
local iface="${line%% *}" rest="${line#* }"
printf " ${BOLD}${MAGENTA}%-10s${RESET} %s\n" "$iface" "$rest"
;;
esac
done)
if [ -z "$output" ]; then
echo " No tunnel interfaces found"
else
printf '%s\n' "$output"
fi
}
show_status() {
echo
header "TUNNEL STATUS"
tunnel_status
footer
echo
header "BATTERY STATUS"
battery_status
footer
}
# aliases (minus my SSH aliases for different servers)
alias batt="cat /sys/class/power_supply/BAT0/capacity"
alias bat="batcat"
# diff configs for DE or TTY
if [ -n "$DISPLAY" ] || [ -n "$WAYLAND_DISPLAY" ]; then
[ -f ~/.bashrc_de ] && . ~/.bashrc_de
else
[ -f ~/.bashrc_tty ] && . ~/.bashrc_tty
fi