98 lines
2.3 KiB
Bash
Executable File
98 lines
2.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Defaults
|
|
# All options are here: http://www.imagemagick.org/Usage/blur/#blur_args
|
|
BLURTYPE="0x6"
|
|
#BLURTYPE="0x2"
|
|
#BLURTYPE="5x3"
|
|
#BLURTYPE="2x8"
|
|
#BLURTYPE="2x3"
|
|
|
|
DISPLAY_RE="([0-9]+)x([0-9]+)\\+([0-9]+)\\+([0-9]+)"
|
|
IMAGE_RE="([0-9]+)x([0-9]+)"
|
|
FOLDER="$(dirname "$(readlink -f "$0")")"
|
|
LOCK="$FOLDER/lock.png"
|
|
TEXT="$FOLDER/text.png"
|
|
PARAMS=""
|
|
OUTPUT_IMAGE="/tmp/i3lock.png"
|
|
DISPLAY_TEXT=true
|
|
PIXELATE=false
|
|
|
|
# Read user input
|
|
POSITIONAL=()
|
|
while [[ $# -gt 0 ]]
|
|
do
|
|
key="$1"
|
|
|
|
case $key in
|
|
-n|--no-text)
|
|
DISPLAY_TEXT=false
|
|
shift # past argument
|
|
;;
|
|
-p|--pixelate)
|
|
PIXELATE=true
|
|
shift # past argument
|
|
;;
|
|
*) # unknown option
|
|
POSITIONAL+=("$1") # save it in an array for later
|
|
shift # past argument
|
|
;;
|
|
esac
|
|
done
|
|
set -- "${POSITIONAL[@]}" # restore positional parameters
|
|
|
|
#Take screenshot:
|
|
scrot -z $OUTPUT_IMAGE
|
|
|
|
#Get dimensions of the lock image:
|
|
LOCK_IMAGE_INFO=`identify $LOCK`
|
|
[[ $LOCK_IMAGE_INFO =~ $IMAGE_RE ]]
|
|
IMAGE_WIDTH=${BASH_REMATCH[1]}
|
|
IMAGE_HEIGHT=${BASH_REMATCH[2]}
|
|
|
|
if $DISPLAY_TEXT ; then
|
|
#Get dimensions of the text image:
|
|
TEXT_IMAGE_INFO=`identify $TEXT`
|
|
[[ $TEXT_IMAGE_INFO =~ $IMAGE_RE ]]
|
|
TEXT_WIDTH=${BASH_REMATCH[1]}
|
|
TEXT_HEIGHT=${BASH_REMATCH[2]}
|
|
fi
|
|
|
|
#Execute xrandr to get information about the monitors:
|
|
while read LINE
|
|
do
|
|
#If we are reading the line that contains the position information:
|
|
if [[ $LINE =~ $DISPLAY_RE ]]; then
|
|
#Extract information and append some parameters to the ones that will be given to ImageMagick:
|
|
WIDTH=${BASH_REMATCH[1]}
|
|
HEIGHT=${BASH_REMATCH[2]}
|
|
X=${BASH_REMATCH[3]}
|
|
Y=${BASH_REMATCH[4]}
|
|
POS_X=$(($X+$WIDTH/2-$IMAGE_WIDTH/2))
|
|
POS_Y=$(($Y+$HEIGHT/2-$IMAGE_HEIGHT/2))
|
|
|
|
PARAMS="$PARAMS '$LOCK' '-geometry' '+$POS_X+$POS_Y' '-composite'"
|
|
|
|
if $DISPLAY_TEXT ; then
|
|
TEXT_X=$(($X+$WIDTH/2-$TEXT_WIDTH/2))
|
|
TEXT_Y=$(($Y+$HEIGHT/2-$TEXT_HEIGHT/2+200))
|
|
PARAMS="$PARAMS '$TEXT' '-geometry' '+$TEXT_X+$TEXT_Y' '-composite'"
|
|
fi
|
|
fi
|
|
done <<<"`xrandr`"
|
|
|
|
#Execute ImageMagick:
|
|
if $PIXELATE ; then
|
|
PARAMS="'$OUTPUT_IMAGE' '-scale' '10%' '-scale' '1000%' $PARAMS '$OUTPUT_IMAGE'"
|
|
else
|
|
PARAMS="'$OUTPUT_IMAGE' '-level' '0%,100%,0.6' '-blur' '$BLURTYPE' $PARAMS '$OUTPUT_IMAGE'"
|
|
fi
|
|
|
|
eval convert $PARAMS
|
|
|
|
#Lock the screen:
|
|
i3lock -i $OUTPUT_IMAGE -t
|
|
|
|
#Remove the generated image:
|
|
rm $OUTPUT_IMAGE
|