Applications are a nice way to stuff frequently used programs behind mnemonic names, so starting them is one keybind and a few characters away.
Labels are nice for finding windows quickly. All windows start with an empty label. Now, switching windows back and forth, I want to reach my application windows most of the time, but I want to do so as quickly as spawning them, without manually setting a label for each of them. Diff below labels application windows with their command name, which is the application name itself. So with the following configuration command app "xterm -e sh -c 'something; long_to --type'" after spawing that, `C-slash app <Enter>' navigates to it so one does not have to search for the the window title or program name. Does that sound useful to anyone? Is there a better way to do it? This attempt simply stuffs the label into screen context so it can be passed along from command to client context. Index: client.c =================================================================== RCS file: /cvs/xenocara/app/cwm/client.c,v retrieving revision 1.255 diff -u -p -r1.255 client.c --- client.c 7 Mar 2019 14:28:17 -0000 1.255 +++ client.c 3 Jul 2019 20:15:51 -0000 @@ -67,7 +67,7 @@ client_init(Window win, struct screen_ct cc = xmalloc(sizeof(*cc)); cc->sc = sc; cc->win = win; - cc->label = NULL; + cc->label = sc->label; cc->gc = NULL; cc->flags = 0; cc->stackingorder = 0; Index: kbfunc.c =================================================================== RCS file: /cvs/xenocara/app/cwm/kbfunc.c,v retrieving revision 1.165 diff -u -p -r1.165 kbfunc.c --- kbfunc.c 7 Mar 2019 14:28:17 -0000 1.165 +++ kbfunc.c 3 Jul 2019 20:15:54 -0000 @@ -517,6 +517,7 @@ kbfunc_menu_cmd(void *ctx, struct cargs search_match_cmd, search_print_cmd)) != NULL) { cmd = (struct cmd_ctx *)mi->ctx; u_spawn(cmd->path); + sc->label = xstrdup(cmd->name); } menuq_clear(&menuq); Index: screen.c =================================================================== RCS file: /cvs/xenocara/app/cwm/screen.c,v retrieving revision 1.93 diff -u -p -r1.93 screen.c --- screen.c 8 Mar 2019 20:33:30 -0000 1.93 +++ screen.c 3 Jul 2019 20:15:55 -0000 @@ -54,6 +54,7 @@ screen_init(int which) sc->visual = DefaultVisual(X_Dpy, sc->which); sc->cycling = 0; sc->hideall = 0; + sc->label = NULL; conf_screen(sc);