X-Git-Url: https://git.xinqibao.xyz/st.git/blobdiff_plain/720cb816dcff55f8b75bdc2a8ffa265f460f5d55..776a022e39a3c8f7c81b35d6b4307ffaa0ae3df8:/st.c?ds=inline

diff --git a/st.c b/st.c
index 19d0a86..c2ee3e2 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;
@@ -2025,7 +2035,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 +2131,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};