wmload: Add version 0.9.2 to repository.
Obtained from [1]. [1] http://snapshot.debian.org/archive/debian-archive/20090802T004153Z/debian/pool/main/w/wmload/wmload_0.9.2.orig.tar.gz
This commit is contained in:
parent
4e7d572d13
commit
9694733979
8
wmload/INSTALL
Normal file
8
wmload/INSTALL
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
1. Check the Imakefile to see if all the LIBS are ok for your system.
|
||||||
|
ALSO, check DESTDIR and BINDIR; as they are now, a `make install'
|
||||||
|
will put the wmload binary in /usr/local/bin.
|
||||||
|
2. `xmkmf'
|
||||||
|
3. `make'
|
||||||
|
4. `make install'
|
||||||
|
5. Enjoy!!!! (;-)
|
||||||
|
|
17
wmload/Imakefile
Normal file
17
wmload/Imakefile
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
/* installation directory is the combination of $(DESTDIR) and $(BINDIR)*/
|
||||||
|
DESTDIR = /usr/local
|
||||||
|
BINDIR = /bin
|
||||||
|
|
||||||
|
XPMLIB = -L/usr/lib/X11 -lXpm -lm
|
||||||
|
DEPLIBS = $(DEPXLIB)
|
||||||
|
|
||||||
|
LOCAL_LIBRARIES = $(XPMLIB) $(XLIB)
|
||||||
|
|
||||||
|
LINTLIBS = $(LINTXLIB)
|
||||||
|
|
||||||
|
EXTRA_DEFINES = -Debug /* CFLAGS = -Debug */
|
||||||
|
|
||||||
|
SRCS = wmload.c
|
||||||
|
OBJS = wmload.o
|
||||||
|
|
||||||
|
ComplexProgramTarget(wmload)
|
189
wmload/README
Normal file
189
wmload/README
Normal file
|
@ -0,0 +1,189 @@
|
||||||
|
>================================================<
|
||||||
|
wmload - WindowMaker load gauge
|
||||||
|
Updated, cleaned up and "fixed"
|
||||||
|
==================================================
|
||||||
|
VERSION: 0.9.2
|
||||||
|
RELEASE DATE: 17 July 1997
|
||||||
|
|
||||||
|
-Minor cosmetic changes.
|
||||||
|
The graph zone is now perfectly square, 54x54.
|
||||||
|
<I didn't like it's odd width! (;-)>
|
||||||
|
|
||||||
|
-All values dealing with pixmap size have been
|
||||||
|
adjusted to accomodate the new `look'.
|
||||||
|
|
||||||
|
VERSION: 0.9.1
|
||||||
|
RELEASE DATE: 8 July 1997
|
||||||
|
|
||||||
|
-Uses correct ordering of PROC data.
|
||||||
|
|
||||||
|
-Increases the differentiation between tones,
|
||||||
|
just a smidgion.
|
||||||
|
|
||||||
|
-Catches a "Once In A Blue Moon" condition.
|
||||||
|
Under various circumstances rounding error
|
||||||
|
results in a pixel count of 55 or 53.
|
||||||
|
To prevent the 55 count from writing one
|
||||||
|
pixel into the edge of the frame, wmload
|
||||||
|
now catches these occurrences and corrects
|
||||||
|
for them.
|
||||||
|
|
||||||
|
VERSION: 0.9.0
|
||||||
|
RELEASE DATE: 6 July 1997
|
||||||
|
|
||||||
|
-Fixed the grayscale problem that occurred
|
||||||
|
whenever the "-shape" argument was used.
|
||||||
|
|
||||||
|
-Implemented the "-led" argument...
|
||||||
|
...the last release had the argument,
|
||||||
|
however it wasn't implemented...
|
||||||
|
...ie: it did nothing.
|
||||||
|
Called without the "-led" argument, wmload
|
||||||
|
uses it's default color "LightSeaGreen"
|
||||||
|
[which is the same as the asclock readout].
|
||||||
|
Called with the argument, it uses the
|
||||||
|
named color. If the default color is
|
||||||
|
unavailable, or the named color is invalid,
|
||||||
|
wmload simply uses the 3 green tones
|
||||||
|
found in the "back.xpm" pixmap.
|
||||||
|
|
||||||
|
-Added a "-ver" argument...
|
||||||
|
When used, it prints the current version
|
||||||
|
on stdout. If it is called alone with no
|
||||||
|
other arguments, wmload exits after
|
||||||
|
printing its' version. Called with other
|
||||||
|
arguments... wmload prints its' version
|
||||||
|
and continues as normal.
|
||||||
|
|
||||||
|
-Trapped bad arguments that don't start
|
||||||
|
with "-".
|
||||||
|
|
||||||
|
-Cleaned up the code a bit.
|
||||||
|
|
||||||
|
-Removed unnecessary files from the
|
||||||
|
distribution. <kept README's though>
|
||||||
|
|
||||||
|
NOTE:
|
||||||
|
This is a load monitor which is designed
|
||||||
|
to work with the PROC filesystem. Generally
|
||||||
|
all Linux systems come with the PROC fs.
|
||||||
|
If you're using a different Unix and it
|
||||||
|
doesn't have the PROC fs, first see if
|
||||||
|
there is one available... otherwise this
|
||||||
|
monitor won't work!
|
||||||
|
Work is currently underway to produce a
|
||||||
|
more `portable' wmload that Solaris/Sun/HP etc.
|
||||||
|
users can also enjoy.
|
||||||
|
|
||||||
|
INSTALL:
|
||||||
|
1. Check the Imakefile to see if all the
|
||||||
|
LIBS are ok for your system.
|
||||||
|
ALSO, check DESTDIR and BINDIR; as they
|
||||||
|
are now, a `make install' will put the
|
||||||
|
wmload binary in /usr/local/bin.
|
||||||
|
2. `xmkmf'
|
||||||
|
3. `make'
|
||||||
|
4. `make install'
|
||||||
|
5. Enjoy!!!! (;-)
|
||||||
|
|
||||||
|
SUGGESTED INVOCATION (for WindowMaker!):
|
||||||
|
`wmload -shape -withdrawn &'
|
||||||
|
|
||||||
|
OR for a different graph color:
|
||||||
|
`wmload -led ??? -shape -withdrawn &'
|
||||||
|
...replace "???" with a color name
|
||||||
|
eg. green, red, orange, yellow, orchid, purple....
|
||||||
|
any of your systems standard X color symbols.
|
||||||
|
|
||||||
|
SUGGESTED INVOCATION (for AfterStep):
|
||||||
|
To load wmload in Wharf, add a line in .steprc:
|
||||||
|
*Wharf wmload nil MaxSwallow "wmload" wmload -led green -shape &
|
||||||
|
...or to run it as a normal app: wmload -led "???" &
|
||||||
|
NOTE: AfterStep doesn't require the "-withdrawn" option.
|
||||||
|
|
||||||
|
AVAILABILITY:
|
||||||
|
The latest release should be available from:
|
||||||
|
ftp://afterstep.foo.net/pub/apps/wmload/
|
||||||
|
http://www.bc1.com/users/rland/
|
||||||
|
|
||||||
|
TODO LIST:
|
||||||
|
-Implement alternative `load' algorithms?
|
||||||
|
|
||||||
|
LIABILITY & USABILITY:
|
||||||
|
As usual, this software is bound by the
|
||||||
|
GNU public license. You can use it however
|
||||||
|
you see fit, as long as all the README's
|
||||||
|
accompany any copy/version of it.
|
||||||
|
THE KIND SOLES WHO HAVE WRITTEN/CONTRIBUTED
|
||||||
|
TO THIS SOFTWARE, IN NO WAY ACCEPT LIABILITY
|
||||||
|
OR ANY RESPONSIBILITY FOR THE USE OF, OR FOR
|
||||||
|
ANY CONSEQUENCES RESULTING FROM THE USE OF
|
||||||
|
THIS SOFTWARE.
|
||||||
|
...that having been said, I think you'll
|
||||||
|
like this new version and shouldn't have
|
||||||
|
problems with it. Happy load monitoring!
|
||||||
|
|
||||||
|
FEEDBACK etc:
|
||||||
|
Maintainer of the current version...
|
||||||
|
Ryan Land, rland@bc1.com
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---<o>---
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
the contents of the initial WM patch and original
|
||||||
|
asload README's now follow...
|
||||||
|
|
||||||
|
>================================================<
|
||||||
|
wmload - WindowMaker performance monitor
|
||||||
|
adapted from asload by Nic Bernstein
|
||||||
|
==================================================
|
||||||
|
added withdrawn option, added WM hints.
|
||||||
|
changed trace color
|
||||||
|
|
||||||
|
|
||||||
|
original README contents follow...
|
||||||
|
|
||||||
|
>================================================<
|
||||||
|
asload - afterstep performance monitor
|
||||||
|
the best perfmonitor for the best X-windowmanager!
|
||||||
|
==================================================
|
||||||
|
|
||||||
|
RELEASE 1
|
||||||
|
30th November 1996
|
||||||
|
by Beat Christen, bchriste@iiic.ethz.ch
|
||||||
|
|
||||||
|
|
||||||
|
VERSION 0.1
|
||||||
|
|
||||||
|
|
||||||
|
AVAILABILITY
|
||||||
|
the latest release should be available from
|
||||||
|
|
||||||
|
ftp://sunsite.unc.edu/pub/Linux/X11/xutils/asload.tgz
|
||||||
|
http://rif3.ethz.ch:1313/spiff/asload/asload.tgz
|
||||||
|
|
||||||
|
INSTALL
|
||||||
|
1. Check in the Imakefile if all LIBS are ok for your system.
|
||||||
|
2. `make` (Send me the output if this fails)
|
||||||
|
|
||||||
|
|
||||||
|
TODO
|
||||||
|
write a todo list.
|
||||||
|
|
||||||
|
FEEDBACK
|
||||||
|
I prefer uuencoded mail.
|
||||||
|
You can register this software at
|
||||||
|
http://rif3.ethz.ch:1313/spiff/asload/register.html
|
||||||
|
|
||||||
|
AUTHOR
|
||||||
|
Beat Christen
|
||||||
|
|
||||||
|
CONTRIBUTORS
|
||||||
|
|
||||||
|
CHANGES
|
||||||
|
28Nov96 First Version for Linux /proc
|
||||||
|
|
||||||
|
END OF FILE
|
118
wmload/back.xpm
Normal file
118
wmload/back.xpm
Normal file
|
@ -0,0 +1,118 @@
|
||||||
|
/* XPM */
|
||||||
|
static char *back_xpm[] = {
|
||||||
|
/* width height num_colors chars_per_pixel */
|
||||||
|
" 64 64 47 1",
|
||||||
|
/* colors */
|
||||||
|
". c #010103",
|
||||||
|
"# c #818183",
|
||||||
|
"a c #414143",
|
||||||
|
"b c #c1c1c3",
|
||||||
|
"c c #a1a1a3",
|
||||||
|
"d c #616163",
|
||||||
|
"e c #919193",
|
||||||
|
"f c #515153",
|
||||||
|
"g c #b1b1b3",
|
||||||
|
"h c #717173",
|
||||||
|
"i c #29292b",
|
||||||
|
"j c #fdfdfb",
|
||||||
|
"k c #cdcdcb",
|
||||||
|
"l c #353533",
|
||||||
|
"m c #89898b",
|
||||||
|
"n c #49494b",
|
||||||
|
"o c #a9a9ab",
|
||||||
|
"p c #69696b",
|
||||||
|
"q c #99999b",
|
||||||
|
"r c #59595b",
|
||||||
|
"s c #b9b9bb",
|
||||||
|
"t c #79797b",
|
||||||
|
"u c #bdbdbb",
|
||||||
|
"v c #c9c9cb",
|
||||||
|
"w c #3d3d3b",
|
||||||
|
"x c #313133",
|
||||||
|
"y c #7d7d7b",
|
||||||
|
"z c #d1d1d3",
|
||||||
|
"A c #39393b",
|
||||||
|
"B c #858583",
|
||||||
|
"C c #454543",
|
||||||
|
"D c #c5c5c3",
|
||||||
|
"E c #a5a5a3",
|
||||||
|
"F c #656563",
|
||||||
|
"G c #959593",
|
||||||
|
"H c #555553",
|
||||||
|
"I c #b5b5b3",
|
||||||
|
"J c #757573",
|
||||||
|
"K c #8d8d8b",
|
||||||
|
"L c #4d4d4b",
|
||||||
|
"M c #adadab",
|
||||||
|
"N c #6d6d6b",
|
||||||
|
"O c #9d9d9b",
|
||||||
|
"P c #5d5d5b",
|
||||||
|
"Q c #009f00",
|
||||||
|
"R c #00a600",
|
||||||
|
"S c #00b600",
|
||||||
|
/* pixels */
|
||||||
|
"qqqqqqqqqqqqqqqOOOOOOccccccEEEEEEEooooooMMMMMMggggggIIIIIIIIsssN",
|
||||||
|
"OOOOOOOOOOOOOOOqOOOccOOcccEcEEEEEoEEoooMoMMgggMgggIIgIIIssubbDGC",
|
||||||
|
"qqxxxxxxxxxxxlAAAwwwaaaCnnLLLffffHrHrPPddddFpppNNNNhhJJJttyyy#AC",
|
||||||
|
"qqxxxlllllllAAAAwwaaaCCnnnLLfffHHrHPPPdddFpppNNNhhJJhJtttyy#BBwC",
|
||||||
|
"OqllxlllllAAwwwaaaCCCnnnLLfffHrrrPrPdddFpFpppNNhhhhtJttyy##BBBaC",
|
||||||
|
"OOxll.....................................................iBBman",
|
||||||
|
"OOxll.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijmmman",
|
||||||
|
"Oqxll.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijmmKCC",
|
||||||
|
"OOxxl.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijKmKCn",
|
||||||
|
"OOxll.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijKKKnn",
|
||||||
|
"OOxxl.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijKeenn",
|
||||||
|
"OclAA.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijeeeCL",
|
||||||
|
"OOxAA.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijeeGnL",
|
||||||
|
"OOAAw.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijeGGnn",
|
||||||
|
"ccAAw.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijeGGnL",
|
||||||
|
"ccAww.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijqGqLL",
|
||||||
|
"ccAwa.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijGGGLL",
|
||||||
|
"EEwwa.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijqqOnL",
|
||||||
|
"Ecwaa.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijGOOLf",
|
||||||
|
"EEaaC.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijOqOLL",
|
||||||
|
"EEwaC.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijOOcff",
|
||||||
|
"ooaCC.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijOccLf",
|
||||||
|
"EoaCn.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijOcEff",
|
||||||
|
"ooCnn.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijEccff",
|
||||||
|
"ooCnL.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijcEEfH",
|
||||||
|
"oMnLL.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijEEEHf",
|
||||||
|
"MMnLL.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijEEEHH",
|
||||||
|
"MMLLH.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijEoMfH",
|
||||||
|
"MMLLf.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijooMHH",
|
||||||
|
"ggffH.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijMMMfH",
|
||||||
|
"MgffH.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijoMgHH",
|
||||||
|
"gMfHr.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijgMgrr",
|
||||||
|
"ggHHr.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijgggHr",
|
||||||
|
"ggHHr.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijgggrr",
|
||||||
|
"IgHrP.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijIIIHr",
|
||||||
|
"gIrrP.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijIIIrr",
|
||||||
|
"IIrPd.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijsIsrr",
|
||||||
|
"IIPPd.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijIssrP",
|
||||||
|
"IIPdd.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijusurP",
|
||||||
|
"ssddF.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijsuuPP",
|
||||||
|
"ssPdF.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijuuurP",
|
||||||
|
"ssFFp.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijuubPP",
|
||||||
|
"usFFp.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijbDDPd",
|
||||||
|
"suFpp.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijbDDdP",
|
||||||
|
"uuFpN.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijbDvdd",
|
||||||
|
"uupNN.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijvvvdd",
|
||||||
|
"bbppN.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijDvvdd",
|
||||||
|
"uuNhh.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijvkzFF",
|
||||||
|
"buNNh.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijkkkdd",
|
||||||
|
"bDNhh.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijkzzdF",
|
||||||
|
"bbhhJ.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijzkzdd",
|
||||||
|
"bbNJJ.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijkzkdF",
|
||||||
|
"DDhJJ.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijkzzdd",
|
||||||
|
"bDJJt.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijzkkdF",
|
||||||
|
"bDJJt.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijzzzdd",
|
||||||
|
"DDJtt.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijkkkdF",
|
||||||
|
"DDtyy.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijzzzdd",
|
||||||
|
"Dvty#.QRSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijzkkdF",
|
||||||
|
"vvy##ijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjzzzdd",
|
||||||
|
"vvy#BBmmmmmKeeGGGGGGGqqOOccEoMMMgggMggIIIsubbbDDvkkkvvvvkkkkkkdF",
|
||||||
|
"vk#BBBmmKKeeGGGGGGOOOcEccEEEMMMMgIIIssuuuubDvvkkkzkzzzzzzzzzzzdd",
|
||||||
|
"kk##mmmKKKKeeGGGqOqOOccEEEoMoMMgggIIsssuuDDDDvvkzkzkkkkkkkkkkkdF",
|
||||||
|
"vGxxllllAAAAAAwAwawaaaaCCCCnnnnLLLfLfffHfHHrrPPPPPPPPddddddddddd",
|
||||||
|
"GxlxlllllAAAAwwwwwaaaCCCCCnCnnLnLLLLffffHHHrrrPrPPPddPPPPddddddF"
|
||||||
|
};
|
67
wmload/mask.xpm
Normal file
67
wmload/mask.xpm
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
/* XPM */
|
||||||
|
static char *mask_xpm[] = {
|
||||||
|
/* width height num_colors chars_per_pixel */
|
||||||
|
" 54 54 6 1",
|
||||||
|
/* colors */
|
||||||
|
". c #000000",
|
||||||
|
"# c #282828",
|
||||||
|
"a c #ffffff",
|
||||||
|
"b c #5a5a5a",
|
||||||
|
"c c #979797",
|
||||||
|
"d c #e6e6e6",
|
||||||
|
/* pixels */
|
||||||
|
".....................................................#",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
".bcd#################################################a",
|
||||||
|
"#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||||
|
};
|
35
wmload/mask2.xbm
Normal file
35
wmload/mask2.xbm
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
#define mask2_width 54
|
||||||
|
#define mask2_height 54
|
||||||
|
static unsigned char mask2_bits[] = {
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
|
491
wmload/wmload.c
Normal file
491
wmload/wmload.c
Normal file
|
@ -0,0 +1,491 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <X11/Xlib.h>
|
||||||
|
#include <X11/xpm.h>
|
||||||
|
#include <X11/extensions/shape.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <math.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <X11/Xatom.h>
|
||||||
|
|
||||||
|
#include "back.xpm"
|
||||||
|
#include "mask2.xbm"
|
||||||
|
#include "mask.xpm"
|
||||||
|
|
||||||
|
#define major_VER 0
|
||||||
|
#define minor_VER 9
|
||||||
|
#define patch_VER 2
|
||||||
|
#define MW_EVENTS (ExposureMask | ButtonPressMask | StructureNotifyMask)
|
||||||
|
#define FALSE 0
|
||||||
|
#define Shape(num) (ONLYSHAPE ? num-5 : num)
|
||||||
|
#define NCPUSTATES 4
|
||||||
|
|
||||||
|
/* Global Data storage/structures ********************************************/
|
||||||
|
static long cp_time[NCPUSTATES];
|
||||||
|
static long last[NCPUSTATES];
|
||||||
|
int ONLYSHAPE=0; /* default value is noshape */
|
||||||
|
int updatespeed = 4;
|
||||||
|
static char *help_message[] = {
|
||||||
|
"where options include:",
|
||||||
|
" -u <secs> updatespeed",
|
||||||
|
" -exe <program> program to start on click",
|
||||||
|
" -led <color> color of the led",
|
||||||
|
" -position [+|-]x[+|-]y position of wmload",
|
||||||
|
" -shape without groundplate",
|
||||||
|
" -iconic start up as icon",
|
||||||
|
" -withdrawn start up withdrawn",
|
||||||
|
" -ver output version",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
/* X11 Variables *************************************************************/
|
||||||
|
Display *dpy; /* welches DISPLAY */
|
||||||
|
Window Root; /* Hintergrund-Drawable */
|
||||||
|
int screen;
|
||||||
|
int x_fd;
|
||||||
|
int d_depth;
|
||||||
|
XSizeHints mysizehints;
|
||||||
|
XWMHints mywmhints;
|
||||||
|
Pixel back_pix, fore_pix;
|
||||||
|
GC NormalGC;
|
||||||
|
Window iconwin, win; /* My home is my window */
|
||||||
|
char *ProgName;
|
||||||
|
char *Geometry;
|
||||||
|
char *LedColor = "LightSeaGreen";
|
||||||
|
char Execute[] = "echo no program has been specified >/dev/console";
|
||||||
|
char *ERR_colorcells = "not enough free color cells\n";
|
||||||
|
char *ampers = " &";
|
||||||
|
|
||||||
|
/* XPM Structures & Variables ************************************************/
|
||||||
|
typedef struct _XpmIcon {
|
||||||
|
Pixmap pixmap;
|
||||||
|
Pixmap mask;
|
||||||
|
XpmAttributes attributes;
|
||||||
|
} XpmIcon;
|
||||||
|
|
||||||
|
XpmIcon wmload;
|
||||||
|
XpmIcon visible;
|
||||||
|
time_t actualtime;
|
||||||
|
long actualmin;
|
||||||
|
|
||||||
|
/* Function definitions ******************************************************/
|
||||||
|
void GetXPM(void);
|
||||||
|
Pixel GetColor(char *name);
|
||||||
|
void RedrawWindow( XpmIcon *v);
|
||||||
|
void InitLoad();
|
||||||
|
void InsertLoad();
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/* Source Code <--> Function Implementations */
|
||||||
|
/*****************************************************************************/
|
||||||
|
void usage()
|
||||||
|
{
|
||||||
|
char **cpp;
|
||||||
|
|
||||||
|
fprintf(stderr,"\nusage: %s [-options ...] \n", ProgName);
|
||||||
|
for (cpp = help_message; *cpp; cpp++) {
|
||||||
|
fprintf(stderr, "%s\n", *cpp);
|
||||||
|
}
|
||||||
|
fprintf(stderr,"\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc,char *argv[])
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
unsigned int borderwidth ;
|
||||||
|
char *display_name = NULL;
|
||||||
|
char *wname = "wmload";
|
||||||
|
XGCValues gcv;
|
||||||
|
unsigned long gcm;
|
||||||
|
XEvent Event;
|
||||||
|
XTextProperty name;
|
||||||
|
XClassHint classHint;
|
||||||
|
Pixmap pixmask;
|
||||||
|
Geometry = "";
|
||||||
|
mywmhints.initial_state = NormalState;
|
||||||
|
|
||||||
|
/* Parse command line options */
|
||||||
|
ProgName = argv[0];
|
||||||
|
|
||||||
|
for(i=1;i<argc;i++) {
|
||||||
|
char *arg= argv[i];
|
||||||
|
|
||||||
|
if (arg[0] == '-') {
|
||||||
|
switch(arg[1]) {
|
||||||
|
case 'u':
|
||||||
|
if(++i >=argc) usage();
|
||||||
|
sscanf(argv[i], "%d", &updatespeed);
|
||||||
|
continue;
|
||||||
|
case 'e':
|
||||||
|
if(++i >=argc) usage();
|
||||||
|
strcpy(&Execute[0], argv[i]);
|
||||||
|
strcat(&Execute[0], " &");
|
||||||
|
continue;
|
||||||
|
case 's':
|
||||||
|
ONLYSHAPE=1;
|
||||||
|
continue;
|
||||||
|
case 'p':
|
||||||
|
if(++i >=argc) usage();
|
||||||
|
Geometry = argv[i];
|
||||||
|
continue;
|
||||||
|
case 'i':
|
||||||
|
mywmhints.initial_state = IconicState;
|
||||||
|
continue;
|
||||||
|
case 'w':
|
||||||
|
mywmhints.initial_state = WithdrawnState;
|
||||||
|
continue;
|
||||||
|
case 'l':
|
||||||
|
if(++i >=argc) usage();
|
||||||
|
LedColor = argv[i];
|
||||||
|
continue;
|
||||||
|
case 'v':
|
||||||
|
fprintf(stdout, "\nwmload version: %i.%i.%i\n", major_VER, minor_VER, patch_VER);
|
||||||
|
if(argc == 2) exit(0);
|
||||||
|
continue;
|
||||||
|
default:
|
||||||
|
usage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fprintf(stderr, "\nInvalid argument: %s\n", arg);
|
||||||
|
usage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Open the display */
|
||||||
|
if (!(dpy = XOpenDisplay(display_name)))
|
||||||
|
{
|
||||||
|
fprintf(stderr,"wmload: can't open display %s\n",
|
||||||
|
XDisplayName(display_name));
|
||||||
|
exit (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
screen= DefaultScreen(dpy);
|
||||||
|
Root = RootWindow(dpy, screen);
|
||||||
|
d_depth = DefaultDepth(dpy, screen);
|
||||||
|
x_fd = XConnectionNumber(dpy);
|
||||||
|
|
||||||
|
/* Convert XPM Data to XImage */
|
||||||
|
GetXPM();
|
||||||
|
|
||||||
|
/* Create a window to hold the banner */
|
||||||
|
mysizehints.flags= USSize|USPosition;
|
||||||
|
mysizehints.x = 0;
|
||||||
|
mysizehints.y = 0;
|
||||||
|
|
||||||
|
back_pix = GetColor("white");
|
||||||
|
fore_pix = GetColor("black");
|
||||||
|
|
||||||
|
XWMGeometry(dpy, screen, Geometry, NULL, (borderwidth =1), &mysizehints,
|
||||||
|
&mysizehints.x,&mysizehints.y,&mysizehints.width,&mysizehints.height, &i);
|
||||||
|
|
||||||
|
mysizehints.width = wmload.attributes.width;
|
||||||
|
mysizehints.height= wmload.attributes.height;
|
||||||
|
|
||||||
|
win = XCreateSimpleWindow(dpy,Root,mysizehints.x,mysizehints.y,
|
||||||
|
mysizehints.width,mysizehints.height,
|
||||||
|
borderwidth,fore_pix,back_pix);
|
||||||
|
iconwin = XCreateSimpleWindow(dpy,win,mysizehints.x,mysizehints.y,
|
||||||
|
mysizehints.width,mysizehints.height,
|
||||||
|
borderwidth,fore_pix,back_pix);
|
||||||
|
|
||||||
|
/* activate hints */
|
||||||
|
XSetWMNormalHints(dpy, win, &mysizehints);
|
||||||
|
classHint.res_name = "wmload";
|
||||||
|
classHint.res_class = "WMLoad";
|
||||||
|
XSetClassHint(dpy, win, &classHint);
|
||||||
|
|
||||||
|
XSelectInput(dpy,win,MW_EVENTS);
|
||||||
|
XSelectInput(dpy,iconwin,MW_EVENTS);
|
||||||
|
XSetCommand(dpy,win,argv,argc);
|
||||||
|
|
||||||
|
if (XStringListToTextProperty(&wname, 1, &name) ==0) {
|
||||||
|
fprintf(stderr, "wmload: can't allocate window name\n");
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
XSetWMName(dpy, win, &name);
|
||||||
|
|
||||||
|
/* Create a GC for drawing */
|
||||||
|
gcm = GCForeground|GCBackground|GCGraphicsExposures;
|
||||||
|
gcv.foreground = fore_pix;
|
||||||
|
gcv.background = back_pix;
|
||||||
|
gcv.graphics_exposures = FALSE;
|
||||||
|
NormalGC = XCreateGC(dpy, Root, gcm, &gcv);
|
||||||
|
|
||||||
|
if (ONLYSHAPE) { /* try to make shaped window here */
|
||||||
|
pixmask = XCreateBitmapFromData(dpy, win, mask2_bits, mask2_width,
|
||||||
|
mask2_height);
|
||||||
|
XShapeCombineMask(dpy, win, ShapeBounding, 0, 0, pixmask, ShapeSet);
|
||||||
|
XShapeCombineMask(dpy, iconwin, ShapeBounding, 0, 0, pixmask, ShapeSet);
|
||||||
|
}
|
||||||
|
|
||||||
|
mywmhints.icon_window = iconwin;
|
||||||
|
mywmhints.icon_x = mysizehints.x;
|
||||||
|
mywmhints.icon_y = mysizehints.y;
|
||||||
|
mywmhints.window_group = win;
|
||||||
|
mywmhints.flags = StateHint | IconWindowHint | IconPositionHint
|
||||||
|
| WindowGroupHint;
|
||||||
|
XSetWMHints(dpy, win, &mywmhints);
|
||||||
|
|
||||||
|
XMapWindow(dpy,win);
|
||||||
|
InitLoad();
|
||||||
|
InsertLoad();
|
||||||
|
RedrawWindow(&visible);
|
||||||
|
while(1)
|
||||||
|
{
|
||||||
|
if (actualtime != time(0))
|
||||||
|
{
|
||||||
|
actualtime = time(0);
|
||||||
|
|
||||||
|
if(actualtime % updatespeed == 0)
|
||||||
|
InsertLoad();
|
||||||
|
|
||||||
|
RedrawWindow(&visible);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* read a packet */
|
||||||
|
while (XPending(dpy))
|
||||||
|
{
|
||||||
|
XNextEvent(dpy,&Event);
|
||||||
|
switch(Event.type)
|
||||||
|
{
|
||||||
|
case Expose:
|
||||||
|
if(Event.xexpose.count == 0 )
|
||||||
|
RedrawWindow(&visible);
|
||||||
|
break;
|
||||||
|
case ButtonPress:
|
||||||
|
system(Execute);
|
||||||
|
break;
|
||||||
|
case DestroyNotify:
|
||||||
|
XFreeGC(dpy, NormalGC);
|
||||||
|
XDestroyWindow(dpy, win);
|
||||||
|
XDestroyWindow(dpy, iconwin);
|
||||||
|
XCloseDisplay(dpy);
|
||||||
|
exit(0);
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
XFlush(dpy);
|
||||||
|
#ifdef SYSV
|
||||||
|
poll((struct poll *) 0, (size_t) 0, 50);
|
||||||
|
#else
|
||||||
|
usleep(50000L); /* 5/100 sec */
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
void nocolor(char *a, char *b)
|
||||||
|
{
|
||||||
|
fprintf(stderr,"wmload: can't %s %s\n", a,b);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/* convert the XPMIcons to XImage */
|
||||||
|
void GetXPM(void)
|
||||||
|
{
|
||||||
|
static char **alt_xpm;
|
||||||
|
XColor col;
|
||||||
|
XWindowAttributes attributes;
|
||||||
|
int ret;
|
||||||
|
char tempc1[12],tempc2[12],tempc3[12];
|
||||||
|
float colr,colg,colb;
|
||||||
|
|
||||||
|
alt_xpm =ONLYSHAPE ? mask_xpm : back_xpm;
|
||||||
|
|
||||||
|
/* for the colormap */
|
||||||
|
XGetWindowAttributes(dpy,Root,&attributes);
|
||||||
|
|
||||||
|
/* get user-defined color or validate the default */
|
||||||
|
if (!XParseColor (dpy, attributes.colormap, LedColor, &col))
|
||||||
|
{
|
||||||
|
nocolor("parse",LedColor);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* scale down the Xcolor values */
|
||||||
|
colr = col.red / 257;
|
||||||
|
colg = col.green / 257;
|
||||||
|
colb = col.blue / 257;
|
||||||
|
/* the brightest color */
|
||||||
|
sprintf(tempc1, "S c #%.2x%.2x%.2x", (int)colr, (int)colg, (int)colb);
|
||||||
|
back_xpm[47] = tempc1;
|
||||||
|
|
||||||
|
/* make medium color */
|
||||||
|
colr = (colr /100) *89;
|
||||||
|
colg = (colg /100) *89;
|
||||||
|
colb = (colb /100) *89;
|
||||||
|
sprintf(tempc2, "R c #%.2x%.2x%.2x", (int)colr, (int)colg, (int)colb);
|
||||||
|
back_xpm[46] = tempc2;
|
||||||
|
|
||||||
|
/* make darkest color */
|
||||||
|
colr = (colr /100) *89;
|
||||||
|
colg = (colg /100) *89;
|
||||||
|
colb = (colb /100) *89;
|
||||||
|
sprintf(tempc3, "Q c #%.2x%.2x%.2x", (int)colr, (int)colg, (int)colb);
|
||||||
|
back_xpm[45] = tempc3;
|
||||||
|
}
|
||||||
|
|
||||||
|
wmload.attributes.valuemask |= (XpmReturnPixels | XpmReturnExtensions);
|
||||||
|
ret = XpmCreatePixmapFromData(dpy, Root, alt_xpm, &wmload.pixmap,
|
||||||
|
&wmload.mask, &wmload.attributes);
|
||||||
|
if(ret != XpmSuccess)
|
||||||
|
{fprintf(stderr, ERR_colorcells);exit(1);}
|
||||||
|
|
||||||
|
visible.attributes.valuemask |= (XpmReturnPixels | XpmReturnExtensions);
|
||||||
|
ret = XpmCreatePixmapFromData(dpy, Root, back_xpm, &visible.pixmap,
|
||||||
|
&visible.mask, &visible.attributes);
|
||||||
|
if(ret != XpmSuccess)
|
||||||
|
{fprintf(stderr, ERR_colorcells);exit(1);}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/* Removes expose events for a specific window from the queue */
|
||||||
|
int flush_expose (Window w)
|
||||||
|
{
|
||||||
|
XEvent dummy;
|
||||||
|
int i=0;
|
||||||
|
|
||||||
|
while (XCheckTypedWindowEvent (dpy, w, Expose, &dummy))i++;
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/* Draws the icon window */
|
||||||
|
void RedrawWindow( XpmIcon *v)
|
||||||
|
{
|
||||||
|
flush_expose (iconwin);
|
||||||
|
XCopyArea(dpy,v->pixmap,iconwin,NormalGC,
|
||||||
|
0,0,v->attributes.width, v->attributes.height,0,0);
|
||||||
|
flush_expose (win);
|
||||||
|
XCopyArea(dpy,v->pixmap,win,NormalGC,
|
||||||
|
0,0,v->attributes.width, v->attributes.height,0,0);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
Pixel GetColor(char *name)
|
||||||
|
{
|
||||||
|
XColor color;
|
||||||
|
XWindowAttributes attributes;
|
||||||
|
|
||||||
|
XGetWindowAttributes(dpy,Root,&attributes);
|
||||||
|
color.pixel = 0;
|
||||||
|
if (!XParseColor (dpy, attributes.colormap, name, &color))
|
||||||
|
{
|
||||||
|
nocolor("parse",name);
|
||||||
|
}
|
||||||
|
else if(!XAllocColor (dpy, attributes.colormap, &color))
|
||||||
|
{
|
||||||
|
nocolor("alloc",name);
|
||||||
|
}
|
||||||
|
return color.pixel;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
void InitLoad()
|
||||||
|
{
|
||||||
|
/* Save the 4 base colors in wmload */
|
||||||
|
XCopyArea(dpy, visible.pixmap, wmload.pixmap, NormalGC,
|
||||||
|
6,6,3,52, Shape(6), Shape(6));
|
||||||
|
|
||||||
|
/* Copy the base panel to visible */
|
||||||
|
XCopyArea(dpy, wmload.pixmap, visible.pixmap, NormalGC,
|
||||||
|
0,0,mysizehints.width, mysizehints.height, 0 ,0);
|
||||||
|
|
||||||
|
/* Remove the 4 base colors from visible */
|
||||||
|
XCopyArea(dpy, visible.pixmap, visible.pixmap, NormalGC,
|
||||||
|
Shape(9),Shape(6),3,52, Shape(6), Shape(6));
|
||||||
|
}
|
||||||
|
|
||||||
|
static char *
|
||||||
|
skip_token(const char *p)
|
||||||
|
{
|
||||||
|
while (isspace(*p)) p++;
|
||||||
|
while (*p && !isspace(*p)) p++;
|
||||||
|
return (char *)p;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GetLoad(int Maximum, int *usr, int *nice, int *sys, int *free)
|
||||||
|
{
|
||||||
|
char buffer[100];/*[4096+1];*/
|
||||||
|
int fd, len;
|
||||||
|
int total;
|
||||||
|
char *p;
|
||||||
|
|
||||||
|
fd = open("/proc/stat", O_RDONLY);
|
||||||
|
len = read(fd, buffer, sizeof(buffer)-1);
|
||||||
|
close(fd);
|
||||||
|
buffer[len] = '\0';
|
||||||
|
|
||||||
|
p = skip_token(buffer); /* "cpu" */
|
||||||
|
|
||||||
|
cp_time[0] = strtoul(p, &p, 0); /* user */
|
||||||
|
cp_time[1] = strtoul(p, &p, 0); /* nice */
|
||||||
|
cp_time[2] = strtoul(p, &p, 0); /* system */
|
||||||
|
cp_time[3] = strtoul(p, &p, 0); /* idle */
|
||||||
|
|
||||||
|
*usr = cp_time[0] - last[0];
|
||||||
|
*nice = cp_time[1] - last[1];
|
||||||
|
*sys = cp_time[2] - last[2];
|
||||||
|
*free = cp_time[3] - last[3];
|
||||||
|
total = *usr + *nice + *sys + *free;
|
||||||
|
|
||||||
|
last[0] = cp_time[0];
|
||||||
|
last[1] = cp_time[1];
|
||||||
|
last[2] = cp_time[2];
|
||||||
|
last[3] = cp_time[3];
|
||||||
|
|
||||||
|
*usr = rint(Maximum * (float)(*usr) /total);
|
||||||
|
*nice =rint(Maximum * (float)(*nice) /total);
|
||||||
|
*sys = rint(Maximum * (float)(*sys) /total);
|
||||||
|
*free = rint(Maximum * (float)(*free) /total);
|
||||||
|
}
|
||||||
|
|
||||||
|
void InsertLoad()
|
||||||
|
{
|
||||||
|
int UserTime, NiceTime, SystemTime, FreeTime, act, constrain;
|
||||||
|
GetLoad( 52, &UserTime, &NiceTime, &SystemTime, &FreeTime);
|
||||||
|
|
||||||
|
constrain = (UserTime + NiceTime + SystemTime + FreeTime);
|
||||||
|
if(constrain == 53)
|
||||||
|
{
|
||||||
|
if(FreeTime > 0) FreeTime--;
|
||||||
|
else if(SystemTime > 0) SystemTime--;
|
||||||
|
else if(NiceTime > 0) NiceTime--;
|
||||||
|
else if(UserTime > 0) UserTime--;
|
||||||
|
}
|
||||||
|
else if(constrain == 51) FreeTime++;
|
||||||
|
|
||||||
|
/* Move the area */
|
||||||
|
XCopyArea(dpy, visible.pixmap, visible.pixmap, NormalGC,
|
||||||
|
Shape(7), Shape(6), 51, 52, Shape(6), Shape(6));
|
||||||
|
|
||||||
|
|
||||||
|
/* User Time */
|
||||||
|
act = 58 - UserTime;
|
||||||
|
if(UserTime > 0)
|
||||||
|
XCopyArea(dpy, wmload.pixmap, visible.pixmap, NormalGC,
|
||||||
|
Shape(6), Shape(6), 1, UserTime, Shape(57), Shape(act));
|
||||||
|
|
||||||
|
/* Nice Time */
|
||||||
|
act = act - NiceTime;
|
||||||
|
if(NiceTime > 0)
|
||||||
|
XCopyArea(dpy, wmload.pixmap, visible.pixmap, NormalGC,
|
||||||
|
Shape(7), Shape(6), 1, NiceTime, Shape(57), Shape(act));
|
||||||
|
|
||||||
|
/* System Time */
|
||||||
|
act = act - SystemTime;
|
||||||
|
if(SystemTime > 0)
|
||||||
|
XCopyArea(dpy, wmload.pixmap, visible.pixmap, NormalGC,
|
||||||
|
Shape(8), Shape(6), 1, SystemTime, Shape(57), Shape(act));
|
||||||
|
|
||||||
|
/* Free Time */
|
||||||
|
if(FreeTime > 0)
|
||||||
|
XCopyArea(dpy, wmload.pixmap, visible.pixmap, NormalGC,
|
||||||
|
Shape(9), Shape(6), 1, FreeTime, Shape(57), Shape(6));
|
||||||
|
}
|
Loading…
Reference in a new issue