Procházet zdrojové kódy

add -w option to embed st. (thx nodus cursorius)

Aurélien Aptel před 13 roky
rodič
revize
3959a99293
2 změnil soubory, kde provedl 14 přidání a 2 odebrání
  1. 6 0
      st.1
  2. 8 2
      st.c

+ 6 - 0
st.1

@@ -7,6 +7,8 @@ st \- simple terminal
 .IR class ]
 .RB [ \-t 
 .IR title ]
+.RB [ \-w 
+.IR windowid ]
 .RB [ \-v ]
 .RB [ \-e
 .IR command ...]
@@ -21,6 +23,10 @@ defines the window title (default 'st').
 .BI \-c " class"
 defines the window class (default $TERM).
 .TP
+.BI \-w " windowid"
+embeds st within the window identified by 
+.I windowid
+.TP
 .B \-v
 prints version information to stderr, then exits.
 .TP

+ 8 - 2
st.c

@@ -35,7 +35,7 @@
 
 #define USAGE \
 	"st-" VERSION ", (c) 2010-2011 st engineers\n" \
-	"usage: st [-t title] [-c class] [-v] [-e command...]\n"
+	"usage: st [-t title] [-c class] [-w windowid] [-v] [-e command...]\n"
 
 /* Arbitrary sizes */
 #define ESC_TITLE_SIZ 256
@@ -260,6 +260,7 @@ static pid_t pid;
 static Selection sel;
 static char **opt_cmd  = NULL;
 static char *opt_title = NULL;
+static char *opt_embed = NULL;
 static char *opt_class = NULL;
 
 int
@@ -1606,6 +1607,7 @@ void
 xinit(void) {
 	XSetWindowAttributes attrs;
 	Cursor cursor;
+	Window parent;
 
 	if(!(xw.dpy = XOpenDisplay(NULL)))
 		die("Can't open display\n");
@@ -1636,7 +1638,8 @@ xinit(void) {
 		| ButtonMotionMask | ButtonPressMask | ButtonReleaseMask;
 	attrs.colormap = xw.cmap;
 
-	xw.win = XCreateWindow(xw.dpy, XRootWindow(xw.dpy, xw.scr), 0, 0,
+	parent = opt_embed ? strtol(opt_embed, NULL, 0) : XRootWindow(xw.dpy, xw.scr);
+	xw.win = XCreateWindow(xw.dpy, parent, 0, 0,
 			xw.w, xw.h, 0, XDefaultDepth(xw.dpy, xw.scr), InputOutput,
 			XDefaultVisual(xw.dpy, xw.scr),
 			CWBackPixel | CWBorderPixel | CWBitGravity | CWEventMask
@@ -1943,6 +1946,9 @@ main(int argc, char *argv[]) {
 		case 'c':
 			if(++i < argc) opt_class = argv[i];
 			break;
+		case 'w':
+			if(++i < argc) opt_embed = argv[i];
+			break;
 		case 'e': 
 			/* eat every remaining arguments */
 			if(++i < argc) opt_cmd = &argv[i];