ST: Add WM_ICON_NAME property support
Also added _NET_WM_ICON_NAME.
This commit is contained in:
		
							parent
							
								
									fa253f077f
								
							
						
					
					
						commit
						28b4c822c5
					
				
							
								
								
									
										9
									
								
								st.c
								
								
								
								
							
							
						
						
									
										9
									
								
								st.c
								
								
								
								
							| 
						 | 
					@ -1844,6 +1844,7 @@ strhandle(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	char *p = NULL, *dec;
 | 
						char *p = NULL, *dec;
 | 
				
			||||||
	int j, narg, par;
 | 
						int j, narg, par;
 | 
				
			||||||
 | 
						static int winname = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	term.esc &= ~(ESC_STR_END|ESC_STR);
 | 
						term.esc &= ~(ESC_STR_END|ESC_STR);
 | 
				
			||||||
	strparse();
 | 
						strparse();
 | 
				
			||||||
| 
						 | 
					@ -1853,7 +1854,15 @@ strhandle(void)
 | 
				
			||||||
	case ']': /* OSC -- Operating System Command */
 | 
						case ']': /* OSC -- Operating System Command */
 | 
				
			||||||
		switch (par) {
 | 
							switch (par) {
 | 
				
			||||||
		case 0:
 | 
							case 0:
 | 
				
			||||||
 | 
								if (narg > 1) {
 | 
				
			||||||
 | 
									xsettitle(strescseq.args[1]);
 | 
				
			||||||
 | 
									xseticontitle(strescseq.args[1]);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
		case 1:
 | 
							case 1:
 | 
				
			||||||
 | 
								if (narg > 1)
 | 
				
			||||||
 | 
									xseticontitle(strescseq.args[1]);
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
		case 2:
 | 
							case 2:
 | 
				
			||||||
			if (narg > 1)
 | 
								if (narg > 1)
 | 
				
			||||||
				xsettitle(strescseq.args[1]);
 | 
									xsettitle(strescseq.args[1]);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								win.h
								
								
								
								
							
							
						
						
									
										1
									
								
								win.h
								
								
								
								
							| 
						 | 
					@ -30,6 +30,7 @@ void xdrawline(Line, int, int, int);
 | 
				
			||||||
void xfinishdraw(void);
 | 
					void xfinishdraw(void);
 | 
				
			||||||
void xloadcols(void);
 | 
					void xloadcols(void);
 | 
				
			||||||
int xsetcolorname(int, const char *);
 | 
					int xsetcolorname(int, const char *);
 | 
				
			||||||
 | 
					void xseticontitle(char *);
 | 
				
			||||||
void xsettitle(char *);
 | 
					void xsettitle(char *);
 | 
				
			||||||
int xsetcursor(int);
 | 
					int xsetcursor(int);
 | 
				
			||||||
void xsetmode(int, unsigned int);
 | 
					void xsetmode(int, unsigned int);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										16
									
								
								x.c
								
								
								
								
							
							
						
						
									
										16
									
								
								x.c
								
								
								
								
							| 
						 | 
					@ -93,7 +93,7 @@ typedef struct {
 | 
				
			||||||
	Window win;
 | 
						Window win;
 | 
				
			||||||
	Drawable buf;
 | 
						Drawable buf;
 | 
				
			||||||
	GlyphFontSpec *specbuf; /* font spec buffer used for rendering */
 | 
						GlyphFontSpec *specbuf; /* font spec buffer used for rendering */
 | 
				
			||||||
	Atom xembed, wmdeletewin, netwmname, netwmpid;
 | 
						Atom xembed, wmdeletewin, netwmname, netwmiconname, netwmpid;
 | 
				
			||||||
	struct {
 | 
						struct {
 | 
				
			||||||
		XIM xim;
 | 
							XIM xim;
 | 
				
			||||||
		XIC xic;
 | 
							XIC xic;
 | 
				
			||||||
| 
						 | 
					@ -1186,6 +1186,7 @@ xinit(int cols, int rows)
 | 
				
			||||||
	xw.xembed = XInternAtom(xw.dpy, "_XEMBED", False);
 | 
						xw.xembed = XInternAtom(xw.dpy, "_XEMBED", False);
 | 
				
			||||||
	xw.wmdeletewin = XInternAtom(xw.dpy, "WM_DELETE_WINDOW", False);
 | 
						xw.wmdeletewin = XInternAtom(xw.dpy, "WM_DELETE_WINDOW", False);
 | 
				
			||||||
	xw.netwmname = XInternAtom(xw.dpy, "_NET_WM_NAME", 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);
 | 
						XSetWMProtocols(xw.dpy, xw.win, &xw.wmdeletewin, 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	xw.netwmpid = XInternAtom(xw.dpy, "_NET_WM_PID", False);
 | 
						xw.netwmpid = XInternAtom(xw.dpy, "_NET_WM_PID", False);
 | 
				
			||||||
| 
						 | 
					@ -1579,6 +1580,19 @@ xsetenv(void)
 | 
				
			||||||
	setenv("WINDOWID", buf, 1);
 | 
						setenv("WINDOWID", buf, 1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void
 | 
				
			||||||
 | 
					xseticontitle(char *p)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						XTextProperty prop;
 | 
				
			||||||
 | 
						DEFAULT(p, opt_title);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Xutf8TextListToTextProperty(xw.dpy, &p, 1, XUTF8StringStyle,
 | 
				
			||||||
 | 
								&prop);
 | 
				
			||||||
 | 
						XSetWMIconName(xw.dpy, xw.win, &prop);
 | 
				
			||||||
 | 
						XSetTextProperty(xw.dpy, xw.win, &prop, xw.netwmiconname);
 | 
				
			||||||
 | 
						XFree(prop.value);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
xsettitle(char *p)
 | 
					xsettitle(char *p)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue