[hackers] [st 2/2] Add -n option for setting WM_CLASS instance name

From: Quentin Rameau <quinq_AT_fifth.space>
Date: Fri, 29 Jan 2016 22:03:01 +0100

---
 st.1 |  7 +++++++
 st.c | 34 +++++++++++++++++++---------------
 2 files changed, 26 insertions(+), 15 deletions(-)
diff --git a/st.1 b/st.1
index fe2e731..1e3f1d4 100644
--- a/st.1
+++ b/st.1
_AT_@ -10,6 +10,8 @@ st \- simple terminal
 .IR font ]
 .RB [ \-g
 .IR geometry ]
+.RB [ \-n
+.IR name ]
 .RB [ \-o
 .IR iofile ]
 .RB [ \-T
_AT_@ -32,6 +34,8 @@ st \- simple terminal
 .IR font ]
 .RB [ \-g
 .IR geometry ]
+.RB [ \-n
+.IR name ]
 .RB [ \-o
 .IR iofile ]
 .RB [ \-T
_AT_@ -68,6 +72,9 @@ for further details.
 .B \-i
 will fixate the position given with the -g option.
 .TP
+.BI \-n " name"
+defines the window instance name (default $TERM).
+.TP
 .BI \-o " iofile"
 writes all the I/O to
 .I iofile.
diff --git a/st.c b/st.c
index 2bbf484..38abffb 100644
--- a/st.c
+++ b/st.c
_AT_@ -524,14 +524,15 @@ static int cmdfd;
 static pid_t pid;
 static Selection sel;
 static int iofd = 1;
-static char **opt_cmd = NULL;
-static char *opt_io = NULL;
-static char *opt_title = NULL;
-static char *opt_embed = NULL;
+static char **opt_cmd  = NULL;
 static char *opt_class = NULL;
-static char *opt_font = NULL;
-static char *opt_line = NULL;
-static int oldbutton = 3; /* button event on startup: 3 = release */
+static char *opt_embed = NULL;
+static char *opt_font  = NULL;
+static char *opt_io    = NULL;
+static char *opt_line  = NULL;
+static char *opt_name  = NULL;
+static char *opt_title = NULL;
+static int oldbutton   = 3; /* button event on startup: 3 = release */
 
 static char *usedfont = NULL;
 static double usedfontsize = 0;
_AT_@ -3240,7 +3241,8 @@ xclear(int x1, int y1, int x2, int y2)
 void
 xhints(void)
 {
-	XClassHint class = {termname, opt_class ? opt_class : termname};
+	XClassHint class = {opt_name ? opt_name : termname,
+	                    opt_class ? opt_class : termname};
 	XWMHints wm = {.flags = InputHint, .input = 1};
 	XSizeHints *sizeh = NULL;
 
_AT_@ -4332,13 +4334,12 @@ run(void)
 void
 usage(void)
 {
-	die("usage: %s [-aiv] [-c class] [-f font] [-g geometry]"
-	" [-o file] [-T title]\n"
-	"          [-t title] [-w windowid] [[-e] command [args ...]]\n"
-	"       %s [-aiv] [-c class] [-f font] [-g geometry]"
-	" [-o file] [-T title]\n"
-	"          [-t title] [-w windowid] -l line [stty_args ...]\n",
-	argv0, argv0);
+	die("usage: %s "
+	"[-aiv] [-c class] [-f font] [-g geometry] [-n name] [-o file]\n       "
+	"   [-T title] [-t title] [-w windowid] [[-e] command [args ...]\n     "
+	"  %s [-aiv] [-c class] [-f font] [-g geometry] [-n name] [-o file]\n  "
+	"        [-o file] [-T title] [-t title] [-w windowid] -l line"
+	" [stty_args ...]\n", argv0, argv0);
 }
 
 void
_AT_@ -4383,6 +4384,9 @@ main(int argc, char *argv[])
 	case 'l':
 		opt_line = EARGF(usage());
 		break;
+	case 'n':
+		opt_name = EARGF(usage());
+		break;
 	case 't':
 	case 'T':
 		opt_title = EARGF(usage());
-- 
2.7.0
Received on Fri Jan 29 2016 - 22:03:01 CET

This archive was generated by hypermail 2.3.0 : Fri Jan 29 2016 - 22:12:17 CET