summaryrefslogtreecommitdiff
path: root/i3status.c
diff options
context:
space:
mode:
Diffstat (limited to 'i3status.c')
-rw-r--r--i3status.c34
1 files changed, 30 insertions, 4 deletions
diff --git a/i3status.c b/i3status.c
index 2cded06..c604320 100644
--- a/i3status.c
+++ b/i3status.c
@@ -106,7 +106,7 @@ static bool path_exists(const char *path) {
static void *scalloc(size_t size) {
void *result = calloc(size, 1);
- exit_if_null(result, "Error: out of memory (calloc(%zd))\n", size);
+ exit_if_null(result, "Error: out of memory (calloc(%zu))\n", size);
return result;
}
@@ -142,7 +142,7 @@ static int parse_min_width(cfg_t *context, cfg_opt_t *option, const char *value,
long num = strtol(value, &end, 10);
if (num < 0)
- die("Invalid min_width attribute found in section %s, line %d: %d\n"
+ die("Invalid min_width attribute found in section %s, line %d: %ld\n"
"Expected positive integer or string\n",
context->name, context->line, num);
else if (num == LONG_MIN || num == LONG_MAX || (end && *end != '\0'))
@@ -336,6 +336,7 @@ int main(int argc, char *argv[]) {
cfg_opt_t wireless_opts[] = {
CFG_STR("format_up", "W: (%quality at %essid, %bitrate) %ip", CFGF_NONE),
CFG_STR("format_down", "W: down", CFGF_NONE),
+ CFG_STR("format_quality", "%3d%s", CFGF_NONE),
CFG_CUSTOM_ALIGN_OPT,
CFG_CUSTOM_COLOR_OPTS,
CFG_CUSTOM_MIN_WIDTH_OPT,
@@ -375,7 +376,7 @@ int main(int argc, char *argv[]) {
CFG_STR("threshold_type", "time", CFGF_NONE),
CFG_BOOL("last_full_capacity", false, CFGF_NONE),
CFG_BOOL("integer_battery_capacity", false, CFGF_NONE),
- CFG_BOOL("hide_seconds", false, CFGF_NONE),
+ CFG_BOOL("hide_seconds", true, CFGF_NONE),
CFG_CUSTOM_ALIGN_OPT,
CFG_CUSTOM_COLOR_OPTS,
CFG_CUSTOM_MIN_WIDTH_OPT,
@@ -421,6 +422,19 @@ int main(int argc, char *argv[]) {
CFG_CUSTOM_SEP_BLOCK_WIDTH_OPT,
CFG_END()};
+ cfg_opt_t memory_opts[] = {
+ CFG_STR("format", "%used %free %available", CFGF_NONE),
+ CFG_STR("format_degraded", NULL, CFGF_NONE),
+ CFG_STR("threshold_degraded", NULL, CFGF_NONE),
+ CFG_STR("threshold_critical", NULL, CFGF_NONE),
+ CFG_STR("memory_used_method", "classical", CFGF_NONE),
+ CFG_CUSTOM_ALIGN_OPT,
+ CFG_CUSTOM_COLOR_OPTS,
+ CFG_CUSTOM_MIN_WIDTH_OPT,
+ CFG_CUSTOM_SEPARATOR_OPT,
+ CFG_CUSTOM_SEP_BLOCK_WIDTH_OPT,
+ CFG_END()};
+
cfg_opt_t usage_opts[] = {
CFG_STR("format", "%usage", CFGF_NONE),
CFG_STR("format_above_threshold", NULL, CFGF_NONE),
@@ -490,6 +504,7 @@ int main(int argc, char *argv[]) {
CFG_SEC("tztime", tztime_opts, CFGF_TITLE | CFGF_MULTI),
CFG_SEC("ddate", ddate_opts, CFGF_NONE),
CFG_SEC("load", load_opts, CFGF_NONE),
+ CFG_SEC("memory", memory_opts, CFGF_NONE),
CFG_SEC("cpu_usage", usage_opts, CFGF_NONE),
CFG_END()};
@@ -631,6 +646,11 @@ int main(int argc, char *argv[]) {
die("Could not create socket\n");
int interval = cfg_getint(cfg_general, "interval");
+ if (interval <= 0) {
+ die("Invalid interval attribute found in section %s, line %d: %d\n"
+ "Expected positive integer\n",
+ cfg_general->name, cfg_general->line, interval);
+ }
/* One memory page which each plugin can use to buffer output.
* Even though it’s unclean, we just assume that the user will not
@@ -674,7 +694,7 @@ int main(int argc, char *argv[]) {
interface = first_eth_interface(NET_TYPE_WIRELESS);
if (interface == NULL)
interface = title;
- print_wireless_info(json_gen, buffer, interface, cfg_getstr(sec, "format_up"), cfg_getstr(sec, "format_down"));
+ print_wireless_info(json_gen, buffer, interface, cfg_getstr(sec, "format_up"), cfg_getstr(sec, "format_down"), cfg_getstr(sec, "format_quality"));
SEC_CLOSE_MAP;
}
@@ -719,6 +739,12 @@ int main(int argc, char *argv[]) {
SEC_CLOSE_MAP;
}
+ CASE_SEC("memory") {
+ SEC_OPEN_MAP("memory");
+ print_memory(json_gen, buffer, cfg_getstr(sec, "format"), cfg_getstr(sec, "format_degraded"), cfg_getstr(sec, "threshold_degraded"), cfg_getstr(sec, "threshold_critical"), cfg_getstr(sec, "memory_used_method"));
+ SEC_CLOSE_MAP;
+ }
+
CASE_SEC("time") {
SEC_OPEN_MAP("time");
print_time(json_gen, buffer, NULL, cfg_getstr(sec, "format"), NULL, NULL, NULL, tv.tv_sec);