diff options
Diffstat (limited to 'x.c')
| -rw-r--r-- | x.c | 47 | 
1 files changed, 39 insertions, 8 deletions
@@ -48,7 +48,7 @@ typedef struct {  /* X modifiers */  #define XK_ANY_MOD    UINT_MAX  #define XK_NO_MOD     0 -#define XK_SWITCH_MOD (1<<13) +#define XK_SWITCH_MOD (1<<13|1<<14)  /* function definitions used in config.h */  static void clipcopy(const Arg *); @@ -93,7 +93,7 @@ typedef struct {  	Window win;  	Drawable buf;  	GlyphFontSpec *specbuf; /* font spec buffer used for rendering */ -	Atom xembed, wmdeletewin, netwmname, netwmpid; +	Atom xembed, wmdeletewin, netwmname, netwmiconname, netwmpid;  	struct {  		XIM xim;  		XIC xic; @@ -156,7 +156,7 @@ static void xresize(int, int);  static void xhints(void);  static int xloadcolor(int, const char *, Color *);  static int xloadfont(Font *, FcPattern *); -static void xloadfonts(char *, double); +static void xloadfonts(const char *, double);  static void xunloadfont(Font *);  static void xunloadfonts(void);  static void xsetenv(void); @@ -387,7 +387,9 @@ mousereport(XEvent *e)  			button = 3;  		} else {  			button -= Button1; -			if (button >= 3) +			if (button >= 7) +				button += 128 - 7; +			else if (button >= 3)  				button += 64 - 3;  		}  		if (e->xbutton.type == ButtonPress) { @@ -798,6 +800,19 @@ xloadcols(void)  }  int +xgetcolor(int x, unsigned char *r, unsigned char *g, unsigned char *b) +{ +	if (!BETWEEN(x, 0, dc.collen)) +		return 1; + +	*r = dc.col[x].color.red >> 8; +	*g = dc.col[x].color.green >> 8; +	*b = dc.col[x].color.blue >> 8; + +	return 0; +} + +int  xsetcolorname(int x, const char *name)  {  	Color ncolor; @@ -950,7 +965,7 @@ xloadfont(Font *f, FcPattern *pattern)  }  void -xloadfonts(char *fontstr, double fontsize) +xloadfonts(const char *fontstr, double fontsize)  {  	FcPattern *pattern;  	double fontval; @@ -958,7 +973,7 @@ xloadfonts(char *fontstr, double fontsize)  	if (fontstr[0] == '-')  		pattern = XftXlfdParse(fontstr, False, False);  	else -		pattern = FcNameParse((FcChar8 *)fontstr); +		pattern = FcNameParse((const FcChar8 *)fontstr);  	if (!pattern)  		die("can't open font %s\n", fontstr); @@ -1186,6 +1201,7 @@ xinit(int cols, int rows)  	xw.xembed = XInternAtom(xw.dpy, "_XEMBED", False);  	xw.wmdeletewin = XInternAtom(xw.dpy, "WM_DELETE_WINDOW", False);  	xw.netwmname = XInternAtom(xw.dpy, "_NET_WM_NAME", False); +	xw.netwmiconname = XInternAtom(xw.dpy, "_NET_WM_ICON_NAME", False);  	XSetWMProtocols(xw.dpy, xw.win, &xw.wmdeletewin, 1);  	xw.netwmpid = XInternAtom(xw.dpy, "_NET_WM_PID", False); @@ -1580,13 +1596,28 @@ xsetenv(void)  }  void +xseticontitle(char *p) +{ +	XTextProperty prop; +	DEFAULT(p, opt_title); + +	if (Xutf8TextListToTextProperty(xw.dpy, &p, 1, XUTF8StringStyle, +	                                &prop) != Success) +		return; +	XSetWMIconName(xw.dpy, xw.win, &prop); +	XSetTextProperty(xw.dpy, xw.win, &prop, xw.netwmiconname); +	XFree(prop.value); +} + +void  xsettitle(char *p)  {  	XTextProperty prop;  	DEFAULT(p, opt_title); -	Xutf8TextListToTextProperty(xw.dpy, &p, 1, XUTF8StringStyle, -			&prop); +	if (Xutf8TextListToTextProperty(xw.dpy, &p, 1, XUTF8StringStyle, +	                                &prop) != Success) +		return;  	XSetWMName(xw.dpy, xw.win, &prop);  	XSetTextProperty(xw.dpy, xw.win, &prop, xw.netwmname);  	XFree(prop.value);  | 
