Date: Saturday, March 15, 2014 @ 11:43:01 Author: arodseth Revision: 107236
upgpkg: tint2 0.11-7 Modified: tint2/trunk/PKGBUILD tint2/trunk/add-power-now-support.patch Deleted: tint2/trunk/graph.patch -----------------------------+ PKGBUILD | 33 - add-power-now-support.patch | 6 graph.patch | 753 ------------------------------------------ 3 files changed, 12 insertions(+), 780 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2014-03-15 09:42:59 UTC (rev 107235) +++ PKGBUILD 2014-03-15 10:43:01 UTC (rev 107236) @@ -1,4 +1,5 @@ # $Id$ +# Maintainer: Alexander Rødseth <[email protected]> # Contributor: Bartłomiej Piotrowski <[email protected]> # Contributor: Blue Peppers <[email protected]> # Contributor: Stefan Husmann< [email protected]> @@ -7,7 +8,7 @@ pkgver=0.11 pkgrel=7 pkgdesc='Basic, good-looking task manager for WMs' -arch=('i686' 'x86_64') +arch=('x86_64' 'i686') url='http://code.google.com/p/tint2/' license=('GPL2') conflicts=('ttm-svn' 'tint') @@ -19,15 +20,12 @@ source=("http://tint2.googlecode.com/files/tint2-$pkgver.tar.bz2" 'add-power-now-support.patch' 'clock.patch' - 'graph.patch' 'launcher_apps_dir-v2.patch' 'src-task-align.patch' 'zombie-fix.patch') - md5sums=('6fc5731e7425125fa84a2add5cef4bff' - '6cfcad028f1bd2f69812167f5395f890' + '448beead6c9d44b864f99e08a027cb56' 'bc0bab2979dacff551a97bdf2c2fdedc' - '2866ebde44be8d48efd1e59ded5c5534' '13218765dd684ae825967d3ffb4f4a75' 'f0d7f51ec8dbf2e7b6bcca942f0fd6c0' 'cdb83cd911e005a3529e5d1cd952a956') @@ -35,24 +33,12 @@ prepare() { cd "$pkgname-$pkgver" - # making all the patches apply is a work in progress - for f in "$srcdir"/*.patch; do + # Applying all patches, even some that only applies partially. + # Tint2 works fine with these, but a new release from upstream would be nice. + for f in ../*.patch; do + echo -e "--- ${f##*/} ---\n" + patch -Np1 -i $f && echo "${f##*/} OK!" || echo "${f##*/} FAILED!" echo - echo "--- ${f##*/} ---" - echo - if [[ ${f##*/} == add-power-now-support.patch ]]; then - patch -Np2 -i $f && echo "${f##*/} OK!" - elif [[ ${f##*/} == src-task-align.patch ]]; then - continue - elif [[ ${f##*/} == launcher_apps_dir-v2.patch ]]; then - continue - elif [[ ${f##*/} == graph.patch ]]; then - continue - elif [[ ${f##*/} == clock.patch ]]; then - continue - else - patch -Np1 -i $f && echo "${f##*/} OK!" - fi done # python2 fix @@ -67,13 +53,12 @@ cd build cmake .. \ -DCMAKE_INSTALL_PREFIX=/usr \ - -DCMAKE_INSTALL_LIBDIR=lib \ -DENABLE_TINT2CONF=0 make } package() { - make -C "$pkgname-$pkgver" DESTDIR="$pkgdir" install + make -C "$pkgname-$pkgver/build" DESTDIR="$pkgdir" install } # vim:set ts=2 sw=2 et: Modified: add-power-now-support.patch =================================================================== --- add-power-now-support.patch 2014-03-15 09:42:59 UTC (rev 107235) +++ add-power-now-support.patch 2014-03-15 10:43:01 UTC (rev 107236) @@ -1,6 +1,6 @@ -diff -rup ../tint2-0.11.orig/src/battery/battery.c ./src/battery/battery.c ---- ../tint2-0.11.orig/src/battery/battery.c 2010-12-02 23:56:11.313403140 +0100 -+++ ./src/battery/battery.c 2010-12-02 23:57:22.266956142 +0100 +diff -rup trunk/src/battery/battery.c ./src/battery/battery.c +--- trunk/src/battery/battery.c 2010-12-02 23:56:11.313403140 +0100 ++++ trunk/src/battery/battery.c 2010-12-02 23:57:22.266956142 +0100 @@ -184,8 +184,14 @@ void init_battery() } g_free(path2); Deleted: graph.patch =================================================================== --- graph.patch 2014-03-15 09:42:59 UTC (rev 107235) +++ graph.patch 2014-03-15 10:43:01 UTC (rev 107236) @@ -1,753 +0,0 @@ -Index: CMakeLists.txt ---- trunk/CMakeLists.txt 2011-09-19 12:38:01.000000000 +0200 -+++ trunk/CMakeLists.txt 2011-09-19 12:46:47.169791175 +0200 -@@ -27,6 +27,7 @@ - src - src/battery - src/clock -+ src/graphs - src/systray - src/taskbar - src/launcher -@@ -45,6 +46,7 @@ - src/server.c - src/tint.c - src/clock/clock.c -+ src/graphs/graphs.c - src/systray/systraybar.c - src/launcher/launcher.c - src/launcher/xsettings-client.c - -Index: trunk/src/config.c ---- trunk/src/config.c 2011-09-19 12:38:00.000000000 +0200 -+++ trunk/src/config.c 2011-09-19 12:59:08.365524951 +0200 -@@ -44,6 +44,7 @@ - #include "systraybar.h" - #include "launcher.h" - #include "clock.h" -+#include "graphs.h" - #include "config.h" - #include "window.h" - #include "tooltip.h" -@@ -127,7 +128,7 @@ - // monitor specified by name, not by index - int i, j; - for (i=0; i<server.nb_monitor; ++i) { -- if (server.monitor[i].names == 0) -+ if (server.monitor[i].names == 0) - // xrandr can't identify monitors - continue; - j = 0; -@@ -220,6 +221,8 @@ - } - if (panel_items_order[j] == 'C') - clock_enabled = 1; -+ if (panel_items_order[j] == 'G') -+ graphs_enabled = 1; - } - } - else if (strcmp (key, "panel_margin") == 0) { -@@ -341,7 +344,7 @@ - g_free( panel_items_order ); - panel_items_order = tmp; - } -- else -+ else - panel_items_order = g_strdup("C"); - } - if (strlen(value) > 0) { -@@ -401,6 +404,78 @@ - clock_rclick_command = strdup(value); - } - -+ /* Graphs */ -+ else if (strcmp(key, "graphs_items") == 0) { -+ int j; -+ for (j = 0; j < strlen(value); j++) { -+ if (value[j] == 'C' && graphs_cpu_pos == -1) { -+ graphs_cpu_pos = graphs_ncurves; -+ graphs_curves_per_pos[graphs_ngraphs] = 2; -+ graphs_ngraphs++; -+ graphs_ncurves+=2; -+ } -+ else if (value[j] == 'M' && graphs_mem_pos == -1) { -+ graphs_mem_pos = graphs_ncurves; -+ graphs_curves_per_pos[graphs_ngraphs] = 2; -+ graphs_ngraphs++; -+ graphs_ncurves+=2; -+ } -+ else if (value[j] == 'N' && graphs_net_pos == -1) { -+ graphs_net_pos = graphs_ncurves; -+ graphs_curves_per_pos[graphs_ngraphs] = 2; -+ graphs_ngraphs++; -+ graphs_ncurves+=2; -+ } -+ } -+ } -+ else if (strcmp(key, "graphs_use_bars") == 0) { -+ graphs_use_bars = atoi(value); -+ } -+ else if (strcmp(key, "graphs_graph_width") == 0) { -+ int w = atoi(value); -+ graphs_graph_width = (w <= 200 && w >= 10) ? w : 50; -+ } -+ else if (strcmp(key, "graphs_netiface") == 0) { -+ if (strlen(value) > 0) -+ graphs_netiface = strdup(value); -+ } -+ else if (strcmp(key, "graphs_netmaxup") == 0) { -+ int s = atoi(value); -+ graphs_netmaxup = s; -+ } -+ else if (strcmp(key, "graphs_netmaxdown") == 0) { -+ int s = atoi(value); -+ graphs_netmaxdown = s; -+ } -+ else if (strncmp (key, "graphs_color", 12) == 0) { -+ int idx = key[12]-48; -+ if (idx >= 0 && idx < MAXCURVES) { -+ extract_values(value, &value1, &value2, &value3); -+ get_color (value1, panel_config.graphs.g[idx].color); -+ if (value2) panel_config.graphs.g[idx].alpha = (atoi (value2) / 100.0); -+ else panel_config.graphs.g[idx].alpha = 0.5; -+ } -+ } -+ else if (strcmp (key, "graphs_padding") == 0) { -+ extract_values(value, &value1, &value2, &value3); -+ panel_config.graphs.area.paddingxlr = panel_config.graphs.area.paddingx = atoi (value1); -+ if (value2) panel_config.graphs.area.paddingy = atoi (value2); -+ if (value3) panel_config.graphs.area.paddingx = atoi (value3); -+ } -+ else if (strcmp (key, "graphs_background_id") == 0) { -+ int id = atoi (value); -+ id = (id < backgrounds->len && id >= 0) ? id : 0; -+ panel_config.graphs.area.bg = &g_array_index(backgrounds, Background, id); -+ } -+ else if (strcmp(key, "graphs_lclick_command") == 0) { -+ if (strlen(value) > 0) -+ graphs_lclick_command = strdup(value); -+ } -+ else if (strcmp(key, "graphs_rclick_command") == 0) { -+ if (strlen(value) > 0) -+ graphs_rclick_command = strdup(value); -+ } -+ - /* Taskbar */ - else if (strcmp (key, "taskbar_mode") == 0) { - if (strcmp (value, "multi_desktop") == 0) panel_mode = MULTI_DESKTOP; -@@ -752,7 +827,7 @@ - } - } - fclose (fp); -- -+ - // append Taskbar item - if (new_config_file == 0) { - taskbar_enabled = 1; -@@ -761,7 +836,7 @@ - g_free(panel_items_order); - panel_items_order = tmp; - } -- else -+ else - panel_items_order = g_strdup("T"); - } - -diff -ruN tint2.orig/src/graphs/graphs.c tint2.mine/src/graphs/graphs.c ---- trunk/src/graphs/graphs.c 1970-01-01 01:00:00.000000000 +0100 -+++ trunk/src/graphs/graphs.c 2011-09-19 13:54:02.833338438 +0200 -@@ -0,0 +1,426 @@ -+/************************************************************************** -+* -+* Tint2 : graphs -+* -+* Copyright (C) 2011 Francisco J. Vazquez ([email protected]) -+* -+* This program is free software; you can redistribute it and/or -+* modify it under the terms of the GNU General Public License version 2 -+* as published by the Free Software Foundation. -+* -+* This program is distributed in the hope that it will be useful, -+* but WITHOUT ANY WARRANTY; without even the implied warranty of -+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+* GNU General Public License for more details. -+* You should have received a copy of the GNU General Public License -+* along with this program; if not, write to the Free Software -+* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -+**************************************************************************/ -+ -+#include <string.h> -+#include <stdio.h> -+#include <cairo.h> -+#include <cairo-xlib.h> -+#include <pango/pangocairo.h> -+#include <stdlib.h> -+#include <ctype.h> -+ -+#include "window.h" -+#include "server.h" -+#include "panel.h" -+#include "graphs.h" -+#include "timer.h" -+#include "common.h" -+ -+#define CPU_SAMPLE_COUNT 5 -+#define NET_SAMPLE_COUNT 5 -+ -+int graphs_enabled; -+int graphs_ngraphs; -+int graphs_ncurves; -+int graphs_cpu_pos; -+int graphs_mem_pos; -+int graphs_net_pos; -+int graphs_curves_per_pos[MAXGRAPHS]; -+int graphs_use_bars; -+int graphs_graph_width; -+int graphs_cpu_nsamples_avg; -+int graphs_net_nsamples_avg; -+char *graphs_netiface; -+int graphs_netmaxup; -+int graphs_netmaxdown; -+char *graphs_lclick_command; -+char *graphs_rclick_command; -+ -+float **graph_values; // circular array list -+static int pos_x = 0; // current position in graph_values -+static timeout* graphs_timeout; -+ -+ -+void default_graphs() -+{ -+ graphs_enabled = 0; -+ graphs_ngraphs = 0; -+ graphs_ncurves = 0; -+ graphs_cpu_pos = -1; -+ graphs_mem_pos = -1; -+ graphs_net_pos = -1; -+ graphs_use_bars = 0; -+ graphs_graph_width = 50; -+ graphs_cpu_nsamples_avg = 1; -+ graphs_net_nsamples_avg = 2; -+ graphs_netiface = 0; -+ graphs_netmaxup = 0; -+ graphs_netmaxdown = 0; -+ graphs_timeout = 0; -+ graphs_lclick_command = 0; -+ graphs_rclick_command = 0; -+} -+ -+void cleanup_graphs() -+{ -+ if (graphs_netiface) g_free(graphs_netiface); -+ if (graphs_lclick_command) g_free(graphs_lclick_command); -+ if (graphs_rclick_command) g_free(graphs_rclick_command); -+ if (graphs_timeout) stop_timeout(graphs_timeout); -+ int i; -+ for (i = 0; i < graphs_ncurves; i++) -+ { -+ free(graph_values[i]); -+ } -+ free(graph_values); -+} -+ -+int update_cpugraph() -+{ -+ if (graphs_cpu_pos == -1) return 0; -+ -+ struct cpu_info { -+ unsigned long long last_total; -+ unsigned long long last_active_total, last_wait_total; -+ int cur_idx; -+ double active[CPU_SAMPLE_COUNT], wait[CPU_SAMPLE_COUNT]; -+ float active_perc, wait_perc; -+ }; -+ static struct cpu_info cpu = { .cur_idx=0 }; -+ -+ FILE *fp; -+ if ((fp = fopen("/proc/stat", "r")) == NULL) { -+ return 0; -+ } -+ char buf[256]; -+ while (!feof(fp)) { -+ if (fgets(buf, 255, fp) == NULL) { -+ break; -+ } -+ if (strncmp(buf, "cpu", 3) == 0) { -+ unsigned long long cpu_user; -+ unsigned long long cpu_system; -+ unsigned long long cpu_nice; -+ unsigned long long cpu_idle; -+ unsigned long long cpu_iowait; -+ unsigned long long cpu_irq; -+ unsigned long long cpu_softirq; -+ unsigned long long cpu_steal; -+ unsigned long long cpu_total; -+ unsigned long long cpu_active_total; -+ unsigned long long cpu_wait_total; -+ sscanf(buf, "%*s %llu %llu %llu %llu %llu %llu %llu %llu", -+ &cpu_user, &cpu_nice, &cpu_system, &cpu_idle, -+ &cpu_iowait, &cpu_irq, &cpu_softirq, &cpu_steal); -+ cpu_total = cpu_user + cpu_nice + cpu_system + cpu_idle + -+ cpu_iowait + cpu_irq + cpu_softirq + cpu_steal; -+ cpu_active_total = cpu_user + cpu_nice + cpu_system + cpu_steal; -+ cpu_wait_total = cpu_total - cpu_active_total - cpu_idle; -+ double time = (cpu_total - cpu.last_total); -+ cpu.active[cpu.cur_idx] = (cpu_active_total - cpu.last_active_total) / time; -+ cpu.wait[cpu.cur_idx] = (cpu_wait_total - cpu.last_wait_total) / time; -+ cpu.last_total = cpu_total; -+ cpu.last_active_total = cpu_active_total; -+ cpu.last_wait_total = cpu_wait_total; -+ double curtmp1 = 0; -+ double curtmp2 = 0; -+ int i; -+ // Average the samples -+ for (i = 0; i < graphs_cpu_nsamples_avg; i++) { -+ int idx2 = (cpu.cur_idx + CPU_SAMPLE_COUNT - i) % CPU_SAMPLE_COUNT; -+ curtmp1 += cpu.active[idx2]; -+ curtmp2 += cpu.wait[idx2]; -+ } -+ cpu.active_perc = curtmp1 / (float) graphs_cpu_nsamples_avg; -+ cpu.wait_perc = curtmp2 / (float) graphs_cpu_nsamples_avg; -+ cpu.cur_idx = (cpu.cur_idx + 1) % CPU_SAMPLE_COUNT; -+ break; // Ignore the rest -+ } -+ } -+ fclose(fp); -+ -+ graph_values[graphs_cpu_pos][pos_x] = cpu.active_perc; -+ graph_values[graphs_cpu_pos+1][pos_x] = cpu.active_perc + cpu.wait_perc; -+ -+ return 0; -+} -+ -+int update_memgraph() -+{ -+ if (graphs_mem_pos == -1) return 0; -+ -+ long long unsigned int memtotal = 0, memfree = 0, buffers = 0, cached = 0; -+ -+ FILE *fp; -+ if ((fp = fopen("/proc/meminfo", "r")) == NULL) { -+ return 0; -+ } -+ char buf[256]; -+ while (!feof(fp)) { -+ if (fgets(buf, 255, fp) == NULL) { -+ break; -+ } -+ if (strncmp(buf, "MemTotal:", 9) == 0) { -+ sscanf(buf, "%*s %llu", &memtotal); -+ } else if (strncmp(buf, "MemFree:", 8) == 0) { -+ sscanf(buf, "%*s %llu", &memfree); -+ } else if (strncmp(buf, "Buffers:", 8) == 0) { -+ sscanf(buf, "%*s %llu", &buffers); -+ } else if (strncmp(buf, "Cached:", 7) == 0) { -+ sscanf(buf, "%*s %llu", &cached); -+ } -+ } -+ fclose(fp); -+ -+ long long unsigned int used = memtotal - memfree; -+ long long unsigned int bufcach = buffers + cached; -+ -+ graph_values[graphs_mem_pos][pos_x] = (used - bufcach) / (float) memtotal; -+ graph_values[graphs_mem_pos+1][pos_x] = used / (float) memtotal; -+ -+ return 0; -+} -+ -+int update_netgraph() -+{ -+ if (graphs_net_pos == -1 || graphs_netiface == NULL) return 0; -+ -+ struct net_stat { -+ long long last_down, last_up; -+ int cur_idx; -+ long long down[NET_SAMPLE_COUNT], up[NET_SAMPLE_COUNT]; -+ double down_rate, up_rate; -+ double max_down, max_up; -+ }; -+ static struct net_stat net = { .cur_idx=0, .max_down=0, .max_up=0 }; -+ -+ double max(double v1, double v2) { return v1 > v2 ? v1 : v2; } -+ double min(double v1, double v2) { return v1 < v2 ? v1 : v2; } -+ -+ FILE *fp; -+ if (!(fp = fopen("/proc/net/dev", "r"))) { -+ return 0; -+ } -+ char buf[256]; -+ // Ignore first two lines -+ fgets(buf, 255, fp); -+ fgets(buf, 255, fp); -+ static int first_run = 1; -+ while (!feof(fp)) { -+ if (fgets(buf, 255, fp) == NULL) { -+ break; -+ } -+ char *p = buf; -+ while (isspace((int) *p)) p++; -+ char *curdev = p; -+ while (*p && *p != ':') p++; -+ if (*p == '\0') continue; -+ *p = '\0'; -+ -+ if (strcmp(curdev, graphs_netiface)) continue; -+ -+ long long down, up; -+ sscanf(p+1, "%lld %*d %*d %*d %*d %*d %*d %*d %lld", &down, &up); -+ if (down < net.last_down) net.last_down = 0; // Overflow -+ if (up < net.last_up) net.last_up = 0; // Overflow -+ net.down[net.cur_idx] = (down - net.last_down); -+ net.up[net.cur_idx] = (up - net.last_up); -+ net.last_down = down; -+ net.last_up = up; -+ if (first_run) { -+ first_run = 0; -+ break; -+ } -+ -+ unsigned int curtmp1 = 0; -+ unsigned int curtmp2 = 0; -+ // Average the samples -+ int i; -+ for (i = 0; i < graphs_net_nsamples_avg; i++) { -+ curtmp1 += net.down[(net.cur_idx + NET_SAMPLE_COUNT - i) % -+ NET_SAMPLE_COUNT]; -+ curtmp2 += net.up[(net.cur_idx + NET_SAMPLE_COUNT - i) % -+ NET_SAMPLE_COUNT]; -+ } -+ net.down_rate = curtmp1 / (double) graphs_net_nsamples_avg; -+ net.up_rate = curtmp2 / (double) graphs_net_nsamples_avg; -+ if (graphs_netmaxdown > 0) -+ { -+ net.down_rate /= (float) graphs_netmaxdown; -+ net.down_rate = min(1.0, net.down_rate); -+ } -+ else -+ { -+ // Normalize by maximum speed (a priori unknown, -+ // so we must do this all the time). -+ if (net.max_down < net.down_rate) -+ { -+ for (i = 0; i < graphs_graph_width; i++) -+ { -+ graph_values[graphs_net_pos][i] *= (net.max_down / -+ net.down_rate); -+ } -+ net.max_down = net.down_rate; -+ net.down_rate = 1.0; -+ } -+ else if (net.max_down != 0) net.down_rate /= net.max_down; -+ } -+ if (graphs_netmaxup > 0) -+ { -+ net.up_rate /= (float) graphs_netmaxup; -+ net.up_rate = min(1.0, net.up_rate); -+ } -+ else -+ { -+ if (net.max_up < net.up_rate) -+ { -+ for (i = 0; i < graphs_graph_width; i++) -+ { -+ graph_values[graphs_net_pos+1][i] *= (net.max_up / -+ net.up_rate); -+ } -+ net.max_up = net.up_rate; -+ net.up_rate = 1.0; -+ } -+ else if (net.max_up != 0) net.up_rate /= net.max_up; -+ } -+ net.cur_idx = (net.cur_idx + 1) % NET_SAMPLE_COUNT; -+ break; // Ignore the rest -+ } -+ fclose(fp); -+ -+ graph_values[graphs_net_pos][pos_x] = net.down_rate; -+ graph_values[graphs_net_pos+1][pos_x] = net.up_rate; -+ -+ return 0; -+} -+ -+void update_graphs(void* arg) -+{ -+ update_cpugraph(); -+ update_memgraph(); -+ update_netgraph(); -+ int i; -+ for (i=0 ; i < nb_panel ; i++) -+ panel1[i].graphs.area.redraw = 1; -+ panel_refresh = 1; -+} -+ -+void init_graphs() -+{ -+ if (!graphs_enabled || !graphs_ngraphs) -+ return; -+ -+ graphs_timeout = add_timeout(10, 1000, update_graphs, 0); -+ int i; -+ graph_values = (float **) malloc(graphs_ncurves * sizeof(float *)); -+ for (i = 0; i < graphs_ncurves; i++) -+ { -+ unsigned int gsize = graphs_graph_width * sizeof(float); -+ graph_values[i] = malloc(gsize); -+ memset(graph_values[i], 0, gsize); -+ } -+} -+ -+void init_graphs_panel(void *p) -+{ -+ if (!graphs_enabled || !graphs_ngraphs) -+ return; -+ -+ Panel *panel =(Panel*)p; -+ Graphs *graphs = &panel->graphs; -+ -+ if (graphs->area.bg == 0) -+ graphs->area.bg = &g_array_index(backgrounds, Background, 0); -+ graphs->area.parent = p; -+ graphs->area.panel = p; -+ graphs->area._draw_foreground = draw_graphs; -+ graphs->area.size_mode = SIZE_BY_CONTENT; -+ graphs->area._resize = resize_graphs; -+ -+ graphs->area.resize = 1; -+ graphs->area.on_screen = 1; -+} -+ -+ -+void draw_graphs (void *obj, cairo_t *c) -+{ -+ Graphs *graphs = obj; -+ -+ cairo_set_line_width (c, 1.0); -+ int i, i2, g, cv; -+ int x = graphs->area.paddingxlr + graphs->area.bg->border.width + 1; -+ int y1 = graphs->area.height - graphs->area.bg->border.width - graphs->area.paddingy; -+ for (g = 0, cv = 0; g < graphs_ngraphs; g++) -+ { -+ for (i2 = 0; i2 < graphs_curves_per_pos[g]; i2++, cv++) -+ { -+ cairo_set_source_rgba (c, graphs->g[cv].color[0], graphs->g[cv].color[1], -+ graphs->g[cv].color[2], graphs->g[cv].alpha); -+ for (i = 0; i < graphs_graph_width; i++) -+ { -+ int idx = (pos_x + 1 + i + graphs_graph_width) % graphs_graph_width; -+ int y2 = y1 - graph_values[cv][idx] * (y1 - graphs->area.bg->border.width - -+ graphs->area.paddingy); -+ if (graphs_use_bars) cairo_move_to (c, x + i, y1); -+ cairo_line_to (c, x + i, y2); -+ } -+ cairo_stroke (c); -+ } -+ x += graphs->area.paddingx + graphs_graph_width; -+ } -+ pos_x = (pos_x + 1) % graphs_graph_width; -+} -+ -+ -+int resize_graphs (void *obj) -+{ -+ Graphs *graphs = obj; -+ int ret = 0; -+ -+ graphs->area.redraw = 1; -+ -+ if (panel_horizontal) { -+ int new_size = (2*graphs->area.paddingxlr) + (2*graphs->area.bg->border.width) + -+ graphs_ngraphs * (graphs_graph_width) + -+ (graphs_ngraphs - 1) * (graphs->area.paddingx); -+ if (new_size != graphs->area.width) { -+ graphs->area.width = new_size + 1; -+ ret = 1; -+ } -+ } -+ -+ return ret; -+} -+ -+ -+void graphs_action(int button) -+{ -+ char *command = 0; -+ switch (button) { -+ case 1: -+ command = graphs_lclick_command; -+ break; -+ case 3: -+ command = graphs_rclick_command; -+ break; -+ } -+ tint_exec(command); -+} -+ -diff -ruN tint2.orig/src/graphs/graphs.h tint2.mine/src/graphs/graphs.h ---- trunk/src/graphs/graphs.h 1970-01-01 01:00:00.000000000 +0100 -+++ trunk/src/graphs/graphs.h 2011-09-19 13:36:45.158311161 +0200 -@@ -0,0 +1,52 @@ -+/************************************************************************** -+* Copyright (C) 2011 Francisco J. Vazquez ([email protected]) -+* -+**************************************************************************/ -+ -+#ifndef GRAPHS_H -+#define GRAPHS_H -+ -+#include <sys/time.h> -+#include "common.h" -+#include "area.h" -+ -+#define MAXGRAPHS 3 -+#define MAXCURVES 6 -+ -+typedef struct Graphs { -+ // always start with area -+ Area area; -+ -+ char *netdev; -+ Color g[MAXCURVES]; -+} Graphs; -+ -+extern int graphs_enabled; -+extern int graphs_ngraphs; -+extern int graphs_ncurves; -+extern int graphs_cpu_pos; -+extern int graphs_mem_pos; -+extern int graphs_net_pos; -+extern int graphs_curves_per_pos[MAXGRAPHS]; -+extern int graphs_use_bars; -+extern int graphs_graph_width; -+extern char *graphs_netiface; -+extern int graphs_netmaxup; -+extern int graphs_netmaxdown; -+extern char *graphs_lclick_command; -+extern char *graphs_rclick_command; -+ -+void default_graphs(); -+ -+void cleanup_graphs(); -+ -+void init_graphs(); -+void init_graphs_panel(void *panel); -+ -+void draw_graphs (void *obj, cairo_t *c); -+ -+int resize_graphs (void *obj); -+ -+void graphs_action(int button); -+ -+#endif -diff -ruN tint2.orig/src/panel.c tint2.mine/src/panel.c ---- trunk/src/panel.c 2011-09-19 12:38:00.000000000 +0200 -+++ trunk/src/panel.c 2011-09-19 12:46:47.171791151 +0200 -@@ -141,6 +141,7 @@ - init_systray(); - init_launcher(); - init_clock(); -+ init_graphs(); - #ifdef ENABLE_BATTERY - init_battery(); - #endif -@@ -178,6 +179,8 @@ - init_launcher_panel(p); - if (panel_items_order[k] == 'T') - init_taskbar_panel(p); -+ if (panel_items_order[k] == 'G') -+ init_graphs_panel(p); - #ifdef ENABLE_BATTERY - if (panel_items_order[k] == 'B') - init_battery_panel(p); -@@ -398,6 +401,8 @@ - for (j=0 ; j < p->nb_desktop ; j++) - p->area.list = g_slist_append(p->area.list, &p->taskbar[j]); - } -+ if (panel_items_order[k] == 'G') -+ p->area.list = g_slist_append(p->area.list, &p->graphs); - #ifdef ENABLE_BATTERY - if (panel_items_order[k] == 'B') - p->area.list = g_slist_append(p->area.list, &p->battery); -@@ -676,6 +681,20 @@ - } - - -+int click_graphs(Panel *panel, int x, int y) -+{ -+ Graphs gr = panel->graphs; -+ if (panel_horizontal) { -+ if (gr.area.on_screen && x >= gr.area.posx && x <= (gr.area.posx + gr.area.width)) -+ return TRUE; -+ } else { -+ if (gr.area.on_screen && y >= gr.area.posy && y <= (gr.area.posy + gr.area.height)) -+ return TRUE; -+ } -+ return FALSE; -+} -+ -+ - int click_clock(Panel *panel, int x, int y) - { - Clock clk = panel->clock; -diff -ruN tint2.orig/src/panel.h tint2.mine/src/panel.h ---- trunk/src/panel.h 2011-09-19 12:38:00.000000000 +0200 -+++ trunk/src/panel.h 2011-09-19 12:46:47.171791151 +0200 -@@ -16,6 +16,7 @@ - - #include "common.h" - #include "clock.h" -+#include "graphs.h" - #include "task.h" - #include "taskbar.h" - #include "systraybar.h" -@@ -103,6 +104,8 @@ - // clock - Clock clock; - -+ Graphs graphs; -+ - // -------------------------------------------------- - // battery - #ifdef ENABLE_BATTERY -@@ -151,6 +154,7 @@ - Launcher *click_launcher (Panel *panel, int x, int y); - LauncherIcon *click_launcher_icon (Panel *panel, int x, int y); - int click_padding(Panel *panel, int x, int y); -+int click_graphs(Panel *panel, int x, int y); - int click_clock(Panel *panel, int x, int y); - Area* click_area(Panel *panel, int x, int y); - -diff -ruN tint2.orig/src/tint.c tint2.mine/src/tint.c ---- trunk/src/tint.c 2011-09-19 12:38:00.000000000 +0200 -+++ trunk/src/tint.c 2011-09-19 12:46:47.172791139 +0200 -@@ -65,6 +65,7 @@ - default_battery(); - #endif - default_clock(); -+ default_graphs(); - default_launcher(); - default_taskbar(); - default_tooltip(); -@@ -160,6 +161,7 @@ - cleanup_systray(); - cleanup_tooltip(); - cleanup_clock(); -+ cleanup_graphs(); - cleanup_launcher(); - #ifdef ENABLE_BATTERY - cleanup_battery(); -@@ -427,6 +429,14 @@ - break; - } - -+ if ( click_graphs(panel, e->xbutton.x, e->xbutton.y)) { -+ graphs_action(e->xbutton.button); -+ if (panel_layer == BOTTOM_LAYER) -+ XLowerWindow (server.dsp, panel->main_win); -+ task_drag = 0; -+ return; -+ } -+ - if ( click_clock(panel, e->xbutton.x, e->xbutton.y)) { - clock_action(e->xbutton.button); - if (panel_layer == BOTTOM_LAYER)
