109 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			3.7 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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
 | 
						|
Mf8AFA6UTfQFAAA=
 | 
						|
EOF
 | 
						|
}
 | 
						|
 | 
						|
step_produce_image() {
 | 
						|
	(
 | 
						|
	# Really wanna make damn sure that we handle this well
 | 
						|
	set +e
 | 
						|
	umask 077
 | 
						|
	cd "$tmpdir" || exit
 | 
						|
	# I know this is inefficient but it's an easier solution than parsing
 | 
						|
	# xrandr
 | 
						|
	import -window root scrot.bmp
 | 
						|
	lockimg_gz | base64 -d | gunzip > lock.png
 | 
						|
	rectangle="rectangle $(convert scrot.bmp -print "0,0 %w,%h" /dev/null)"
 | 
						|
 | 
						|
	# Do the do
 | 
						|
	# Output is in PNG so i3lock doesn't OOM
 | 
						|
	convert \
 | 
						|
		scrot.bmp \
 | 
						|
		-fill \#383c4a\
 | 
						|
		-draw "$rectangle" \
 | 
						|
		lock.png -gravity center -compose src-over -composite \
 | 
						|
		"$HOME/.face" -gravity center -geometry 128x128+0-264 -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 "$@"
 | 
						|
 |