66 lines
1.4 KiB
Bash
Executable file
66 lines
1.4 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Show system status in notification, or your own message
|
|
# Syntaxis: notify [-vb] [<title> <message>]
|
|
|
|
# Requirements:
|
|
# - brightnessctl
|
|
# - pulsemixer
|
|
|
|
panic () {
|
|
>&2 echo "Syntaxis: notify [-vb] [<title> [<message>]]"
|
|
exit 1
|
|
}
|
|
|
|
# Get options
|
|
while getopts ":bv" options; do
|
|
case "${options}" in
|
|
b)
|
|
value=$( brightnessctl | grep -o "[0-9]*%" )
|
|
title="Brightness: ${value}"
|
|
timeout=2000
|
|
category='sysinfo'
|
|
;;
|
|
v)
|
|
# Get volume
|
|
value="$( pulsemixer --get-volume | cut -f1 -d' ' )%"
|
|
|
|
# If audio disabled
|
|
if [ ! "$( pulsemixer --get-mute )" -eq 0 ] ; then
|
|
width=0
|
|
value="${value} (Disabled)"
|
|
fi
|
|
|
|
title="Volume: ${value:-'0%'}"
|
|
timeout=2000
|
|
category='sysinfo'
|
|
;;
|
|
*)
|
|
panic
|
|
;;
|
|
esac
|
|
done
|
|
|
|
shift $((OPTIND - 1))
|
|
|
|
# Check arguments
|
|
if [ $# -gt 2 ] ; then
|
|
panic
|
|
elif [ $# -eq 2 ] ; then
|
|
title=$1
|
|
message=$2
|
|
elif [ $# -eq 1 ] ; then
|
|
title=$1
|
|
fi
|
|
|
|
# Calculate length of coloured bar.
|
|
if [[ "${value}" =~ ^[0-9]+%$ && "${width:--1}" -ne 0 ]] ; then
|
|
width=$(grep -o "[0-9]*" <<< "${value}")
|
|
fi
|
|
|
|
# Send message
|
|
notify-send "${title}" "${message}" \
|
|
-t "${timeout:=5000}" \
|
|
-c "${category:=''}" \
|
|
-h int:value:"${width:=0}" \
|
|
-h string:x-canonical-private-synchronous:byMe # Replace if previous still exists
|
|
|