]> Dogcows Code - chaz/tint2/commitdiff
merge battery applet from Sebastian Reichel
authorThierry Lorthiois <lorthiois@bbsoft.fr>
Fri, 15 May 2009 20:44:42 +0000 (20:44 +0000)
committerThierry Lorthiois <lorthiois@bbsoft.fr>
Fri, 15 May 2009 20:44:42 +0000 (20:44 +0000)
15 files changed:
ChangeLog
src/Makefile
src/config.c
src/panel.c
src/panel.h
src/systray/systraybar.c
src/tint.c
src/tint2
tintrc01
tintrc02
tintrc03
tintrc04
tintrc05
tintrc06
tintrc07

index 272059fdf8ffc3026962621a0575398f8678219e..95bb4718d8397338b10430295a6e861eba0d882f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+
+2009-05-15
+- merge battery applet from Sebastian Reichel <elektranox@gmail.com>
+
 2009-03-14
 - add systray option when convert tint-0.6 config file
   but you need to stop other systemtray program
index cc79c838efa46fcb3b21494709804dfb43a6bcba..34172db4779ab3807d74510afac6192ccf05c13c 100644 (file)
@@ -2,7 +2,7 @@ CFLAGS= -O2
 CC = gcc
 FLAGS=-Wall -g `pkg-config --cflags --libs cairo pangocairo x11 xinerama xrandr imlib2 glib-2.0`
 PROGNAME=tint2
-FILES=tint.c server.c panel.c config.c taskbar/task.c taskbar/taskbar.c clock/clock.c systray/systraybar.c util/window.c util/area.c
+FILES=tint.c server.c panel.c config.c taskbar/task.c taskbar/taskbar.c battery/battery.c clock/clock.c systray/systraybar.c util/window.c util/area.c
 
 ifndef DESTDIR
        ifndef PREFIX
@@ -22,7 +22,7 @@ endif
 
 
 $(PROGNAME): $(FILES) $(SYSTRAYOBJ)
-       $(CC) $(CFLAGS) -I. -Iutil -Iclock -Itaskbar -Isystray -o $(PROGNAME) $(FILES) $(FLAGS)
+       $(CC) $(CFLAGS) -I. -Iutil -Ibattery -Iclock -Itaskbar -Isystray -o $(PROGNAME) $(FILES) $(FLAGS)
        
 install: install-strip
 
index ab84eb5a213e44ce9351310d02f7df5a6eddcf2a..d861ba5672d02cd13a27722f7eb76f706dacc5df 100644 (file)
@@ -40,6 +40,7 @@
 #include "taskbar.h"
 #include "systraybar.h"
 #include "clock.h"
+#include "battery.h"
 #include "panel.h"
 #include "config.h"
 #include "window.h"
@@ -53,6 +54,8 @@ static char *old_time1_font;
 static char *old_time2_font;
 static Area *area_task, *area_task_active;
 
+static char *old_bat1_font;
+static char *old_bat2_font;
 
 // temporary panel
 static Panel *panel_config = 0;
@@ -306,6 +309,50 @@ void add_entry (char *key, char *value)
       memcpy(&panel_config->area.pix.border, &a->pix.border, sizeof(Border));
    }
 
