1
0
mirror of https://github.com/Llewellynvdm/conky.git synced 2024-12-23 19:39:06 +00:00

yum, net graphs

git-svn-id: https://conky.svn.sourceforge.net/svnroot/conky/trunk/conky@28 7f574dfc-610e-0410-a909-a81674777703
This commit is contained in:
Brenden Matthews 2005-07-30 11:23:26 +00:00
parent 1e5181ce85
commit 68cca1fd8d
6 changed files with 73 additions and 28 deletions

View File

@ -1,3 +1,9 @@
2005-07-30
* finalized graphing code, see $cpugraph, $memgraph, $execgraph,
$downspeedgraph, and $upspeedgraph
* added override_utf8_locale option
* poop
2005-07-28
* Added new graphing code, such as $cpugraph
* small fixes all round

7
README
View File

@ -93,6 +93,7 @@
mldonkey_login Mldonkey login, default none
mldonkey_password Mldonkey password, default none
net_avg_samples The number of samples to average for net data
override_utf8_locale Force UTF8? requires XFT
own_window Boolean, create own window to draw?
pad_percents Pad percentages to this many decimals (0 = no
padding)
@ -156,10 +157,12 @@
color (color) Change drawing color to color
cpu CPU usage in percents
cpubar (height) Bar that shows CPU usage, height is
bar's height in pixels
bar's height in pixels
cpugraph (height),(width)CPU usage graph
downspeed net Download speed in kilobytes
downspeedf net Download speed in kilobytes with one
decimal
downspeedgraph net (height),(width) Download speed graph
exec shell command Executes a shell command and displays
the output in conky. warning: this
takes a lot more resources than other
@ -170,6 +173,7 @@
will use that number for a bar.
The size for the bar is currently fixed,
but that may change in the future.
execgraph shell command Same as execbar, but graphs values
execi interval, shell Same as exec but with specific interval.
command Interval can't be less than
update_interval in configuration.
@ -295,6 +299,7 @@
upspeed net Upload speed in kilobytes
upspeedf net Upload speed in kilobytes with one
decimal
upspeedgraph net (height),(width) Upload speed graph
uptime Uptime
uptime_short Uptime in a shorter format

View File

