headerless window, undecoration

Steven J Abner pheonix.sja at att.net
Wed Apr 16 17:00:01 UTC 2025


 Managed to create undecorated window. Seems to imply can only be done 
by window managers that support Motif.
 I don't understand it, but reply for any that follow.

 The gdk version supplied this from xprop:
_MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x2, 0x0, 0x0, 0x0, 0x0
 My xcb version supplies:
_MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
0x0, 0x0, 0x0

 Seems to work, focus, close, min, max, stack... haven't hooked in 
move/resize.
The code that did it for me:

typedef struct Hints {
  unsigned long flags;
  unsigned long functions;
  unsigned long decorations;
  long inputMode;
  unsigned long status;
} Hints;

Hints hints = { 0 };
hints.flags = 2;
hints.decorations = 0;
c0 = xcb_intern_atom(session->connection, 0, 15, "_MOTIF_WM_HINTS");
r0 = xcb_intern_atom_reply(session->connection, c0, NULL);
xcb_change_property(session->connection, XCB_PROP_MODE_REPLACE, window,
                    r0->atom, r0->atom, 32, sizeof(hints) >> 2,
                    &hints);
free(r0);

The clue was from stack overflow of 14 years ago
Xlib How Does This (Removing Window Decoration) Work?

I haven't removed extra code to test if it's the sole code solution as 
I have extra code to try and match xprop outputs. And in motif code, 
haven't found the 'Hints' struct yet to verify that portion of code.

Steve





More information about the Xcb mailing list