diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 47c4141..92e4994 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -4,8 +4,9 @@ Thanks for taking your time to contribute!
 
 First off, any and all contributions are welcome.
 
-Secondly, if your pull request or issue is in any way related to the [AUR package](https://aur.archlinux.org/packages/betterlockscreen-git/), 
-for example if your pull request adds a new dependency, 
+Secondly, if your pull request or issue is in any way related to the [AUR package](https://aur.archlinux.org/packages/betterlockscreen-git/),
 please notify the maintainer @AUTplayed via a mention (like used here with the @) in your comment.
 
+Also, in case of adding new dependencies, please notify @AUTplayed and @m1m3-50.
+
 Thanks
diff --git a/README.md b/README.md
index f880404..8dac78d 100644
--- a/README.md
+++ b/README.md
@@ -46,7 +46,7 @@ images as lockscreen background depending on argument provided by user.
 
 > Note: Make sure your system has all dependencies satisfied
 
-- [i3lock-color](https://github.com/PandorasFox/i3lock-color) - i3lock fork with additional features( >= 2.11-c )
+- [i3lock-color](https://github.com/Raymo111/i3lock-color) - i3lock fork with additional features( >= 2.11-c )
 - [imagemagick](https://www.imagemagick.org/script/index.php) - To apply effects to images
 - [xdpyinfo](https://www.x.org/archive/X11R7.7/doc/man/man1/xdpyinfo.1.xhtml), [xrandr](https://www.x.org/wiki/Projects/XRandR/), [bc](https://www.gnu.org/software/bc/) and [feh](https://feh.finalrewind.org/) - To find screen resolution, set custom blur level and wallpaper handling.
 
@@ -96,6 +96,14 @@ export PATH="${PATH}:${HOME}/.local/bin/"
 
 UtkarshVerma was so kind to provide an installation script for debian based systems, ![check it out here](https://github.com/UtkarshVerma/installer-scripts).
 
+#### Void Linux
+
+##### xbps repository
+
+`betterlockscreen` is available in official Void's repository as `betterlockscreen`.
+
+Installing using `xbps` (will automatically install all required dependencies): `xbps-install -S betterlockscreen`
+
 ### Configuration
 
 You can customise various colors for betterlockscreen, copy config file from examples directory to `~/.config/betterlockscreenrc` and edit it accordingly.
@@ -114,8 +122,8 @@ Run `betterlockscreen` and point it to either a directory (`betterlockscreen -u
 
 ```sh
 usage: betterlockscreen [-u "path/to/img.jpg"] [-l "dim, blur or dimblur"]
-           [-w "dim, blur, or dimblur"] [-t "custom text"] [-s "lockscreen and suspend"]
-					 [-r "resolution"] [-b "factor"]
+           [-w "dim, blur, pixel or dimblur"] [-t "custom text"] [-s "lockscreen and suspend"]
+					 [-r "resolution"] [-b "factor"] [--off <timeout>]
 
 betterlockscreen - faster and sweet looking lockscreen for linux systems.
 
@@ -131,7 +139,7 @@ usage:
 			lockscreen and suspend
 
 			Available effects:
-				dim, blur or dimblur
+				dim, blur, pixel or dimblur
 
 	-t, --text "custom text"
 			set custom lockscreen text
@@ -139,6 +147,8 @@ usage:
 			set blur range
 	-r, --resolution res
 			uses a custom resolution
+	--off, --off <timeout>
+			sets custom monitor timeout (<timeout> in seconds)
 
 
 Usage examples:
@@ -153,10 +163,13 @@ betterlockscreen -u path/to/directory -r 1920x1080 -b 0.5
 betterlockscreen -l dim                    # lockscreen with dim effect
 
 4. Lockscreen with custom text
-betterlockscreen -l dim -t "custom lockscreen text"
+betterlockscreen -l pixel -t "custom lockscreen text"
 
 5. Set desktop background
 betterlockscreen -w blur                   # set desktop background with blur effect
+
+6. Lockscreeen with custom monitor off timeout
+betterlockscreen --off 5 -l blur           # set monitor off lockscreen timeout (5 seconds)
 ```
 
 ### Set desktop background on startup
diff --git a/betterlockscreen b/betterlockscreen
index 2430cf8..5eaf4c8 100755
--- a/betterlockscreen
+++ b/betterlockscreen
@@ -6,40 +6,44 @@
 
 # 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...'
-
+default_timeout="$(cut -d ' ' -f4 <<< $(xset q | sed -n '25p'))"
+default_dpms=$(xset q | awk '/^[[:blank:]]*DPMS is/ {print $(NF)}')
 
 init_filenames() {
 	#$1 resolution
 
-	# custom i3lock colors
+	# 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'
+
+	# override defaults with config
 	theme_rc="$HOME/.config/betterlockscreenrc"
-	if [ -e $theme_rc ]; then
-	    source "$theme_rc"
-	else
-        # 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
+	if [ -e "$theme_rc" ]; then
+		source "$theme_rc"
 	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 -o -n "$2" ]; then
-		rm -f $folder
-		ln -s $res_folder $folder
+	echo "Got" "$@" "$res_folder"
+	if [ ! -d "$folder" -o -n "$2" ]; then
+		rm -rf "$folder"
+		mkdir -p "$res_folder"
+		ln -s "$res_folder" "$folder"
 	fi
 
 	# ratio for rectangle to be drawn for time background on lockscreen
@@ -55,18 +59,23 @@ 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 [ ! -z "$lock_timeout" ]; then
+		xset dpms "$lock_timeout"
+	fi
 	if [ ! -z "$(pidof dunst)" ]; then
 		pkill -u "$USER" -USR1 dunst
 	fi
@@ -87,11 +96,19 @@ lock() {
 		--ringvercolor=$ringvercolor --ringwrongcolor=$ringwrongcolor --indpos='x+280:h-70' \
 		--radius=20 --ring-width=4 --veriftext='' --wrongtext='' \
 		--verifcolor="$verifcolor" --timecolor="$timecolor" --datecolor="$datecolor" \
-		--noinputtext='' --force-clock $lockargs
+		--time-font="$font" --date-font="$font" --layout-font="$font" --verif-font="$font" --wrong-font="$font" \
+		--noinputtext='' --force-clock --pass-media-keys $lockargs
+
 }
 
 
 postlock() {
+	if [ ! -z "$lock_timeout" ]; then
+		xset dpms "$default_timeout"
+		if [ "$default_dpms" = "Disabled" ]; then
+			xset -dpms
+		fi
+	fi
 	if [ ! -z "$(pidof dunst)" ] ; then
 		pkill -u "$USER" -USR2 dunst
 	fi
@@ -128,6 +145,11 @@ lockselect() {
 			lock "$l_dimblur"
 			;;
 
+		pixel)
+			# set lockscreen with pixelated background
+			lock "$l_pixel"
+			;;
+
 		*)
 			# default lockscreen
 			lock "$l_resized"
@@ -136,19 +158,26 @@ lockselect() {
 	postlock
 }
 
+# $1: number of pixels to convert
+# $2: 1 for width. 2 for height
 logical_px() {
 	# get dpi value from xrdb
-	local DPI=$(xrdb -query | awk '/Xft.dpi/ {print $2}')
-	
+	local DPI
+	DPI=$(cat ~/.Xresources | grep -oP 'Xft.dpi:\s*\K\d+' | bc)
+	if [ -z "$DPI" ]; then
+		DPI=$(xdpyinfo | sed -En "s/\s*resolution:\s*([0-9]*)x([0-9]*)\s.*/\\$2/p" | head -n1)
+	fi
+
 	# return the default value if no DPI is set
 	if [ -z "$DPI" ]; then
-		echo $1
+		echo "$1"
 	else
-		local SCALE=$(echo "scale=2; $DPI / 96.0" | bc)
+		local SCALE
+		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
@@ -156,7 +185,7 @@ logical_px() {
 }
 
 update() {
-	# use 
+	# use
 	background="$1"
 
 	# default blur level; fallback to 1
@@ -166,16 +195,16 @@ update() {
 	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]} + $(logical_px 25)))
-		CY=$((${SRA[1]} - $(logical_px 30)))
-		rectangles+="rectangle $CX,$CY $((CX+$(logical_px 300))),$((CY-$(logical_px 80))) "
+		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))) "
 	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
@@ -185,7 +214,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
@@ -205,10 +234,13 @@ update() {
 	convert "$orig_wall" -resize "$res""^" -gravity center -extent "$res" "$resized"
 
 	echo
-	echo 'Applying dim and blur effect to resized image'
+	echo 'Applying dim, blur, and pixelation 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)
@@ -240,8 +272,11 @@ update() {
 	# blur
 	convert "$blur" -draw "fill #$loginbox $rectangles" "$l_blur"
 
-	# blur
+	# dimblur
 	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'
 }
@@ -251,29 +286,35 @@ wallpaper() {
 	case "$1" in
 		'')
 			# set resized image as wallpaper if no argument is supplied by user
-			feh --bg-fill $resized
+			wallpaper="$resized"
 			;;
 
 		dim)
 			# set dimmed image as wallpaper
-			feh --bg-fill $dim
+			wallpaper="$dim"
 			;;
 
 		blur)
 			# set blurred image as wallpaper
-			feh --bg-fill $blur
+			wallpaper="$blur"
 			;;
 
 		dimblur)
 			# set dimmed + blurred image as wallpaper
-			feh --bg-fill $dimblur
+			wallpaper="$dimblur"
+			;;
+
+		pixel)
+			# set pixelated image as wallpaper
+			wallpaper="$pixel"
 			;;
 	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).'
@@ -329,6 +370,7 @@ 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)'
@@ -353,6 +395,18 @@ 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'
 }
 
 
@@ -375,7 +429,11 @@ for arg in "$@"; do
 		-l | --lock)
 			runlock=true
 			[[ $runsuspend ]] || lockargs="$lockargs -n"
-			[[ ${2:0:1} = '-' ]] && shift 1 || { lockstyle="$2"; shift 2; }
+			if [[ ${2:0:1} = '-' ]]; then
+				shift 1
+			else
+				lockstyle="$2"; shift 2
+			fi
 			;;
 
 		-w | --wall | --wallpaper)
@@ -394,9 +452,14 @@ 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
 			;;
 
@@ -405,8 +468,13 @@ for arg in "$@"; do
 			shift 2
 			;;
 
+		-wc | --wallpaper_cmd)
+			wallpaper_cmd="$2"
+			shift 2
+			;;
+
 		--)
-			lockargs="$lockargs ${@:2}"
+			lockargs="$lockargs ${*:2}"
 			break
 			;;
 
diff --git a/examples/betterlockscreenrc b/examples/betterlockscreenrc
index e29072e..0f9c503 100644
--- a/examples/betterlockscreenrc
+++ b/examples/betterlockscreenrc
@@ -12,4 +12,7 @@ ringwrongcolor=ffffffff
 verifcolor=ffffffff
 timecolor=ffffffff
 datecolor=ffffffff
-loginbox=00000066
\ No newline at end of file
+loginbox=00000066
+font="sans-serif"
+locktext='Type password to unlock...'
+lock_timeout=5
diff --git a/betterlockscreen@.service b/system/betterlockscreen@.service
similarity index 76%
rename from betterlockscreen@.service
rename to system/betterlockscreen@.service
index a479828..d0674ab 100644
--- a/betterlockscreen@.service
+++ b/system/betterlockscreen@.service
@@ -1,5 +1,7 @@
 [Unit]
 Description = Lock screen when going to sleep/suspend
+Before=sleep.target
+Before=suspend.target
 
 [Service]
 User=%I
@@ -7,6 +9,7 @@ Type=simple
 Environment=DISPLAY=:0
 ExecStart=/usr/bin/betterlockscreen --lock
 TimeoutSec=infinity
+ExecStartPost=/usr/bin/sleep 1
 
 [Install]
 WantedBy=sleep.target