#!/bin/bash # blink set -e # $1 = how many times to blink, $2 = pause between each blink blink () { # find primary connected or else 1st connected monitor monitor="$(xrandr -q | grep -w "connected" | grep "primary" | cut -f1 -d ' ')" if [ -z "$monitor" ]; then # no primary AND connected found, lets try 1st connected monitor="$(xrandr -q | grep -w "connected" | cut -f1 -d ' ')" fi [ -z "$monitor" ] && { >&2 echo "No monitors found error" ; exit 1; } # find current brightness of that monitor now="$(xrandr --verbose | grep -A 15 "$monitor" | grep -i brightness | cut -f2 -d ' ')" [ -z "$now" ] && { >&2 echo "Could not get current brightness error" ; exit 1; } [ -z "$1" ] && loops="1" || loops="$1" for ((c=1; c<=loops; c++)) do # blink up for i in $(seq "$now" 0.2 3.0); do xrandr --output "$monitor" --brightness "$i" sleep 0.01 done # blink down for i in $(seq 3.0 -0.2 "$now"); do xrandr --output "$monitor" --brightness "$i" sleep 0.01 done sleep "$2" xrandr --output "$monitor" --brightness "$now" done } [ -z "$1" ] && times="1" || times="$1" [ -z "$2" ] && waitsome="0.3" || waitsome="$2" blink "$times" "$waitsome"