X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=i3status.c;h=6491e1c6015371115de7382941fdd96d2820cd89;hb=6996f0a4a34e0744f09dbce39a2164c6fcee875e;hp=befe1d6f49e9af4b2e79cb72c39d6f3e086ef98b;hpb=93ead58bc16ba589fec58af375b0f6b0b4344290;p=i3%2Fi3status diff --git a/i3status.c b/i3status.c index befe1d6..6491e1c 100644 --- a/i3status.c +++ b/i3status.c @@ -56,6 +56,8 @@ static bool exit_upon_signal = false; cfg_t *cfg, *cfg_general, *cfg_section; +void **cur_instance; + /* * Set the exit_upon_signal flag, because one cannot do anything in a safe * manner in a signal handler (e.g. fprintf, which we really want to do for @@ -319,6 +321,9 @@ int main(int argc, char *argv[]) { cfg_opt_t battery_opts[] = { CFG_STR("format", "%status %percentage %remaining", CFGF_NONE), CFG_STR("format_down", "No battery", CFGF_NONE), + CFG_STR("status_chr", "CHR", CFGF_NONE), + CFG_STR("status_bat", "BAT", CFGF_NONE), + CFG_STR("status_full", "FULL", CFGF_NONE), CFG_STR("path", "/sys/class/power_supply/BAT%d/uevent", CFGF_NONE), CFG_INT("low_threshold", 30, CFGF_NONE), CFG_STR("threshold_type", "time", CFGF_NONE), @@ -381,6 +386,7 @@ int main(int argc, char *argv[]) { cfg_opt_t disk_opts[] = { CFG_STR("format", "%free", CFGF_NONE), + CFG_STR("format_not_mounted", NULL, CFGF_NONE), CFG_STR("prefix_type", "binary", CFGF_NONE), CFG_STR("threshold_type", "percentage_avail", CFGF_NONE), CFG_FLOAT("low_threshold", 0, CFGF_NONE), @@ -547,6 +553,8 @@ int main(int argc, char *argv[]) { * (!), not individual plugins, seem very unlikely. */ char buffer[4096]; + void **per_instance = calloc(cfg_size(cfg, "order"), sizeof(*per_instance)); + while (1) { if (exit_upon_signal) { fprintf(stderr, "Exiting due to signal.\n"); @@ -560,6 +568,7 @@ int main(int argc, char *argv[]) { /* Restore the cursor-position, clear line */ printf("\033[u\033[K"); for (j = 0; j < cfg_size(cfg, "order"); j++) { + cur_instance = per_instance + j; if (j > 0) print_separator(separator); @@ -573,19 +582,29 @@ int main(int argc, char *argv[]) { CASE_SEC_TITLE("wireless") { SEC_OPEN_MAP("wireless"); - print_wireless_info(json_gen, buffer, title, cfg_getstr(sec, "format_up"), cfg_getstr(sec, "format_down")); + const char *interface = NULL; + if (strcasecmp(title, "_first_") == 0) + 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")); SEC_CLOSE_MAP; } CASE_SEC_TITLE("ethernet") { SEC_OPEN_MAP("ethernet"); - print_eth_info(json_gen, buffer, title, cfg_getstr(sec, "format_up"), cfg_getstr(sec, "format_down")); + const char *interface = NULL; + if (strcasecmp(title, "_first_") == 0) + interface = first_eth_interface(NET_TYPE_ETHERNET); + if (interface == NULL) + interface = title; + print_eth_info(json_gen, buffer, interface, cfg_getstr(sec, "format_up"), cfg_getstr(sec, "format_down")); SEC_CLOSE_MAP; } CASE_SEC_TITLE("battery") { SEC_OPEN_MAP("battery"); - print_battery_info(json_gen, buffer, atoi(title), cfg_getstr(sec, "path"), cfg_getstr(sec, "format"), cfg_getstr(sec, "format_down"), cfg_getint(sec, "low_threshold"), cfg_getstr(sec, "threshold_type"), cfg_getbool(sec, "last_full_capacity"), cfg_getbool(sec, "integer_battery_capacity"), cfg_getbool(sec, "hide_seconds")); + print_battery_info(json_gen, buffer, atoi(title), cfg_getstr(sec, "path"), cfg_getstr(sec, "format"), cfg_getstr(sec, "format_down"), cfg_getstr(sec, "status_chr"), cfg_getstr(sec, "status_bat"), cfg_getstr(sec, "status_full"), cfg_getint(sec, "low_threshold"), cfg_getstr(sec, "threshold_type"), cfg_getbool(sec, "last_full_capacity"), cfg_getbool(sec, "integer_battery_capacity"), cfg_getbool(sec, "hide_seconds")); SEC_CLOSE_MAP; } @@ -603,7 +622,7 @@ int main(int argc, char *argv[]) { CASE_SEC_TITLE("disk") { SEC_OPEN_MAP("disk_info"); - print_disk_info(json_gen, buffer, title, cfg_getstr(sec, "format"), cfg_getstr(sec, "prefix_type"), cfg_getstr(sec, "threshold_type"), cfg_getfloat(sec, "low_threshold")); + print_disk_info(json_gen, buffer, title, cfg_getstr(sec, "format"), cfg_getstr(sec, "format_not_mounted"), cfg_getstr(sec, "prefix_type"), cfg_getstr(sec, "threshold_type"), cfg_getfloat(sec, "low_threshold")); SEC_CLOSE_MAP; }