diff -ur setwmname-0.1.orig/setwmname.c setwmname-0.1/setwmname.c --- setwmname-0.1.orig/setwmname.c 2008-05-21 12:44:43.678505000 +0200 +++ setwmname-0.1/setwmname.c 2008-05-21 12:36:25.560506000 +0200 @@ -19,16 +19,17 @@ int main(int argc, char **argv) { + int status, format; + unsigned char *data = NULL; + unsigned long n, extra; Display *dpy; Window root, dummy; - Atom netwmcheck, netwmname, utf8_string; + Atom netwmcheck, netwmname, utf8_string, real; - if(argc == 2) { - if(!strncmp(argv[1], "-v", 3)) + if(argc > 2) + eprint("usage: setwmname [name] [-v]\n"); + if(argc == 2 && !strncmp(argv[1], "-v", 3)) eprint("setwmname-"VERSION", © 2008 Anselm R Garbe\n", stdout); - } - else - eprint("usage: setwmname [-v]\n"); if(!(dpy = XOpenDisplay(0))) eprint("setwmname: cannot open display\n"); @@ -36,8 +37,15 @@ netwmcheck = XInternAtom(dpy, "_NET_SUPPORTING_WM_CHECK", False); netwmname = XInternAtom(dpy, "_NET_WM_NAME", False); utf8_string = XInternAtom(dpy, "UTF8_STRING", False); - XChangeProperty(dpy, root, netwmcheck, XA_WINDOW, 32, PropModeReplace, (unsigned char *)&root, 1); - XChangeProperty(dpy, root, netwmname, utf8_string, 8, PropModeReplace, (unsigned char *)argv[1], strlen(argv[1])); + if(argc == 1) { + status = XGetWindowProperty(dpy, root, netwmname, 0L, 32L, False, utf8_string, &real, &format, &n, &extra, (unsigned char **) &data); + if(status == Success && data != NULL) + printf("%s\n", data); + XFree(data); + } else { + XChangeProperty(dpy, root, netwmcheck, XA_WINDOW, 32, PropModeReplace, (unsigned char *)&root, 1); + XChangeProperty(dpy, root, netwmname, utf8_string, 8, PropModeReplace, (unsigned char *)argv[1], strlen(argv[1])); + } XSync(dpy, False); XCloseDisplay(dpy); return 0;