Re: Are their public standards for "window manager compatability"?



On 10 May, George shouted:
->  > PJ> On the WM list, I asked the experts about gnome compatability and they
->  > PJ> reacted with, well, dismay.  Several indicated they had made an effort
->  > PJ> to find out what Gnome would require and they were not able to do so.
->  > 
->  > There are also folks wanting to add the necessary support to FVWM, but
->  > until we know _exactly_ what is required, there isn't much anyone can do.
->  > Is there a document that we can work from?
->  
->  as of now I think only honouring mwm is enough ... other stuff is more up
->  to the wm writers ...
->  
->  one thing that will have to be supported by wm's is session managment!!!
->  
->  other stuff are some hints for sticky windows etc etc ... the icewm
->  author is already putting these in so you'd better ask him for what they
->  are so that we only end up with one set of hints :)
->  
->  so what is needed:
->  MWM hints
->  SM support
->  ICEWM hints (or equivalent, but I would coordinate with the icewm guy)

Well I can't find any docs on the ICEWM hints anywhere - I don't know
if they are planned or have ben coded, but here's E 0.14's Extended
hints:

#define EXTENDED_HINT_STICKY            (1<<0)
#define EXTENDED_HINT_ONTOP             (1<<1)
#define EXTENDED_HINT_ONBOTTOM          (1<<2)
#define EXTENDED_HINT_NEVER_USE_AREA    (1<<3)
#define EXTENDED_HINT_DESKTOP           (1<<4)

typedef struct _extended_hints
{
   int flags;
   int desktop;
} ExtendedHints;

void
GNOME_GetHints(EWin *ewin)
{
   Atom                a1, a3;
   unsigned long       lnum, ldummy;
   int                 dummy;
   ExtendedHints       *eh;

   a1 = XInternAtom(disp, "WM_EXTENDED_HINTS", False);
   eh = NULL;
   XGetWindowProperty(disp, ewin->client.win, a1, 0, sizeof(ExtendedHints)/
                      sizeof(unsigned long), False, a1, &a3, &dummy, &lnum, 
                      &ldummy, (unsigned char **)&eh);
   if (eh)
     {
        if (eh->flags & EXTENDED_HINT_STICKY)
          ewin->sticky = 1;
        if (eh->flags & EXTENDED_HINT_ONTOP)
          ewin->ontop = 1;
        if (eh->flags & EXTENDED_HINT_ONBOTTOM)
          ewin->onbottom = 1;
        if (eh->flags & EXTENDED_HINT_NEVER_USE_AREA)
          ewin->never_use_area = 1;
        if (eh->flags & EXTENDED_HINT_DESKTOP)
          ewin->desktop = eh->desktop&0x1f;
        XFree(eh);
     }
}

most fields/flags should be self-explanatory, except
EXTENDED_HINT_NEVER_USE_AREA, whihc basically if for something like the
panel- so if you "maximise" an app it disregards the space the panel
window takes up as part of the screen only maximising the app to the
edge of the panel and no further.

->  George
->  

-- 
--------------- Codito, ergo sum - "I code, therefore I am" --------------------
raster@rasterman.com       /\___ /\ ___/||\___ ____/|/\___  raster@redhat.com
Carsten Haitzler           | _ //__\\ __||_ __\\ ___|| _ /  Red Hat Advanced
218/21 Conner Drive        || // __ \\_ \ | |   \ _/_|| /   Development Labs
Chapel Hill NC 27514 USA   ||\\\/  \//__/ |_|   /___/||\\   919 547 0012 ext 282
+1 (919) 929 9443, 801 4392   For pure Enlightenmenthttp://www.rasterman.com/ 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]