summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIngo Bürk <admin@airblader.de>2020-02-17 08:34:09 +0100
committerGitHub <noreply@github.com>2020-02-17 08:34:09 +0100
commitb61e959a58750fe3a4cf9ed2472d4cb7112bd2c3 (patch)
tree6625f042d17c82b43dfffa138a4e0ce89da6d345
parent5b115d39f85c5575b8ef6b888c8a66dfc883e603 (diff)
parent42e714729178679b425095bc1acb1b143ed4885c (diff)
Merge pull request #381 from Stunkymonkey/format_wireless
add wireless format-options
-rw-r--r--i3status.c5
-rw-r--r--include/i3status.h2
-rw-r--r--man/i3status.man9
-rw-r--r--src/print_wireless_info.c12
4 files changed, 19 insertions, 9 deletions
diff --git a/i3status.c b/i3status.c
index b02b71a..2108e04 100644
--- a/i3status.c
+++ b/i3status.c
@@ -338,7 +338,10 @@ 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_bitrate", "%g %cb/s", CFGF_NONE),
+ CFG_STR("format_noise", "%3d%s", CFGF_NONE),
CFG_STR("format_quality", "%3d%s", CFGF_NONE),
+ CFG_STR("format_signal", "%3d%s", CFGF_NONE),
CFG_CUSTOM_ALIGN_OPT,
CFG_CUSTOM_COLOR_OPTS,
CFG_CUSTOM_MIN_WIDTH_OPT,
@@ -732,7 +735,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"), cfg_getstr(sec, "format_quality"));
+ print_wireless_info(json_gen, buffer, interface, cfg_getstr(sec, "format_up"), cfg_getstr(sec, "format_down"), cfg_getstr(sec, "format_bitrate"), cfg_getstr(sec, "format_noise"), cfg_getstr(sec, "format_quality"), cfg_getstr(sec, "format_signal"));
SEC_CLOSE_MAP;
}
diff --git a/include/i3status.h b/include/i3status.h
index 95e6eba..e0dff2b 100644
--- a/include/i3status.h
+++ b/include/i3status.h
@@ -232,7 +232,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, bool hide_if_equals_localtime, 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, const char *quality_min_lenght);
+void print_wireless_info(yajl_gen json_gen, char *buffer, const char *interface, const char *format_up, const char *format_down, const char *format_bitrate, const char *format_noise, const char *format_quality, const char *format_signal);
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 a36c853..c2849c3 100644
--- a/man/i3status.man
+++ b/man/i3status.man
@@ -306,7 +306,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. The quality is padded with leading zeroes by
-default; to pad with something else use +format_quality+.
+default; to pad with something else use +format_bitrate+, +format_noise+,
++format_quality+ or +format_signal+.
The special interface name `_first_` will be replaced by the first wireless
network interface found on the system (excluding devices starting with "lo").
@@ -317,8 +318,14 @@ network interface found on the system (excluding devices starting with "lo").
*Example format_down*: +W: down+
+*Example format_bitrate*: +"%g %cb/s"+
+
+*Example format_noise*: +"%03d%s"+
+
*Example format_quality*: +"%03d%s"+
+*Example format_signal*: +"%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 c6df4cb..49421bb 100644
--- a/src/print_wireless_info.c
+++ b/src/print_wireless_info.c
@@ -97,7 +97,7 @@ typedef struct {
#ifdef __linux__
// Like iw_print_bitrate, but without the dependency on libiw.
-static void print_bitrate(char *buffer, int buflen, int bitrate) {
+static void print_bitrate(char *buffer, int buflen, int bitrate, const char *format_bitrate) {
const int kilo = 1e3;
const int mega = 1e6;
const int giga = 1e9;
@@ -116,7 +116,7 @@ static void print_bitrate(char *buffer, int buflen, int bitrate) {
scale = 'k';
divisor = kilo;
}
- snprintf(buffer, buflen, "%g %cb/s", rate / divisor, scale);
+ snprintf(buffer, buflen, format_bitrate, rate / divisor, scale);
}
// Based on NetworkManager/src/platform/wifi/wifi-utils-nl80211.c
@@ -491,7 +491,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, const char *format_quality) {
+void print_wireless_info(yajl_gen json_gen, char *buffer, const char *interface, const char *format_up, const char *format_down, const char *format_bitrate, const char *format_noise, const char *format_quality, const char *format_signal) {
const char *walk;
char *outwalk = buffer;
wireless_info_t info;
@@ -560,7 +560,7 @@ void print_wireless_info(yajl_gen json_gen, char *buffer, const char *interface,
} else if (BEGINS_WITH(walk + 1, "signal")) {
if (info.flags & WIRELESS_INFO_FLAG_HAS_SIGNAL) {
if (info.signal_level_max)
- outwalk += sprintf(outwalk, "%3d%s", PERCENT_VALUE(info.signal_level, info.signal_level_max), pct_mark);
+ outwalk += sprintf(outwalk, format_signal, PERCENT_VALUE(info.signal_level, info.signal_level_max), pct_mark);
else
outwalk += sprintf(outwalk, "%d dBm", info.signal_level);
} else {
@@ -571,7 +571,7 @@ void print_wireless_info(yajl_gen json_gen, char *buffer, const char *interface,
} else if (BEGINS_WITH(walk + 1, "noise")) {
if (info.flags & WIRELESS_INFO_FLAG_HAS_NOISE) {
if (info.noise_level_max)
- outwalk += sprintf(outwalk, "%3d%s", PERCENT_VALUE(info.noise_level, info.noise_level_max), pct_mark);
+ outwalk += sprintf(outwalk, format_noise, PERCENT_VALUE(info.noise_level, info.noise_level_max), pct_mark);
else
outwalk += sprintf(outwalk, "%d dBm", info.noise_level);
} else {
@@ -603,7 +603,7 @@ void print_wireless_info(yajl_gen json_gen, char *buffer, const char *interface,
else if (BEGINS_WITH(walk + 1, "bitrate")) {
char br_buffer[128];
- print_bitrate(br_buffer, sizeof(br_buffer), info.bitrate);
+ print_bitrate(br_buffer, sizeof(br_buffer), info.bitrate, format_bitrate);
outwalk += sprintf(outwalk, "%s", br_buffer);
walk += strlen("bitrate");