From 6f9b4f5b2ed5a82ad4711d1add9ccd620d8526ba Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bert=20M=C3=BCnnich?= <be.muennich@gmail.com>
Date: Mon, 29 Oct 2012 00:53:50 +0100
Subject: [PATCH] New option: -N, set X window resource name

---
 README.md | 1 +
 options.c | 8 ++++++--
 options.h | 1 +
 sxiv.1    | 5 +++++
 window.c  | 2 +-
 5 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/README.md b/README.md
index 08a1c1e..8425e1a 100644
--- a/README.md
+++ b/README.md
@@ -68,6 +68,7 @@ sxiv supports the following command-line options:
     -g GEOMETRY  Set window position and size
                  (see section GEOMETRY SPECIFICATIONS of X(7))
     -n NUM       Start at picture NUM
+    -N NAME      Set X window resource name to NAME
     -p           Pixelize, i.e. turn off image anti-aliasing
     -q           Be quiet, disable warnings
     -r           Search given directories recursively for images
diff --git a/options.c b/options.c
index deec097..224fa2c 100644
--- a/options.c
+++ b/options.c
@@ -33,7 +33,7 @@ const options_t *options = (const options_t*) &_options;
 
 void print_usage(void) {
 	printf("usage: sxiv [-bcdFfhpqrstvZ] [-g GEOMETRY] [-n NUM] "
-	       "[-z ZOOM] FILES...\n");
+	       "[-N name] [-z ZOOM] FILES...\n");
 }
 
 void print_version(void) {
@@ -54,12 +54,13 @@ void parse_options(int argc, char **argv) {
 	_options.fullscreen = false;
 	_options.hide_bar = false;
 	_options.geometry = NULL;
+	_options.res_name = NULL;
 
 	_options.quiet = false;
 	_options.thumb_mode = false;
 	_options.clean_cache = false;
 
-	while ((opt = getopt(argc, argv, "bcdFfg:hn:pqrstvZz:")) != -1) {
+	while ((opt = getopt(argc, argv, "bcdFfg:hn:N:pqrstvZz:")) != -1) {
 		switch (opt) {
 			case '?':
 				print_usage();
@@ -94,6 +95,9 @@ void parse_options(int argc, char **argv) {
 					_options.startnum = t - 1;
 				}
 				break;
+			case 'N':
+				_options.res_name = optarg;
+				break;
 			case 'p':
 				_options.aa = false;
 				break;
diff --git a/options.h b/options.h
index aa93a0c..e17f322 100644
--- a/options.h
+++ b/options.h
@@ -40,6 +40,7 @@ typedef struct {
 	bool fullscreen;
 	bool hide_bar;
 	char *geometry;
+	char *res_name;
 
 	/* misc flags: */
 	bool quiet;
diff --git a/sxiv.1 b/sxiv.1
index b31f95f..2058190 100644
--- a/sxiv.1
+++ b/sxiv.1
@@ -8,6 +8,8 @@ sxiv \- Simple (or small or suckless) X Image Viewer
 .IR GEOMETRY ]
 .RB [ \-n
 .IR NUM ]
+.RB [ \-N
+.IR NAME ]
 .RB [ \-z
 .IR ZOOM ]
 .IR FILE ...
@@ -57,6 +59,9 @@ more information on
 .BI "\-n " NUM
 Start at picture number NUM.
 .TP
+.BI "\-N " NAME
+Set the resource name of sxiv's X window to NAME.
+.TP
 .B \-h
 Print brief usage information to standard output and exit.
 .TP
diff --git a/window.c b/window.c
index 0d86925..22695cf 100644
--- a/window.c
+++ b/window.c
@@ -207,8 +207,8 @@ void win_open(win_t *win) {
 
 	win_set_title(win, "sxiv");
 
-	classhint.res_name = "sxiv";
 	classhint.res_class = "Sxiv";
+	classhint.res_name = options->res_name != NULL ? options->res_name : "sxiv";
 	XSetClassHint(e->dpy, win->xwin, &classhint);
 
 	XSetWMProtocols(e->dpy, win->xwin, &wm_delete_win, 1);