diff options
| author | dcc <dcc@logografos.com> | 2023-05-27 21:45:28 -0700 |
|---|---|---|
| committer | dcc <dcc@logografos.com> | 2023-05-27 21:45:28 -0700 |
| commit | bd4e72743ca24c0c380c221a6bc7376da1911f7e (patch) | |
| tree | 192b6af99d8ef0d28ffa8a64504ceab77776bb26 /devour/devour.c | |
| download | dcc-suckless-config-bd4e72743ca24c0c380c221a6bc7376da1911f7e.tar.gz dcc-suckless-config-bd4e72743ca24c0c380c221a6bc7376da1911f7e.tar.bz2 dcc-suckless-config-bd4e72743ca24c0c380c221a6bc7376da1911f7e.zip | |
first
Diffstat (limited to 'devour/devour.c')
| -rwxr-xr-x | devour/devour.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/devour/devour.c b/devour/devour.c new file mode 100755 index 0000000..39d7907 --- /dev/null +++ b/devour/devour.c @@ -0,0 +1,42 @@ +/* + * devour + * X11 window swallower + */ + +#include <X11/Xlib.h> +#include <stdlib.h> +#include <string.h> + +#define UNSAFE_CHARS "`\"'()[]& " + +void run_command(char **argv) { + char arg_char; + char *arg; + char cmd[1024] = {0}; + + while ((arg = *++argv)) { + while ((arg_char = *arg++)) { + if (strchr(UNSAFE_CHARS, arg_char)) + strcat(cmd, "\\"); + strncat(cmd, &arg_char, 1); + } + strcat(cmd, " "); + } + system(cmd); +} + +int main(int argc, char **argv) { + int rev; + Window win; + Display *dis = XOpenDisplay(0); + + XGetInputFocus(dis, &win, &rev); + XUnmapWindow(dis, win); + XFlush(dis); + run_command(argv); + XMapWindow(dis, win); + XCloseDisplay(dis); + + (void)argc; + return 0; +} |
