Introduce format_percentage for battery (#371)
Allow custom output, backwards-compatible to integer_battery_capacity
This commit is contained in:
parent
badef18c22
commit
abfe05c8bd
16
i3status.c
16
i3status.c
@ -369,6 +369,7 @@ int main(int argc, char *argv[]) {
|
|||||||
cfg_opt_t battery_opts[] = {
|
cfg_opt_t battery_opts[] = {
|
||||||
CFG_STR("format", "%status %percentage %remaining", CFGF_NONE),
|
CFG_STR("format", "%status %percentage %remaining", CFGF_NONE),
|
||||||
CFG_STR("format_down", "No battery", CFGF_NONE),
|
CFG_STR("format_down", "No battery", CFGF_NONE),
|
||||||
|
CFG_STR("format_percentage", "%.02f%s", CFGF_NONE),
|
||||||
CFG_STR("status_chr", "CHR", CFGF_NONE),
|
CFG_STR("status_chr", "CHR", CFGF_NONE),
|
||||||
CFG_STR("status_bat", "BAT", CFGF_NONE),
|
CFG_STR("status_bat", "BAT", CFGF_NONE),
|
||||||
CFG_STR("status_unk", "UNK", CFGF_NONE),
|
CFG_STR("status_unk", "UNK", CFGF_NONE),
|
||||||
@ -676,6 +677,19 @@ int main(int argc, char *argv[]) {
|
|||||||
cfg_general->name, cfg_general->line, interval);
|
cfg_general->name, cfg_general->line, interval);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cfg_section = cfg_getsec(cfg, "battery");
|
||||||
|
if (cfg_section != NULL) {
|
||||||
|
bool integer_battery_capacity = cfg_getbool(cfg_section, "integer_battery_capacity");
|
||||||
|
char *format_percentage = cfg_getstr(cfg_section, "format_percentage");
|
||||||
|
if (integer_battery_capacity) {
|
||||||
|
if (strcmp("%.02f%s", format_percentage) == 0) {
|
||||||
|
cfg_setstr(cfg_section, "format_percentage", "%.00f%s");
|
||||||
|
} else {
|
||||||
|
fprintf(stderr, "i3status: integer_battery_capacity is deprecated\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* One memory page which each plugin can use to buffer output.
|
/* One memory page which each plugin can use to buffer output.
|
||||||
* Even though it’s unclean, we just assume that the user will not
|
* Even though it’s unclean, we just assume that the user will not
|
||||||
* specify a format string which expands to something longer than 4096
|
* specify a format string which expands to something longer than 4096
|
||||||
@ -735,7 +749,7 @@ int main(int argc, char *argv[]) {
|
|||||||
|
|
||||||
CASE_SEC_TITLE("battery") {
|
CASE_SEC_TITLE("battery") {
|
||||||
SEC_OPEN_MAP("battery");
|
SEC_OPEN_MAP("battery");
|
||||||
print_battery_info(json_gen, buffer, (strcasecmp(title, "all") == 0 ? -1 : 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_unk"), 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"));
|
print_battery_info(json_gen, buffer, (strcasecmp(title, "all") == 0 ? -1 : 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_unk"), cfg_getstr(sec, "status_full"), cfg_getint(sec, "low_threshold"), cfg_getstr(sec, "threshold_type"), cfg_getbool(sec, "last_full_capacity"), cfg_getstr(sec, "format_percentage"), cfg_getbool(sec, "hide_seconds"));
|
||||||
SEC_CLOSE_MAP;
|
SEC_CLOSE_MAP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -214,7 +214,7 @@ const char *first_eth_interface(const net_type_t type);
|
|||||||
|
|
||||||
void print_ipv6_info(yajl_gen json_gen, char *buffer, const char *format_up, const char *format_down);
|
void print_ipv6_info(yajl_gen json_gen, char *buffer, const char *format_up, const char *format_down);
|
||||||
void print_disk_info(yajl_gen json_gen, char *buffer, const char *path, const char *format, const char *format_below_threshold, const char *format_not_mounted, const char *prefix_type, const char *threshold_type, const double low_threshold);
|
void print_disk_info(yajl_gen json_gen, char *buffer, const char *path, const char *format, const char *format_below_threshold, const char *format_not_mounted, const char *prefix_type, const char *threshold_type, const double low_threshold);
|
||||||
void print_battery_info(yajl_gen json_gen, char *buffer, int number, const char *path, const char *format, const char *format_down, const char *status_chr, const char *status_bat, const char *status_unk, const char *status_full, int low_threshold, char *threshold_type, bool last_full_capacity, bool integer_battery_capacity, bool hide_seconds);
|
void print_battery_info(yajl_gen json_gen, char *buffer, int number, const char *path, const char *format, const char *format_down, const char *status_chr, const char *status_bat, const char *status_unk, const char *status_full, int low_threshold, char *threshold_type, bool last_full_capacity, const char *format_percentage, bool hide_seconds);
|
||||||
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_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);
|
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);
|
const char *get_ip_addr(const char *interface, int family);
|
||||||
|
@ -345,8 +345,10 @@ see it this way, because it tells me how worn off my battery is.), just specify
|
|||||||
+last_full_capacity = true+. You can show seconds in the remaining time and
|
+last_full_capacity = true+. You can show seconds in the remaining time and
|
||||||
empty time estimations by setting +hide_seconds = false+.
|
empty time estimations by setting +hide_seconds = false+.
|
||||||
|
|
||||||
If you want the battery percentage to be shown without decimals, add
|
If you want the battery percentage to be shown in another format, use
|
||||||
+integer_battery_capacity = true+.
|
+format_percentage+.
|
||||||
|
+integer_battery_capacity = true+ is a legacy option for
|
||||||
|
+format_percentage = "%.00f%s"+
|
||||||
|
|
||||||
If your battery is represented in a non-standard path in /sys, be sure to
|
If your battery is represented in a non-standard path in /sys, be sure to
|
||||||
modify the "path" property accordingly, i.e. pointing to the uevent file on
|
modify the "path" property accordingly, i.e. pointing to the uevent file on
|
||||||
@ -377,6 +379,8 @@ FULL) is used.
|
|||||||
|
|
||||||
*Example format_down*: +No battery+
|
*Example format_down*: +No battery+
|
||||||
|
|
||||||
|
*Example format_percentage*: +"%.02f%s"+
|
||||||
|
|
||||||
*Example status_chr*: +⚡ CHR+
|
*Example status_chr*: +⚡ CHR+
|
||||||
|
|
||||||
*Example status_bat*: +🔋 BAT+
|
*Example status_bat*: +🔋 BAT+
|
||||||
|
@ -570,7 +570,7 @@ static bool slurp_all_batteries(struct battery_info *batt_info, yajl_gen json_ge
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void print_battery_info(yajl_gen json_gen, char *buffer, int number, const char *path, const char *format, const char *format_down, const char *status_chr, const char *status_bat, const char *status_unk, const char *status_full, int low_threshold, char *threshold_type, bool last_full_capacity, bool integer_battery_capacity, bool hide_seconds) {
|
void print_battery_info(yajl_gen json_gen, char *buffer, int number, const char *path, const char *format, const char *format_down, const char *status_chr, const char *status_bat, const char *status_unk, const char *status_full, int low_threshold, char *threshold_type, bool last_full_capacity, const char *format_percentage, bool hide_seconds) {
|
||||||
const char *walk;
|
const char *walk;
|
||||||
char *outwalk = buffer;
|
char *outwalk = buffer;
|
||||||
struct battery_info batt_info = {
|
struct battery_info batt_info = {
|
||||||
@ -586,7 +586,9 @@ void print_battery_info(yajl_gen json_gen, char *buffer, int number, const char
|
|||||||
|
|
||||||
#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) || defined(__OpenBSD__)
|
#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) || defined(__OpenBSD__)
|
||||||
/* These OSes report battery stats in whole percent. */
|
/* These OSes report battery stats in whole percent. */
|
||||||
integer_battery_capacity = true;
|
if (strcmp("%.02f%s", format_percentage) == 0) {
|
||||||
|
format_percentage = "%.00f%s";
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) || defined(__OpenBSD__)
|
#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) || defined(__OpenBSD__)
|
||||||
/* These OSes report battery time in minutes. */
|
/* These OSes report battery time in minutes. */
|
||||||
@ -687,11 +689,7 @@ void print_battery_info(yajl_gen json_gen, char *buffer, int number, const char
|
|||||||
walk += strlen("status");
|
walk += strlen("status");
|
||||||
|
|
||||||
} else if (BEGINS_WITH(walk + 1, "percentage")) {
|
} else if (BEGINS_WITH(walk + 1, "percentage")) {
|
||||||
if (integer_battery_capacity) {
|
outwalk += sprintf(outwalk, format_percentage, batt_info.percentage_remaining, pct_mark);
|
||||||
outwalk += sprintf(outwalk, "%.00f%s", batt_info.percentage_remaining, pct_mark);
|
|
||||||
} else {
|
|
||||||
outwalk += sprintf(outwalk, "%.02f%s", batt_info.percentage_remaining, pct_mark);
|
|
||||||
}
|
|
||||||
walk += strlen("percentage");
|
walk += strlen("percentage");
|
||||||
|
|
||||||
} else if (BEGINS_WITH(walk + 1, "remaining")) {
|
} else if (BEGINS_WITH(walk + 1, "remaining")) {
|
||||||
|
Loading…
Reference in New Issue
Block a user