[PATCH 1/3] xcompmgr: implement -b to set default root fill color
Forest Bond
forest.bond at outpostembedded.com
Sat Jun 12 15:38:52 PDT 2010
A color name can be passed to specify the background fill color to use
if no root window pixmap is set. If it is not specified, the previous
default (a gray) is used.
Signed-off-by: Forest Bond <forest at alittletooquiet.net>
---
xcompmgr.c | 34 ++++++++++++++++++++++++++++------
1 files changed, 28 insertions(+), 6 deletions(-)
diff --git a/xcompmgr.c b/xcompmgr.c
index 3a01cce..12dcaea 100644
--- a/xcompmgr.c
+++ b/xcompmgr.c
@@ -120,6 +120,7 @@ static Bool clipChanged;
#if HAS_NAME_WINDOW_PIXMAP
static Bool hasNamePixmap;
#endif
+static XRenderColor fill_color;
static int root_height, root_width;
static ignore *ignore_head, **ignore_tail = &ignore_head;
static int xfixes_event, xfixes_error;
@@ -801,11 +802,7 @@ root_tile (Display *dpy)
CPRepeat, &pa);
if (fill)
{
- XRenderColor c;
-
- c.red = c.green = c.blue = 0x8080;
- c.alpha = 0xffff;
- XRenderFillRectangle (dpy, PictOpSrc, picture, &c,
+ XRenderFillRectangle (dpy, PictOpSrc, picture, &fill_color,
0, 0, 1, 1);
}
return picture;
@@ -1863,6 +1860,7 @@ usage (char *program)
fprintf (stderr, " -o opacity\n Specifies the translucency for client-side shadows. (default .75)\n");
fprintf (stderr, " -l left-offset\n Specifies the left offset for client-side shadows. (default -15)\n");
fprintf (stderr, " -t top-offset\n Specifies the top offset for clinet-side shadows. (default -15)\n");
+ fprintf (stderr, " -b color\n Specifies the background color to use if no root pixmap is set. (default is a gray)\n");
fprintf (stderr, " -I fade-in-step\n Specifies the opacity change between steps while fading in. (default 0.028)\n");
fprintf (stderr, " -O fade-out-step\n Specifies the opacity change between steps while fading out. (default 0.03)\n");
fprintf (stderr, " -D fade-delta-time\n Specifies the time between steps in a fade in milliseconds. (default 10)\n");
@@ -1945,8 +1943,9 @@ main (int argc, char **argv)
int composite_major, composite_minor;
char *display = NULL;
int o;
+ char *fill_color_name = NULL;
- while ((o = getopt (argc, argv, "D:I:O:d:r:o:l:t:scnfFCaS")) != -1)
+ while ((o = getopt (argc, argv, "D:I:O:d:r:o:l:t:b:scnfFCaS")) != -1)
{
switch (o) {
case 'd':
@@ -2003,6 +2002,9 @@ main (int argc, char **argv)
case 't':
shadowOffsetY = atoi (optarg);
break;
+ case 'b':
+ fill_color_name = optarg;
+ break;
default:
usage (argv[0]);
break;
@@ -2074,6 +2076,26 @@ main (int argc, char **argv)
presum_gaussian (gaussianMap);
}
+ if (fill_color_name) {
+ XColor c;
+ if (! XParseColor (dpy, DefaultColormap (dpy, scr),
+ fill_color_name, &c)) {
+ fprintf (stderr, "Could not parse fill color.\n");
+ exit (1);
+ }
+ if (! XAllocColor (dpy, DefaultColormap (dpy, scr), &c)) {
+ fprintf (stderr, "Could not allocate color.\n");
+ exit (1);
+ }
+
+ fill_color.red = c.red;
+ fill_color.green = c.green;
+ fill_color.blue = c.blue;
+ } else {
+ fill_color.red = fill_color.green = fill_color.blue = 0x8080;
+ }
+ fill_color.alpha = 0xffff;
+
root_width = DisplayWidth (dpy, scr);
root_height = DisplayHeight (dpy, scr);
--
1.7.0.4
More information about the xorg-devel
mailing list