add -w option to embed st. (thx nodus cursorius) - st - Personal fork of st
 (HTM) git clone git://git.drkhsh.at/st.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 3959a99293785e603270d8798fbe0cb2ba0ae0ee
 (DIR) parent 4736edd469d07685f6ceeb4bfe438ba48335bd81
 (HTM) Author: Aurélien Aptel <aurelien.aptel@gmail.com>
       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(-)
       ---
 (DIR) diff --git a/st.1 b/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
 (DIR) diff --git 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];