1 /* Copyright (c) 1994 David Hogan, 2000 Benjamin Drieu, see README for licence details */
2 
3 #define BORDER      _border
4 #define MAXHIDDEN   32
5 #define B3FIXED     5
6 #define NUMVIRTUALS 12
7 
8 #define AllButtonMask   (Button1Mask|Button2Mask|Button3Mask \
9             |Button4Mask|Button5Mask)
10 #define ButtonMask  (ButtonPressMask|ButtonReleaseMask)
11 #define MenuMask    (ButtonMask|ButtonMotionMask|ExposureMask)
12 #define MenuGrabMask    (ButtonMask|ButtonMotionMask|StructureNotifyMask)
13 
14 #ifdef  Plan9
15 #define DEFSHELL    "/bin/rc"
16 #else
17 #define DEFSHELL    "/bin/sh"
18 #endif
19 
20 typedef struct Client   Client;
21 typedef struct Menu Menu;
22 
23 struct Client {
24     Window      window;
25     Window      parent;
26     Window      trans;
27     Client      *next;
28     Client      *revert;
29 
30     int         x;
31     int         y;
32     int         dx;
33     int         dy;
34     int         border;
35 
36     XSizeHints  size;
37     int         min_dx;
38     int         min_dy;
39 
40     int         state;
41     int         init;
42     int         reparenting;
43     int         is9term;
44     int         hold;
45     int         proto;
46 
47     char        *label;
48     char        *instance;
49     char        *class;
50     char        *name;
51     char        *iconname;
52 
53     Colormap    cmap;
54     int         ncmapwins;
55     Window      *cmapwins;
56     Colormap    *wmcmaps;
57 
58     /* benj: virtual screen */
59     int		virtual;
60 };
61 
62 #define hidden(c)       ((c)->state == IconicState)
63 #define withdrawn(c)    ((c)->state == WithdrawnState)
64 #define normal(c)       ((c)->state == NormalState)
65 
66 /* c->proto */
67 #define Pdelete     1
68 #define Ptakefocus  2
69 
70 struct Menu {
71     char    **item;
72     char    *(*gen)();
73     int lasthit;
74 };
75 
76 /* 9wm.c */
77 extern Display      *dpy;
78 extern int          screen;
79 extern Window       root;
80 extern Window       menuwin;
81 extern Colormap     def_cmap;
82 extern int          initting;
83 extern GC           gc;
84 extern XFontStruct  *font;
85 extern int          nostalgia;
86 extern Atom	    exit_9wm;
87 extern Atom	    restart_9wm;
88 extern Atom         wm_state;
89 extern Atom         _9wm_hold_mode;
90 extern Atom         wm_protocols;
91 extern Atom         wm_delete;
92 extern Atom         wm_take_focus;
93 extern Atom         wm_colormaps;
94 extern unsigned long    black;
95 extern unsigned long    white;
96 extern Bool         shape;
97 extern char         *termprog;
98 extern char         *shell;
99 extern char         *version[];
100 extern int          _border;
101 extern int          min_cmaps;
102 extern int          curtime;
103 extern int          debug;
104 extern int	    click_passes;
105 extern int	    use_keys;
106 /* client.c */
107 extern Client       *clients;
108 extern Client       *current;
109 
110 /* menu.c */
111 extern Client       *hiddenc[];
112 extern int          numhidden;
113 extern char         *b3items[];
114 extern Menu         b3menu;
115 extern int	    virtual;
116 extern Client *	    currents[];
117 extern Menu	    progs;
118 extern char *	    progsnames[];
119 
120 /* cursor.c */
121 extern Cursor       target;
122 extern Cursor       sweep0;
123 extern Cursor       boxcurs;
124 extern Cursor       arrow;
125 extern Pixmap       root_pixmap;
126 
127 /* error.c */
128 extern int          ignore_badwindow;
129 
130