diff --git a/calmwm.h b/calmwm.h index e7c679f..3c5069b 100644 --- a/calmwm.h +++ b/calmwm.h @@ -261,6 +261,8 @@ enum menu_exec { #define CWM_MENU_DUMMY 0x0001 #define CWM_MENU_FILE 0x0002 #define CWM_MENU_LIST 0x0004 +#define CWM_MENU_WINDOW_ALL 0x0008 +#define CWM_MENU_WINDOW_HIDDEN 0x0010 struct menu { TAILQ_ENTRY(menu) entry; diff --git a/conf.c b/conf.c index 8facd65..d0b5a97 100644 --- a/conf.c +++ b/conf.c @@ -174,7 +174,10 @@ static const struct { { "menu-cmd", kbfunc_menu_cmd, CWM_CONTEXT_SC, {0} }, { "menu-group", kbfunc_menu_group, CWM_CONTEXT_SC, {0} }, { "menu-ssh", kbfunc_menu_ssh, CWM_CONTEXT_SC, {0} }, - { "menu-window", kbfunc_menu_client, CWM_CONTEXT_SC, {0} }, + { "menu-window", kbfunc_menu_client, CWM_CONTEXT_SC, + {.i = CWM_MENU_WINDOW_ALL} }, + { "menu-window-hidden", kbfunc_menu_client, CWM_CONTEXT_SC, + {.i = CWM_MENU_WINDOW_HIDDEN} }, { "menu-exec", kbfunc_menu_exec, CWM_CONTEXT_SC, {.i = CWM_MENU_EXEC_EXEC} }, { "menu-exec-wm", kbfunc_menu_exec, CWM_CONTEXT_SC, diff --git a/cwm.1 b/cwm.1 index ab03c66..2898a52 100644 --- a/cwm.1 +++ b/cwm.1 @@ -219,8 +219,8 @@ Menus are recalled by clicking the mouse on the root window: .Pp .Bl -tag -width Ds -offset indent -compact .It Ic M1 -Show list of currently hidden windows. -Selecting an item will unhide that window. +Show list of currently defined windows. +Selecting an item will warp to that window, unhiding it if necessary. .It Ic M2 Show list of currently defined groups. Selecting an item will hide/unhide that group. diff --git a/cwmrc.5 b/cwmrc.5 index 40bc294..6419abd 100644 --- a/cwmrc.5 +++ b/cwmrc.5 @@ -261,6 +261,8 @@ Spawn a new terminal. Lock the screen. .It menu-window Launch window search menu. +.It menu-window-hidden +Launch hidden window search menu. .It menu-cmd Launch application search menu. .It menu-group diff --git a/kbfunc.c b/kbfunc.c index f0cadf2..0284928 100644 --- a/kbfunc.c +++ b/kbfunc.c @@ -298,12 +298,13 @@ kbfunc_menu_client(void *ctx, union arg *arg, enum xev xev) struct menu *mi; struct menu_q menuq; int m = (xev == CWM_XEV_BTN); + int all = (arg->i & CWM_MENU_WINDOW_ALL); old_cc = client_current(); TAILQ_INIT(&menuq); TAILQ_FOREACH(cc, &sc->clientq, entry) { - if (m) { + if (!all) { if (cc->flags & CLIENT_HIDDEN) menuq_add(&menuq, cc, NULL); } else