summaryrefslogtreecommitdiff
path: root/st.c
diff options
context:
space:
mode:
authorAurélien Aptel <aurelien.aptel@gmail.com>2011-06-08 21:35:58 +0200
committerAurélien Aptel <aurelien.aptel@gmail.com>2011-06-08 21:35:58 +0200
commit3959a99293785e603270d8798fbe0cb2ba0ae0ee (patch)
treee906e58aa8338ad307f318368fe6d602cc805240 /st.c
parent4736edd469d07685f6ceeb4bfe438ba48335bd81 (diff)
add -w option to embed st. (thx nodus cursorius)
Diffstat (limited to 'st.c')
-rw-r--r--st.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/st.c b/st.c
index 6ba5c4c..b331ead 100644
--- a/st.c
+++ b/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];