URI: 
       implemented NET_ACTIVE_WINDOW support - dwm - dynamic window manager
  HTML git clone https://git.parazyd.org/dwm
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 92e55c7c53cb808b584982ac8f6d69112d713fab
   DIR parent c86f131681182258208ef97e81206ccc44e718ee
  HTML Author: Anselm R.Garbe <arg@10ksloc.org>
       Date:   Tue,  8 Aug 2006 17:08:45 +0200
       
       implemented NET_ACTIVE_WINDOW support
       
       Diffstat:
         M client.c                            |       5 +++++
         M dwm.h                               |       2 +-
         M event.c                             |      13 +++++++++++++
         M main.c                              |       1 +
       
       4 files changed, 20 insertions(+), 1 deletion(-)
       ---
   DIR diff --git a/client.c b/client.c
       @@ -58,6 +58,8 @@ focus(Client *c)
                drawtitle(c);
                XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime);
                XSync(dpy, False);
       +        XChangeProperty(dpy, root, netatom[NetActiveWindow], XA_WINDOW, 32,
       +                        PropModeReplace, (unsigned char *)&c->win, 1);
                while(XCheckMaskEvent(dpy, EnterWindowMask, &ev));
        }
        
       @@ -459,6 +461,9 @@ unmanage(Client *c)
                arrange(NULL);
                if(sel)
                        focus(sel);
       +        else
       +                XChangeProperty(dpy, root, netatom[NetActiveWindow], XA_WINDOW, 32,
       +                                PropModeReplace, (unsigned char *)NULL, 1);
        }
        
        void
   DIR diff --git a/dwm.h b/dwm.h
       @@ -22,7 +22,7 @@ union Arg {
        };
        
        /* atoms */
       -enum { NetSupported, NetWMName, NetLast };
       +enum { NetSupported, NetWMName, NetActiveWindow, NetLast };
        enum { WMProtocols, WMDelete, WMLast };
        
        /* cursor */
   DIR diff --git a/event.c b/event.c
       @@ -146,6 +146,18 @@ buttonpress(XEvent *e)
        }
        
        static void
       +clientmessage(XEvent *e)
       +{
       +        Client *c;
       +        XClientMessageEvent *ev = &e->xclient;
       +
       +        if(ev->message_type == netatom[NetActiveWindow]) {
       +                if((c = getclient(ev->window)) && c->tags[tsel])
       +                        focus(c);
       +        }
       +}
       +
       +static void
        configurerequest(XEvent *e)
        {
                Client *c;
       @@ -339,6 +351,7 @@ unmapnotify(XEvent *e)
        
        void (*handler[LASTEvent]) (XEvent *) = {
                [ButtonPress] = buttonpress,
       +        [ClientMessage] = clientmessage,
                [ConfigureRequest] = configurerequest,
                [DestroyNotify] = destroynotify,
                [EnterNotify] = enternotify,
   DIR diff --git a/main.c b/main.c
       @@ -201,6 +201,7 @@ main(int argc, char *argv[])
                wmatom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False);
                netatom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False);
                netatom[NetWMName] = XInternAtom(dpy, "_NET_WM_NAME", False);
       +        netatom[NetActiveWindow] = XInternAtom(dpy, "_NET_ACTIVE_WINDOW", False);
                XChangeProperty(dpy, root, netatom[NetSupported], XA_ATOM, 32,
                                PropModeReplace, (unsigned char *) netatom, NetLast);