#include "i3status.h"
-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
#include <sys/types.h>
#include <sys/sysctl.h>
#endif
&& seconds_remaining < 60 * low_threshold) {
START_COLOR("color_bad");
colorful_output = true;
+ } else {
+ colorful_output = false;
}
}
(void)snprintf(consumptionbuf, sizeof(consumptionbuf), "%1.2fW",
((float)present_rate / 1000.0 / 1000.0));
-
- if (colorful_output)
- END_COLOR;
+ } else {
+ /* On some systems, present_rate may not exist. Still, make sure
+ * we colorize the output if threshold_type is set to percentage
+ * (since we don't have any information on remaining time). */
+ if (status == CS_DISCHARGING && low_threshold > 0) {
+ if (strncmp(threshold_type, "percentage", strlen(threshold_type)) == 0
+ && percentage_remaining < low_threshold) {
+ START_COLOR("color_bad");
+ colorful_output = true;
+ }
+ }
}
-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
int state;
int sysctl_rslt;
size_t sysctl_size = sizeof(sysctl_rslt);
}
}
+ if (colorful_output)
+ END_COLOR;
+
OUTPUT_FULL_TEXT(buffer);
}