[openbox] Best way to programmatically toggle decorations?

Oddbjørn Kvalsund oddbjorn at nixx.no
Fri Jun 9 08:18:49 EDT 2006


On Thu 08 Jun 16:05, Gary Scharf wrote:
> What's the best/simplest approach to programmatically setting the
> decorated/undecorated state of a window?

I hope this is not too off-topic, but I have a similar question; I have
found from googling that setting a windows state to fullscreen (from
within the application) can be a potentially tricky issue.
I have however used the following code with great success with openbox
(3.2.7) as my window-manager:

void setfullscreen(Display display, Window window)
{
    XEvent xev;
    XWindowAttributes attr;
    Atom state = XInternAtom(display, "_NET_WM_STATE", 0);
    Atom windowstate = XInternAtom(display, "_NET_WM_STATE_FULLSCREEN", 0);

    XGetWindowAttributes(display, window, &attr);

    xev.type = ClientMessage;
    xev.xclient.type = ClientMessage;
    xev.xclient.serial = 0;
    xev.xclient.send_event = 1;
    xev.xclient.display = display;
    xev.xclient.window = window;
    xev.xclient.message_type = state;
    xev.xclient.format = 32;
    xev.xclient.data.l[0] = 1;
    xev.xclient.data.l[1] = windowstate;
    xev.xclient.data.l[2] = None;

    XSendEvent(display, attr.root, False,
                SubstructureRedirectMask | SubstructureNotifyMask, &xev);
}

My question is this; is this code "enough" to follow the EWMH (1.3) standard?
I have, as I mentioned, found from testing locally that this works great with
openbox, but can I expect this to work with other (EWMH-compliant)
window-managers? What is your impression on EWMH adoption, can I expect the
above code to work with must current desktops (Gnome/KDE/Xfce)?
Should I perhaps add a check on _NET_WM_ALLOWED_ACTIONS to see that the
_NET_WM_STATE_FULLSCREEN state is supported?

Thanks!

-- 
Regards Oddbjørn Kvalsund



More information about the openbox mailing list