Hello,

xcompmgr fills the root window by #808080 if there is no
_XROOTPMAP_ID property or something found.

May I propose by the attached little tweak to make the above grey
value configurable by command-line by the

    -b colorname

parameter.  The proposal uses XLookupColor() to resolve this name
into RGB values used by XRenderFillRectangle() in root_tile() in
xcompmgr.c.

Greetings,

    Eeri Kask

--- xcompmgr.c.orig     2009-09-19 19:45:12.000000000 +0200
+++ xcompmgr.c  2009-09-19 19:54:07.000000000 +0200
@@ -760,6 +760,8 @@
     NULL,
 };
     
+static XRenderColor RootFill = {.red = 0x8080, .green = 0x8080, .blue = 
0x8080, .alpha = 0xffff};
+
 static Picture
 root_tile (Display *dpy)
 {
@@ -800,12 +802,7 @@
                                    CPRepeat, &pa);
     if (fill)
     {
-       XRenderColor    c;
-       
-       c.red = c.green = c.blue = 0x8080;
-       c.alpha = 0xffff;
-       XRenderFillRectangle (dpy, PictOpSrc, picture, &c, 
-                             0, 0, 1, 1);
+       XRenderFillRectangle (dpy, PictOpSrc, picture, &RootFill, 0, 0, 1, 1);
     }
     return picture;
 }
@@ -1865,6 +1862,7 @@
     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");
+    fprintf (stderr, "   -b color\n      Specifies screen background fill 
color if no root window pixmap set. (default #808080)\n");
     fprintf (stderr, "   -a\n      Use automatic server-side compositing. 
Faster, but no special effects.\n");
     fprintf (stderr, "   -c\n      Draw client-side shadows with fuzzy 
edges.\n");
     fprintf (stderr, "   -C\n      Avoid drawing shadows on dock/panel 
windows.\n");
@@ -1944,8 +1942,9 @@
     int                    composite_major, composite_minor;
     char           *display = NULL;
     int                    o;
+    char           *rootfill = 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':
@@ -2002,6 +2001,9 @@
        case 't':
            shadowOffsetY = atoi (optarg);
            break;
+       case 'b':
+           rootfill = optarg;
+           break;
        default:
            usage (argv[0]);
            break;
@@ -2065,6 +2067,16 @@
     winDialogAtom = XInternAtom (dpy, "_NET_WM_WINDOW_TYPE_DIALOG", False);
     winNormalAtom = XInternAtom (dpy, "_NET_WM_WINDOW_TYPE_NORMAL", False);
 
+    if (rootfill != NULL)
+    {
+       XColor col, tmp;
+       if (XLookupColor (dpy, DefaultColormap (dpy, scr), rootfill, &col, 
&tmp)) {
+           RootFill.red = col.red;
+           RootFill.green = col.green;
+           RootFill.blue = col.blue;
+       }
+    }
+
     pa.subwindow_mode = IncludeInferiors;
 
     if (compMode == CompClientShadows)
_______________________________________________
xorg mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/xorg

Reply via email to