I think I've found a small issue with cwm where, if you have a single unfocused window in one group, and switch to that group, (from a focused window in another group) using window-cycle-ingroup doesn't change from nothing-focused to focusing the one in-group window.
To reproduce: 1) with the following .cwmrc file (not sure if "sticky yes" plays into this) sticky yes bind-key 4-1 group-only-1 bind-key 4-2 group-only-2 bind-key 4-Tab window-cycle-ingroup bind-key 4S-Tab window-rcycle-ingroup and a ~/.xsession of only (mostly just to make sure we're not spawning other focusable windows) exec /usr/X11R6/bin/cwm log in to xenodm/xenorcara 2) mouse over the default xconsole instance to focus it and use CM-x to close the default xconsole instance 3) use 4-1 (logo key + 1) to make sure you're in group #1 4) use CM-Return to spawn terminal #1. Maybe type "echo group 1" here just to make it easy to identify 5) move the mouse to some place other than the terminal window (focus remains on the window) 6) use 4-2 to switch to group 2 (can't see the terminal now) 7) use CM-Return to spawn a terminal #2 (it now has focus). Maybe type "echo group 2" here just to make it easy to identify 8) move the mouse to such a location that it would not be over the first terminal (in the first group, launched in step #4) 9) use 4-1 to switch back to group 1 (bringing back terminal #1, observing it doesn't have focus because the mouse wasn't over it) 10) used 4-Tab (window-cycle-ingroup) to attempt to cycle the windows in this group At this point I can't focus terminal #1 by cycling the windows in the group, even though it's in the group. It requires me to move the mouse over the window to restore focus to that window. Expected behavior: in step #10, with nothing focused, it would move focus to that window. If I don't launch Terminal #2 (step #7) to steal focus, the problem doesn't manifest, so there's something hinky where it decides which windows are in-group and can be focused, possibly short-cutting if there's only one window, wrongly presuming that it already has focus. A little digging points me at the kbfunc_client_cycle() function in cwm/kbfunc.c where I'm guessing something bails early around line 441/442 (the return/break) without actually focusing the window (it looks like the client_raise() doesn't get called here). Given the "XXX I hate this hack" note there, I'm hesitant to propose a diff. :-) Hopefully that's adequate reproduction to make it easy to track down? Thanks! -tkc After typing that up, it looks like you might also be able to reproduce it without switching groups by spawning terminal #1, spawning terminal #2 in the same group, M+LMB drag terminal#2 somewhere else on the screen so the cursor won't end up over terminal#1, then control+d to exit terminal#2, leaving you in the same situation as step #9/#10.