+   /* Battery */
+   else if (strcmp (key, "battery") == 0) {
+               if(atoi(value) == 1)
+                       panel_config->battery.area.on_screen = 1;
+   }
+   else if (strcmp (key, "battery_low_status") == 0) {
+               battery_low_status = atoi(value);
+               if(battery_low_status < 0 || battery_low_status > 100)
+                       battery_low_status = 0;
+   }
+   else if (strcmp (key, "battery_low_cmd") == 0) {
+      if (battery_low_cmd) g_free(battery_low_cmd);
+      if (strlen(value) > 0) battery_low_cmd = strdup (value);
+      else battery_low_cmd = 0;
+   }
+   else if (strcmp (key, "bat1_font") == 0) {
+       if (save_file_config) old_bat1_font = strdup (value);
+      if (bat1_font_desc) pango_font_description_free(bat1_font_desc);
+      bat1_font_desc = pango_font_description_from_string (value);
+   }
+   else if (strcmp (key, "bat2_font") == 0) {
+       if (save_file_config) old_bat2_font = strdup (value);
+      if (bat2_font_desc) pango_font_description_free(bat2_font_desc);
+      bat2_font_desc = pango_font_description_from_string (value);
+   }
+   else if (strcmp (key, "battery_font_color") == 0) {
+      extract_values(value, &value1, &value2, &value3);
+      get_color (value1, panel_config->battery.font.color);
+      if (value2) panel_config->battery.font.alpha = (atoi (value2) / 100.0);
+      else panel_config->battery.font.alpha = 0.5;
+   }
+   else if (strcmp (key, "battery_padding") == 0) {
+      extract_values(value, &value1, &value2, &value3);
+      panel_config->battery.area.paddingxlr = panel_config->battery.area.paddingx = atoi (value1);
+      if (value2) panel_config->battery.area.paddingy = atoi (value2);
+      if (value3) panel_config->battery.area.paddingx = atoi (value3);
+   }
+   else if (strcmp (key, "battery_background_id") == 0) {
+      int id = atoi (value);
+      Area *a = g_slist_nth_data(list_back, id);
+      memcpy(&panel_config->battery.area.pix.back, &a->pix.back, sizeof(Color));
+      memcpy(&panel_config->battery.area.pix.border, &a->pix.border, sizeof(Border));
+   }
+
    /* Clock */
    else if (strcmp (key, "time1_format") == 0) {
       if (time1_format) g_free(time1_format);
@@ -586,9 +633,10 @@ void config_finish ()
        // clock and systray before taskbar because resize(clock) can resize others object ??
    init_panel();
        init_clock();
+       init_battery();
        init_systray();
-   init_taskbar();
-   visible_object();
+       init_taskbar();
+       visible_object();
 
        cleanup_config();
 
@@ -777,6 +825,18 @@ void save_config ()
    fputs("clock_padding = 2 2\n", fp);
    fputs("clock_background_id = 0\n", fp);
 
+       fputs("\n#---------------------------------------------\n", fp);
+       fputs("# BATTERY\n", fp);
+       fputs("#---------------------------------------------\n", fp);
+       fprintf(fp, "battery = %d\n", panel_config->battery.area.on_screen);
+       fprintf(fp, "battery_low_status = %d\n", battery_low_status);
+       fprintf(fp, "battery_low_cmd = %s\n", battery_low_cmd);
+       fprintf(fp, "bat1_font = %s\n", old_bat1_font);
+       fprintf(fp, "bat2_font = %s\n", old_bat2_font);
+       fprintf(fp, "battery_font_color = #%02x%02x%02x %d\n", (int)(panel_config->battery.font.color[0]*255), (int)(panel_config->battery.font.color[1]*255), (int)(panel_config->battery.font.color[2]*255), (int)(panel_config->battery.font.alpha*100));
+       fputs("battery_padding = 2 2\n", fp);
+       fputs("battery_background_id = 0\n", fp);
+
    fputs("\n#---------------------------------------------\n", fp);
    fputs("# MOUSE ACTION ON TASK\n", fp);
    fputs("#---------------------------------------------\n", fp);
index adccfea88b60786d63be9c564c33ba85d8c8416f..3a8bb8fb6c74997c1c402e812d400cecfc57d310 100644 (file)
@@ -71,6 +71,8 @@ void init_panel()
                // add childs
           if (p->clock.area.on_screen)
                        p->area.list = g_slist_append(p->area.list, &p->clock);
+               if (p->battery.area.on_screen)
+                       p->area.list = g_slist_append(p->area.list, &p->battery);
           if (systray.area.on_screen && i == 0) {
                // systray only on first panel
                        p->area.list = g_slist_append(p->area.list, &systray);
@@ -180,6 +182,8 @@ void resize_panel(void *obj)
    taskbar_width = panel->area.width - (2 * panel->area.paddingxlr) - (2 * panel->area.pix.border.width);
    if (panel->clock.area.on_screen && panel->clock.area.width)
       taskbar_width -= (panel->clock.area.width + panel->area.paddingx);
+       if (panel->battery.area.on_screen && panel->battery.area.width)
+               taskbar_width -= (panel->battery.area.width + panel->area.paddingx);
    // TODO : systray only on first panel. search better implementation !
    if (systray.area.on_screen && systray.area.width && panel == &panel1[0])
        taskbar_width -= (systray.area.width + panel->area.paddingx);
index 67c995cef2ac71f87fa52943f48aa9d8d30fd03d..f7fc0ff66207d4306b8091a9bc24f6952b0353a7 100644 (file)
@@ -14,6 +14,7 @@
 #include <pango/pangocairo.h>
 #include <sys/time.h>
 
+#include "battery.h"
 #include "common.h"
 #include "clock.h"
 #include "task.h"
@@ -77,6 +78,10 @@ typedef struct {
    // clock
    Clock clock;
 
+       // --------------------------------------------------
+       // battery
+       Battery battery;
+
 } Panel;
 
 
index 160cbca17cb26946f905d521a19f079e526458f0..5840bef066905d15b63cca4554d2587d9e76de16 100644 (file)
@@ -66,6 +66,8 @@ void init_systray()
        systray.area.posx = panel->area.width - panel->area.paddingxlr - panel->area.pix.border.width - systray.area.width;
        if (panel->clock.area.on_screen)
                systray.area.posx -= (panel->clock.area.width + panel->area.paddingx);
+       if (panel->battery.area.on_screen)
+               systray.area.posx -= (panel->battery.area.width + panel->area.paddingx);
 
        systray.area.redraw = 1;
 }
@@ -141,6 +143,8 @@ void resize_systray(void *obj)
        systray.area.posx = panel->area.width - panel->area.pix.border.width - panel->area.paddingxlr - systray.area.width;
        if (panel->clock.area.on_screen)
                systray.area.posx -= (panel->clock.area.width + panel->area.paddingx);
+       if (panel->battery.area.on_screen)
+               systray.area.posx -= (panel->battery.area.width + panel->area.paddingx);
 
        systray.area.redraw = 1;
 
index 6c4aa688e57975a6918a8c402166f9168c602242..afb83cba12bd01b297ec5882b9c2c022d92a0cc9 100644 (file)
@@ -92,6 +92,7 @@ void cleanup()
    if (time2_font_desc) pango_font_description_free(time2_font_desc);
    if (time1_format) g_free(time1_format);
    if (time2_format) g_free(time2_format);
+       if (battery_low_cmd) g_free(battery_low_cmd);
 
    if (server.monitor) free(server.monitor);
    XFreeGC(server.dsp, server.gc);
@@ -136,7 +137,7 @@ void event_button_press (XEvent *e)
    GSList *l0;
    Taskbar *tskbar;
    int x = e->xbutton.x;
-   int y = e->xbutton.y;
+   //int y = e->xbutton.y; // unused
    for (l0 = panel->area.list; l0 ; l0 = l0->next) {
       tskbar = l0->data;
       if (!tskbar->area.on_screen) continue;
@@ -168,7 +169,7 @@ void event_button_release (XEvent *e)
 
    int action = TOGGLE_ICONIFY;
    int x = e->xbutton.x;
-   int y = e->xbutton.y;
+   //int y = e->xbutton.y; // unused
    switch (e->xbutton.button) {
       case 2:
          action = mouse_middle;
@@ -466,15 +467,19 @@ void event_timer()
 
    if (abs(stv.tv_sec - time_clock.tv_sec) < time_precision) return;
 
-   // update clock
-   time_clock.tv_sec = stv.tv_sec;
-   time_clock.tv_sec -= time_clock.tv_sec % time_precision;
+       // update battery
+       update_battery(&battery_state);
+
+       // update clock
+       time_clock.tv_sec = stv.tv_sec;
+       time_clock.tv_sec -= time_clock.tv_sec % time_precision;
 
        int i;
        for (i=0 ; i < nb_panel ; i++) {
           panel1[i].clock.area.resize = 1;
+               panel1[i].battery.area.resize = 1;
        }
-   panel_refresh = 1;
+       panel_refresh = 1;
 }
 
 
index 93633a74fd6e814d7bdf66e57c4788640f651bf4..e1830e39b541d09ac760ed6b08dd70467103034e 100755 (executable)
Binary files a/src/tint2 and b/src/tint2 differ
index 49978ba696ab45ad516ecea9272ae7b67af27e25..1371d1fcd2ec517066b818badaf9d65e9e5ef51d 100644 (file)
--- a/tintrc01
+++ b/tintrc01
@@ -69,6 +69,19 @@ clock_font_color = #ffffff 76
 clock_padding = 1 0
 clock_background_id = 0
 
+#---------------------------------------------
+# BATTERY
+#---------------------------------------------
+battery = 0
+battery_low_status = 7
+battery_low_cmd = notify-send "battery low"
+bat1_font = sans 8
+bat2_font = sans 6
+battery_font_color = #ffffff 76
+battery_padding = 1 0
+battery_background_id = 0
+
+
 #---------------------------------------------
 # MOUSE ACTION ON TASK
 #---------------------------------------------
index 8b725668010c4d0abfae1dfe2eeddd86cc4aa22f..f4eca8449ef4ce77062f1b03ffb86a1be5c3f69e 100644 (file)
--- a/tintrc02
+++ b/tintrc02
@@ -71,6 +71,18 @@ clock_font_color = #ffffff 100
 clock_padding = 1 0
 clock_background_id = 0
 
+#---------------------------------------------
+# BATTERY
+#---------------------------------------------
+battery = 1
+battery_low_status = 7
+battery_low_cmd = notify-send "battery low"
+bat1_font = sans 7
+bat2_font = sans 7
+battery_font_color = #ffffff 100
+battery_padding = 1 0
+battery_background_id = 0
+
 #---------------------------------------------
 # MOUSE ACTION ON TASK
 #---------------------------------------------
index 448368f1cd9c699236ef216c23faee065b6f0d92..177563c8d390254667df2e5473c94c47a1ff3514 100644 (file)
--- a/tintrc03
+++ b/tintrc03
@@ -65,6 +65,18 @@ clock_font_color = #000000 80
 clock_padding = 8 0
 clock_background_id = 1
 
+#---------------------------------------------
+# BATTERY
+#---------------------------------------------
+battery = 0
+battery_low_status = 7
+battery_low_cmd = notify-send "battery low"
+bat1_font = sans 7
+bat2_font = sans 7
+battery_font_color = #ffffff 100
+battery_padding = 1 0
+battery_background_id = 0
+
 #---------------------------------------------
 # MOUSE ACTION ON TASK
 #---------------------------------------------
index 0256d4f2746787c817f9aad30795ea46bf64e88f..15d1f1715671f23c1110933c766b2c909580ee4f 100644 (file)
--- a/tintrc04
+++ b/tintrc04
@@ -64,6 +64,18 @@ clock_font_color = #ffffff 60
 clock_padding = 5 0
 clock_background_id = 1
 
+#---------------------------------------------
+# BATTERY
+#---------------------------------------------
+battery = 0
+battery_low_status = 7
+battery_low_cmd = notify-send "battery low"
+bat1_font = sans 7
+bat2_font = sans 7
+battery_font_color = #ffffff 100
+battery_padding = 1 0
+battery_background_id = 0
+
 #---------------------------------------------
 # MOUSE ACTION ON TASK
 #---------------------------------------------
index 8b076e0e1bda1bab13717cb9b72116e29f0b4cc8..5de0bfe6a96019e464d05615f6e3e49a1ba78777 100644 (file)
--- a/tintrc05
+++ b/tintrc05
@@ -64,6 +64,18 @@ clock_font_color = #ffffff 90
 clock_padding = 4 0
 clock_background_id = 0
 
+#---------------------------------------------
+# BATTERY
+#---------------------------------------------
+battery = 1
+battery_low_status = 7
+battery_low_cmd = notify-send "battery low"
+bat1_font = sans 8
+bat2_font = sans 6
+battery_font_color = #ffffff 100
+battery_padding = 1 0
+battery_background_id = 0
+
 #---------------------------------------------
 # MOUSE ACTION ON TASK
 #---------------------------------------------
index 9ac45e736561025b3c2926a8978480891713a1aa..c0f2ddb6da4d7d3306ffb15308c1e6145b27f551 100644 (file)
--- a/tintrc06
+++ b/tintrc06
@@ -70,6 +70,18 @@ clock_font_color = #ffffff 65
 clock_padding = 6 0
 clock_background_id = 1
 
+#---------------------------------------------
+# BATTERY
+#---------------------------------------------
+battery = 0
+battery_low_status = 7
+battery_low_cmd = notify-send "battery low"
+bat1_font = sans 8
+bat2_font = sans 6
+battery_font_color = #ffffff 100
+battery_padding = 1 0
+battery_background_id = 0
+
 #---------------------------------------------
 # MOUSE ACTION ON TASK
 #---------------------------------------------
index 199ef009d7e3041420eb93a38c46e6f299ae8716..a2f6cda8621d02c97a3f808d5b5e553f7751888a 100644 (file)
--- a/tintrc07
+++ b/tintrc07
@@ -64,6 +64,18 @@ clock_font_color = #ffffff 60
 clock_padding = 2 0
 clock_background_id = 1
 
+#---------------------------------------------
+# BATTERY
+#---------------------------------------------
+battery = 1
+battery_low_status = 7
+battery_low_cmd = notify-send "battery low"
+bat1_font = sans bold 7
+bat2_font = sans 7
+battery_font_color = #ffffff 60
+battery_padding = 1 0
+battery_background_id = 1
+
 #---------------------------------------------
 # MOUSE ACTION ON TASK
 #---------------------------------------------
This page took 0.042476 seconds and 4 git commands to generate.