Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Turning off WM's decorations using XLib?!

140 views
Skip to first unread message

Andreas Koepf

unread,
Apr 8, 1999, 3:00:00 AM4/8/99
to
Hi,

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

Andreas Koepf

unread,
Apr 8, 1999, 3:00:00 AM4/8/99
to
Hi again,

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...

David B. Lewis

unread,
Apr 8, 1999, 3:00:00 AM4/8/99
to Andreas Koepf
|> 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

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/

0 new messages