added new variables battery_volts and battery_temp
[monky] / src / conky.c
index c8c55e7..bade353 100644 (file)
@@ -70,6 +70,9 @@
 #ifdef XOAP
 #include <libxml/parser.h>
 #endif /* XOAP */
+#ifdef HAVE_CURL
+#include <curl/curl.h>
+#endif
 
 /* local headers */
 #include "core.h"
@@ -603,7 +606,7 @@ void human_readable(long long num, char *buf, int size)
                spaced_print(buf, size, "%d", 6, round_to_int(num));
                return;
        }
-       if (short_units) {
+       if (short_units || llabs(num) < 1000LL) {
                width = 5;
                format = "%.*f%.1s";
        } else {
@@ -630,11 +633,11 @@ void human_readable(long long num, char *buf, int size)
         * adjusting the decimal part of the number. Sample output:
         *  123MiB
         * 23.4GiB
-        * 5.12B   
+        * 5.12B
         * so the point of alignment resides between number and unit. The
         * upside of this is that there is minimal padding necessary, though
         * there should be a way to make alignment take place at the decimal
-        * dot (then with fixed width decimal part). 
+        * dot (then with fixed width decimal part).
         *
         * Note the repdigits below: when given a precision value, printf()
         * rounds the float to it, not just cuts off the remaining digits. So
@@ -876,6 +879,12 @@ void generate_text_internal(char *p, int p_max_size,
                        OBJ(battery_time) {
                                get_battery_stuff(p, p_max_size, obj->data.s, BATTERY_TIME);
                        }
+                       OBJ(battery_volts) {
+                               get_battery_stuff(p, p_max_size, obj->data.s, BATTERY_VOLTS);
+                       }
+                       OBJ(battery_temp) {
+                               get_battery_stuff(p, p_max_size, obj->data.s, BATTERY_TEMP);
+                       }
                        OBJ(battery_percent) {
                                percent_print(p, p_max_size, get_battery_perct(obj->data.s));
                        }
@@ -2069,9 +2078,11 @@ void generate_text_internal(char *p, int p_max_size,
                        OBJ(xmms2_percent) {
                                snprintf(p, p_max_size, "%2.0f", cur->xmms2.progress * 100);
                        }
+#ifdef X11
                        OBJ(xmms2_bar) {
                                new_bar(obj, p, p_max_size, (int) (cur->xmms2.progress * 255.0f));
                        }
+#endif /* X11 */
                        OBJ(xmms2_playlist) {
                                snprintf(p, p_max_size, "%s", cur->xmms2.playlist);
                        }
@@ -2147,6 +2158,7 @@ void generate_text_internal(char *p, int p_max_size,
                                snprintf(p, p_max_size, "%s",
                                        cur->audacious.items[AUDACIOUS_MAIN_VOLUME]);
                        }
+#ifdef X11
                        OBJ(audacious_bar) {
                                double progress;
 
@@ -2155,6 +2167,7 @@ void generate_text_internal(char *p, int p_max_size,
                                        atof(cur->audacious.items[AUDACIOUS_LENGTH_SECONDS]);
                                new_bar(obj, p, p_max_size, (int) (progress * 255.0f));
                        }
+#endif /* X11 */
 #endif /* AUDACIOUS */
 
 #ifdef BMPX
@@ -2300,7 +2313,7 @@ void generate_text_internal(char *p, int p_max_size,
                        }
 #ifdef NVIDIA
                        OBJ(nvidia) {
-                               print_nvidia_value(obj, display, p, p_max_size);
+                               print_nvidia_value(obj, p, p_max_size);
                        }
 #endif /* NVIDIA */
 #ifdef APCUPSD
@@ -3081,12 +3094,14 @@ int draw_each_line_inner(char *s, int special_index, int last_special_applied)
                                                                                  );
                                                                }
 #endif /* DEBUG_lol */
-                                                               XSetForeground(display, window.gc, tmpcolour[
-                                                                               (int)((float)(w - 2) - specials[special_index].graph[j] *
-                                                                                       (w - 2) / (float)specials[special_index].graph_scale)
-                                                                               ]);
+                                                                               set_foreground_color(tmpcolour[
+                                                                                               (int)((float)(w - 2) -
+                                                                                                       specials[special_index].graph[j]
+                                                                                                       * (w - 2) /
+                                                                                                       (float)specials[special_index].graph_scale)
+                                                                                               ]);
                                                        } else {
-                                                               XSetForeground(display, window.gc, tmpcolour[colour_idx++]);
+                                                               set_foreground_color(tmpcolour[colour_idx++]);
                                                        }
                                                }
                                                /* this is mugfugly, but it works */
@@ -3531,7 +3546,7 @@ static void main_loop(void)
                if(update_interval_bat != NOBATTERY && update_interval_bat != update_interval_old) {
                        char buf[max_user_text];
 
-                       get_battery_short_status(buf, max_user_text, "BAT0");
+                       get_battery_short_status(buf, max_user_text, "bq27200-0"); //why is this even hardcoded here? oh well.
                        if(buf[0] == 'D') {
                                update_interval = update_interval_bat;
                        } else {
@@ -4055,6 +4070,9 @@ void clean_up_without_threads(void *memtofree1, void* memtofree2) {
                font_count = -1;
        }
 
+#ifdef NVIDIA
+       set_nvidia_display(NULL);
+#endif
 #endif /* X11 */
 
        free_templates();
@@ -4602,6 +4620,12 @@ char load_config_file(const char *f)
                                disp = strdup(value);
                        }
                }
+#ifdef NVIDIA
+               CONF("nvidia_display") {
+                       if(value)
+                               set_nvidia_display(value);
+               }
+#endif
                CONF("alignment") {
                        setalignment(&text_alignment, window.type, value, f, line, 1);
                }
@@ -5704,6 +5728,7 @@ void initialisation(int argc, char **argv) {
                        "kvm_open")) == NULL) {
                CRIT_ERR(NULL, NULL, "cannot read kvm");
        }
+       pthread_mutex_init(&kvm_proc_mutex, NULL);
 #endif
 
        while (1) {
@@ -5885,6 +5910,11 @@ int main(int argc, char **argv)
        tcp_portmon_set_max_connections(0);
 #endif
 
+#ifdef HAVE_CURL
+       if(curl_global_init(CURL_GLOBAL_ALL))
+               NORM_ERR("curl_global_init() failed, you may not be able to use curl variables");
+#endif
+
        /* handle command line parameters that don't change configs */
 #ifdef X11
        if (((s = getenv("LC_ALL")) && *s) || ((s = getenv("LC_CTYPE")) && *s)
@@ -5976,8 +6006,13 @@ int main(int argc, char **argv)
 
        main_loop();
 
+#ifdef HAVE_CURL
+       curl_global_cleanup();
+#endif
+
 #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
        kvm_close(kd);
+       pthread_mutex_destroy(&kvm_proc_mutex);
 #endif
 
        return 0;