#! /usr/bin/env bash # # i3lock-custom.bash # Copyright (C) 2018 salt # # 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" # 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 $@