diff options
-rw-r--r-- | calmwm.h | 3 | ||||
-rw-r--r-- | conf.c | 18 | ||||
-rw-r--r-- | cwmrc.5 | 10 | ||||
-rw-r--r-- | group.c | 11 | ||||
-rw-r--r-- | kbfunc.c | 6 |
5 files changed, 46 insertions, 2 deletions
diff --git a/calmwm.h b/calmwm.h index d5c77b6..e102763 100644 --- a/calmwm.h +++ b/calmwm.h @@ -446,6 +446,8 @@ void kbfunc_client_nogroup(struct client_ctx *, union arg *); void kbfunc_client_grouptoggle(struct client_ctx *, union arg *); +void kbfunc_client_movetogroup(struct client_ctx *, + union arg *); void kbfunc_client_maximize(struct client_ctx *, union arg *); void kbfunc_client_vmaximize(struct client_ctx *, @@ -488,6 +490,7 @@ void group_alltoggle(void); void group_sticky_toggle_enter(struct client_ctx *); void group_sticky_toggle_exit(struct client_ctx *); void group_autogroup(struct client_ctx *); +void group_movetogroup(struct client_ctx *, int); void font_init(struct screen_ctx *); int font_width(const char *, int); diff --git a/conf.c b/conf.c index 0ae7e68..7dba8b1 100644 --- a/conf.c +++ b/conf.c @@ -281,6 +281,24 @@ struct { { "grouponly7", kbfunc_client_grouponly, 0, {.i = 7} }, { "grouponly8", kbfunc_client_grouponly, 0, {.i = 8} }, { "grouponly9", kbfunc_client_grouponly, 0, {.i = 9} }, + { "movetogroup1", kbfunc_client_movetogroup, KBFLAG_NEEDCLIENT, + {.i = 1} }, + { "movetogroup2", kbfunc_client_movetogroup, KBFLAG_NEEDCLIENT, + {.i = 2} }, + { "movetogroup3", kbfunc_client_movetogroup, KBFLAG_NEEDCLIENT, + {.i = 3} }, + { "movetogroup4", kbfunc_client_movetogroup, KBFLAG_NEEDCLIENT, + {.i = 4} }, + { "movetogroup5", kbfunc_client_movetogroup, KBFLAG_NEEDCLIENT, + {.i = 5} }, + { "movetogroup6", kbfunc_client_movetogroup, KBFLAG_NEEDCLIENT, + {.i = 6} }, + { "movetogroup7", kbfunc_client_movetogroup, KBFLAG_NEEDCLIENT, + {.i = 7} }, + { "movetogroup8", kbfunc_client_movetogroup, KBFLAG_NEEDCLIENT, + {.i = 8} }, + { "movetogroup9", kbfunc_client_movetogroup, KBFLAG_NEEDCLIENT, + {.i = 9} }, { "nogroup", kbfunc_client_nogroup, 0, {0} }, { "cyclegroup", kbfunc_client_cyclegroup, 0, {.i = CWM_CYCLEGROUP} }, { "rcyclegroup", kbfunc_client_cyclegroup, 0, {.i = CWM_RCYCLEGROUP} }, diff --git a/cwmrc.5 b/cwmrc.5 index c0740b5..64b88ec 100644 --- a/cwmrc.5 +++ b/cwmrc.5 @@ -14,7 +14,7 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd $Mdocdate: May 4 2009 $ +.Dd $Mdocdate: May 14 2009 $ .Dt CWMRC 5 .Os .Sh NAME @@ -208,6 +208,12 @@ ignore xclock bind CM-r label bind CS-Return "xterm -e top" bind 4-o unmap +bind M-1 grouponly1 +bind M-2 grouponly2 +bind M-3 grouponly3 +bind MS-1 movetogroup1 +bind MS-2 movetogroup2 +bind MS-3 movetogroup3 # Mousebindings mousebind M-2 window_lower @@ -250,6 +256,8 @@ but also hides the other groups. Select all groups. .It grouptoggle Toggle group membership of current window. +.It movetogroup[n] +Hide current window from display and move to group n, where n is 1-9. .It cyclegroup Forward cycle through groups. .It rcyclegroup diff --git a/group.c b/group.c index 73f742d..0601760 100644 --- a/group.c +++ b/group.c @@ -143,7 +143,16 @@ group_init(void) TAILQ_INSERT_TAIL(&Groupq, &Groups[i], entry); } - Group_active = &Groups[0]; +} + +void +group_movetogroup(struct client_ctx *cc, int idx) +{ + if (idx < 0 || idx >= CALMWM_NGROUPS) + err(1, "group_movetogroup: index out of range (%d)", idx); + + client_hide(cc); + _group_add(&Groups[idx], cc); } /* diff --git a/kbfunc.c b/kbfunc.c index e05a3b5..d7814ab 100644 --- a/kbfunc.c +++ b/kbfunc.c @@ -467,6 +467,12 @@ kbfunc_client_grouptoggle(struct client_ctx *cc, union arg *arg) } void +kbfunc_client_movetogroup(struct client_ctx *cc, union arg *arg) +{ + group_movetogroup(cc, KBTOGROUP(arg->i)); +} + +void kbfunc_client_maximize(struct client_ctx *cc, union arg *arg) { client_maximize(cc); |