all repos — openbox @ 54c841f7b57ad0decedeed15aadcc1f116994bba

openbox fork - make it a bit more like ryudo

obxprop: Add ability to limit listing to given properties
Mikael Magnusson mikachu@gmail.com
commit

54c841f7b57ad0decedeed15aadcc1f116994bba

parent

2b0dfb81cfe60d40827f0231aac9a95adca33137

1 files changed, 27 insertions(+), 6 deletions(-)

jump to
M tools/obxprop/obxprop.ctools/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);