aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md3
-rwxr-xr-xbetterlockscreen214
-rw-r--r--examples/betterlockscreenrc1
3 files changed, 69 insertions, 149 deletions
diff --git a/README.md b/README.md
index 00c21f7..242ee14 100644
--- a/README.md
+++ b/README.md
@@ -121,6 +121,9 @@ If you have installed betterlockscreen from AUR package, then you can copy defau
cp /usr/share/doc/betterlockscreen/examples/betterlockscreenrc ~/.config
```
+For multimonitor setups, now you can choose which monitor the clock is displayed on
+modify screennumber in betterlockscreenrc accordingly. Its zero based i.e 0 = screen 1
+
### Usage
Run `betterlockscreen` and point it to either a directory (`betterlockscreen -u "path/to/dir"`) or an image (`betterlockscreen -u "/path/to/img.jpg"`) and that's all. `betterlockscreen` will change update its cache with image you provided.
diff --git a/betterlockscreen b/betterlockscreen
index 9c21ec7..3ffb808 100755
--- a/betterlockscreen
+++ b/betterlockscreen
@@ -6,46 +6,42 @@
# 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/')
-default_timeout="$(cut -d ' ' -f4 <<< "$(xset q | sed -n '25p')")"
-default_dpms=$(xset q | awk '/^[[:blank:]]*DPMS is/ {print $(NF)}')
+locktext='Type password to unlock...'
+
init_filenames() {
#$1 resolution
- # copy this block to ~/.config/betterlockscreenrc" to customize
- insidecolor=00000000
- ringcolor=ffffffff
- keyhlcolor=d23c3dff
- bshlcolor=d23c3dff
- separatorcolor=00000000
- insidevercolor=00000000
- insidewrongcolor=d23c3dff
- ringvercolor=ffffffff
- ringwrongcolor=ffffffff
- verifcolor=ffffffff
- timecolor=ffffffff
- datecolor=ffffffff
- loginbox=00000066
- font="sans-serif"
- locktext='Type password to unlock...'
- wallpaper_cmd='feh --bg-fill --no-fehbg'
- time_format='%H:%M:%S'
-
- # override defaults with config
+ # custom i3lock colors
theme_rc="$HOME/.config/betterlockscreenrc"
- if [ -e "$theme_rc" ]; then
- # shellcheck disable=SC1090
- source "$theme_rc"
+ if [ -e $theme_rc ]; then
+ source "$theme_rc"
+ else
+ # copy this block to ~/.config/betterlockscreenrc" to customize
+ screennumber=0
+ insidecolor=00000000
+ ringcolor=ffffffff
+ keyhlcolor=d23c3dff
+ bshlcolor=d23c3dff
+ separatorcolor=00000000
+ insidevercolor=00000000
+ insidewrongcolor=d23c3dff
+ ringvercolor=ffffffff
+ ringwrongcolor=ffffffff
+ verifcolor=ffffffff
+ timecolor=ffffffff
+ datecolor=ffffffff
+ loginbox=00000066
+ font="sans-serif"
fi
# create folder in ~/.cache/i3lock directory
res_folder="$HOME/.cache/i3lock/$1"
folder="$HOME/.cache/i3lock/current"
- echo "Got" "$@" "$res_folder"
- if [ ! -d "$folder" ] || [ -n "$2" ]; then
- rm -rf "$folder"
- mkdir -p "$res_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
@@ -61,29 +57,21 @@ init_filenames() {
dim="$folder/dim.png" # image with subtle overlay of black
blur="$folder/blur.png" # blurred version
dimblur="$folder/dimblur.png"
- pixel="$folder/pixel.png" # pixelated image
# 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"
- l_pixel="$folder/l_pixel.png"
}
-init_filenames "$res"
+init_filenames $res
prelock() {
- if [ -n "$lock_timeout" ]; then
- xset dpms "$lock_timeout"
- fi
- if [ -n "$(pidof dunst)" ]; then
+ if [ ! -z "$(pidof dunst)" ]; then
pkill -u "$USER" -USR1 dunst
fi
- if [[ "$runsuspend" = "true" ]]; then
- lockargs="$lockargs -n"
- fi
}
@@ -91,31 +79,23 @@ lock() {
#$1 image path
i3lock \
- -c 00000000 \
- -t -i "$1" \
- --time-pos='x+110:h-70' \
- --date-pos='x+43:h-45' \
- --clock --date-align 1 --date-str "$locktext" --time-str "$time_format" \
- --inside-color=$insidecolor --ring-color=$ringcolor --line-uses-inside \
- --keyhl-color=$keyhlcolor --bshl-color=$bshlcolor --separator-color=$separatorcolor \
- --insidever-color=$insidevercolor --insidewrong-color=$insidewrongcolor \
- --ringver-color=$ringvercolor --ringwrong-color=$ringwrongcolor --ind-pos='x+280:h-70' \
- --radius=20 --ring-width=4 --verif-text='' --wrong-text='' \
- --verif-color="$verifcolor" --time-color="$timecolor" --date-color="$datecolor" \
+ -t -i "$1" --screen=$screennumber \
+ --timepos='x+110:h-70' \
+ --datepos='x+43:h-45' \
+ --clock --date-align 1 --datestr "$locktext" \
+ --insidecolor=$insidecolor --ringcolor=$ringcolor --line-uses-inside \
+ --keyhlcolor=$keyhlcolor --bshlcolor=$bshlcolor --separatorcolor=$separatorcolor \
+ --insidevercolor=$insidevercolor --insidewrongcolor=$insidewrongcolor \
+ --ringvercolor=$ringvercolor --ringwrongcolor=$ringwrongcolor --indpos='x+280:h-70' \
+ --radius=20 --ring-width=4 --veriftext='' --wrongtext='' \
+ --verifcolor="$verifcolor" --timecolor="$timecolor" --datecolor="$datecolor" \
--time-font="$font" --date-font="$font" --layout-font="$font" --verif-font="$font" --wrong-font="$font" \
- --noinput-text='' --force-clock --pass-media-keys "$lockargs"
-
+ --noinputtext='' --force-clock $lockargs
}
postlock() {
- if [ -n "$lock_timeout" ]; then
- xset dpms "$default_timeout"
- if [ "$default_dpms" = "Disabled" ]; then
- xset -dpms
- fi
- fi
- if [ -n "$(pidof dunst)" ] ; then
+ if [ ! -z "$(pidof dunst)" ] ; then
pkill -u "$USER" -USR2 dunst
fi
}
@@ -127,9 +107,9 @@ rec_get_random() {
user_input="$dir"
return
fi
- dirs=("$dir"/*)
- random_dir="${dirs[RANDOM % ${#dirs[@]}]}"
- rec_get_random "$random_dir"
+ dir=("$dir"/*)
+ dir="${dir[RANDOM % ${#dir[@]}]}"
+ rec_get_random "$dir"
}
@@ -151,11 +131,6 @@ lockselect() {
lock "$l_dimblur"
;;
- pixel)
- # set lockscreen with pixelated background
- lock "$l_pixel"
- ;;
-
*)
# default lockscreen
lock "$l_resized"
@@ -164,26 +139,19 @@ lockselect() {
postlock
}
-# $1: number of pixels to convert
-# $2: 1 for width. 2 for height
logical_px() {
# get dpi value from xrdb
- local DPI
- DPI=$(grep -oP 'Xft.dpi:\s*\K\d+' ~/.Xresources | bc)
- if [ -z "$DPI" ]; then
- DPI=$(xdpyinfo | sed -En "s/\s*resolution:\s*([0-9]*)x([0-9]*)\s.*/\\$2/p" | head -n1)
- fi
+ local DPI=$(xrdb -query | awk '/Xft.dpi/ {print $2}')
# return the default value if no DPI is set
if [ -z "$DPI" ]; then
- echo "$1"
+ echo $1
else
- local SCALE
- SCALE=$(echo "scale=2; $DPI / 96.0" | bc)
+ local SCALE=$(echo "scale=2; $DPI / 96.0" | bc)
# check if scaling the value is worthy
- if [ "$(echo "$SCALE > 1.25" | bc -l)" -eq 0 ]; then
- echo "$1"
+ if [ $(echo "$SCALE > 1.25" | bc -l) -eq 0 ]; then
+ echo $1
else
echo "$SCALE * $1 / 1" | bc
fi
@@ -200,19 +168,17 @@ update() {
rectangles=" "
SR=$(xrandr --query | grep ' connected' | grep -o '[0-9][0-9]*x[0-9][0-9]*[^ ]*')
for RES in $SR; do
- # shellcheck disable=SC2206
SRA=(${RES//[x+]/ })
-
- CX=$((SRA[2] + $(logical_px 25 1)))
- CY=$((SRA[1] - $(logical_px 30 2)))
- rectangles+="rectangle $CX,$CY $((CX+$(logical_px 300 1))),$((CY-$(logical_px 80 2))) "
+ CX=$((${SRA[2]} + $(logical_px 25)))
+ CY=$((${SRA[1]} - $(logical_px 30)))
+ rectangles+="rectangle $CX,$CY $((CX+$(logical_px 300))),$((CY-$(logical_px 80))) "
done
# User supplied Image
user_image="$folder/user_image.png"
# create folder
- if [ ! -d "$folder" ]; then
+ if [ ! -d $folder ]; then
echo "Creating '$folder' directory to cache processed images."
mkdir -p "$folder"
fi
@@ -222,7 +188,7 @@ update() {
# get user image
cp "$user_input" "$user_image"
- if [ ! -f "$user_image" ]; then
+ if [ ! -f $user_image ]; then
echo 'Please specify the path to the image you would like to use'
exit 1
fi
@@ -242,13 +208,10 @@ update() {
convert "$orig_wall" -resize "$res""^" -gravity center -extent "$res" "$resized"
echo
- echo 'Applying dim, blur, and pixelation effect to resized image'
+ echo 'Applying dim and blur effect to resized image'
# dim
convert "$resized" -fill black -colorize 40% "$dim"
- # pixel
- convert -scale 10% -scale 1000% "$resized" "$pixel"
-
# blur
blur_shrink=$(echo "scale=2; 20 / $blur_level" | bc)
blur_sigma=$(echo "scale=2; 0.6 * $blur_level" | bc)
@@ -280,11 +243,8 @@ update() {
# blur
convert "$blur" -draw "fill #$loginbox $rectangles" "$l_blur"
- # dimblur
+ # blur
convert "$dimblur" -draw "fill #$loginbox $rectangles" "$l_dimblur"
-
- # pixel
- convert "$pixel" -draw "fill #$loginbox $rectangles" "$l_pixel"
echo
echo 'All required changes have been applied'
}
@@ -294,35 +254,29 @@ wallpaper() {
case "$1" in
'')
# set resized image as wallpaper if no argument is supplied by user
- wallpaper="$resized"
+ feh --bg-fill $resized
;;
dim)
# set dimmed image as wallpaper
- wallpaper="$dim"
+ feh --bg-fill $dim
;;
blur)
# set blurred image as wallpaper
- wallpaper="$blur"
+ feh --bg-fill $blur
;;
dimblur)
# set dimmed + blurred image as wallpaper
- wallpaper="$dimblur"
- ;;
-
- pixel)
- # set pixelated image as wallpaper
- wallpaper="$pixel"
+ feh --bg-fill $dimblur
;;
esac
- eval "$wallpaper_cmd $wallpaper"
}
empty() {
- if [ -f "$l_dim" ]; then
+ 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).'
@@ -378,7 +332,6 @@ usage() {
echo ' -w --wall'
echo ' you can also set lockscreen background as wallpaper'
echo ' to set wallpaper (e.g. betterlockscreen -w or betterlockscreen --wall)'
- echo ' (The default wallpaper setter is feh, to set your own use the -wc command)'
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)'
@@ -403,24 +356,6 @@ usage() {
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'
- echo
- echo
- echo ' --off <timeout>'
- echo ' to set custom monitor turn off timeout for lockscreen'
- echo ' timeout is in seconds'
- echo ' E.g: betterlockscreen -l dim --off 5'
- echo
- echo
- echo ' -wc --wallpaper_cmd <command>'
- echo ' to set your custom wallpaper setter'
- echo ' the default is "feh --bg-fill --no-fehbg"'
- echo ' E.g: betterlockscreen -wc "xwallpaper --zoom" -w'
- echo
- echo
- echo ' -tf --time_format <format>'
- echo ' to set the time format used by i3lock-color'
- echo ' see the i3lock or strftime man pages for more details.'
- echo ' E.g: betterlockscreen -l dim -tf "%I:%M %p"'
}
@@ -442,12 +377,8 @@ for arg in "$@"; do
-l | --lock)
runlock=true
-
- if [[ ${2:0:1} = '-' ]]; then
- shift 1
- else
- lockstyle="$2"; shift 2
- fi
+ [[ $runsuspend ]] || lockargs="$lockargs -n"
+ [[ ${2:0:1} = '-' ]] && shift 1 || { lockstyle="$2"; shift 2; }
;;
-w | --wall | --wallpaper)
@@ -466,14 +397,9 @@ for arg in "$@"; do
shift 2
;;
- --off)
- lock_timeout="$2"
- shift 2
- ;;
-
-r | --resolution)
res="$2"
- init_filenames "$res" force
+ init_filenames $res force
shift 2
;;
@@ -482,18 +408,8 @@ for arg in "$@"; do
shift 2
;;
- -wc | --wallpaper_cmd)
- wallpaper_cmd="$2"
- shift 2
- ;;
-
- -tf | --time_format)
- time_format="$2"
- shift 2
- ;;
-
--)
- lockargs="$lockargs ${*:2}"
+ lockargs="$lockargs ${@:2}"
break
;;
@@ -511,4 +427,4 @@ done
[[ $runlock ]] && lockselect "$lockstyle" && \
{ [[ $runsuspend ]] && systemctl suspend; }
-exit 0
+exit 0 \ No newline at end of file
diff --git a/examples/betterlockscreenrc b/examples/betterlockscreenrc
index 8ca0110..61f9bf0 100644
--- a/examples/betterlockscreenrc
+++ b/examples/betterlockscreenrc
@@ -1,5 +1,6 @@
# configuration file for betterlockscreen
+screennumber=0
insidecolor=00000000
ringcolor=ffffffff
keyhlcolor=d23c3dff