Hi there,

if someone is willing to implement a wmi-10 layout, the layout
interface won't change now anymore. If you like to get in touch
just pull from darcs or mercurial repository.

See wmii/cmd/wm/layout_*.c for details how to implement a
layout.

The interface looks like:

struct Layout {
        char *name;
        void (*init) (Area *);      /* called when layout is initialized */
        void (*deinit) (Area *);    /* called when layout is uninitialized */
        void (*arrange) (Area *);   /* called when area is resized */
        Bool (*attach) (Area *, Client *);  /* called on attach */
        void (*detach) (Area *, Client *, Bool unmap);  /* called on detach */
        void (*resize) (Frame *, XRectangle *, XPoint *);   /* called after 
resize */
        void (*select) (Frame *, Bool raise);   /* selection */
        Container *(*get_frames) (Area *);  /* called for drawing */
        Action *(*get_actions) (Area *); /* local action table */
};

See wmii/cmd/wm/wm.h for further details about the structs.
See wmii/libcext/cext.h for details about the Container data
structure which provides a single linked list and a stack in one
implementation (list for navigation, stack for focus history) -
which is useful for frames, clients, areas and even pages.

To store arbitrary stuff in an area, there is an Area->aux
pointer, same can be done with frames, which contain a Frame->aux pointer.
Note that each layout implementation needs to create and destroy
frames by itself (this is required because otherwise a wmi-10
alike layout which assumes tabbing, won't be possible).

Note, that the pseudofs will be removed, thus there might be
minor changes if you're going to implement your own layout.

Regards,
-- 
 Anselm R. Garbe  ><><  www.ebrag.de  ><><  GPG key: 0D73F361

_______________________________________________
[email protected] mailing list
http://wmii.de/cgi-bin/mailman/listinfo/wmii

Reply via email to