obxprop: Add ability to limit listing to given properties
Mikael Magnusson mikachu@gmail.com
1 files changed,
27 insertions(+),
6 deletions(-)
jump to
M
tools/obxprop/obxprop.c
→
tools/obxprop/obxprop.c
@@ -12,7 +12,7 @@ fprintf(stderr, "%s\n", s);
else fprintf (stderr, - "Usage: obxprop [OPTIONS]\n\n" + "Usage: obxprop [OPTIONS] [--] [PROPERTIES ...]\n\n" "Options:\n" " --help Display this help and exit\n" " --display DISPLAY Connect to this X display\n"@@ -227,7 +227,7 @@ }
return FALSE; } -void show_properties(Display *d, Window w) +void show_properties(Display *d, Window w, int argc, char **argv) { Atom* props; int i, n;@@ -241,7 +241,19 @@
name = XGetAtomName(d, props[i]); if (read_prop(d, w, props[i], &type, &val)) { - g_print("%s(%s) = %s\n", name, type, val); + int found = 1; + if (argc) { + int i; + + found = 0; + for (i = 0; i < argc; i++) + if (!strcmp(name, argv[i])) { + found = 1; + break; + } + } + if (found) + g_print("%s(%s) = %s\n", name, type, val); g_free(val); }@@ -283,6 +295,14 @@ if (++i == argc)
return fail(0); dname = argv[i]; } + else if (*argv[i] != '-') + break; + else if (!strcmp(argv[i], "--")) { + i++; + break; + } + else + return fail(NULL); } d = XOpenDisplay(dname);@@ -295,12 +315,13 @@ if (root)
userid = RootWindow(d, DefaultScreen(d)); if (userid == None) { - i = XGrabPointer(d, RootWindow(d, DefaultScreen(d)), + int j; + j = XGrabPointer(d, RootWindow(d, DefaultScreen(d)), False, ButtonPressMask, GrabModeAsync, GrabModeAsync, None, XCreateFontCursor(d, XC_crosshair), CurrentTime); - if (i != GrabSuccess) + if (j != GrabSuccess) return fail("Unable to grab the pointer device"); while (1) { XEvent ev;@@ -319,7 +340,7 @@
if (id == None) return fail("Unable to find window with the requested ID"); - show_properties(d, id); + show_properties(d, id, argc - i, &argv[i]); XCloseDisplay(d);