Package: dunst
Version: 1.0.0-2
Followup-For: Bug #729690

Indeed, I also experienced this problem using i3lock.
dunst is forcedly raising its window, which is broken behavior anyway.

The _NET_WM_STATE_ABOVE property should be set on the window instead to avoid
conflicting behaviors with other "above" windows.

The attached patch fixes this bug.
--- dunst-1.0.0.Orig/x.c	2014-03-05 12:41:03.274349758 +0100
+++ dunst-1.0.0/x.c	2014-03-05 18:49:30.659319475 +0100
@@ -498,10 +513,6 @@
                 case SelectionNotify:
                         if (ev.xselection.property == xctx.utf8)
                                 break;
-                case VisibilityNotify:
-                        if (ev.xvisibility.state != VisibilityUnobscured)
-                                XRaiseWindow(xctx.dpy, xctx.win);
-                        break;
                 case ButtonPress:
                         if (ev.xbutton.window == xctx.win) {
                                 x_handle_click(ev);
@@ -798,6 +809,12 @@
                           CopyFromParent, DefaultVisual(xctx.dpy,
                                                         DefaultScreen(xctx.dpy)),
                           CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa);
+
+        Atom _NET_WM_STATE = XInternAtom(xctx.dpy, "_NET_WM_STATE", false);
+        Atom _NET_WM_STATE_ABOVE = XInternAtom(xctx.dpy, "_NET_WM_STATE_ABOVE", false);
+        XChangeProperty(xctx.dpy, xctx.win, _NET_WM_STATE, XA_ATOM, 32,
+                        PropModeReplace, (unsigned char *)&_NET_WM_STATE_ABOVE, 1L);
+
         settings.transparency =
             settings.transparency > 100 ? 100 : settings.transparency;
         setopacity(xctx.win,

Reply via email to