tadd -w option to embed st. (thx nodus cursorius) - st - [fork] customized buil… | |
git clone git://src.adamsgaard.dk/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 3959a99293785e603270d8798fbe0cb2ba0ae0ee | |
parent 4736edd469d07685f6ceeb4bfe438ba48335bd81 | |
Author: Aurélien Aptel <[email protected]> | |
Date: Wed, 8 Jun 2011 21:35:58 +0200 | |
add -w option to embed st. (thx nodus cursorius) | |
Diffstat: | |
M st.1 | 6 ++++++ | |
M st.c | 10 ++++++++-- | |
2 files changed, 14 insertions(+), 2 deletions(-) | |
--- | |
diff --git a/st.1 b/st.1 | |
t@@ -7,6 +7,8 @@ st \- simple terminal | |
.IR class ] | |
.RB [ \-t | |
.IR title ] | |
+.RB [ \-w | |
+.IR windowid ] | |
.RB [ \-v ] | |
.RB [ \-e | |
.IR command ...] | |
t@@ -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 | |
diff --git a/st.c b/st.c | |
t@@ -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 | |
t@@ -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 | |
t@@ -1606,6 +1607,7 @@ void | |
xinit(void) { | |
XSetWindowAttributes attrs; | |
Cursor cursor; | |
+ Window parent; | |
if(!(xw.dpy = XOpenDisplay(NULL))) | |
die("Can't open display\n"); | |
t@@ -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.win = XCreateWindow(xw.dpy, parent, 0, 0, | |
xw.w, xw.h, 0, XDefaultDepth(xw.dpy, xw.scr), InputOut… | |
XDefaultVisual(xw.dpy, xw.scr), | |
CWBackPixel | CWBorderPixel | CWBitGravity | CWEventMa… | |
t@@ -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]; |