#!/usr/bin/env bash # Show system status in notification, or your own message # Syntaxis: notify [-vb] [-t ] [-p ] [ <message>] # Requirements/dependencies: # - amixer # - brightnessctl # - libnotify (notify-send) panic () { >&2 echo "Syntaxis: notify [-vb] [-t <timeout>] [-p <value>] [<title> <message>]" exit 1 } # Get options while getopts ":bvt:p:" options; do case "${options}" in b) value=$( brightnessctl | grep -o "[0-9]*%" | tr -d '%' ) title="Brightness: ${value}%" category='sysinfo' ;; v) # Get volume (don't use pamixer because that is way slower) float=$( wpctl get-volume @DEFAULT_SINK@ \ | grep -Eo '[01].[0-9]{2}' ) # Converting to base 10 to drop leading zeroes value="$(( 10#"$( tr -d '.' <<< "${float}" )" ))" title="Volume: ${value}%" category='sysinfo' # If audio disabled, set value to zero. if [ ! -z "$( wpctl get-volume @DEFAULT_SINK@ | grep '[MUTED]' )" ] ; then title="Volume: ${value}% (Disabled)" value=0 fi ;; t) timeout="${OPTARG}" ;; p) value="${OPTARG}" ;; *) panic ;; esac done shift $((OPTIND - 1)) # Check arguments if [ $# -gt 2 ] ; then panic elif [ $# -gt 0 ] ; then title="${1}" message="${2:-}" fi # Build command string arguments="" if [[ ! -z "${category}" ]] ; then arguments+=" -c ${category}" fi if [[ ! -z "${timeout}" ]] ; then arguments+=" -t ${timeout}" fi if [[ ! -z "${value}" ]] ; then arguments+=" -h int:value:${value}" fi notify-send "${title}" "${message}" ${arguments}