69 lines
2.2 KiB
Bash
69 lines
2.2 KiB
Bash
#!/bin/sh
|
|
|
|
# Hyprlock labels accept Pango markup. Escape text coming from applications.
|
|
escape_text() {
|
|
cut -c "1-${1:-26}" | sed -e 's/&/\&/g' -e 's/</\</g' -e 's/>/\>/g'
|
|
}
|
|
|
|
battery() {
|
|
for supply in /sys/class/power_supply/*; do
|
|
if [ -r "$supply/type" ] && [ "$(cat "$supply/type")" = Battery ]; then
|
|
printf '%s\n' "$supply"
|
|
return
|
|
fi
|
|
done
|
|
}
|
|
|
|
case "${1:-}" in
|
|
uptime)
|
|
awk '{ minutes = int($1 / 60); printf " UPTIME %dH%02dM\n", int(minutes / 60), minutes % 60 }' /proc/uptime
|
|
;;
|
|
weekday) LC_TIME=C date +%a | tr '[:lower:]' '[:upper:]' ;;
|
|
date) LC_TIME=C date '+%d %B, %Y' ;;
|
|
music-title|music-artist)
|
|
field=title
|
|
fallback='Nothing playing'
|
|
if [ "$1" = music-artist ]; then
|
|
field=artist
|
|
fallback='Media player'
|
|
fi
|
|
value=''
|
|
if command -v playerctl >/dev/null 2>&1; then
|
|
value=$(playerctl metadata --format "{{$field}}" 2>/dev/null) || value=''
|
|
fi
|
|
printf '%s\n' "${value:-$fallback}" | escape_text
|
|
;;
|
|
network)
|
|
value=''
|
|
if command -v nmcli >/dev/null 2>&1; then
|
|
value=$(nmcli -t -f TYPE,NAME connection show --active 2>/dev/null |
|
|
awk -F: '$1 == "802-11-wireless" || $1 == "802-3-ethernet" { sub(/^[^:]*:/, ""); print; exit }')
|
|
fi
|
|
printf '%s\n' "${value:-Offline}" | escape_text 18
|
|
;;
|
|
bluetooth)
|
|
value=''
|
|
if command -v bluetoothctl >/dev/null 2>&1; then
|
|
value=$(timeout 2 bluetoothctl devices Connected 2>/dev/null |
|
|
sed -n '1s/^Device [^ ]* //p')
|
|
fi
|
|
printf '%s\n' "${value:-Not connected}" | escape_text 18
|
|
;;
|
|
power-value)
|
|
supply=$(battery)
|
|
if [ -n "$supply" ] && [ -r "$supply/capacity" ]; then
|
|
printf '%s%%\n' "$(cat "$supply/capacity")"
|
|
else
|
|
printf '%s\n' 'AC'
|
|
fi
|
|
;;
|
|
power-status)
|
|
supply=$(battery)
|
|
if [ -n "$supply" ] && [ -r "$supply/status" ]; then
|
|
cat "$supply/status"
|
|
else
|
|
printf '%s\n' 'Desktop power'
|
|
fi
|
|
;;
|
|
*) exit 1 ;;
|
|
esac
|