1
0
mirror of https://github.com/Llewellynvdm/conky.git synced 2024-11-05 21:07:52 +00:00

more fixes to new smp stuff, mainly in config parsing

git-svn-id: https://conky.svn.sourceforge.net/svnroot/conky/trunk/conky@213 7f574dfc-610e-0410-a909-a81674777703
This commit is contained in:
Brenden Matthews 2005-08-27 10:36:28 +00:00
parent e93155d26b
commit 52b2d75fad
4 changed files with 129 additions and 126 deletions

208
README
View File

@ -10,14 +10,14 @@ SYNOPSIS
conky [options]
DESCRIPTION
Conky is a system monitor for X originally based on the torsmo code.
Since its original conception, Conky has changed a fair bit from its
Conky is a system monitor for X originally based on the torsmo code.
Since it's original conception, Conky has changed a fair bit from it's
predecessor. Conky can display just about anything, either on your
root desktop or in its own window. Conky has many built-in objects,
as well as the ability to execute programs and scripts, then display
root desktop or in it's own window. Conky has many built-in objects,
as well as the ability to execute programs and scripts, then display
the output from stdout.
We are always looking for help, and anyone interested in becoming a
We are always looking for help, and anyone interested in becoming a
developer is welcome. Please use the facilities at SourceForge to make
bug reports, feature requests, and submit patches.
@ -26,9 +26,9 @@ DESCRIPTION
COMPILING
First, make sure you have the X development libraries installed, this
should be a package along the lines of "libx11-dev or xorg-x11-dev".
Gentoo users, Conky is in Gentoos Portage. Simply use "emerge conky"
Gentoo users, Conky is in Gentoo's Portage. Simply use "emerge conky"
for installation. There is also usually an up-to-date ebuild within
Conkys package or in CVS.
Conky's package or in CVS.
To compile and run Conky with all optional components:
@ -36,7 +36,7 @@ COMPILING
./configure --prefix=/usr --mandir=/usr/share/man
--infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc
--localstatedir=/var/lib --enable-double-buffer --enable-own-window
--localstatedir=/var/lib --enable-double-buffer --enable-own-window
--enable-proc-uptime --enable-mpd --enable-xft --enable-seti
make
@ -45,14 +45,14 @@ COMPILING
./conky
Conky doesnt probably compile with other compilers than gcc and icc.
It doesnt compile with C89 compiler and not even with pure C99. It
uses few things that might not exist: strdup(), strcasecmp(), strn
casecmp(), optarg variable with getopt() and long long (not in C89).
Crashes in file system statistics stuff when compiled with icc, I dont
Conky doesn't probably compile with other compilers than gcc and icc.
It doesn't compile with C89 compiler and not even with pure C99. It
uses few things that might not exist: strdup(), strcasecmp(), strn-
casecmp(), optarg variable with getopt() and long long (not in C89).
Crashes in file system statistics stuff when compiled with icc, I don't
know exactly why.
You can disable drawing to own window feature in case you dont need
You can disable 'drawing to own window' feature in case you don't need
it by passing --disable-own-window to configure -script.
@ -63,11 +63,11 @@ YOU SHOULD KNOW
rest of Conky.
If you do use them, please do not complain about memory or CPU usage,
unless you think something is going seriously wrong (mem leak, et
unless you think something is going seriously wrong (mem leak, et
cetera).
OPTIONS
Command line options override configurations defined in configuration
Command line options override configurations defined in configuration
file.
-V Prints version and exits
@ -98,7 +98,7 @@ OPTIONS
-t TEXT
Text to render, remember single quotes, like -t $uptime
Text to render, remember single quotes, like -t ' $uptime '
-u SECONDS
@ -118,12 +118,12 @@ OPTIONS
CONFIGURATION SETTINGS
Default configuration file is $HOME/.conkyrc (can be changed from
Default configuration file is $HOME/.conkyrc (can be changed from
conky.c among other things). See conkyrc.sample. You might want to copy
it to $HOME/.conkyrc and then start modifying it.
alignment
Aligned position on screen, may be top_left, top_right, bot
Aligned position on screen, may be top_left, top_right, bot-
tom_left, bottom_right, or none
@ -153,7 +153,7 @@ CONFIGURATION SETTINGS
default_shade_color
Default shading color and borders shading color
Default shading color and border's shading color
default_outline_color
@ -161,8 +161,8 @@ CONFIGURATION SETTINGS
double_buffer
Use the Xdbe extension? (eliminates flicker) It is highly recom
mended to use own window with this one so double buffer wont be
Use the Xdbe extension? (eliminates flicker) It is highly recom-
mended to use own window with this one so double buffer won't be
so big.
@ -251,7 +251,7 @@ CONFIGURATION SETTINGS
own_window_colour colour
If own_window_transparent no, set a specified background colour
(defaults to black). Takes either a hex value (#ffffff) or a
(defaults to black). Takes either a hex value (#ffffff) or a
valid RGB name (see /usr/lib/X11/rgb.txt)
@ -290,11 +290,11 @@ CONFIGURATION SETTINGS
VARIABLES
Colors are parsed using XParsecolor(), there might be a list of them:
Colors are parsed using XParsecolor(), there might be a list of them:
/usr/X11R6/lib/X11/rgb.txt. Also, http://sedition.com/perl/rgb.html
Color can be also in #rrggbb format (hex). Note that when displaying
bytes, power is 1024 and not 1000 so 1M really means 1024*1024 bytes
and not 1000*1000.
[http://sedition.com/perl/rgb.html] Color can be also in #rrggbb format
(hex). Note that when displaying bytes, power is 1024 and not 1000 so
1M really means 1024*1024 bytes and not 1000*1000.
addr (interface)
IP address for an interface
@ -348,23 +348,28 @@ VARIABLES
Change drawing color to color
cpu CPU usage in percents
cpu (cpuN)
CPU usage in percents. For SMP machines, the CPU number can be
provided as an argument. cpu0 is the total usage, and >=cpu1 are
individual CPUs. See $cpu for more info on SMP.
cpubar (height),(width)
Bar that shows CPU usage, height is bars height in pixels
cpubar (cpu number) (height),(width)
Bar that shows CPU usage, height is bar's height in pixels
cpugraph (height),(width) (gradient colour 1) (gradient colour 2)
CPU usage graph, with optional colours in hex, minus the #.
cpugraph (cpu number) (height),(width) (gradient colour 1) (gradient
colour 2)
CPU usage graph, with optional colours in hex, minus the #. See
$cpu for more info on SMP.
diskio Displays current disk IO.
diskiograph (height),(width) (gradient colour 1) (gradient colour 2)
diskiograph (height),(width) (gradient colour 1) (gradient colour 2)
(scale)
Disk IO graph, colours defined in hex, minus the #. If scale is
Disk IO graph, colours defined in hex, minus the #. If scale is
non-zero, it becomes the scale for the graph.
@ -376,9 +381,9 @@ VARIABLES
Download speed in kilobytes with one decimal
downspeedgraph net, (height),(width) (gradient colour 1) (gradient
downspeedgraph net, (height),(width) (gradient colour 1) (gradient
colour 2) (scale)
Download speed graph, colours defined in hex, minus the #. If
Download speed graph, colours defined in hex, minus the #. If
scale is non-zero, it becomes the scale for the graph.
@ -386,14 +391,14 @@ VARIABLES
exec command
Executes a shell command and displays the output in conky. warn
ing: this takes a lot more resources than other variables. Id
Executes a shell command and displays the output in conky. warn-
ing: this takes a lot more resources than other variables. I'd
recommend coding wanted behaviour in C and posting a patch.
execbar command
Same as exec, except if the first value return is a value
between 0-100, it will use that number for a bar. The size for
Same as exec, except if the first value return is a value
between 0-100, it will use that number for a bar. The size for
the bar is currently fixed, but that may change in the future.
@ -402,7 +407,7 @@ VARIABLES
execi interval command
Same as exec but with specific interval. Interval cant be less
Same as exec but with specific interval. Interval can't be less
than update_interval in configuration.
@ -425,19 +430,19 @@ VARIABLES
freq_dyn
Returns CPU frequency in MHz, but is calculated by counting to
clock cycles to complete an instruction. Only available for
Returns CPU frequency in MHz, but is calculated by counting to
clock cycles to complete an instruction. Only available for
x86/amd64.
freq_dyn_g
Returns CPU frequency in GHz, but is calculated by counting to
clock cycles to complete an instruction. Only available for
Returns CPU frequency in GHz, but is calculated by counting to
clock cycles to complete an instruction. Only available for
x86/amd64.
fs_bar (height),(width) fs
Bar that shows how much space is used on a file system. height
Bar that shows how much space is used on a file system. height
is the height in pixels. fs is any file on that file system.
@ -458,8 +463,8 @@ VARIABLES
head logfile lines (interval)
Displays first N lines of supplied text text file. If interval
is not supplied, Conky assumes 2x Conkys interval. Max of 30
Displays first N lines of supplied text text file. If interval
is not supplied, Conky assumes 2x Conky's interval. Max of 30
lines can be displayed, or until the text buffer is filled.
@ -468,90 +473,90 @@ VARIABLES
i2c (dev), type, n
I2C sensor from sysfs (Linux 2.6). dev may be omitted if you
have only one I2C device. type is either in (or vol) meaning
I2C sensor from sysfs (Linux 2.6). dev may be omitted if you
have only one I2C device. type is either in (or vol) meaning
voltage, fan meaning fan or temp/tempf (first in C, second in F)
meaning temperature. n is number of the sensor. See
meaning temperature. n is number of the sensor. See
/sys/bus/i2c/devices/ on your local computer.
i8k_ac_status
If running the i8k kernel driver for Inspiron laptops, displays
whether ac power is on, as listed in /proc/i8k (translated to
human-readable). Beware that this is by default not enabled by
If running the i8k kernel driver for Inspiron laptops, displays
whether ac power is on, as listed in /proc/i8k (translated to
human-readable). Beware that this is by default not enabled by
i8k itself.
i8k_bios
If running the i8k kernel driver for Inspiron laptops, displays
If running the i8k kernel driver for Inspiron laptops, displays
the bios version as listed in /proc/i8k.
i8k_buttons_status
If running the i8k kernel driver for Inspiron laptops, displays
If running the i8k kernel driver for Inspiron laptops, displays
the volume buttons status as listed in /proc/i8k.
i8k_cpu_temp
If running the i8k kernel driver for Inspiron laptops, displays
If running the i8k kernel driver for Inspiron laptops, displays
the cpu temperature in celsius, as reported by /proc/i8k.
i8k_cpu_tempf
If running the i8k kernel driver for Inspiron laptops, displays
If running the i8k kernel driver for Inspiron laptops, displays
the cpu temperature in farenheit, as reported by /proc/i8k.
i8k_left_fan_rpm
If running the i8k kernel driver for Inspiron laptops, displays
the left fans rate of rotation, in revolutions per minute as
If running the i8k kernel driver for Inspiron laptops, displays
the left fan's rate of rotation, in revolutions per minute as
listed in /proc/i8k. Beware, some laptops i8k reports these fans
in reverse order.
i8k_left_fan_status
If running the i8k kernel driver for Inspiron laptops, displays
the left fan status as listed in /proc/i8k (translated to
human-readable). Beware, some laptops i8k reports these fans in
If running the i8k kernel driver for Inspiron laptops, displays
the left fan status as listed in /proc/i8k (translated to human-
readable). Beware, some laptops i8k reports these fans in
reverse order.
i8k_right_fan_rpm
If running the i8k kernel driver for Inspiron laptops, displays
the right fans rate of rotation, in revolutions per minute as
If running the i8k kernel driver for Inspiron laptops, displays
the right fan's rate of rotation, in revolutions per minute as
listed in /proc/i8k. Beware, some laptops i8k reports these fans
in reverse order.
i8k_right_fan_status
If running the i8k kernel driver for Inspiron laptops, displays
the right fan status as listed in /proc/i8k (translated to
human-readable). Beware, some laptops i8k reports these fans in
If running the i8k kernel driver for Inspiron laptops, displays
the right fan status as listed in /proc/i8k (translated to
human-readable). Beware, some laptops i8k reports these fans in
reverse order.
i8k_serial
If running the i8k kernel driver for Inspiron laptops, displays
If running the i8k kernel driver for Inspiron laptops, displays
your laptop serial number as listed in /proc/i8k.
i8k_version
If running the i8k kernel driver for Inspiron laptops, displays
If running the i8k kernel driver for Inspiron laptops, displays
the version formatting of /proc/i8k.
if_running (process)
if PROCESS is running, display everything if_running and the
if PROCESS is running, display everything if_running and the
matching $endif
if_existing (file)
if FILE exists, display everything between if_existing and the
if FILE exists, display everything between if_existing and the
matching $endif
if_mounted (mountpoint)
if MOUNTPOINT is mounted, display everything between if_mounted
if MOUNTPOINT is mounted, display everything between if_mounted
and the matching $endif
@ -571,8 +576,8 @@ VARIABLES
Machine, i686 for example
mails Mail count in mail spool. You can use program like fetchmail to
get mails from some server using your favourite protocol. See
mails Mail count in mail spool. You can use program like fetchmail to
get mails from some server using your favourite protocol. See
also new_mails.
@ -639,7 +644,7 @@ VARIABLES
mpd_bar (height),(width)
Bar of mpds progress
Bar of mpd's progress
mpd_bitrate
@ -655,19 +660,19 @@ VARIABLES
mpd_vol
MPDs volume
MPD's volume
mpd_elapsed
Songs elapsed time
Song's elapsed time
mpd_length
Songs length
Song's length
mpd_percent
Percent of songs progress
Percent of song's progress
new_mails
@ -728,26 +733,26 @@ VARIABLES
tail logfile lines (interval)
Displays last N lines of supplied text text file. If interval is
not supplied, Conky assumes 2x Conkys interval. Max of 30 lines
not supplied, Conky assumes 2x Conky's interval. Max of 30 lines
can be displayed, or until the text buffer is filled.
time (format)
Local time, see man strftime to get more information about for
Local time, see man strftime to get more information about for-
mat
totaldown net
Total download, overflows at 4 GB on Linux with 32-bit arch and
there doesnt seem to be a way to know how many times it has
Total download, overflows at 4 GB on Linux with 32-bit arch and
there doesn't seem to be a way to know how many times it has
already done that before conky has started.
top type, num
This takes arguments in the form:top (name) (number) Basically,
processes are ranked from highest to lowest in terms of cpu
usage, which is what (num) represents. The types are: "name",
"pid", "cpu", and mem". There can be a max of 10 processes
This takes arguments in the form:top (name) (number) Basically,
processes are ranked from highest to lowest in terms of cpu
usage, which is what (num) represents. The types are: "name",
"pid", "cpu", and mem". There can be a max of 10 processes
listed.
@ -773,7 +778,7 @@ VARIABLES
upspeedgraph net, (height),(width) (gradient colour 1) (gradient colour
2) (scale)
Upload speed graph, colours defined in hex, minus the #. If
Upload speed graph, colours defined in hex, minus the #. If
scale is non-zero, it becomes the scale for the graph.
@ -797,12 +802,12 @@ VARIABLES
voffset (pixels)
Change verticle offset by N pixels. Negative values will cause
Change verticle offset by N pixels. Negative values will cause
text to overlap. See also $offset.
EXAMPLES
conky -t${time %D %H:%m}-o -u 30
conky -t '${time %D %H:%m}' -o -u 30
Start Conky in its own window with date and clock as text and 30
sec update interval.
@ -813,24 +818,25 @@ FILES
~/.conkyrc default configuration file
BUGS
Drawing to root or some other desktop window directly doesnt work with
all window managers. Especially doesnt work well with Gnome and it has
been reported that it doesnt work with KDE either. Nautilus can be
disabled from drawing to desktop with program gconf-editor. Uncheck
show_desktop in /apps/nautilus/preferences/. There is -w switch in
Conky to set some specific window id. You might find xwininfo -tree
useful to find the window to draw to. You can also use -o argument
Drawing to root or some other desktop window directly doesn't work with
all window managers. Especially doesn't work well with Gnome and it has
been reported that it doesn't work with KDE either. Nautilus can be
disabled from drawing to desktop with program gconf-editor. Uncheck
show_desktop in /apps/nautilus/preferences/. There is -w switch in
Conky to set some specific window id. You might find xwininfo -tree
useful to find the window to draw to. You can also use -o argument
which makes Conky to create its own window.
SEE ALSO
http://conky.sourceforge.net
http://conky.sourceforge.net [http://conky.sourceforge.net]
http://www.sourceforge.net/projects/conky
http://www.sourceforge.net/projects/conky [http://www.source-
forge.net/projects/conky]
#conky on irc.freenode.net
AUTHORS
The Conky dev team. Whats up now??!
The Conky dev team. What's up now??!

View File

@ -124,10 +124,10 @@
<varlistentry>
<term>
<command><option>cpu</option></command>
<option>(cpu number)</option>
<option>(cpuN)</option>
</term>
<listitem>
CPU usage in percents. For SMP machines, the CPU number can be provided as an argument. 0 is the total usage, and >=1 are individual CPUs. See $cpu for more info on SMP.
CPU usage in percents. For SMP machines, the CPU number can be provided as an argument. cpu0 is the total usage, and >=cpu1 are individual CPUs. See $cpu for more info on SMP.
<para></para></listitem>
</varlistentry>

View File

@ -1039,38 +1039,31 @@ if (s[0] == '#') {
END OBJ(cached, INFO_BUFFERS)
END OBJ(cpu, INFO_CPU)
if (arg) {
if (sscanf(arg, "%i", &obj->data.cpu_index) < 1) {
ERR("$cpu takes an int as an arg");
}
} else {
if (strncmp(arg, "cpu", 3) == 0 && isdigit(arg[3])) {
obj->data.cpu_index = atoi(&arg[3]);
arg += 4;
} else {obj->data.cpu_index = 0; }
} else {
obj->data.cpu_index = 0;
}
END OBJ(cpubar, INFO_CPU)
if (arg) {
if (sscanf(arg, "%i", &obj->data.cpu_index) < 1) {
if (sscanf(arg, "%i %*s", &obj->data.cpu_index) < 1) {
ERR("$cpu takes an int as an arg");
} else {
char buf[128];
sscanf(arg, "%*i %127s", buf);
(void) scan_bar(buf, &obj->a, &obj->b);
}
}
if (strncmp(arg, "cpu", 3) == 0 && isdigit(arg[3])) {
obj->data.cpu_index = atoi(&arg[3]);
arg += 4;
}
(void) scan_bar(arg, &obj->a, &obj->b);
} else {
obj->data.cpu_index = 0;
}
END OBJ(cpugraph, INFO_CPU)
if (arg) {
if (sscanf(arg, "%i", &obj->data.cpu_index) < 1) {
if (sscanf(arg, "%i %*s", &obj->data.cpu_index) < 1) {
ERR("$cpu takes an int as an arg");
} else {
char buf[128];
sscanf(arg, "%*i %127s", buf);
(void) scan_graph(buf, &obj->a, &obj->b, &obj->c, &obj->d, &obj->e);
}
if (strncmp(arg, "cpu", 3) == 0 && isdigit(arg[3])) {
obj->data.cpu_index = atoi(&arg[3]);
arg += 4;
}
} else {
(void) scan_graph(arg, &obj->a, &obj->b, &obj->c, &obj->d, &obj->e);
} else {
obj->data.cpu_index = 0;
}
END OBJ(diskio, INFO_DISKIO)

View File

@ -415,7 +415,11 @@ inline static void update_stat()
for (i = 0; i < info.cpu_avg_samples; i++) {
curtmp += cpu[index].cpu_val[i];
}
info.cpu_usage[index] = curtmp / info.cpu_avg_samples;
if (index == 0) {
info.cpu_usage[index] = curtmp / info.cpu_avg_samples / info.cpu_count;
} else {
info.cpu_usage[index] = curtmp / info.cpu_avg_samples;
}
cpu[index].last_cpu_sum = cpu[index].cpu_user + cpu[index].cpu_nice + cpu[index].cpu_system;
for (i = info.cpu_avg_samples; i > 1; i--)
cpu[index].cpu_val[i - 1] = cpu[index].cpu_val[i - 2];