@ -146,7 +146,7 @@ void format_seconds_short(char *buf, unsigned int n, long t)
static double last_meminfo_update;
static double last_fs_update;
unsigned int need_mask;
unsigned long long need_mask;
void update_stuff()
{

76
conky.c
View File

@ -242,8 +242,8 @@ static struct special_t *new_special(char *buf, int t)
buf[0] = SPECIAL_CHAR;
buf[1] = '\0';
if (t == GRAPH && specials[special_count].graph == NULL) {
if (specials[special_count].height > 0 && specials[special_count].height < MAX_GRAPH_DEPTH)
specials[special_count].graph_width = specials[special_count].height;
if (specials[special_count].width > 0 && specials[special_count].width < MAX_GRAPH_DEPTH)
specials[special_count].graph_width = specials[special_count].width - 3; // subtract 3 for the box
else
specials[special_count].graph_width = MAX_GRAPH_DEPTH;
specials[special_count].graph = calloc(specials[special_count].graph_width, sizeof(double));
@ -310,13 +310,14 @@ inline void graph_append(struct special_t *graph, double f) {
if (graph->scaled) {
graph->graph_scale = 0;
}
graph->graph[graph->graph_width-1] = f;
for (i=0;i<graph->graph_width-1;i++) {
graph->graph[i] = graph->graph[i+1];
if (graph->scaled && graph->graph[i] > graph->graph_scale) {
graph->graph_scale = graph->graph[i];
}
}
graph->graph[graph->graph_width-1] = f;
// graph->graph[graph->graph_width-1] = f;
}
static void new_graph(char *buf, int w, int h, double i, int scaled)
@ -325,8 +326,11 @@ static void new_graph(char *buf, int w, int h, double i, int scaled)
s->width = w;
s->height = h;
s->scaled = scaled;
if (s->width) {
s->graph_width = s->width - 3; // subtract 3 for rectangle around
}
if (scaled) {
s->graph_scale = 0;
s->graph_scale = 1;
}
else {
s->graph_scale = 100;
@ -342,8 +346,8 @@ static const char *scan_graph(const char *args, int *w, int *h)
if (args) {
int n = 0;
if (sscanf(args, "%d,%d %n", h, w, &n) <= 1)
sscanf(args, "%d %n", h, &n);
args += n;
sscanf(args, "%*s %d %n", h, &n);
//args += n;
}
return args;
@ -574,6 +578,7 @@ enum text_object_type {
struct text_object {
int type;
int a, b;
union {
char *s; /* some string */
int i; /* some integer */
@ -626,7 +631,6 @@ struct text_object {
struct {
int a, b;
} pair; /* 2 */
} data;
};
@ -742,8 +746,16 @@ static void construct_text_object(const char *s, const char *arg)
END OBJ(downspeed, INFO_NET) obj->data.net = get_net_stat(arg);
END OBJ(downspeedf, INFO_NET) obj->data.net = get_net_stat(arg);
END OBJ(downspeedgraph, INFO_NET)
obj->data.net = get_net_stat(arg);
(void) scan_graph("", &obj->data.pair.a, &obj->data.pair.b);
(void) scan_graph(arg, &obj->a, &obj->b);
char buf[64];
sscanf(arg, "%63s %*i,%*i %*i", buf);
obj->data.net = get_net_stat(buf);
if (sscanf(arg, "%*s %d,%d %*d", &obj->a, &obj->b) <= 1) {
if (sscanf(arg, "%*s %d,%d", &obj->a, &obj->b) <= 1) {
obj->a = 0;
obj->b = 25;
}
}
END OBJ(else, 0)
if (blockdepth) {
text_objects[blockstart[blockdepth - 1] -
@ -1121,7 +1133,16 @@ static void construct_text_object(const char *s, const char *arg)
END OBJ(upspeed, INFO_NET) obj->data.net = get_net_stat(arg);
END OBJ(upspeedf, INFO_NET) obj->data.net = get_net_stat(arg);
END OBJ(upspeedgraph, INFO_NET)
(void) scan_graph(arg, &obj->data.pair.a, &obj->data.pair.b);
(void) scan_graph(arg, &obj->a, &obj->b);
char buf[64];
sscanf(arg, "%63s %*i,%*i %*i", buf);
obj->data.net = get_net_stat(buf);
if (sscanf(arg, "%*s %d,%d %*d", &obj->a, &obj->b) <= 1) {
if (sscanf(arg, "%*s %d,%d", &obj->a, &obj->b) <= 1) {
obj->a = 0;
obj->b = 25;
}
}
END OBJ(uptime_short, INFO_UPTIME) END OBJ(uptime, INFO_UPTIME) END
OBJ(adt746xcpu, 0) END OBJ(adt746xfan, 0) END
#ifdef SETI
@ -1402,8 +1423,7 @@ static void generate_text()
recv_speed / 1024.0);
}
OBJ(downspeedgraph) {
CRIT_ERR("the net graph stuff is broken right now. don't use it.");
new_graph(p, obj->data.pair.a, obj->data.pair.b, (obj->data.net->recv_speed / 1024.0), 1);
new_graph(p, obj->a, obj->b, (obj->data.net->recv_speed / 1024.0), 1);
}
OBJ(else) {
if (!if_jumped) {
@ -1934,11 +1954,8 @@ static void generate_text()
trans_speed / 1024.0);
}
OBJ(upspeedgraph) {
CRIT_ERR("the net graph stuff is broken right now. don't use it.");
new_graph(p, obj->data.pair.a,
obj->data.pair.b,
(obj->data.net->trans_speed / 1024.0), 1);
}
new_graph(p, obj->a, obj->b, (obj->data.net->trans_speed / 1024.0), 1);
}
OBJ(uptime_short) {
format_seconds_short(p, n,
(int) cur->uptime);
@ -2692,17 +2709,12 @@ static void draw_line(char *s)
int by =
cur_y - (font_ascent() +
h) / 2 - 1;
int line;
w = specials[special_index].width;
if (w == 0)
w = text_start_x +
text_width - cur_x - 1;
if (w < 0)
w = 0;
if (w >= specials[special_index].graph_width)
line = w/specials[special_index].graph_width+1;
else
line = 1;
XSetLineAttributes(display,
window.gc, 1,
LineSolid,
@ -2713,13 +2725,21 @@ static void draw_line(char *s)
window.gc, cur_x,
by, w, h);
XSetLineAttributes(display,
window.gc, line,
window.gc, 1,
LineSolid,
CapButt,
JoinMiter);
int i;
for (i=0;i<specials[special_index].graph_width;i++) {
XDrawLine(display, window.drawable, window.gc, cur_x+(i*w*1.0/specials[special_index].graph_width)+2, by+h, cur_x+(i*w*1.0/specials[special_index].graph_width)+2, by+h-specials[special_index].graph[i]*h/specials[special_index].graph_scale); /* this is mugfugly, but it works */
int j=0;
for (i=0;i<w-3;i++) {
if (i / ((float)(w - 3) / (specials[special_index].graph_width)) > j) {
j++;
}
XDrawLine(display, window.drawable, window.gc,
cur_x+i+2, by+h,
cur_x+i+2,
by+h-specials[special_index].graph[j]*h/specials[special_index]
.graph_scale); /* this is mugfugly, but it works */
}
if (specials[special_index].height > font_h) {
cur_y += specials[special_index].height;
@ -3519,6 +3539,12 @@ else if (strcasecmp(name, a) == 0 || strcasecmp(name, a) == 0)
CONF("override_utf8_locale") {
utf8_mode
=
string_to_bool
(value);
}
#ifdef XDBE
CONF("double_buffer") {
use_xdbe

View File

@ -237,7 +237,7 @@ struct net_stat *get_net_stat(const char *dev);
void update_stuff();
#define SET_NEED(a) need_mask |= 1 << (a)
extern unsigned int need_mask;
extern unsigned long long need_mask;
extern double current_update_time, last_update_time;

View File

@ -98,6 +98,10 @@ cpu_avg_samples 4
# set to 1 to disable averaging
net_avg_samples 4
# Force UTF8? note that UTF8 support required XFT
override_utf8_locale no
# Add spaces to keep things from moving about? This only affects certain objects.
use_spacer no
@ -139,9 +143,11 @@ metar_station CYBW
# cpu CPU usage in percents
# cpubar (height) Bar that shows CPU usage, height is
# bar's height in pixels
# cpugraph (height),(width)CPU usage graph
# downspeed net Download speed in kilobytes
# downspeedf net Download speed in kilobytes with one
# decimal
# downspeedgraph net (height),(width) Download speed graph
# exec shell command Executes a shell command and displays
# the output in conky. warning: this
# takes a lot more resources than other
@ -152,6 +158,7 @@ metar_station CYBW
# will use that number for a bar.
# The size for the bar is currently fixed,
# but that may change in the future.
# execgraph shell command Same as execbar, but graphs values
# execi interval, shell Same as exec but with specific interval.
# command Interval can't be less than
# update_interval in configuration.
@ -277,6 +284,7 @@ metar_station CYBW
# upspeed net Upload speed in kilobytes
# upspeedf net Upload speed in kilobytes with one
# decimal
# upspeedgraph net (height),(width) Upload speed graph
# uptime Uptime
# uptime_short Uptime in a shorter format
#