diff options
Diffstat (limited to '.local/bin/caffeine')
| -rwxr-xr-x | .local/bin/caffeine | 118 | 
1 files changed, 118 insertions, 0 deletions
| diff --git a/.local/bin/caffeine b/.local/bin/caffeine new file mode 100755 index 0000000..10b26e0 --- /dev/null +++ b/.local/bin/caffeine @@ -0,0 +1,118 @@ +#!/bin/sh + +cfpid="${XDG_RUNTIME_DIR:-${TMPDIR:-/tmp}}/caffeine.pid" + +usage() +{ +	cat <<- EOF +	Usage: ${0##*/} [ -s ] [ -t timeout ] +	Keep your computer awake + +	Options: +	  -s silent or quiet mode +	  -t <timeout in minutes> + +	EOF +} + +note() +{ +	command -v notify-send > /dev/null && +		notify-send "  caffeine" "$1" +} + +die() +{ +	note "err: $1" +	printf "\033[31;1merr: %b\033[0m\n" "$1" 1>&2 +	exit "${2:-1}" +} + +dep_check() +{ +	: "${1:?}" + +	for dep; do +		command -v "$dep" > /dev/null || +			die "${dep} not installed" +	done + +	unset dep +} + +set_menu() +{ +	if [ -n "$WAYLAND_DISPLAY" ]; then +		menu="wmenu" +	elif [ -n "$DISPLAY" ]; then +		menu="dmenu" +	else +		die "can't be ran from tty, setup xorg or wayland" +	fi +} + +caf_time() +{ +	dep_check "$menu" + +	printf "1\n3\n5\n10\n15\n30" | "$menu" -p " sleep after " +} + +drink() +{ +	# usage: drink <time in mins> +	: "${1:?}" +	disp= + +	dep_check swayidle wlr-randr brightnessctl swaylock + +	[ -s "$cfpid" ] && +		kill "$(cat "$cfpid")" + +	disp="$(wlr-randr  | grep  -om1 '^[^ ]*')" +	swayidle \ +		timeout "$(($1 - 5))" "brightnessctl --save; brightnessctl set 10%-" \ +		resume "brightnessctl --restore" \ +		timeout "$1" "wlr-randr --output ${disp} --off; swaylock" \ +		resume "wlr-randr --output ${disp} --on --adaptive-sync enabled" & +	echo $! > "$cfpid" +	 +	[ "$silent" != true ] && +		note "$(uname -n) will sleep after $(($1 / 60)) m of inactivity" +} + +######## +# MAIN # +######## + +timeout= +silent= +menu= + +set_menu + +while getopts "t:sh" f; do +	case "$f" in +	t) +		timeout="$OPTARG" +		;; +	s) +		silent=true +		;; +	h) +		usage +		exit +		;; +	?) +		printf "try '%s -h' for more information\n" "${0##*/}" +		exit 1 +		;; +	esac +done + +[ -z "$timeout" ] && +	timeout="$(caf_time)" +[ "$((timeout))" -le 0 ] && +	die "invalid input time" + +drink "$((timeout * 60))" | 
