From 40c551385f20cc95a1b6571c4b1946cbed226f85 Mon Sep 17 00:00:00 2001 From: Timmy Keller Date: Mon, 9 Sep 2024 21:08:07 -0500 Subject: update makefile to build & install, include manpage, make notification persistent and change urgency --- Makefile | 15 ++++++++++----- lowbat.1 | 28 ++++++++++++++++++++++++++++ lowbat.c | 8 +++++--- shlowbat | 4 ++-- 4 files changed, 45 insertions(+), 10 deletions(-) create mode 100644 lowbat.1 diff --git a/Makefile b/Makefile index 180a311..8b6efbb 100644 --- a/Makefile +++ b/Makefile @@ -7,20 +7,25 @@ TARGET = lowbat SRCS = lowbat.c OBJS = $(SRCS:.c=.o) -# Default target all: $(TARGET) -# Build target $(TARGET): $(OBJS) $(CC) $(CFLAGS) -o $@ $(OBJS) $(LDFLAGS) $(LIBS) -# Compile source files %.o: %.c $(CC) $(CFLAGS) -c $< -o $@ -# Clean up build files clean: rm -f $(TARGET) $(OBJS) -# Phony targets +install: all + mkdir -p /usr/local/bin + cp lowbat /usr/local/bin/lowbat + chmod 755 /usr/local/bin/lowbat + cp lowbat.1 /usr/local/share/man/man1/lowbat.1 + chmod 644 /usr/local/share/man/man1/lowbat.1 + +uninstall: + rm -f /usr/local/bin/lowbat /usr/local/share/man/man1/lowbat.1 + .PHONY: all clean diff --git a/lowbat.1 b/lowbat.1 new file mode 100644 index 0000000..1d0d66f --- /dev/null +++ b/lowbat.1 @@ -0,0 +1,28 @@ +.TH LOWBAT 1 lowbat\-1.0 +.SH NAME +lowbat - A minimal battery level monitor daemon, written in C +.SH DESCRIPTION +lowbat is configured by default to check the system battery level every 3 +seconds. It is able to detect each battery installed and the system, and +calculate the remaining capacity of all batteries combined. Batteries added to +the system during runtime will also be detected. +.P +The daemon will send a warning notification the user when their battery level +drops below 20% while the batteries are discharging, and another critical +warning at 5%. +.P +The current battery level will also be displayed in stdout. +.SH USAGE +Call the lowbat executable in your xinitrc or xprofile. +.SH CUSTOMIZATION +There are no runtime flags or configuration files. Simply modify the source +code to suit your needs. +.SH COPYRIGHT +Copyright 2024 Tim Keller. +MIT License. +.P +.BR +.SH SEE ALSO +.BR notify-send(1) +.P +.BR diff --git a/lowbat.c b/lowbat.c index 14f10a2..f3855bc 100644 --- a/lowbat.c +++ b/lowbat.c @@ -64,11 +64,13 @@ void load_installed_batteries() { closedir(dir); } -void notifysend(char *title, char *content) { +void notifysend(char *title, char *content, NotifyUrgency urgency) { NotifyNotification *notif; notify_init("lowbat"); notif = notify_notification_new(title, content, NULL); + notify_notification_set_timeout(notif, NOTIFY_EXPIRES_NEVER); + notify_notification_set_urgency(notif, urgency); notify_notification_show(notif, NULL); } @@ -133,12 +135,12 @@ int main() { if (discharging) { if (capacity <= 5 && !w_lowbat_crit) { sprintf(msg, "%d%% remains", capacity); // TODO snprintf me plz - notifysend("Critical Low Battery Warning", msg); + notifysend("Critical Low Battery Warning", msg, NOTIFY_URGENCY_CRITICAL); w_lowbat_crit = w_lowbat = 1; } else if (capacity <= 20 && !w_lowbat) { sprintf(msg, "%d%% remains", capacity); - notifysend("Low Battery Warning", msg); + notifysend("Low Battery Warning", msg, NOTIFY_URGENCY_NORMAL); w_lowbat = 1; } diff --git a/shlowbat b/shlowbat index a02ce56..a4fb9d7 100755 --- a/shlowbat +++ b/shlowbat @@ -13,9 +13,9 @@ while true; do if is_discharging; then if [ $capacity -le 5 ] && [ $warning_level -lt 2 ]; then - notify_send "Critical Low Battery Warning" "${capacity}% remains" + notify-send -u critical -w "Critical Low Battery Warning" "${capacity}% remains" elif [ $capacity -le 20 ] && [ $warning_level -lt 1 ]; then - notify_send "Low Battery Warning" "${capacity}% remains" + notify-send -u normal -w "Low Battery Warning" "${capacity}% remains" fi else warning_level=0 -- cgit v1.2.3