Here is a switcher patch to disable window list:
It's very useful if you set opacity to 0. Then, window just bring to front one
by one while switching. It's much more usable, i think, that small miniatures
in a list where you don't see anything.
While making this patch, a question come into my head, nobody know on
compiz.biz and some people are as curious as me.
Two code example:
/**********/
case SWITCH_SCREEN_OPTION_MIPMAP:
case SWITCH_SCREEN_OPTION_ICON:
case SWITCH_SCREEN_OPTION_MINIMIZED:
if (compSetBoolOption (o, value))
return TRUE;
break;
/**********/
/**********/
case SWITCH_SCREEN_OPTION_BRINGTOFRONT:
if (compSetBoolOption (o, value))
{
ss->bringToFront = o->value.b;
return TRUE;
}
/**********/
At first look, i tell me: "How plugin know that MINIMIZED option had change if
we do nothing more than returning TRUE. After looking the code, i saw this:
ss->opt[SWITCH_SCREEN_OPTION_MINIMIZED].value.b
So my question is:
When do i have to directly read CompOption?
When do i have to add a member to my plugin struct and update it in
pluginSetScreenOption() ?
Cedric
--- compiz_orig/plugins/switcher.c 2006-11-11 23:26:22.010968361 +0100
+++ compiz/plugins/switcher.c 2006-11-11 23:21:44.211200345 +0100
@@ -83,6 +83,8 @@
#define SWITCH_MINIMIZED_DEFAULT TRUE
+#define SWITCH_SHOW_WINDOW_LIST_DEFAULT TRUE
+
static char *winType[] = {
N_("Toolbar"),
N_("Utility"),
@@ -110,18 +112,19 @@
Atom selectWinAtom;
} SwitchDisplay;
-#define SWITCH_SCREEN_OPTION_SPEED 0
-#define SWITCH_SCREEN_OPTION_TIMESTEP 1
-#define SWITCH_SCREEN_OPTION_WINDOW_TYPE 2
-#define SWITCH_SCREEN_OPTION_MIPMAP 3
-#define SWITCH_SCREEN_OPTION_SATURATION 4
-#define SWITCH_SCREEN_OPTION_BRIGHTNESS 5
-#define SWITCH_SCREEN_OPTION_OPACITY 6
-#define SWITCH_SCREEN_OPTION_BRINGTOFRONT 7
-#define SWITCH_SCREEN_OPTION_ZOOM 8
-#define SWITCH_SCREEN_OPTION_ICON 9
-#define SWITCH_SCREEN_OPTION_MINIMIZED 10
-#define SWITCH_SCREEN_OPTION_NUM 11
+#define SWITCH_SCREEN_OPTION_SPEED 0
+#define SWITCH_SCREEN_OPTION_TIMESTEP 1
+#define SWITCH_SCREEN_OPTION_WINDOW_TYPE 2
+#define SWITCH_SCREEN_OPTION_MIPMAP 3
+#define SWITCH_SCREEN_OPTION_SATURATION 4
+#define SWITCH_SCREEN_OPTION_BRIGHTNESS 5
+#define SWITCH_SCREEN_OPTION_OPACITY 6
+#define SWITCH_SCREEN_OPTION_BRINGTOFRONT 7
+#define SWITCH_SCREEN_OPTION_ZOOM 8
+#define SWITCH_SCREEN_OPTION_ICON 9
+#define SWITCH_SCREEN_OPTION_MINIMIZED 10
+#define SWITCH_SCREEN_OPTION_SHOW_WINDOW_LIST 11
+#define SWITCH_SCREEN_OPTION_NUM 12
typedef struct _SwitchScreen {
PreparePaintScreenProc preparePaintScreen;
@@ -171,6 +174,7 @@
Bool bringToFront;
Bool allWindows;
+ Bool showWindowList;
} SwitchScreen;
#define MwmHintsDecorations (1L << 1)
@@ -252,7 +256,7 @@
int index;
SWITCH_SCREEN (screen);
-
+
o = compFindOption (ss->opt, NUM_OPTIONS (ss), name, &index);
if (!o)
return FALSE;
@@ -285,6 +289,13 @@
if (compSetBoolOption (o, value))
return TRUE;
break;
+ case SWITCH_SCREEN_OPTION_SHOW_WINDOW_LIST:
+ if (compSetBoolOption (o, value))
+ {
+ ss->showWindowList = o->value.b;
+ return TRUE;
+ }
+ break;
case SWITCH_SCREEN_OPTION_SATURATION:
if (compSetIntOption (o, value))
{
@@ -443,6 +454,13 @@
o->longDesc = N_("Show minimized windows");
o->type = CompOptionTypeBool;
o->value.b = SWITCH_MINIMIZED_DEFAULT;
+
+ o = &ss->opt[SWITCH_SCREEN_OPTION_SHOW_WINDOW_LIST];
+ o->name = "window_list";
+ o->shortDesc = N_("Window list");
+ o->longDesc = N_("Show window list");
+ o->type = CompOptionTypeBool;
+ o->value.b = SWITCH_SHOW_WINDOW_LIST_DEFAULT;
}
static void
@@ -776,42 +794,50 @@
attr.colormap = XCreateColormap (dpy, s->root, visual,
AllocNone);
- ss->popupWindow =
- XCreateWindow (dpy, s->root,
- s->width / 2 - xsh.width / 2,
- s->height / 2 - xsh.height / 2,
- xsh.width, xsh.height, 0,
- 32, InputOutput, visual,
- CWBackPixel | CWBorderPixel | CWColormap, &attr);
-
- XSetWMProperties (dpy, ss->popupWindow, NULL, NULL,
- programArgv, programArgc,
- &xsh, &xwmh, NULL);
-
- mwmHintsAtom = XInternAtom (dpy, "_MOTIF_WM_HINTS", 0);
-
- memset (&mwmHints, 0, sizeof (mwmHints));
-
- mwmHints.flags = MwmHintsDecorations;
- mwmHints.decorations = 0;
-
- XChangeProperty (dpy, ss->popupWindow, mwmHintsAtom, mwmHintsAtom,
- 8, PropModeReplace, (unsigned char *) &mwmHints,
- sizeof (mwmHints));
-
- state[nState++] = s->display->winStateAboveAtom;
- state[nState++] = s->display->winStateStickyAtom;
- state[nState++] = s->display->winStateSkipTaskbarAtom;
- state[nState++] = s->display->winStateSkipPagerAtom;
-
- XChangeProperty (dpy, ss->popupWindow,
- XInternAtom (dpy, "_NET_WM_STATE", 0),
- XA_ATOM, 32, PropModeReplace,
- (unsigned char *) state, nState);
-
- setWindowProp (s->display, ss->popupWindow,
- s->display->winDesktopAtom,
- 0xffffffff);
+ if (!ss->showWindowList && ss->popupWindow)
+ {
+ XUnmapWindow (s->display->display, ss->popupWindow);
+ }
+
+ if (ss->showWindowList)
+ {
+ ss->popupWindow =
+ XCreateWindow (dpy, s->root,
+ s->width / 2 - xsh.width / 2,
+ s->height / 2 - xsh.height / 2,
+ xsh.width, xsh.height, 0,
+ 32, InputOutput, visual,
+ CWBackPixel | CWBorderPixel | CWColormap, &attr);
+
+ XSetWMProperties (dpy, ss->popupWindow, NULL, NULL,
+ programArgv, programArgc,
+ &xsh, &xwmh, NULL);
+
+ mwmHintsAtom = XInternAtom (dpy, "_MOTIF_WM_HINTS", 0);
+
+ memset (&mwmHints, 0, sizeof (mwmHints));
+
+ mwmHints.flags = MwmHintsDecorations;
+ mwmHints.decorations = 0;
+
+ XChangeProperty (dpy, ss->popupWindow, mwmHintsAtom, mwmHintsAtom,
+ 8, PropModeReplace, (unsigned char *) &mwmHints,
+ sizeof (mwmHints));
+
+ state[nState++] = s->display->winStateAboveAtom;
+ state[nState++] = s->display->winStateStickyAtom;
+ state[nState++] = s->display->winStateSkipTaskbarAtom;
+ state[nState++] = s->display->winStateSkipPagerAtom;
+
+ XChangeProperty (dpy, ss->popupWindow,
+ XInternAtom (dpy, "_NET_WM_STATE", 0),
+ XA_ATOM, 32, PropModeReplace,
+ (unsigned char *) state, nState);
+
+ setWindowProp (s->display, ss->popupWindow,
+ s->display->winDesktopAtom,
+ 0xffffffff);
+ }
}
if (!ss->grabIndex)
@@ -843,7 +869,8 @@
}
}
- setSelectedWindowHint (s);
+ if (ss->showWindowList)
+ setSelectedWindowHint (s);
}
damageScreen (s);
@@ -1276,6 +1303,11 @@
{
SWITCH_SCREEN (s);
+ if (!ss->showWindowList && ss->popupWindow)
+ {
+ XUnmapWindow (s->display->display, ss->popupWindow);
+ }
+
if (ss->moreAdjust)
{
int steps, m;
@@ -2041,7 +2073,8 @@
ss->bringToFront = SWITCH_BRINGTOFRONT_DEFAULT;
ss->allWindows = FALSE;
-
+ ss->showWindowList = SWITCH_SHOW_WINDOW_LIST_DEFAULT;
+
switchScreenInitOptions (ss);
addScreenAction (s, &sd->opt[SWITCH_DISPLAY_OPTION_NEXT].value.action);
--- compiz_orig/plugins/compiz.schemas.in 2006-11-11 14:23:04.473547296 +0100
+++ compiz/plugins/compiz.schemas.in 2006-11-11 14:26:21.811547360 +0100
@@ -32138,6 +32138,18 @@
</schema>
<schema>
+ <key>/schemas/apps/compiz/plugins/zoom/screen0/options/zoom_factor</key>
+ <applyto>/apps/compiz/plugins/zoom/screen0/options/zoom_factor</applyto>
+ <owner>compiz</owner>
+ <type>float</type>
+ <default>2.000000</default>
+ <locale name="C">
+ <short>Zoom factor</short>
+ <long>Zoom factor (1.01-3.0)</long>
+ </locale>
+ </schema>
+
+ <schema>
<key>/schemas/apps/compiz/plugins/zoom/screen0/options/filter_linear</key>
<applyto>/apps/compiz/plugins/zoom/screen0/options/filter_linear</applyto>
<owner>compiz</owner>
_______________________________________________
compiz mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/compiz