aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/betterlock
diff options
context:
space:
mode:
authorYann Herklotz <git@yannherklotz.com>2022-11-19 21:11:35 +0000
committerYann Herklotz <git@yannherklotz.com>2022-11-19 21:11:35 +0000
commitc6267bd2101d8e381d76317c36a8879519dcb949 (patch)
treea314503f0bac03202cf41b902b47de1c7857b19f /scripts/betterlock
parent2ece7032558cd0be673d65237a01c5e6ffe625f1 (diff)
downloaddotfiles-c6267bd2101d8e381d76317c36a8879519dcb949.tar.gz
dotfiles-c6267bd2101d8e381d76317c36a8879519dcb949.zip
Also allow for custom scripts to be installed by GNU Stow
Diffstat (limited to 'scripts/betterlock')
-rwxr-xr-xscripts/betterlock393
1 files changed, 0 insertions, 393 deletions
diff --git a/scripts/betterlock b/scripts/betterlock
deleted file mode 100755
index d9f90af..0000000
--- a/scripts/betterlock
+++ /dev/null
@@ -1,393 +0,0 @@
-#!/usr/bin/env bash
-
-# Author : Pavan Jadhaw
-# Github Profile : https://github.com/pavanjadhaw
-# Project Repository : https://github.com/pavanjadhaw/betterlockscreen
-
-# find your resolution so images can be resized to match your screen resolution
-res=$(xdpyinfo | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/')
-locktext='Type password to unlock...'
-
-
-init_filenames() {
- #$1 resolution
-
- # create folder in ~/.cache/i3lock directory
- res_folder="$HOME/.cache/i3lock/$1"
- folder="$HOME/.cache/i3lock/current"
- echo "Got" $@ $res_folder
- if [ ! -d $folder -o -n "$2" ]; then
- rm -f $folder
- ln -s $res_folder $folder
- fi
-
- # ratio for rectangle to be drawn for time background on lockscreen
- # Original Image
- orig_wall="$folder/wall.png"
-
- # Versions (from here)
- # You can use these images to set different versions as wallpaper
- # lockscreen background.
- resized="$folder/resized.png" # resized image for your resolution
-
- # images to be used as wallpaper
- dim="$folder/dim.png" # image with subtle overlay of black
- blur="$folder/blur.png" # blurred version
- dimblur="$folder/dimblur.png"
-
- # lockscreen images (images to be used as lockscreen background)
- l_resized="$folder/l_resized.png"
- l_dim="$folder/l_dim.png"
- l_blur="$folder/l_blur.png"
- l_dimblur="$folder/l_dimblur.png"
-}
-
-init_filenames $res
-
-
-prelock() {
- if [ ! -z "$(pidof dunst)" ]; then
- pkill -u "$USER" -USR1 dunst
- fi
-}
-
-
-lock() {
- #$1 image path
- letterEnteredColor=d23c3dff
- letterRemovedColor=d23c3dff
- passwordCorrect=00000000
- passwordIncorrect=d23c3dff
- background=00000000
- foreground=ffffffff
- i3lock \
- -t -i "$1" \
- --timepos='x+110:h-70' \
- --datepos='x+43:h-45' \
- --clock --date-align 1 --datestr "$locktext" \
- --insidecolor=$background --ringcolor=$foreground --line-uses-inside \
- --keyhlcolor=$letterEnteredColor --bshlcolor=$letterRemovedColor --separatorcolor=$background \
- --insidevercolor=$passwordCorrect --insidewrongcolor=$passwordIncorrect \
- --ringvercolor=$foreground --ringwrongcolor=$foreground --indpos='x+280:h-70' \
- --radius=20 --ring-width=4 --veriftext='' --wrongtext='' \
- --verifcolor="$foreground" --timecolor="$foreground" --datecolor="$foreground" \
- --noinputtext='' --force-clock $lockargs
-}
-
-
-postlock() {
- if [ ! -z "$(pidof dunst)" ] ; then
- pkill -u "$USER" -USR2 dunst
- fi
-}
-
-
-rec_get_random() {
- dir="$1"
- if [ ! -d "$dir" ]; then
- user_input="$dir"
- return
- fi
- dir=($dir/*)
- dir=${dir[RANDOM % ${#dir[@]}]}
- rec_get_random "$dir"
-}
-
-
-lockselect() {
- prelock
- case "$1" in
- dim)
- # lockscreen with dimmed background
- lock "$l_dim"
- ;;
-
- blur)
- # set lockscreen with blurred background
- lock "$l_blur"
- ;;
-
- dimblur)
- # set lockscreen with dimmed + blurred background
- lock "$l_dimblur"
- ;;
-
- *)
- # default lockscreen
- lock "$l_resized"
- ;;
- esac
- postlock
-}
-
-
-update() {
- # use
- background="$1"
-
- # default blur level; fallback to 1
- [[ $blur_level ]] || blur_level=1
-
- rectangles=" "
- SR=$(xrandr --query | grep ' connected' | grep -o '[0-9][0-9]*x[0-9][0-9]*[^ ]*')
- for RES in $SR; do
- SRA=(${RES//[x+]/ })
- CX=$((${SRA[2]} + 25))
- CY=$((${SRA[1]} - 30))
- rectangles+="rectangle $CX,$CY $((CX+300)),$((CY-80)) "
- done
-
- # User supplied Image
- user_image="$folder/user_image.png"
-
- # create folder
- if [ ! -d $folder ]; then
- echo "Creating '$folder' directory to cache processed images."
- mkdir -p "$folder"
- fi
-
- # get random file in dir if passed argument is a dir
- rec_get_random "$background"
-
- # get user image
- cp "$user_input" "$user_image"
- if [ ! -f $user_image ]; then
- echo 'Please specify the path to the image you would like to use'
- exit 1
- fi
-
- # replace orignal with user image
- cp "$user_image" "$orig_wall"
- rm "$user_image"
-
- echo 'Generating alternate images based on the image you specified,'
- echo 'please wait this might take few seconds...'
-
- # wallpapers
-
- echo
- echo 'Converting provided image to match your resolution...'
- # resize image
- convert "$orig_wall" -resize "$res""^" -gravity center -extent "$res" "$resized"
-
- echo
- echo 'Applying dim and blur effect to resized image'
- # dim
- convert "$resized" -fill black -colorize 40% "$dim"
-
- # blur
- blur_shrink=$(echo "scale=2; 20 / $blur_level" | bc)
- blur_sigma=$(echo "scale=2; 0.6 * $blur_level" | bc)
- convert "$resized" \
- -filter Gaussian \
- -resize "$blur_shrink%" \
- -define "filter:sigma=$blur_sigma" \
- -resize "$res^" -gravity center -extent "$res" \
- "$blur"
-
- # dimblur
- convert "$dim" \
- -filter Gaussian \
- -resize "$blur_shrink%" \
- -define "filter:sigma=$blur_sigma" \
- -resize "$res^" -gravity center -extent "$res" \
- "$dimblur"
-
- # lockscreen backgrounds
-
- echo
- echo 'Caching images for faster screen locking'
- # resized
- convert "$resized" -draw "fill rgba(0, 0, 0, 0.4) $rectangles" "$l_resized"
-
- # dim
- convert "$dim" -draw "fill rgba(0, 0, 0, 0.4) $rectangles" "$l_dim"
-
- # blur
- convert "$blur" -draw "fill rgba(0, 0, 0, 0.4) $rectangles" "$l_blur"
-
- # blur
- convert "$dimblur" -draw "fill rgba(0, 0, 0, 0.4) $rectangles" "$l_dimblur"
- echo
- echo 'All required changes have been applied'
-}
-
-
-wallpaper() {
- case "$1" in
- '')
- # set resized image as wallpaper if no argument is supplied by user
- feh --bg-fill $resized
- ;;
-
- dim)
- # set dimmed image as wallpaper
- feh --bg-fill $dim
- ;;
-
- blur)
- # set blurred image as wallpaper
- feh --bg-fill $blur
- ;;
-
- dimblur)
- # set dimmed + blurred image as wallpaper
- feh --bg-fill $dimblur
- ;;
- esac
-}
-
-
-empty() {
- if [ -f $l_dim ]; then
- echo -e "\nSeems you haven't provided any arguments. See below for usage details."
- else
- echo 'Important: Update the image cache (e.g. betterlockscreen -u path/to/image.jpg).'
- echo
- echo ' Image cache must be updated to initially configure or update the wallpaper used.'
- fi
-
- echo
- echo 'For other sets of options and help, use the help command.'
- echo 'e.g. betterlockscreen -h or betterlockscreen --help'
- echo
- echo 'See: https://github.com/pavanjadhaw/betterlockscreen for additional info...'
- exit 1
-}
-
-
-usage() {
- echo 'Important: Update the image cache (e.g. betterlockscreen -u path/to/image.jpg).'
- echo ' Image cache must be updated to initially configure or update wallpaper used'
- echo
- echo
- echo 'See: https://github.com/pavanjadhaw/betterlockscreen for additional info...'
- echo
- echo
- echo 'Options:'
- echo
- echo ' -h --help'
- echo ' For help (e.g. betterlockscreen -h or betterlockscreen --help).'
- echo
- echo
- echo ' -u --update'
- echo ' to update image cache, you should do this before using any other options'
- echo ' E.g: betterlockscreen -u path/to/image.png when image.png is custom background'
- echo ' Or you can use betterlockscreen -u path/to/imagedir and a random file will be selected.'
- echo
- echo
- echo ' -l --lock'
- echo ' to lock screen (e.g. betterlockscreen -l)'
- echo ' you can also use dimmed or blurred background for lockscreen.'
- echo ' E.g: betterlockscreen -l dim (for dimmed background)'
- echo ' E.g: betterlockscreen -l blur (for blurred background)'
- echo ' E.g: betterlockscreen -l dimblur (for dimmed + blurred background)'
- echo
- echo
- echo ' -s --suspend'
- echo ' to suspend system and lock screen (e.g. betterlockscreen -s)'
- echo ' you can also use dimmed or blurred background for lockscreen.'
- echo ' E.g: betterlockscreen -s dim (for dimmed background)'
- echo ' E.g: betterlockscreen -s blur (for blurred background)'
- echo ' E.g: betterlockscreen -s dimblur (for dimmed + blurred background)'
- echo
- echo
- echo ' -w --wall'
- echo ' you can also set lockscreen background as wallpaper'
- echo ' to set wallpaper (e.g. betterlockscreen -w or betterlockscreen --wall)'
- echo ' you can also use dimmed or blurred variants.'
- echo ' E.g: betterlockscreen -w dim (for dimmed wallpaper)'
- echo ' E.g: betterlockscreen -w blur (for blurred wallpaper)'
- echo ' E.g: betterlockscreen -w dimblur (for dimmed + blurred wallpaper)'
- echo
- echo
- echo ' -r --resolution'
- echo ' to be used after -u'
- echo ' used to set a custom resolution for the image cache.'
- echo ' E.g: betterlockscreen -u path/to/image.png -r 1920x1080'
- echo ' E.g: betterlockscreen -u path/to/image.png --resolution 3840x1080'
- echo
- echo
- echo ' -b --blur'
- echo ' to be used after -u'
- echo ' used to set blur intensity. Default to 1.'
- echo ' E.g: betterlockscreen -u path/to/image.png -b 3'
- echo ' E.g: betterlockscreen -u path/to/image.png --blur 0.5'
- echo
- echo
- echo ' -t --text'
- echo ' to set custom lockscreen text (max 31 chars)'
- echo " E.g: betterlockscreen -l dim -t \"Don't touch my machine!\""
- echo ' E.g: betterlockscreen --text "Hi, user!" -s blur'
-}
-
-
-# Options
-[[ "$1" = '' ]] && empty
-
-for arg in "$@"; do
- [[ "${arg:0:1}" = '-' ]] || continue
-
- case "$1" in
- -h | --help)
- usage
- break
- ;;
-
- -s | --suspend)
- runsuspend=true
- ;&
-
- -l | --lock)
- runlock=true
- [[ $runsuspend ]] || lockargs="$lockargs -n"
- [[ ${2:0:1} = '-' ]] && shift 1 || { lockstyle="$2"; shift 2; }
- ;;
-
- -w | --wall | --wallpaper)
- wallpaper "$2"
- shift 2
- ;;
-
- -u | --update)
- runupdate=true
- imagepath="$2"
- shift 2
- ;;
-
- -t | --text)
- locktext="$2"
- shift 2
- ;;
-
- -r | --resolution)
- res="$2"
- init_filenames $res force
- shift 2
- ;;
-
- -b | --blur)
- blur_level="$2"
- shift 2
- ;;
-
- --)
- lockargs="$lockargs ${@:2}"
- break
- ;;
-
- *)
- echo "invalid argument: $1"
- break
- ;;
- esac
-done
-
-# Run image generation
-[[ $runupdate ]] && update "$imagepath"
-
-# Activate lockscreen
-[[ $runlock ]] && lockselect "$lockstyle" && \
- { [[ $runsuspend ]] && systemctl suspend; }
-
-exit 0