i3 - improved tiling WM


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));