feat: Update lockscreen
This commit is contained in:
@@ -44,6 +44,9 @@ label {
|
|||||||
position = -80, 290
|
position = -80, 290
|
||||||
halign = center
|
halign = center
|
||||||
valign = center
|
valign = center
|
||||||
|
shadow_passes = 3
|
||||||
|
shadow_size = 3
|
||||||
|
shadow_color = rgba(0, 0, 0, 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
# Time-Minute
|
# Time-Minute
|
||||||
@@ -56,18 +59,24 @@ label {
|
|||||||
position = 0, 170
|
position = 0, 170
|
||||||
halign = center
|
halign = center
|
||||||
valign = center
|
valign = center
|
||||||
|
shadow_passes = 3
|
||||||
|
shadow_size = 3
|
||||||
|
shadow_color = rgba(0, 0, 0,1)
|
||||||
}
|
}
|
||||||
|
|
||||||
# Day-Month-Date
|
# Day-Month-Date
|
||||||
label {
|
label {
|
||||||
monitor =
|
monitor =
|
||||||
text = cmd[update:1000] echo -e "$(date +"%d %B")"
|
text = cmd[update:1000] echo -e "$(date +"%d %B")"
|
||||||
color = rgba(255, 255, 255, 100)
|
color = rgba(255, 255, 255, 1)
|
||||||
font_size = 22
|
font_size = 22
|
||||||
font_family = Suisse Int'l Mono
|
font_family = Suisse Int'l Mono
|
||||||
position = 20, 92
|
position = 20, 92
|
||||||
halign = center
|
halign = center
|
||||||
valign = center
|
valign = center
|
||||||
|
shadow_passes = 3
|
||||||
|
shadow_size = 5
|
||||||
|
shadow_color = rgba(0, 0, 0, 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
# USER AVATAR
|
# USER AVATAR
|
||||||
@@ -126,3 +135,16 @@ label {
|
|||||||
halign = right
|
halign = right
|
||||||
valign = bottom
|
valign = bottom
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Stats
|
||||||
|
label {
|
||||||
|
monitor = eDP-1
|
||||||
|
text = cmd[update:15000] /home/nathan/.config/hypr/scripts/stats.sh
|
||||||
|
color = rgb(255, 255, 255)
|
||||||
|
font_size = 10
|
||||||
|
font_family = Symbols Nerd Font Mono
|
||||||
|
position = 10, 10
|
||||||
|
halign = left
|
||||||
|
valign = bottom
|
||||||
|
}
|
||||||
|
|||||||
111
.config/hypr/scripts/stats.sh
Executable file
111
.config/hypr/scripts/stats.sh
Executable file
@@ -0,0 +1,111 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Get system statistics
|
||||||
|
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print 100 - $8}' | cut -d. -f1)
|
||||||
|
MEMORY_USAGE=$(free -m | awk 'NR==2{printf "%.0f", $3*100/$2 }')
|
||||||
|
|
||||||
|
CPU_TEMP=""
|
||||||
|
# Get temp info (CPU temp)
|
||||||
|
if [ -r /sys/class/thermal/thermal_zone0/temp ]; then
|
||||||
|
CPU_TEMP_RAW=$(cat /sys/class/thermal/thermal_zone0/temp)
|
||||||
|
CPU_TEMP_C=$((CPU_TEMP_RAW / 1000))
|
||||||
|
CPU_TEMP=" ${CPU_TEMP_C}°C"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
echo " ${CPU_USAGE}%${CPU_TEMP} ${MEMORY_USAGE}%"
|
||||||
|
|
||||||
|
# GPU info
|
||||||
|
GPU_USAGE=$(cat /sys/class/drm/card1/device/gpu_busy_percent)
|
||||||
|
GPU_VRAM_USED=$(cat /sys/class/drm/card1/device/mem_info_vram_used)
|
||||||
|
GPU_VRAM_TOTAL=$(cat /sys/class/drm/card1/device/mem_info_vram_total)
|
||||||
|
GPU_VRAM_USAGE=$((GPU_VRAM_USED * 100 / GPU_VRAM_TOTAL))
|
||||||
|
|
||||||
|
|
||||||
|
echo " ${GPU_USAGE}% ${GPU_VRAM_USAGE}%"
|
||||||
|
|
||||||
|
# Battery time: find battery device via upower and parse "time to full" / "time to empty"
|
||||||
|
# fallback to sysfs if upower not available
|
||||||
|
BAT_PATH=""
|
||||||
|
if command -v upower >/dev/null 2>&1; then
|
||||||
|
BAT_PATH=$(upower -e | grep -E "battery|BAT" | head -n1)
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$BAT_PATH" ]; then
|
||||||
|
# try linux sysfs battery status file
|
||||||
|
if [ -r /sys/class/power_supply/BAT0/status ]; then
|
||||||
|
BAT_STATUS_FILE="/sys/class/power_supply/BAT0/status"
|
||||||
|
else
|
||||||
|
BAT_STATUS_FILE=""
|
||||||
|
fi
|
||||||
|
BATTERY_STATUS=""
|
||||||
|
if [ -n "$BAT_STATUS_FILE" ]; then
|
||||||
|
BATTERY_STATUS=$(cat "$BAT_STATUS_FILE")
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# use upower to read battery properties
|
||||||
|
BATTERY_STATUS=$(upower -i "$BAT_PATH" | awk -F: '/state:/ {gsub(/^[ \t]+|[ \t]+$/,"",$2); print $2; exit}')
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$BATTERY_STATUS" = "charging" ] || [ "$BATTERY_STATUS" = "Charging" ]; then
|
||||||
|
if [ -n "$BAT_PATH" ]; then
|
||||||
|
# get everything after the colon and trim
|
||||||
|
TIME_TO_FULL=$(upower -i "$BAT_PATH" | sed -n 's/^[ \t]*time to full:[ \t]*//Ip')
|
||||||
|
else
|
||||||
|
TIME_TO_FULL=""
|
||||||
|
fi
|
||||||
|
if [ -n "$TIME_TO_FULL" ]; then
|
||||||
|
echo " ${TIME_TO_FULL} to full"
|
||||||
|
else
|
||||||
|
echo " Charging"
|
||||||
|
fi
|
||||||
|
elif [ "$BATTERY_STATUS" = "discharging" ] || [ "$BATTERY_STATUS" = "Discharging" ]; then
|
||||||
|
if [ -n "$BAT_PATH" ]; then
|
||||||
|
TIME_TO_EMPTY=$(upower -i "$BAT_PATH" | sed -n 's/^[ \t]*time to empty:[ \t]*//Ip')
|
||||||
|
else
|
||||||
|
TIME_TO_EMPTY=""
|
||||||
|
fi
|
||||||
|
if [ -n "$TIME_TO_EMPTY" ]; then
|
||||||
|
echo " ${TIME_TO_EMPTY} to empty"
|
||||||
|
else
|
||||||
|
echo " Discharging"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if internet is up by pinging a reliable host
|
||||||
|
if ping -c 1 -W 1 woodburn.au > /dev/null 2>&1; then
|
||||||
|
INTERNET_STATUS="up"
|
||||||
|
else
|
||||||
|
INTERNET_STATUS="down"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get WIFI SSID if connected
|
||||||
|
WIFI_SSID=""
|
||||||
|
if command -v nmcli >/dev/null 2>&1; then
|
||||||
|
WIFI_SSID=$(nmcli -t -f active,ssid dev wifi | grep '^yes:' | cut -d: -f2)
|
||||||
|
fi
|
||||||
|
if [ -n "$WIFI_SSID" ]; then
|
||||||
|
echo " SSID: ${WIFI_SSID} (${INTERNET_STATUS})"
|
||||||
|
else
|
||||||
|
echo " Internet: ${INTERNET_STATUS}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get network info for each active interface
|
||||||
|
for IFACE in $(ls /sys/class/net/ | grep -E '^(en|wl|wg|tailscale|tun)'); do
|
||||||
|
IFACE_STATE=""
|
||||||
|
# safe read operstate
|
||||||
|
if [ -r "/sys/class/net/$IFACE/operstate" ]; then
|
||||||
|
IFACE_STATE=$(cat "/sys/class/net/$IFACE/operstate")
|
||||||
|
fi
|
||||||
|
# show physical interfaces when up, and always show virtual interfaces (tailscale/wg/tun)
|
||||||
|
if [ "$IFACE_STATE" = "up" ] || [[ "$IFACE" == tailscale* ]] || [[ "$IFACE" == wg* ]] || [[ "$IFACE" == tun* ]]; then
|
||||||
|
RX_BYTES=$(cat "/sys/class/net/$IFACE/statistics/rx_bytes" 2>/dev/null || echo 0)
|
||||||
|
TX_BYTES=$(cat "/sys/class/net/$IFACE/statistics/tx_bytes" 2>/dev/null || echo 0)
|
||||||
|
RX_HR=$(numfmt --to=iec --suffix=B "$RX_BYTES")
|
||||||
|
TX_HR=$(numfmt --to=iec --suffix=B "$TX_BYTES")
|
||||||
|
|
||||||
|
echo " ${IFACE}: ${RX_HR} ${TX_HR}"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
curl https://wttr.in/Canberra\?format\="%l:+%t+UV:+%u"
|
||||||
Reference in New Issue
Block a user