mirror of
https://github.com/captn3m0/Scripts.git
synced 2024-09-27 22:22:53 +00:00
104 lines
2.5 KiB
Plaintext
104 lines
2.5 KiB
Plaintext
|
#!/bin/bash
|
||
|
|
||
|
# Defaults
|
||
|
|
||
|
|
||
|
DISPLAY_RE="([0-9]+)x([0-9]+)\\+([0-9]+)\\+([0-9]+)"
|
||
|
IMAGE_RE="([0-9]+)x([0-9]+)"
|
||
|
FOLDER="/home/nemo/projects/personal/avatars/lockscreen"
|
||
|
LOCK="/home/nemo/projects/scripts/lock-icon.png"
|
||
|
TEXT="/home/nemo/projects/scripts/i3lock-text.png"
|
||
|
PARAMS=""
|
||
|
OUTPUT_IMAGE="/tmp/i3lock.png"
|
||
|
DISPLAY_TEXT=true
|
||
|
PIXELATE=false
|
||
|
BLURTYPE="1x1"
|
||
|
|
||
|
# Read user input
|
||
|
POSITIONAL=()
|
||
|
for i in "$@"
|
||
|
do
|
||
|
case $i in
|
||
|
-h|--help)
|
||
|
echo "lock: Syntax: lock [-n|--no-text] [-p|--pixelate] [-b=VAL|--blur=VAL]"
|
||
|
echo "for correct blur values, read: http://www.imagemagick.org/Usage/blur/#blur_args"
|
||
|
exit
|
||
|
shift
|
||
|
;;
|
||
|
-b=*|--blur=*)
|
||
|
VAL="${i#*=}"
|
||
|
BLURTYPE=(${VAL//=/ })
|
||
|
shift
|
||
|
;;
|
||
|
-n|--no-text)
|
||
|
DISPLAY_TEXT=false
|
||
|
shift # past argument
|
||
|
;;
|
||
|
-p|--pixelate)
|
||
|
PIXELATE=true
|
||
|
shift # past argument
|
||
|
;;
|
||
|
*) # unknown option
|
||
|
echo "unknown option: $i"
|
||
|
exit
|
||
|
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
|