diff options
author | John Collis <john.collis@alliedtelesis.co.nz> | 2020-09-06 17:53:41 +1200 |
---|---|---|
committer | Hiltjo Posthuma <hiltjo@codemadness.org> | 2020-10-18 11:17:11 +0200 |
commit | 28b4c822c5c0acec300fdf15c6e3ede9f5e2335d (patch) | |
tree | b2af1c27a64169cfd7a8807c207d07a6c429bd6c | |
parent | fa253f077f19b3220c7655b81bd91e52f4367803 (diff) | |
download | st-28b4c822c5c0acec300fdf15c6e3ede9f5e2335d.tar.gz st-28b4c822c5c0acec300fdf15c6e3ede9f5e2335d.tar.bz2 st-28b4c822c5c0acec300fdf15c6e3ede9f5e2335d.zip |
ST: Add WM_ICON_NAME property support
Also added _NET_WM_ICON_NAME.
-rw-r--r-- | st.c | 9 | ||||
-rw-r--r-- | win.h | 1 | ||||
-rw-r--r-- | x.c | 16 |
3 files changed, 25 insertions, 1 deletions
@@ -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]); @@ -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); @@ -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; |