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