35 #include <X11/Xlib.h> |
35 #include <X11/Xlib.h> |
36 |
36 |
37 /* mask shorthands, used in event.c and client.c */ |
37 /* mask shorthands, used in event.c and client.c */ |
38 #define BUTTONMASK (ButtonPressMask | ButtonReleaseMask) |
38 #define BUTTONMASK (ButtonPressMask | ButtonReleaseMask) |
39 |
39 |
|
40 enum { BarTop, BarBot, BarOff }; /* bar position */ |
|
41 enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */ |
|
42 enum { ColBorder, ColFG, ColBG, ColLast }; /* color */ |
40 enum { NetSupported, NetWMName, NetLast }; /* EWMH atoms */ |
43 enum { NetSupported, NetWMName, NetLast }; /* EWMH atoms */ |
41 enum { WMProtocols, WMDelete, WMState, WMLast }; /* default atoms */ |
44 enum { WMProtocols, WMDelete, WMState, WMLast }; /* default atoms */ |
42 enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */ |
|
43 enum { ColBorder, ColFG, ColBG, ColLast }; /* color */ |
|
44 |
45 |
45 typedef struct Client Client; |
46 typedef struct Client Client; |
46 struct Client { |
47 struct Client { |
47 char name[256]; |
48 char name[256]; |
48 int x, y, w, h; |
49 int x, y, w, h; |
81 |
82 |
82 extern const char *tags[]; /* all tags */ |
83 extern const char *tags[]; /* all tags */ |
83 char stext[256]; /* status text */ |
84 char stext[256]; /* status text */ |
84 int screen, sx, sy, sw, sh; /* screen geometry */ |
85 int screen, sx, sy, sw, sh; /* screen geometry */ |
85 int wax, way, wah, waw; /* windowarea geometry */ |
86 int wax, way, wah, waw; /* windowarea geometry */ |
86 unsigned int bh, blw; /* bar height, bar layout label width */ |
87 unsigned int bh, blw, bpos; /* bar height, bar layout label width, bar position */ |
87 unsigned int ntags, numlockmask; /* number of tags, dynamic lock mask */ |
88 unsigned int ntags, numlockmask; /* number of tags, dynamic lock mask */ |
88 void (*handler[LASTEvent])(XEvent *); /* event handler */ |
89 void (*handler[LASTEvent])(XEvent *); /* event handler */ |
89 Atom wmatom[WMLast], netatom[NetLast]; |
90 Atom wmatom[WMLast], netatom[NetLast]; |
90 Bool selscreen, *seltag; /* seltag is array of Bool */ |
91 Bool selscreen, *seltag; /* seltag is array of Bool */ |
91 Client *clients, *sel, *stack; /* global client list and stack */ |
92 Client *clients, *sel, *stack; /* global client list and stack */ |
98 /* client.c */ |
99 /* client.c */ |
99 void attach(Client *c); /* attaches c to global client list */ |
100 void attach(Client *c); /* attaches c to global client list */ |
100 void configure(Client *c); /* send synthetic configure event */ |
101 void configure(Client *c); /* send synthetic configure event */ |
101 void detach(Client *c); /* detaches c from global client list */ |
102 void detach(Client *c); /* detaches c from global client list */ |
102 void focus(Client *c); /* focus c, c may be NULL */ |
103 void focus(Client *c); /* focus c, c may be NULL */ |
103 void focustopvisible(void); /* focus top visible window on stack */ |
104 void focustopvisible(void); /* focus top visible window on stack */ |
104 void killclient(const char *arg); /* kill sel nicely */ |
105 void killclient(const char *arg); /* kill sel nicely */ |
105 void manage(Window w, XWindowAttributes *wa); /* manage new client */ |
106 void manage(Window w, XWindowAttributes *wa); /* manage new client */ |
106 void resize(Client *c, int x, int y, |
107 void resize(Client *c, int x, int y, |
107 int w, int h, Bool sizehints); /* resize with given coordinates c*/ |
108 int w, int h, Bool sizehints); /* resize with given coordinates c*/ |
108 void togglefloating(const char *arg); /* toggles sel between floating/tiled state */ |
109 void togglefloating(const char *arg); /* toggles sel between floating/tiled state */ |
109 void updatesizehints(Client *c); /* update the size hint variables of c */ |
110 void updatesizehints(Client *c); /* update the size hint variables of c */ |
110 void updatetitle(Client *c); /* update the name of c */ |
111 void updatetitle(Client *c); /* update the name of c */ |
111 void unmanage(Client *c); /* destroy c */ |
112 void unmanage(Client *c); /* destroy c */ |
112 |
113 |
113 /* draw.c */ |
114 /* draw.c */ |
114 void drawstatus(void); /* draw the bar */ |
115 void drawstatus(void); /* draw the bar */ |
124 void incmasterw(const char *arg); /* increments the master width with arg's index value */ |
125 void incmasterw(const char *arg); /* increments the master width with arg's index value */ |
125 void incnmaster(const char *arg); /* increments nmaster with arg's index value */ |
126 void incnmaster(const char *arg); /* increments nmaster with arg's index value */ |
126 void initlayouts(void); /* initialize layout array */ |
127 void initlayouts(void); /* initialize layout array */ |
127 Client *nexttiled(Client *c); /* returns tiled successor of c */ |
128 Client *nexttiled(Client *c); /* returns tiled successor of c */ |
128 void restack(void); /* restores z layers of all clients */ |
129 void restack(void); /* restores z layers of all clients */ |
129 void setlayout(const char *arg); /* sets layout, -1 toggles */ |
130 void setlayout(const char *arg); /* sets layout, -1 toggles */ |
130 void togglemax(const char *arg); /* toggles maximization of floating client */ |
131 void togglebar(const char *arg); /* shows/hides the bar */ |
|
132 void togglemax(const char *arg); /* toggles maximization of floating client */ |
131 void zoom(const char *arg); /* zooms the focused client to master area, arg is ignored */ |
133 void zoom(const char *arg); /* zooms the focused client to master area, arg is ignored */ |
132 |
134 |
133 /* main.c */ |
135 /* main.c */ |
|
136 void updatebarpos(void); /* updates the bar position */ |
134 void quit(const char *arg); /* quit dwm nicely */ |
137 void quit(const char *arg); /* quit dwm nicely */ |
135 int xerror(Display *dsply, XErrorEvent *ee); /* dwm's X error handler */ |
138 int xerror(Display *dsply, XErrorEvent *ee); /* dwm's X error handler */ |
136 |
139 |
137 /* tag.c */ |
140 /* tag.c */ |
138 void compileregs(void); /* initialize regexps of rules defined in config.h */ |
141 void compileregs(void); /* initialize regexps of rules defined in config.h */ |
139 Bool isvisible(Client *c); /* returns True if client is visible */ |
142 Bool isvisible(Client *c); /* returns True if client is visible */ |
140 void settags(Client *c, Client *trans); /* sets tags of c */ |
143 void settags(Client *c, Client *trans); /* sets tags of c */ |
141 void tag(const char *arg); /* tags sel with arg's index */ |
144 void tag(const char *arg); /* tags sel with arg's index */ |
142 void toggletag(const char *arg); /* toggles sel tags with arg's index */ |
145 void toggletag(const char *arg); /* toggles sel tags with arg's index */ |
143 void toggleview(const char *arg); /* toggles the tag with arg's index (in)visible */ |
146 void toggleview(const char *arg); /* toggles the tag with arg's index (in)visible */ |
144 void view(const char *arg); /* views the tag with arg's index */ |
147 void view(const char *arg); /* views the tag with arg's index */ |
145 |
148 |
146 /* util.c */ |
149 /* util.c */ |
147 void *emallocz(unsigned int size); /* allocates zero-initialized memory, exits on error */ |
150 void *emallocz(unsigned int size); /* allocates zero-initialized memory, exits on error */ |