aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Mob <thetarkus@users.noreply.github.com>2018-11-04 01:22:53 -0400
committerPavan Jadhaw <pavanjadhaw96@gmail.com>2018-11-04 10:52:53 +0530
commit5007d00536ac5121f20d53637063c5a3395ed38f (patch)
tree746048263c7f8702aef32d086e6f8cdc3c9c8baf
parent533d729a75dffc0596d3af3bb685686df22bae38 (diff)
Pass argument directory to i3lock (#79)
New "--" argument to pass arguments directly to i3lock String optimizations
-rwxr-xr-xbetterlockscreen550
1 files changed, 280 insertions, 270 deletions
diff --git a/betterlockscreen b/betterlockscreen
index e490a67..d9f90af 100755
--- a/betterlockscreen
+++ b/betterlockscreen
@@ -6,7 +6,8 @@
# 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..."
+locktext='Type password to unlock...'
+
init_filenames() {
#$1 resolution
@@ -14,11 +15,10 @@ init_filenames() {
# 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 $folder
- ln -s $res_folder $folder
+ 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
@@ -44,12 +44,14 @@ init_filenames() {
init_filenames $res
+
prelock() {
- if [ ! -z "$(pidof dunst)" ] ; then
+ if [ ! -z "$(pidof dunst)" ]; then
pkill -u "$USER" -USR1 dunst
fi
}
+
lock() {
#$1 image path
letterEnteredColor=d23c3dff
@@ -60,24 +62,26 @@ lock() {
foreground=ffffffff
i3lock \
-t -i "$1" \
- --timepos="x+110:h-70" \
- --datepos="x+43:h-45" \
+ --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="" \
+ --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
+ --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
@@ -89,295 +93,301 @@ rec_get_random() {
rec_get_random "$dir"
}
+
lockselect() {
+ prelock
case "$1" in
- "")
- # default lockscreen
- prelock
- lock "$l_resized"
- postlock
- ;;
-
dim)
# lockscreen with dimmed background
- prelock
lock "$l_dim"
- postlock
;;
blur)
# set lockscreen with blurred background
- prelock
lock "$l_blur"
- postlock
;;
dimblur)
# set lockscreen with dimmed + blurred background
- prelock
lock "$l_dimblur"
- postlock
+ ;;
+
+ *)
+ # default lockscreen
+ lock "$l_resized"
;;
esac
+ postlock
}
-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"
+update() {
+ # use
+ background="$1"
- 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"
+ # 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'
}
-# check if --text argument is given
-if [ $# -gt 2 ] ; then
- if [ "$1" == "-t" -o "$1" == "--text" ] ; then
- locktext="$2"
- # delete first 2 arguments and reset numbering ( 3 -> 1, 4 -> 2, ...)
- set -- "${@:3}"
- elif [ \( "$3" == "-t" -o "$3" == "--text" \) -a $# -gt 3 ] ; then
- locktext="$4"
+
+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
-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
-case "$1" in
- "")
- if [ ! -f $l_dim ]; then
- 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 wallpaper used"
- echo
- echo "See also: For other set of options and help use help command."
- echo "E.g. betterlockscreen -h or betterlockscreen --help"
-
- echo
- echo "See: https://github.com/pavanjadhaw/betterlockscreen for addition info..."
- exit 1
- else
- echo
- echo "Seems you havent provided any argument, see below for usage info"
- echo
- echo "See also: For other set of options and help use help command."
-
- echo "E.g. betterlockscreen -h or betterlockscreen --help"
-
- echo
- echo "See: https://github.com/pavanjadhaw/betterlockscreen for addition info..."
- echo
- exit 1
- fi
- ;;
-
- -h | --help)
-
- usage
- ;;
-
- -l | --lock)
- lockargs="-n"
- lockselect "$2"
- ;;
-
- -s | --suspend)
- lockselect "$2"
- systemctl suspend
- ;;
-
- -w | --wall)
- case "$2" 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
- ;;
-
- -u | --update)
- background="$2"
- shift 2
-
- # default blur level
- blur_level=1
-
- # parse update arguments
- while [ $# -gt 0 ]; do
- case "$1" in
- -r | --resolution )
- res="$2"
- init_filenames $res force
- shift 2
- ;;
- -b | --blur )
- blur_level="$2"
- shift 2
- ;;
- *)
- shift ;;
- esac
- done
-
- 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
+[[ "$1" = '' ]] && empty
- echo
- echo "Converting provided image to match your resolution..."
- # resize image
- convert "$orig_wall" -resize "$res""^" -gravity center -extent "$res" "$resized"
+for arg in "$@"; do
+ [[ "${arg:0:1}" = '-' ]] || continue
- 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
+ case "$1" in
+ -h | --help)
+ usage
+ break
+ ;;
- echo
- echo "Caching images for faster screen locking"
- # resized
- convert "$resized" -draw "fill rgba(0, 0, 0, 0.4) $rectangles" "$l_resized"
+ -s | --suspend)
+ runsuspend=true
+ ;&
+
+ -l | --lock)
+ runlock=true
+ [[ $runsuspend ]] || lockargs="$lockargs -n"
+ [[ ${2:0:1} = '-' ]] && shift 1 || { lockstyle="$2"; shift 2; }
+ ;;
- # dim
- convert "$dim" -draw "fill rgba(0, 0, 0, 0.4) $rectangles" "$l_dim"
+ -w | --wall | --wallpaper)
+ wallpaper "$2"
+ shift 2
+ ;;
- # blur
- convert "$blur" -draw "fill rgba(0, 0, 0, 0.4) $rectangles" "$l_blur"
+ -u | --update)
+ runupdate=true
+ imagepath="$2"
+ shift 2
+ ;;
- # blur
- convert "$dimblur" -draw "fill rgba(0, 0, 0, 0.4) $rectangles" "$l_dimblur"
- echo
- echo "All required changes have been applied"
- ;;
+ -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"
- *)
- echo "invalid argument"
- ;;
-esac
+# Activate lockscreen
+[[ $runlock ]] && lockselect "$lockstyle" && \
+ { [[ $runsuspend ]] && systemctl suspend; }
-exit 0 \ No newline at end of file
+exit 0