diff options
| -rw-r--r-- | options.c | 11 | ||||
| -rw-r--r-- | options.h | 1 | ||||
| -rw-r--r-- | window.c | 6 | ||||
| -rw-r--r-- | window.h | 1 | 
4 files changed, 16 insertions, 3 deletions
@@ -33,7 +33,7 @@ const options_t *options = (const options_t*) &_options;  void print_usage(void)  {  	printf("usage: sxiv [-abcfhioqrtvZ] [-G GAMMA] [-g GEOMETRY] [-n NUM] " -	       "[-N NAME] [-S DELAY] [-s MODE] [-z ZOOM] FILES...\n"); +	       "[-N NAME] [-S DELAY] [-s MODE] [-z ZOOM] [-w WID] FILES...\n");  }  void print_version(void) @@ -62,6 +62,7 @@ void parse_options(int argc, char **argv)  	_options.slideshow = 0;  	_options.fullscreen = false; +	_options.embed = 0;  	_options.hide_bar = false;  	_options.geometry = NULL;  	_options.res_name = NULL; @@ -70,7 +71,7 @@ void parse_options(int argc, char **argv)  	_options.thumb_mode = false;  	_options.clean_cache = false; -	while ((opt = getopt(argc, argv, "abcfG:g:hin:N:oqrS:s:tvZz:")) != -1) { +	while ((opt = getopt(argc, argv, "abcfG:g:hin:N:oqrS:s:tvw:Zz:")) != -1) {  		switch (opt) {  			case '?':  				print_usage(); @@ -138,6 +139,12 @@ void parse_options(int argc, char **argv)  			case 'v':  				print_version();  				exit(EXIT_SUCCESS); +			case 'w': +				n = strtol(optarg, &end, 0); +				if (*end != '\0') +					error(EXIT_FAILURE, 0, "Invalid argument for option -w: %s", optarg); +				_options.embed = n; +				break;  			case 'Z':  				_options.scalemode = SCALE_ZOOM;  				_options.zoom = 1.0; @@ -41,6 +41,7 @@ typedef struct {  	/* window: */  	bool fullscreen;  	bool hide_bar; +	long embed;  	char *geometry;  	char *res_name; @@ -133,6 +133,7 @@ void win_init(win_t *win)  	win->bar.l.buf = emalloc(win->bar.l.size);  	win->bar.r.buf = emalloc(win->bar.r.size);  	win->bar.h = options->hide_bar ? 0 : barheight; +	win->embed = options->embed;  	INIT_ATOM_(WM_DELETE_WINDOW);  	INIT_ATOM_(_NET_WM_NAME); @@ -197,7 +198,10 @@ void win_open(win_t *win)  		win->y = 0;  	} -	win->xwin = XCreateWindow(e->dpy, RootWindow(e->dpy, e->scr), +	if (!(win->embed)) { +		win->embed = RootWindow(e->dpy, e->scr); +	} +	win->xwin = XCreateWindow(e->dpy, win->embed,  	                          win->x, win->y, win->w, win->h, 0,  	                          e->depth, InputOutput, e->vis, 0, NULL);  	if (win->xwin == None) @@ -71,6 +71,7 @@ typedef struct {  	unsigned int bw;  	bool fullscreen; +	long embed;  	struct {  		int w;  | 
