From ec32e9b72539de7e1553a4f70345166107b431f7 Mon Sep 17 00:00:00 2001 From: Aaahh Ahh Date: Tue, 28 Nov 2017 11:45:01 -0500 Subject: [PATCH] Add force desktop window type flag (#4) * Add force desktop window type flag This flag places xwinwrap behind desktop icons on ubuntu * Update README.md --- README.md | 4 +++- xwinwrap.c | 15 +++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index f120a12..33eba7c 100644 --- a/README.md +++ b/README.md @@ -20,11 +20,12 @@ make clean ### Usage ``` -Usage: xwinwrap [-g {w}x{h}+{x}+{y}] [-ni] [-argb] [-fs] [-s] [-st] [-sp] [-a] [-b] [-nf] [-o OPACITY] [-sh SHAPE] [-ov]-- COMMAND ARG1... +Usage: xwinwrap [-g {w}x{h}+{x}+{y}] [-ni] [-argb] [-fdt] [-fs] [-s] [-st] [-sp] [-a] [-d] [-b] [-nf] [-o OPACITY] [-sh SHAPE] [-ov]-- COMMAND ARG1... Options: -g - Specify Geometry (w=width, h=height, x=x-coord, y=y-coord. ex: -g 640x480+100+100) -ni - Ignore Input -argb - RGB + -fdt - force WID window a desktop type window -fs - Full Screen -un - Undecorated -s - Sticky @@ -36,6 +37,7 @@ Options: -o - Opacity value between 0 to 1 (ex: -o 0.20) -sh - Shape of window (choose between rectangle, circle or triangle. Default is rectangle) -ov - Set override_redirect flag (For seamless desktop background integration in non-fullscreenmode) + -d - Daemonize -debug - Enable debug messages ``` Example diff --git a/xwinwrap.c b/xwinwrap.c index 3a44c5e..2cfb8aa 100644 --- a/xwinwrap.c +++ b/xwinwrap.c @@ -133,12 +133,13 @@ static void sigHandler (int sig) static void usage (void) { fprintf(stderr, "%s \n", NAME); - fprintf (stderr, "\nUsage: %s [-g {w}x{h}+{x}+{y}] [-ni] [-argb] [-fs] [-s] [-st] [-sp] [-a] " + fprintf (stderr, "\nUsage: %s [-g {w}x{h}+{x}+{y}] [-ni] [-argb] [-fdt] [-fs] [-s] [-st] [-sp] [-a] [-d] " "[-b] [-nf] [-o OPACITY] [-sh SHAPE] [-ov]-- COMMAND ARG1...\n", NAME); fprintf (stderr, "Options:\n \ -g - Specify Geometry (w=width, h=height, x=x-coord, y=y-coord. ex: -g 640x480+100+100)\n \ -ni - Ignore Input\n \ -argb - RGB\n \ + -fdt - force WID window a desktop type window\n \ -fs - Full Screen\n \ -un - Undecorated\n \ -s - Sticky\n \ @@ -275,6 +276,7 @@ int main(int argc, char **argv) bool have_argb_visual = false; bool noInput = false; bool argb = false; + bool set_desktop_type = false; bool fullscreen = false; bool noFocus = false; bool override = false; @@ -309,6 +311,10 @@ int main(int argc, char **argv) { argb = true; } + else if (strcmp (argv[i], "-fdt") == 0) + { + set_desktop_type = true; + } else if (strcmp (argv[i], "-fs") == 0) { fullscreen = 1; @@ -526,7 +532,12 @@ int main(int argc, char **argv) xa = ATOM(_NET_WM_WINDOW_TYPE); Atom prop; - prop = ATOM(_NET_WM_WINDOW_TYPE_NORMAL); + if (set_desktop_type) + { + prop = ATOM(_NET_WM_WINDOW_TYPE_DESKTOP); + } else { + prop = ATOM(_NET_WM_WINDOW_TYPE_NORMAL); + } XChangeProperty(display, window.window, xa, XA_ATOM, 32, PropModeReplace, (unsigned char *) &prop, 1);