#!/bin/sh CACHE="$HOME/.cache/sway-status" mkdir -p "$CACHE" BAT_CACHE="$CACHE/battery" NET_CACHE="$CACHE/network" SYS_CACHE="$CACHE/system" now=$(date +%s) ############################################ # CLOCK (unchanged) ############################################ date_formatted=$(date "+%a %F %I:%M") date_prague=$(TZ=Europe/Prague date "+%a %F %I:%M") date_london=$(TZ=Europe/London date "+%a %F %I:%M") ############################################ # BATTERY (cache 30 sec) ############################################ if [ ! -f "$BAT_CACHE.ts" ] || [ $((now - $(cat "$BAT_CACHE.ts" 2>/dev/null))) -gt 30 ]; then battery_info=$(upower --show-info \ $(upower --enumerate | grep BAT) | egrep "state|percentage" | awk '{print $2}' | tr '\n' ' ') echo "$battery_info" > "$BAT_CACHE" echo "$now" > "$BAT_CACHE.ts" fi battery_info=$(cat "$BAT_CACHE") ############################################ # NETWORK (cache 15 sec) ############################################ if [ ! -f "$NET_CACHE.ts" ] || [ $((now - $(cat "$NET_CACHE.ts" 2>/dev/null))) -gt 15 ]; then route=$(ip route get 1.1.1.1 2>/dev/null) ip_addr=$(printf "%s" "$route" | awk '{print $7; exit}') network=$(printf "%s" "$route" | grep -Po '(?<=dev\s)\w+' | cut -f1 -d ' ') echo "$network $ip_addr" > "$NET_CACHE" echo "$now" > "$NET_CACHE.ts" fi read network ip_addr < "$NET_CACHE" ############################################ # CPU TEMP + RAM (cache 10 sec) ############################################ if [ ! -f "$SYS_CACHE.ts" ] || [ $((now - $(cat "$SYS_CACHE.ts" 2>/dev/null))) -gt 10 ]; then cpu_temp=$(sensors | grep -oP 'CPU.*?\+\K[0-9.]+' | head -1) ram_usage=$(free -h | awk '/^Mem:/ {print "RAM Usage: " $3 " / " $2}') echo "$cpu_temp|$ram_usage" > "$SYS_CACHE" echo "$now" > "$SYS_CACHE.ts" fi IFS="|" read cpu_temp ram_usage < "$SYS_CACHE" ############################################ # OUTPUT ############################################ echo $network $ip_addr \| CPU: $cpu_temp \| $ram_usage \| $battery_info \| LON: $date_london \| PRG: $date_prague \| $date_formatted