110 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			110 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#! /usr/bin/env bash
 | 
						|
#
 | 
						|
# i3lock-custom.bash
 | 
						|
# Copyright (C) 2018 salt <salt@lap-th-e560-0>
 | 
						|
#
 | 
						|
# Distributed under terms of the MIT license.
 | 
						|
#
 | 
						|
 | 
						|
tmpdir="$(mktemp -d "/tmp/i3lock-custom-$(whoami)-XXXXXXXX")"
 | 
						|
[ -z ${tmpdir+x} ] && exit 2
 | 
						|
cleanup() {
 | 
						|
	rm -rf "$tmpdir"
 | 
						|
	[ -z "$i3lockpid" ] || kill "$i3lockpid"
 | 
						|
	[ -z "$conkypid" ] || kill "$conkypid"
 | 
						|
}
 | 
						|
trap "cleanup" EXIT
 | 
						|
# Papirus Dark's object-locked.svg, rendererd, gzipped and base64'd
 | 
						|
# Also recolored to Gruvbox colors
 | 
						|
# Licensed under the terms of the GPLv3.0 License
 | 
						|
# https://github.com/PapirusDevelopmentTeam/papirus-icon-theme
 | 
						|
lockimg_gz() {
 | 
						|
	cat << EOF
 | 
						|
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
 | 
						|
EOF
 | 
						|
}
 | 
						|
 | 
						|
step_produce_image() {
 | 
						|
	(
 | 
						|
	# Really wanna make damn sure that we handle this well
 | 
						|
	set +e
 | 
						|
	umask 077
 | 
						|
	cd "$tmpdir" || exit
 | 
						|
	# Grab a screenshot and perform some calculations to make our black bar
 | 
						|
	import -window root scrot.bmp
 | 
						|
	lockimg_gz | base64 -d | gunzip > lock.png
 | 
						|
	rectangle="rectangle $(convert scrot.bmp -print "0,%[fx:h/2+128] %w,%[fx:h/2-128]" /dev/null)"
 | 
						|
 | 
						|
	# Do the do
 | 
						|
	# Output is in PNG so i3lock doesn't OOM
 | 
						|
	convert \
 | 
						|
		scrot.bmp \
 | 
						|
		-blur 10x5 \
 | 
						|
		-fill \#282828 \
 | 
						|
		-draw "$rectangle" \
 | 
						|
		lock.png -gravity center -compose src-over -composite \
 | 
						|
		"$HOME/.face" -gravity center -geometry 128x128+200+0 -compose src-over -composite \
 | 
						|
		end.png
 | 
						|
	)
 | 
						|
	return $?
 | 
						|
}
 | 
						|
step_start_i3lock() {
 | 
						|
	i3lock -i "$tmpdir/end.png" &
 | 
						|
	i3lockpid="$!"
 | 
						|
}
 | 
						|
step_start_conky() {
 | 
						|
	i=0
 | 
						|
	while ! xprop -name "i3lock" > /dev/null 2>&1; do
 | 
						|
		i=$(( i + 1 ))
 | 
						|
		if [ "$i" -eq "100" ]; then
 | 
						|
			return 1
 | 
						|
		fi
 | 
						|
		sleep 0.01
 | 
						|
	done
 | 
						|
	conkyconfig="$HOME/.config/conky/i3lock.conf"
 | 
						|
	[ -r "$conkyconfig" ] || return 2
 | 
						|
	conky -c "$conkyconfig" &
 | 
						|
	conkypid="$!"
 | 
						|
}
 | 
						|
step_wait() {
 | 
						|
	wait
 | 
						|
	exit 0
 | 
						|
}
 | 
						|
 | 
						|
main() {
 | 
						|
	step_produce_image || exit 1
 | 
						|
	step_start_i3lock
 | 
						|
	step_start_conky
 | 
						|
	step_wait
 | 
						|
}
 | 
						|
 | 
						|
main "$@"
 | 
						|
 |