Allow cwm(1) to cycle through windows of the same window class as the
active window; default key binding to M-grave, respectively Alt-Tilde, like other window managers have as well. from Simon Dassow
This commit is contained in:
1
calmwm.h
1
calmwm.h
@@ -67,6 +67,7 @@
|
|||||||
#define CWM_CYCLE_FORWARD 0x0001
|
#define CWM_CYCLE_FORWARD 0x0001
|
||||||
#define CWM_CYCLE_REVERSE 0x0002
|
#define CWM_CYCLE_REVERSE 0x0002
|
||||||
#define CWM_CYCLE_INGROUP 0x0004
|
#define CWM_CYCLE_INGROUP 0x0004
|
||||||
|
#define CWM_CYCLE_INCLASS 0x0008
|
||||||
|
|
||||||
enum cwm_status {
|
enum cwm_status {
|
||||||
CWM_QUIT,
|
CWM_QUIT,
|
||||||
|
|||||||
6
conf.c
6
conf.c
@@ -136,6 +136,10 @@ static const struct {
|
|||||||
(CWM_CYCLE_FORWARD | CWM_CYCLE_INGROUP)) },
|
(CWM_CYCLE_FORWARD | CWM_CYCLE_INGROUP)) },
|
||||||
{ FUNC_SC(window-rcycle-ingroup, client_cycle,
|
{ FUNC_SC(window-rcycle-ingroup, client_cycle,
|
||||||
(CWM_CYCLE_REVERSE | CWM_CYCLE_INGROUP)) },
|
(CWM_CYCLE_REVERSE | CWM_CYCLE_INGROUP)) },
|
||||||
|
{ FUNC_SC(window-cycle-inclass, client_cycle,
|
||||||
|
(CWM_CYCLE_FORWARD | CWM_CYCLE_INCLASS)) },
|
||||||
|
{ FUNC_SC(window-rcycle-inclass, client_cycle,
|
||||||
|
(CWM_CYCLE_REVERSE | CWM_CYCLE_INCLASS)) },
|
||||||
|
|
||||||
{ FUNC_SC(group-cycle, group_cycle, (CWM_CYCLE_FORWARD)) },
|
{ FUNC_SC(group-cycle, group_cycle, (CWM_CYCLE_FORWARD)) },
|
||||||
{ FUNC_SC(group-rcycle, group_cycle, (CWM_CYCLE_REVERSE)) },
|
{ FUNC_SC(group-rcycle, group_cycle, (CWM_CYCLE_REVERSE)) },
|
||||||
@@ -220,6 +224,8 @@ static const struct {
|
|||||||
{ "C-slash", "menu-cmd" },
|
{ "C-slash", "menu-cmd" },
|
||||||
{ "M-Tab", "window-cycle" },
|
{ "M-Tab", "window-cycle" },
|
||||||
{ "MS-Tab", "window-rcycle" },
|
{ "MS-Tab", "window-rcycle" },
|
||||||
|
{ "M-grave", "window-cycle-inclass" },
|
||||||
|
{ "MS-grave", "window-rcycle-inclass" },
|
||||||
{ "CM-n", "window-menu-label" },
|
{ "CM-n", "window-menu-label" },
|
||||||
{ "CM-x", "window-close" },
|
{ "CM-x", "window-close" },
|
||||||
{ "CM-a", "group-toggle-all" },
|
{ "CM-a", "group-toggle-all" },
|
||||||
|
|||||||
4
cwm.1
4
cwm.1
@@ -102,6 +102,10 @@ Label current window.
|
|||||||
Cycle through currently visible windows.
|
Cycle through currently visible windows.
|
||||||
.It Ic MS-Tab
|
.It Ic MS-Tab
|
||||||
Reverse cycle through currently visible windows.
|
Reverse cycle through currently visible windows.
|
||||||
|
.It Ic M-grave
|
||||||
|
Cycle through currently visible windows of the same window class.
|
||||||
|
.It Ic MS-grave
|
||||||
|
Reverse cycle through currently visible windows of the same window class.
|
||||||
.It Ic CM-x
|
.It Ic CM-x
|
||||||
Close current window.
|
Close current window.
|
||||||
.It Ic CM-[n]
|
.It Ic CM-[n]
|
||||||
|
|||||||
4
cwmrc.5
4
cwmrc.5
@@ -295,6 +295,10 @@ Reverse cycle through windows.
|
|||||||
Forward cycle through windows in current group.
|
Forward cycle through windows in current group.
|
||||||
.It window-rcycle-ingroup
|
.It window-rcycle-ingroup
|
||||||
Reverse cycle through windows in current group.
|
Reverse cycle through windows in current group.
|
||||||
|
.It window-cycle-inclass
|
||||||
|
Forward cycle through windows of the current window class.
|
||||||
|
.It window-rcycle-inclass
|
||||||
|
Reverse cycle through windows of the current window class.
|
||||||
.It window-close
|
.It window-close
|
||||||
Close current window.
|
Close current window.
|
||||||
.It window-hide
|
.It window-hide
|
||||||
|
|||||||
4
kbfunc.c
4
kbfunc.c
@@ -430,7 +430,9 @@ kbfunc_client_cycle(void *ctx, struct cargs *cargs)
|
|||||||
/* Only cycle visible and non-ignored windows. */
|
/* Only cycle visible and non-ignored windows. */
|
||||||
if ((newcc->flags & (CLIENT_SKIP_CYCLE)) ||
|
if ((newcc->flags & (CLIENT_SKIP_CYCLE)) ||
|
||||||
((flags & CWM_CYCLE_INGROUP) &&
|
((flags & CWM_CYCLE_INGROUP) &&
|
||||||
(newcc->gc != oldcc->gc)))
|
(newcc->gc != oldcc->gc)) ||
|
||||||
|
((flags & CWM_CYCLE_INCLASS) &&
|
||||||
|
strcmp(newcc->res_class, oldcc->res_class) != 0))
|
||||||
again = 1;
|
again = 1;
|
||||||
|
|
||||||
/* Is oldcc the only non-hidden window? */
|
/* Is oldcc the only non-hidden window? */
|
||||||
|
|||||||
Reference in New Issue
Block a user