wmifs: Add -c command line option allowing users to set color.
This commit is contained in:
parent
627f693e36
commit
bcd1d50e02
2 changed files with 76 additions and 0 deletions
|
@ -54,6 +54,9 @@ Scrolling interval, in seconds (default: 5)
|
||||||
.TP
|
.TP
|
||||||
.B \-w
|
.B \-w
|
||||||
Use the waveform graph instead of the classic one.
|
Use the waveform graph instead of the classic one.
|
||||||
|
.TP
|
||||||
|
.B \-c <color>
|
||||||
|
Set color.
|
||||||
|
|
||||||
.SH FILES
|
.SH FILES
|
||||||
.TP
|
.TP
|
||||||
|
|
|
@ -255,6 +255,8 @@ int WaveForm = 0;
|
||||||
int LockMode = 0;
|
int LockMode = 0;
|
||||||
int SampleInt = DEFAULT_SAMPLE_INTERVAL;
|
int SampleInt = DEFAULT_SAMPLE_INTERVAL;
|
||||||
int ScrollSpeed = CHECK_INTERFACE_INTERVAL;
|
int ScrollSpeed = CHECK_INTERFACE_INTERVAL;
|
||||||
|
XpmIcon wmgen;
|
||||||
|
char color[256];
|
||||||
|
|
||||||
/*****************/
|
/*****************/
|
||||||
/* PPP variables */
|
/* PPP variables */
|
||||||
|
@ -296,6 +298,7 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
color[0] = 0;
|
||||||
|
|
||||||
/* Parse Command Line */
|
/* Parse Command Line */
|
||||||
|
|
||||||
|
@ -304,6 +307,12 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
if (*arg == '-') {
|
if (*arg == '-') {
|
||||||
switch (arg[1]) {
|
switch (arg[1]) {
|
||||||
|
case 'c' :
|
||||||
|
if (argc > i+1) {
|
||||||
|
strcpy(color, argv[i+1]);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case 'd':
|
case 'd':
|
||||||
if (strcmp(arg+1, "display")) {
|
if (strcmp(arg+1, "display")) {
|
||||||
usage();
|
usage();
|
||||||
|
@ -344,6 +353,21 @@ int main(int argc, char *argv[])
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Pixel scale_pixel(Pixel pixel, float scale)
|
||||||
|
{
|
||||||
|
int red, green, blue;
|
||||||
|
|
||||||
|
red = pixel / ( 1 << 16 );
|
||||||
|
green = pixel % (1 << 16) / (1 << 8);
|
||||||
|
blue = pixel % (1 << 8);
|
||||||
|
|
||||||
|
red *= scale;
|
||||||
|
green *= scale;
|
||||||
|
blue *= scale;
|
||||||
|
|
||||||
|
return red * (1 << 16) + green * (1 << 8) + blue;
|
||||||
|
}
|
||||||
|
|
||||||
/*******************************************************************************\
|
/*******************************************************************************\
|
||||||
|* wmifs_routine *|
|
|* wmifs_routine *|
|
||||||
\*******************************************************************************/
|
\*******************************************************************************/
|
||||||
|
@ -443,6 +467,54 @@ void wmifs_routine(int argc, char **argv)
|
||||||
|
|
||||||
parse_rcfile("/etc/wmifsrc.fixed", wmifs_keys);
|
parse_rcfile("/etc/wmifsrc.fixed", wmifs_keys);
|
||||||
|
|
||||||
|
/* set user-defined colors */
|
||||||
|
if (color[0] != 0) {
|
||||||
|
Window Root;
|
||||||
|
XColor col;
|
||||||
|
XWindowAttributes attributes;
|
||||||
|
int screen;
|
||||||
|
Pixel pixel;
|
||||||
|
#define NUMSYMBOLS 4
|
||||||
|
XpmColorSymbol user_color[NUMSYMBOLS] = {
|
||||||
|
{NULL, "#2081B2CAAEBA", 0}, /* + */
|
||||||
|
{NULL, "#28A23CF338E3", 0}, /* O */
|
||||||
|
{NULL, "#000049244103", 0}, /* @ */
|
||||||
|
{NULL, "#18618A288617", 0}, /* # */
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* code based on GetColor() from wmgeneral.c */
|
||||||
|
/* we need a temporary display to parse the color */
|
||||||
|
display = XOpenDisplay(NULL);
|
||||||
|
screen = DefaultScreen(display);
|
||||||
|
Root = RootWindow(display, screen);
|
||||||
|
XGetWindowAttributes(display, Root, &attributes);
|
||||||
|
|
||||||
|
col.pixel = 0;
|
||||||
|
if (!XParseColor(display, attributes.colormap, color, &col)) {
|
||||||
|
fprintf(stderr, "wmtime: can't parse %s.\n", color);
|
||||||
|
goto draw_window;
|
||||||
|
} else if (!XAllocColor(display, attributes.colormap, &col)) {
|
||||||
|
fprintf(stderr, "wmtime: can't allocate %s.\n", color);
|
||||||
|
goto draw_window;
|
||||||
|
}
|
||||||
|
|
||||||
|
pixel = col.pixel;
|
||||||
|
|
||||||
|
/* replace colors from wmtime-master.xpm */
|
||||||
|
user_color[0].pixel = pixel;
|
||||||
|
user_color[1].pixel = scale_pixel(pixel, .3);
|
||||||
|
user_color[2].pixel = scale_pixel(pixel, .4);
|
||||||
|
user_color[3].pixel = scale_pixel(pixel, .8);
|
||||||
|
|
||||||
|
wmgen.attributes.valuemask |= XpmColorSymbols;
|
||||||
|
wmgen.attributes.numsymbols = NUMSYMBOLS;
|
||||||
|
wmgen.attributes.colorsymbols = user_color;
|
||||||
|
|
||||||
|
XCloseDisplay(display);
|
||||||
|
}
|
||||||
|
|
||||||
|
draw_window:
|
||||||
openXwindow(argc, argv, wmifs_master_xpm, (char*)wmifs_mask_bits, wmifs_mask_width, wmifs_mask_height);
|
openXwindow(argc, argv, wmifs_master_xpm, (char*)wmifs_mask_bits, wmifs_mask_width, wmifs_mask_height);
|
||||||
|
|
||||||
/* > Button */
|
/* > Button */
|
||||||
|
@ -937,6 +1009,7 @@ void usage(void)
|
||||||
fprintf(stderr, "\t-s <interval>\tscrolling interval, in seconds (default: 5)\n");
|
fprintf(stderr, "\t-s <interval>\tscrolling interval, in seconds (default: 5)\n");
|
||||||
fprintf(stderr, "\t-v\tprint the version number\n");
|
fprintf(stderr, "\t-v\tprint the version number\n");
|
||||||
fprintf(stderr, "\t-w\twaveform load\n");
|
fprintf(stderr, "\t-w\twaveform load\n");
|
||||||
|
fprintf(stderr, "\t-c <color>\tset color\n");
|
||||||
fprintf(stderr, "\n");
|
fprintf(stderr, "\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue