dwm.h
changeset 468 210a99f18657
parent 460 ab4b08d49d24
child 469 a2cc7adf9d4d
equal deleted inserted replaced
467:8852d6a2270e 468:210a99f18657
     2  * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>
     2  * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>
     3  * See LICENSE file for license details.
     3  * See LICENSE file for license details.
     4  *
     4  *
     5  * dynamic window manager is designed like any other X client as well. It is
     5  * dynamic window manager is designed like any other X client as well. It is
     6  * driven through handling X events. In contrast to other X clients, a window
     6  * driven through handling X events. In contrast to other X clients, a window
     7  * manager like dwm selects for SubstructureRedirectMask on the root window, to
     7  * manager selects for SubstructureRedirectMask on the root window, to receive
     8  * receive events about window appearance and disappearance.  Only one X
     8  * events about window (dis-)appearance.  Only one X connection at a time is
     9  * connection at a time is allowed to select for this event mask.
     9  * allowed to select for this event mask.
    10  *
    10  *
    11  * Calls to fetch an X event from the X event queue connection are blocking.
    11  * Calls to fetch an X event from the event queue are blocking.  Due reading
    12  * Due reading status text from standard input, a select-driven main loop has
    12  * status text from standard input, a select-driven main loop has been
    13  * been implemented which selects for reads on the X connection and
    13  * implemented which selects for reads on the X connection and STDIN_FILENO to
    14  * STDIN_FILENO to handle all data smoothly and without busy-loop quirks. The
    14  * handle all data smoothly. The event handlers of dwm are organized in an
    15  * event handlers of dwm are organized in an array which is accessed whenever a
    15  * array which is accessed whenever a new event has been fetched. This allows
    16  * new event has been fetched. This allows event dispatching in O(1) time.
    16  * event dispatching in O(1) time.
    17  *
    17  *
    18  * Each child of the root window is called a client, except windows which have
    18  * Each child of the root window is called a client, except windows which have
    19  * set the override_redirect flag.  Clients are organized in a global
    19  * set the override_redirect flag.  Clients are organized in a global
    20  * doubly-linked client list, the focus history is remembered through a global
    20  * doubly-linked client list, the focus history is remembered through a global
    21  * stack list. Each client contains an array of Bools of the same size as the
    21  * stack list. Each client contains an array of Bools of the same size as the
    22  * global tags array to indicate the tags of a client.  For each client dwm
    22  * global tags array to indicate the tags of a client.  For each client dwm
    23  * creates a small title window which is resized whenever the WM_NAME or
    23  * creates a small title window, which is resized whenever the (_NET_)WM_NAME
    24  * _NET_WM_NAME properties are updated or the client is resized.
    24  * properties are updated or the client is moved/resized.
    25  *
    25  *
    26  * Keys and tagging rules are organized as arrays and defined in the config.h
    26  * Keys and tagging rules are organized as arrays and defined in the config.h
    27  * file. These arrays are kept static in event.o and tag.o respectively,
    27  * file. These arrays are kept static in event.o and tag.o respectively,
    28  * because no other part of dwm needs access to them.  The current mode is
    28  * because no other part of dwm needs access to them.  The current mode is
    29  * represented by the arrange function pointer which wether points to dofloat
    29  * represented by the arrange function pointer, which wether points to dofloat
    30  * or dotile. 
    30  * or dotile. 
    31  *
    31  *
    32  * To understand everything else, start with reading main.c:main().
    32  * To understand everything else, start reading main.c:main().
    33  */
    33  */
    34 
    34 
    35 #include "config.h"
    35 #include "config.h"
    36 #include <X11/Xlib.h>
    36 #include <X11/Xlib.h>
    37 
    37