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 "$@"
 | |
| 
 |