wm.h
changeset 32 082c75b937b5
parent 31 386649deb651
child 33 e90449e03167
equal deleted inserted replaced
31:386649deb651 32:082c75b937b5
     1 /*
     1 /*
     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 
     5 
     6 #include "config.h"
     6 #include <X11/Xlib.h>
     7 #include "draw.h"
       
     8 #include "util.h"
       
     9 
     7 
    10 #include <X11/Xutil.h>
     8 /********** CUSTOMIZE **********/
    11 
     9 
       
    10 #define FONT		"-*-terminus-medium-*-*-*-13-*-*-*-*-*-iso10646-*"
       
    11 #define BGCOLOR		"#666699"
       
    12 #define FGCOLOR		"#ffffff"
       
    13 #define BORDERCOLOR	"#9999CC"
       
    14 #define STATUSDELAY	10 /* seconds */
    12 #define WM_PROTOCOL_DELWIN 1
    15 #define WM_PROTOCOL_DELWIN 1
    13 
    16 
       
    17 /* tags */
       
    18 enum { Tscratch, Tdev, Tirc, Twww, Twork, TLast };
       
    19 
       
    20 /********** CUSTOMIZE **********/
       
    21 
       
    22 typedef struct Brush Brush;
    14 typedef struct Client Client;
    23 typedef struct Client Client;
       
    24 typedef struct Fnt Fnt;
    15 typedef struct Key Key;
    25 typedef struct Key Key;
    16 
    26 
    17 /* atoms */
    27 /* atoms */
    18 enum { WMProtocols, WMDelete, WMLast };
    28 enum { WMProtocols, WMDelete, WMLast };
    19 enum { NetSupported, NetWMName, NetLast };
    29 enum { NetSupported, NetWMName, NetLast };
    20 
    30 
    21 /* cursor */
    31 /* cursor */
    22 enum { CurNormal, CurResize, CurMove, CurInput, CurLast };
    32 enum { CurNormal, CurResize, CurMove, CurInput, CurLast };
       
    33 
       
    34 struct Fnt {
       
    35 	XFontStruct *xfont;
       
    36 	XFontSet set;
       
    37 	int ascent;
       
    38 	int descent;
       
    39 	int height;
       
    40 };
       
    41 
       
    42 struct Brush {
       
    43 	GC gc;
       
    44 	Drawable drawable;
       
    45 	int x, y, w, h;
       
    46 	Fnt font;
       
    47 	unsigned long bg;
       
    48 	unsigned long fg;
       
    49 	unsigned long border;
       
    50 };
    23 
    51 
    24 struct Client {
    52 struct Client {
    25 	char name[256];
    53 	char name[256];
    26 	char *tags[TLast];
    54 	char *tags[TLast];
    27 	int proto;
    55 	int proto;
    44 	void (*func)(void *aux);
    72 	void (*func)(void *aux);
    45 	void *aux;
    73 	void *aux;
    46 };
    74 };
    47 
    75 
    48 extern Display *dpy;
    76 extern Display *dpy;
    49 extern Window root, barwin;
    77 extern Window root;
    50 extern Atom wm_atom[WMLast], net_atom[NetLast];
    78 extern Atom wm_atom[WMLast], net_atom[NetLast];
    51 extern Cursor cursor[CurLast];
    79 extern Cursor cursor[CurLast];
    52 extern Bool running, issel;
    80 extern Bool running, issel;
    53 extern void (*handler[LASTEvent]) (XEvent *);
    81 extern void (*handler[LASTEvent]) (XEvent *);
    54 extern void (*arrange)(void *aux);
    82 extern void (*arrange)(void *aux);
    55 
    83 
    56 extern int tsel, screen, sx, sy, sw, sh, bx, by, bw, bh;
    84 extern int tsel, screen, sx, sy, sw, sh, th;
    57 extern char stext[1024], *tags[TLast];
    85 extern char stext[1024], *tags[TLast];
    58 
    86 
    59 extern Brush brush;
    87 extern Brush brush;
    60 extern Client *clients, *stack;
    88 extern Client *clients, *stack;
    61 
    89 
    62 /* bar.c */
    90 /* draw.c */
    63 extern void draw_bar();
    91 extern void draw(Display *dpy, Brush *b, Bool border, const char *text);
       
    92 extern void loadcolors(Display *dpy, int screen, Brush *b,
       
    93 		const char *bg, const char *fg, const char *bo);
       
    94 extern void loadfont(Display *dpy, Fnt *font, const char *fontstr);
       
    95 extern unsigned int textnw(Fnt *font, char *text, unsigned int len);
       
    96 extern unsigned int textw(Fnt *font, char *text);
       
    97 extern unsigned int texth(Fnt *font);
    64 
    98 
    65 /* client.c */
    99 /* client.c */
    66 extern void manage(Window w, XWindowAttributes *wa);
   100 extern void manage(Window w, XWindowAttributes *wa);
    67 extern void unmanage(Client *c);
   101 extern void unmanage(Client *c);
    68 extern Client *getclient(Window w);
   102 extern Client *getclient(Window w);
    70 extern void update_name(Client *c);
   104 extern void update_name(Client *c);
    71 extern void draw_client(Client *c);
   105 extern void draw_client(Client *c);
    72 extern void resize(Client *c);
   106 extern void resize(Client *c);
    73 extern void update_size(Client *c);
   107 extern void update_size(Client *c);
    74 extern Client *gettitle(Window w);
   108 extern Client *gettitle(Window w);
    75 extern void raise(Client *c);
   109 extern void craise(Client *c);
    76 extern void lower(Client *c);
   110 extern void lower(Client *c);
    77 extern void kill(void *aux);
   111 extern void ckill(void *aux);
    78 extern void sel(void *aux);
   112 extern void sel(void *aux);
    79 extern void max(void *aux);
   113 extern void max(void *aux);
    80 extern void floating(void *aux);
   114 extern void floating(void *aux);
    81 extern void grid(void *aux);
   115 extern void grid(void *aux);
    82 extern void gravitate(Client *c, Bool invert);
   116 extern void gravitate(Client *c, Bool invert);
    90 
   124 
    91 /* mouse.c */
   125 /* mouse.c */
    92 extern void mresize(Client *c);
   126 extern void mresize(Client *c);
    93 extern void mmove(Client *c);
   127 extern void mmove(Client *c);
    94 
   128 
       
   129 /* util.c */
       
   130 extern void error(char *errstr, ...);
       
   131 extern void *emallocz(unsigned int size);
       
   132 extern void *emalloc(unsigned int size);
       
   133 extern void *erealloc(void *ptr, unsigned int size);
       
   134 extern char *estrdup(const char *str);
       
   135 extern void spawn(Display *dpy, char *argv[]);
       
   136 extern void swap(void **p1, void **p2);
       
   137 
    95 /* wm.c */
   138 /* wm.c */
    96 extern int error_handler(Display *dpy, XErrorEvent *error);
   139 extern int error_handler(Display *dpy, XErrorEvent *error);
    97 extern void send_message(Window w, Atom a, long value);
   140 extern void send_message(Window w, Atom a, long value);
    98 extern int win_proto(Window w);
   141 extern int win_proto(Window w);
    99 extern void run(void *aux);
   142 extern void run(void *aux);