Add hide_seconds option
Patch status: merged
Patch by Iakov Davydov
Long description:
fixes: #1134
To apply this patch, use:
curl http://cr.i3wm.org/patch/405/raw.patch | git am
b/i3status.c
| 17 | 
	  
	  @@ -246,6 +246,7 @@ int main(int argc, char *argv[]) {
   | 
  
| 18 | 
	  
	                   CFG_STR("threshold_type", "time", CFGF_NONE),
   | 
  
| 19 | 
	  
	                   CFG_BOOL("last_full_capacity", false, CFGF_NONE),
   | 
  
| 20 | 
	  
	                   CFG_BOOL("integer_battery_capacity", false, CFGF_NONE),
   | 
  
| 21 | 
	  
	  +                CFG_BOOL("hide_seconds", false, CFGF_NONE),
   | 
  
| 22 | 
	  
	  CFG_CUSTOM_COLOR_OPTS,  | 
  
| 23 | 
	  
	  CFG_END()  | 
  
| 24 | 
	  
	  };  | 
  
| 25 | 
	  
	  @@ -480,7 +481,7 @@ int main(int argc, char *argv[]) {
   | 
  
| 26 | 
	  
	   | 
  
| 27 | 
	  
	                           CASE_SEC_TITLE("battery") {
   | 
  
| 28 | 
	  
	                                   SEC_OPEN_MAP("battery");
   | 
  
| 29 | 
	  
	  - 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"));  | 
  
| 30 | 
	  
	  + 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"));  | 
  
| 31 | 
	  
	  SEC_CLOSE_MAP;  | 
  
| 32 | 
	  
	  }  | 
  
| 33 | 
	  
	   | 
  
b/include/i3status.h
| 38 | 
	  
	  @@ -146,7 +146,7 @@ void set_timezone(const char *tz);  | 
  
| 39 | 
	  
	   | 
  
| 40 | 
	  
	  void print_ipv6_info(yajl_gen json_gen, char *buffer, const char *format_up, const char *format_down);  | 
  
| 41 | 
	  
	  void print_disk_info(yajl_gen json_gen, char *buffer, const char *path, const char *format, const char *prefix_type);  | 
  
| 42 | 
	  
	  -void print_battery_info(yajl_gen json_gen, char *buffer, int number, const char *path, const char *format, const char *format_down, int low_threshold, char *threshold_type, bool last_full_capacity, bool integer_battery_capacity);  | 
  
| 43 | 
	  
	  +void print_battery_info(yajl_gen json_gen, char *buffer, int number, const char *path, const char *format, const char *format_down, int low_threshold, char *threshold_type, bool last_full_capacity, bool integer_battery_capacity, bool hide_seconds);  | 
  
| 44 | 
	  
	  void print_time(yajl_gen json_gen, char *buffer, const char *format, const char *tz, time_t t);  | 
  
| 45 | 
	  
	  void print_ddate(yajl_gen json_gen, char *buffer, const char *format, time_t t);  | 
  
| 46 | 
	  
	  const char *get_ip_addr();  | 
  
b/man/i3status.man
| 51 | 
	  
	  @@ -251,7 +251,8 @@ estimated to be empty. If you want to use the last full capacity instead of the  | 
  
| 52 | 
	  
	  design capacity (when using the design capacity, it may happen that your  | 
  
| 53 | 
	  
	  battery is at 23% when fully charged because it’s old. In general, I want to  | 
  
| 54 | 
	  
	  see it this way, because it tells me how worn off my battery is.), just specify  | 
  
| 55 | 
	  
	  -+last_full_capacity = true+.  | 
  
| 56 | 
	  
	  ++last_full_capacity = true+. You can hide seconds in the remaining time and  | 
  
| 57 | 
	  
	  +empty time estimations by setting +hide_seconds = true+.  | 
  
| 58 | 
	  
	   | 
  
| 59 | 
	  
	  If you want the battery percentage to be shown without decimals, add  | 
  
| 60 | 
	  
	  +integer_battery_capacity = true+.  | 
  
b/src/print_battery_info.c
| 65 | 
	  
	  @@ -30,7 +30,7 @@  | 
  
| 66 | 
	  
	  * worn off your battery is.  | 
  
| 67 | 
	  
	  *  | 
  
| 68 | 
	  
	  */  | 
  
| 69 | 
	  
	  -void print_battery_info(yajl_gen json_gen, char *buffer, int number, const char *path, const char *format, const char *format_down, int low_threshold, char *threshold_type, bool last_full_capacity, bool integer_battery_capacity) {
   | 
  
| 70 | 
	  
	  +void print_battery_info(yajl_gen json_gen, char *buffer, int number, const char *path, const char *format, const char *format_down, int low_threshold, char *threshold_type, bool last_full_capacity, bool integer_battery_capacity, bool hide_seconds) {
   | 
  
| 71 | 
	  
	  time_t empty_time;  | 
  
| 72 | 
	  
	  struct tm *empty_tm;  | 
  
| 73 | 
	  
	  char buf[1024];  | 
  
| 74 | 
	  
	  @@ -166,15 +166,23 @@ void print_battery_info(yajl_gen json_gen, char *buffer, int number, const char  | 
  
| 75 | 
	  
	  }  | 
  
| 76 | 
	  
	  }  | 
  
| 77 | 
	  
	   | 
  
| 78 | 
	  
	  - (void)snprintf(remainingbuf, sizeof(remainingbuf), "%02d:%02d:%02d",  | 
  
| 79 | 
	  
	  - max(hours, 0), max(minutes, 0), max(seconds, 0));  | 
  
| 80 | 
	  
	  + if (hide_seconds)  | 
  
| 81 | 
	  
	  + (void)snprintf(remainingbuf, sizeof(remainingbuf), "%02d:%02d",  | 
  
| 82 | 
	  
	  + max(hours, 0), max(minutes, 0));  | 
  
| 83 | 
	  
	  + else  | 
  
| 84 | 
	  
	  + (void)snprintf(remainingbuf, sizeof(remainingbuf), "%02d:%02d:%02d",  | 
  
| 85 | 
	  
	  + max(hours, 0), max(minutes, 0), max(seconds, 0));  | 
  
| 86 | 
	  
	   | 
  
| 87 | 
	  
	  empty_time = time(NULL);  | 
  
| 88 | 
	  
	  empty_time += seconds_remaining;  | 
  
| 89 | 
	  
	  empty_tm = localtime(&empty_time);  | 
  
| 90 | 
	  
	   | 
  
| 91 | 
	  
	  - (void)snprintf(emptytimebuf, sizeof(emptytimebuf), "%02d:%02d:%02d",  | 
  
| 92 | 
	  
	  - max(empty_tm->tm_hour, 0), max(empty_tm->tm_min, 0), max(empty_tm->tm_sec, 0));  | 
  
| 93 | 
	  
	  + if (hide_seconds)  | 
  
| 94 | 
	  
	  + (void)snprintf(emptytimebuf, sizeof(emptytimebuf), "%02d:%02d",  | 
  
| 95 | 
	  
	  + max(empty_tm->tm_hour, 0), max(empty_tm->tm_min, 0));  | 
  
| 96 | 
	  
	  + else  | 
  
| 97 | 
	  
	  + (void)snprintf(emptytimebuf, sizeof(emptytimebuf), "%02d:%02d:%02d",  | 
  
| 98 | 
	  
	  + max(empty_tm->tm_hour, 0), max(empty_tm->tm_min, 0), max(empty_tm->tm_sec, 0));  | 
  
| 99 | 
	  
	   | 
  
| 100 | 
	  
	  (void)snprintf(consumptionbuf, sizeof(consumptionbuf), "%1.2fW",  | 
  
| 101 | 
	  
	  ((float)present_rate / 1000.0 / 1000.0));  |