aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorclsr <clsr@clsr.net>2018-08-09 18:18:44 +0200
committerclsr <clsr@clsr.net>2018-08-09 18:18:44 +0200
commitcedca7b8b843413217b399ea1323c727994237ce (patch)
tree7289f5ff5dc93e7e9a8a2b09ffb2d17c91294861
parent262fd581a79f61ee99b018938c480cf318ba6bd6 (diff)
downloaddwmclock-cedca7b8b843413217b399ea1323c727994237ce.tar.gz
dwmclock-cedca7b8b843413217b399ea1323c727994237ce.zip
Add exact sleepv1.2.0
-rw-r--r--config.def.mk14
-rw-r--r--dwmclock.c15
2 files changed, 26 insertions, 3 deletions
diff --git a/config.def.mk b/config.def.mk
index 1860aaf..4265c82 100644
--- a/config.def.mk
+++ b/config.def.mk
@@ -6,20 +6,26 @@ CFLAGS+=-DBATTERY
# set this to the correct path for your current system
CFLAGS+=-DENERGY_FULL=\"/sys/class/power_supply/BAT0/energy_full\"
CFLAGS+=-DENERGY_NOW=\"/sys/class/power_supply/BAT0/energy_now\"
-CFLAGS+=-DSTATUS=\"/sys/class/power_supply/BAT0/status\"
+CFLAGS+=-DSTATUS=\"/sys/class/power_supply/ADP1/online\"
+
# the string to match when the battery is charging; comment out to disable charging detection
-CFLAGS+=-DCHARGING=\"Charging\\n\"
+CFLAGS+=-DCHARGING=\"1\\n\"
# possible alternative on some systems
#CFLAGS+=-DENERGY_FULL=\"/sys/class/power_supply/BAT0/charge_full\"
#CFLAGS+=-DENERGY_NOW=\"/sys/class/power_supply/BAT0/charge_now\"
+#CFLAGS+=-DSTATUS=\"/sys/class/power_supply/BAT0/status\"
+#CFLAGS+=-DCHARGING=\"Charging\\n\"
# every how many seconds to refresh the battery charge display
-CFLAGS+=-DBAT_REFRESH_SECONDS=60
+CFLAGS+=-DBAT_REFRESH_SECONDS=10
# this is here for legacy reasons, ignore it
CFLAGS+=-DMUL=1
+# sleep to the start of the next second instead of for 1s
+CFLAGS+=-DEXACT_SLEEP
+
# make settings
@@ -33,3 +39,5 @@ LDFLAGS+=$(shell pkg-config --libs x11)
# default paths
DESTDIR?=/
PREFIX?=/usr/local
+#DESTDIR?=~
+#PREFIX?=/local
diff --git a/dwmclock.c b/dwmclock.c
index e7fd938..b409555 100644
--- a/dwmclock.c
+++ b/dwmclock.c
@@ -62,6 +62,9 @@ void handler(int sig)
int main(void)
{
+#ifdef EXACT_SLEEP
+ struct timespec ts;
+#endif /* EXACT_SLEEP */
struct tm *tm;
time_t now;
#ifdef BATTERY
@@ -128,13 +131,25 @@ int main(void)
perc[7] = ' ';
#endif /* BATTERY */
+#ifdef EXACT_SLEEP
+ clock_gettime(CLOCK_REALTIME, &ts);
+ now = ts.tv_sec;
+#else
now = time(NULL);
+#endif /* EXACT_SLEEP */
tm = localtime(&now);
strftime(clock, 9, "%H:%M:%S", tm);
XStoreName(disp, root, name);
XFlush(disp);
+
+#ifdef EXACT_SLEEP
+ ts.tv_sec = 0;
+ ts.tv_nsec = 1000000000 - ts.tv_nsec;
+ nanosleep(&ts, NULL);
+#else
sleep(1);
+#endif /* EXACT_SLEEP */
}
XCloseDisplay(disp);