X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=st.c;h=da895c6a64bc3d3a46212c61ed2c3abdd22584de;hb=b1563526561a913dc2a69ee78eb5aaa09cc98978;hp=19d0a86887f6dc647bbf120a05466f04d2c988ec;hpb=720cb816dcff55f8b75bdc2a8ffa265f460f5d55;p=st.git diff --git a/st.c b/st.c index 19d0a86..da895c6 100644 --- a/st.c +++ b/st.c @@ -296,6 +296,7 @@ static void xcopy(void); static void xdrawcursor(void); static void xinit(void); static void xloadcols(void); +static void xresettitle(void); static void xseturgency(int); static void xsetsel(char*); static void xresize(int, int); @@ -773,6 +774,13 @@ execsh(void) { unsetenv("LINES"); unsetenv("TERMCAP"); + signal(SIGCHLD, SIG_DFL); + signal(SIGHUP, SIG_DFL); + signal(SIGINT, SIG_DFL); + signal(SIGQUIT, SIG_DFL); + signal(SIGTERM, SIG_DFL); + signal(SIGALRM, SIG_DFL); + DEFAULT(envshell, SHELL); putenv("TERM="TNAME); args = opt_cmd ? opt_cmd : (char*[]){envshell, "-i", NULL}; @@ -1171,6 +1179,7 @@ tsetattr(int *attr, int l) { case 7: term.c.attr.mode |= ATTR_REVERSE; break; + case 21: case 22: term.c.attr.mode &= ~ATTR_BOLD; break; @@ -1683,6 +1692,7 @@ tputc(char *c) { case 'c': /* RIS -- Reset to inital state */ treset(); term.esc = 0; + xresettitle(); break; case '=': /* DECPAM -- Application keypad */ term.mode |= MODE_APPKEYPAD; @@ -1713,6 +1723,8 @@ tputc(char *c) { if(sel.bx != -1 && BETWEEN(term.c.y, sel.by, sel.ey)) sel.bx = -1; switch(ascii) { + case '\0': /* padding character, do nothing */ + break; case '\t': tputtab(1); break; @@ -2025,7 +2037,7 @@ xinit(void) { xw.xembed = XInternAtom(xw.dpy, "_XEMBED", False); - XStoreName(xw.dpy, xw.win, opt_title ? opt_title : "st"); + xresettitle(); XMapWindow(xw.dpy, xw.win); xhints(); XSync(xw.dpy, 0); @@ -2121,6 +2133,11 @@ xdrawcursor(void) { xcopy(); } +void +xresettitle(void) { + XStoreName(xw.dpy, xw.win, opt_title ? opt_title : "st"); +} + void redraw(void) { struct timespec tv = {0, REDRAW_TIMEOUT * 1000};