From 4ea804b751f9394b7b10b520212169a491c698a6 Mon Sep 17 00:00:00 2001 From: Felix Buehler Date: Thu, 28 Jun 2018 22:16:37 +0200 Subject: [PATCH] add format_quality option in wireless --- i3status.c | 3 ++- include/i3status.h | 2 +- man/i3status.man | 5 ++++- src/print_wireless_info.c | 4 ++-- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/i3status.c b/i3status.c index 316159c..76b6349 100644 --- a/i3status.c +++ b/i3status.c @@ -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, @@ -693,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; } diff --git a/include/i3status.h b/include/i3status.h index 7bedfed..e259987 100644 --- a/include/i3status.h +++ b/include/i3status.h @@ -217,7 +217,7 @@ void print_battery_info(yajl_gen json_gen, char *buffer, int number, const char void print_time(yajl_gen json_gen, char *buffer, const char *title, const char *format, const char *tz, const char *locale, const char *format_time, time_t t); void print_ddate(yajl_gen json_gen, char *buffer, const char *format, time_t t); const char *get_ip_addr(const char *interface, int family); -void print_wireless_info(yajl_gen json_gen, char *buffer, const char *interface, const char *format_up, const char *format_down); +void print_wireless_info(yajl_gen json_gen, char *buffer, const char *interface, const char *format_up, const char *format_down, const char *quality_min_lenght); void print_run_watch(yajl_gen json_gen, char *buffer, const char *title, const char *pidfile, const char *format, const char *format_down); void print_path_exists(yajl_gen json_gen, char *buffer, const char *title, const char *path, const char *format, const char *format_down); void print_cpu_temperature_info(yajl_gen json_gen, char *buffer, int zone, const char *path, const char *format, const char *format_above_threshold, int); diff --git a/man/i3status.man b/man/i3status.man index 31f25ad..86f6216 100644 --- a/man/i3status.man +++ b/man/i3status.man @@ -300,7 +300,8 @@ There also is an option "format_down". You can hide the output with Gets the link quality, frequency and ESSID of the given wireless network interface. You can specify different format strings for the network being -connected or not connected. +connected or not connected. The quality is padded with leading zeroes by +default; to pad with something else use +format_quality+. The special interface name `_first_` will be replaced by the first wireless network interface found on the system (excluding devices starting with "lo"). @@ -311,6 +312,8 @@ network interface found on the system (excluding devices starting with "lo"). *Example format_down*: +W: down+ +*Example format_quality*: +"%03d%s"+ + === Ethernet Gets the IP address and (if possible) the link speed of the given ethernet diff --git a/src/print_wireless_info.c b/src/print_wireless_info.c index efdd59b..dcfde52 100644 --- a/src/print_wireless_info.c +++ b/src/print_wireless_info.c @@ -480,7 +480,7 @@ error1: * | 127.0.0.1 | no IP | IPv4 | ok | * | 127.0.0.1 | ::1/128 | IPv4 | ok | */ -void print_wireless_info(yajl_gen json_gen, char *buffer, const char *interface, const char *format_up, const char *format_down) { +void print_wireless_info(yajl_gen json_gen, char *buffer, const char *interface, const char *format_up, const char *format_down, const char *format_quality) { const char *walk; char *outwalk = buffer; wireless_info_t info; @@ -540,7 +540,7 @@ void print_wireless_info(yajl_gen json_gen, char *buffer, const char *interface, if (BEGINS_WITH(walk + 1, "quality")) { if (info.flags & WIRELESS_INFO_FLAG_HAS_QUALITY) { if (info.quality_max) - outwalk += sprintf(outwalk, "%3d%s", PERCENT_VALUE(info.quality, info.quality_max), pct_mark); + outwalk += sprintf(outwalk, format_quality, PERCENT_VALUE(info.quality, info.quality_max), pct_mark); else outwalk += sprintf(outwalk, "%d", info.quality); } else { -- 2.39.2