I would like to know what I have to do in order to tell most WMs to turn off
all or some window decorations. As far as I know most WM's support either
the property Motif or the property Open Look used for this task.
If I want to do this on XLib level I suppose I have to use
XChangeProperty(). To turn off decorations for all Motif compatible WM I
need now the MwmHints structure definition which I do not have. I also need
the property-name to requesting the right atom.
Could perhaps someone send me the MwmHints struct definition and point out
what is needed additionaly byside of a XChangeProperty() call for my root
window? And does anyone know which WMs use which propertys - KDE, fvwm,
WindowMaker, AfterStep, Enlightenment?
I also heard that I could use override_redirect when creating my root-window
but I am not quite sure what I have to be aware of when using that
thechnique. For instance: Isn't override_redirect a real bypassing of the WM
whereby the WM doesn't get any information about my app so that my app
wouldn't even appear in a WM's taskbar?
Thanks in advance,
Andreas Koepf
here is what I found using metacrawler... It's exactly what I was looking
for! Thanx a thousand times Brian Paul!!
(copied directly from: http://www.ssec.wisc.edu/~brianp/mwmborder.c )
cIAo '`' Andreas Koepf
Source follows:
// ===> BEGIN
/* mwmborder.c */
/*
* This function shows how to remove the border, title bar, resize button,
* etc from a Motif window frame from inside an Xlib-based application.
*
* Brian Paul 19 Sep 1995 bri...@ssec.wisc.edu
*/
#include <X11/Xlib.h>
#include <X11/Xatom.h>
#define HAVE_MOTIF
#ifdef HAVE_MOTIF
#include <X11/Xm/MwmUtil.h>
#else
/* bit definitions for MwmHints.flags */
#define MWM_HINTS_FUNCTIONS (1L << 0)
#define MWM_HINTS_DECORATIONS (1L << 1)
#define MWM_HINTS_INPUT_MODE (1L << 2)
#define MWM_HINTS_STATUS (1L << 3)
/* bit definitions for MwmHints.decorations */
#define MWM_DECOR_ALL (1L << 0)
#define MWM_DECOR_BORDER (1L << 1)
#define MWM_DECOR_RESIZEH (1L << 2)
#define MWM_DECOR_TITLE (1L << 3)
#define MWM_DECOR_MENU (1L << 4)
#define MWM_DECOR_MINIMIZE (1L << 5)
#define MWM_DECOR_MAXIMIZE (1L << 6)
typedef struct
{
unsigned long flags;
unsigned long functions;
unsigned long decorations;
long inputMode;
unsigned long status;
} PropMotifWmHints;
#define PROP_MOTIF_WM_HINTS_ELEMENTS 5
#endif
/*
* Specify which Motif window manager border decorations to put on a
* top-level window. For example, you can specify that a window is not
* resizabe, or omit the titlebar, or completely remove all decorations.
* Input: dpy - the X display
* w - the X window
* flags - bitwise-OR of the MWM_DECOR_xxx symbols in
X11/Xm/MwmUtil.h
* indicating what decoration elements to enable. Zero
would
* be no decoration.
*/
void set_mwm_border( Display *dpy, Window w, unsigned long flags )
{
PropMotifWmHints motif_hints;
Atom prop, proptype;
/* setup the property */
motif_hints.flags = MWM_HINTS_DECORATIONS;
motif_hints.decorations = flags;
/* get the atom for the property */
prop = XInternAtom( dpy, "_MOTIF_WM_HINTS", True );
if (!prop) {
/* something went wrong! */
return;
}
/* not sure this is correct, seems to work, XA_WM_HINTS didn't work */
proptype = prop;
XChangeProperty( dpy, w, /* display, window */
prop, proptype, /* property, type */
32, /* format: 32-bit datums
*/
PropModeReplace, /* mode */
(unsigned char *) &motif_hints, /* data */
PROP_MOTIF_WM_HINTS_ELEMENTS /* nelements */
);
}
// ===> END.
Andreas Koepf <ko...@provisio.de> schrieb in im Newsbeitrag:
7egsei$83n$1...@news.citykom.de...
You can't, really.
|> the property Motif or the property Open Look used for this task.
That's about all you can do, and hope for the best.
|> thechnique. For instance: Isn't override_redirect a real bypassing of the WM
|> whereby the WM doesn't get any information about my app so that my app
|> wouldn't even appear in a WM's taskbar?
Exactly.
--
David B. Lewis Editor, The Motif Developer: http://www.motifzone.com/tmd/
d...@motifzone.com WebWrangler, The Motif Zone: http://www.motifzone.com/