-extern const char *tags[]; /* all tags */
-extern char stext[256]; /* status text */
-extern int bh, bmw; /* bar height, bar mode label width */
-extern int screen, sx, sy, sw, sh; /* screen geometry */
-extern int wax, way, wah, waw; /* windowarea geometry */
-extern unsigned int master, nmaster; /* master percent, number of master clients */
-extern unsigned int ntags, numlockmask; /* number of tags, dynamic lock mask */
-extern void (*handler[LASTEvent])(XEvent *); /* event handler */
-extern void (*arrange)(void); /* arrange function, indicates mode */
-extern Atom wmatom[WMLast], netatom[NetLast];
-extern Bool activescreen, running, *seltag; /* seltag is array of Bool */
-extern Client *clients, *sel, *stack; /* global client list and stack */
-extern Cursor cursor[CurLast];
-extern DC dc; /* global draw context */
-extern Display *dpy;
-extern Window root, barwin;
+typedef struct {
+ int x, y, w, h;
+ unsigned long norm[ColLast];
+ unsigned long sel[ColLast];
+ Drawable drawable;
+ GC gc;
+ struct {
+ int ascent;
+ int descent;
+ int height;
+ XFontSet set;
+ XFontStruct *xfont;
+ } font;
+} DC; /* draw context */
+
+typedef struct {
+ const char *symbol;
+ void (*arrange)(void);
+} Layout;
+
+extern const char *tags[]; /* all tags */
+char stext[256]; /* status text */
+int screen, sx, sy, sw, sh; /* screen geometry */
+int wax, way, wah, waw; /* windowarea geometry */
+unsigned int bh, blw; /* bar height, bar layout label width */
+unsigned int ntags, numlockmask; /* number of tags, dynamic lock mask */
+void (*handler[LASTEvent])(XEvent *); /* event handler */
+Atom wmatom[WMLast], netatom[NetLast];
+Bool selscreen, *seltag; /* seltag is array of Bool */
+Client *clients, *sel, *stack; /* global client list and stack */
+Cursor cursor[CurLast];
+DC dc; /* global draw context */
+Display *dpy;
+Layout *lt;
+Window root, barwin;