Re: [wmii] feature request: ClientClose event

From: Adam Ritter <xiph_AT_freemail.hu>
Date: Fri, 18 Aug 2006 11:38:28 +0200

On 8/17/06, Denis Grelich <denis_AT_grelich.de> wrote:
> On Thu, 17 Aug 2006 18:56:55 +0200
> "Anselm R. Garbe" <arg_AT_10kloc.org> wrote:
>
> > On Thu, Aug 17, 2006 at 04:32:33PM +0200, Adam Ritter wrote:
> > > It would be nice if a script could be notified if a client is
> > > closed. It would be easy to remember kill commands, but if the user
> > > closes the window the script won't be notified. I.e. if I create a
> > > key for focusing the ncmpc window and optionally creating a client,
> > > after the client is closed, it won't create an ncmpc client again
> > > (the script could always check if it is the right client, but that
> > > has limitations).
> >
> > Why not writing a wrapper script for the kill command? You could
> > check the client's props (class:inst) and decide what todo,
> > before writing kill. I see no need for the event you request.
>
> A kill command is not the only way to close a client/destroy a window,
> isn't it.
Yes, that's the problem. And the indexes of the clients change (when
destroy_client calls cext_vdetach), so the script must know about
every DestroyClient event to trace the index changes.

It was easy to write, so here's the patch:

*** wmii-3.1/cmd/wm/client.c Sat Jun 17 13:44:30 2006
--- wmii-3.1-new/cmd/wm/client.c Tue Aug 8 13:19:11 2006
*************** void
*** 446,451 ****
--- 446,452 ----
 destroy_client(Client *c)
 {
       unsigned int i;
+ static char buf[256];

       XGrabServer(dpy);
       XSetErrorHandler(dummy_error_handler);
*************** destroy_client(Client *c)
*** 463,468 ****
--- 464,471 ----
       reparent_client(c, root, c->rect.x, c->rect.y);
       XFreeGC(dpy, c->gc);
       XDestroyWindow(dpy, c->framewin);
+ snprintf(buf, sizeof(buf), "DestroyClient %d\n",
idx_of_client_id(c->id));
+ write_event(buf);
       cext_vdetach(vector_of_clients(&client), c);
       update_views();
       free(c);
Received on Fri Aug 18 2006 - 11:38:34 UTC

This archive was generated by hypermail 2.2.0 : Sun Jul 13 2008 - 16:13:00 UTC