~petersanchez/st

28b4c822c5c0acec300fdf15c6e3ede9f5e2335d — John Collis 1 year, 11 months ago fa253f0
ST: Add WM_ICON_NAME property support

Also added _NET_WM_ICON_NAME.
3 files changed, 25 insertions(+), 1 deletions(-)

M st.c
M win.h
M x.c
M st.c => st.c +9 -0
@@ 1844,6 1844,7 @@ strhandle(void)
{
	char *p = NULL, *dec;
	int j, narg, par;
	static int winname = 0;

	term.esc &= ~(ESC_STR_END|ESC_STR);
	strparse();


@@ 1853,7 1854,15 @@ strhandle(void)
	case ']': /* OSC -- Operating System Command */
		switch (par) {
		case 0:
			if (narg > 1) {
				xsettitle(strescseq.args[1]);
				xseticontitle(strescseq.args[1]);
			}
			return;
		case 1:
			if (narg > 1)
				xseticontitle(strescseq.args[1]);
			return;
		case 2:
			if (narg > 1)
				xsettitle(strescseq.args[1]);

M win.h => win.h +1 -0
@@ 30,6 30,7 @@ void xdrawline(Line, int, int, int);
void xfinishdraw(void);
void xloadcols(void);
int xsetcolorname(int, const char *);
void xseticontitle(char *);
void xsettitle(char *);
int xsetcursor(int);
void xsetmode(int, unsigned int);

M x.c => x.c +15 -1
@@ 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;


@@ 1186,6 1186,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,6 1581,19 @@ xsetenv(void)
}

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
xsettitle(char *p)
{
	XTextProperty prop;