mirror of
https://github.com/leahneukirchen/cwm.git
synced 2023-08-10 21:13:12 +03:00
Add support to cwm for resizing the windows using Control-Meta-[hjkl].
Please note that this remaps Control-Meta-L (label) to Control-Meta-N (name). ok jasper@, todd@.
This commit is contained in:
parent
af71fc930a
commit
699b048959
1
calmwm.h
1
calmwm.h
@ -432,6 +432,7 @@ void kbfunc_client_nogroup(struct client_ctx *, void *);
|
|||||||
void kbfunc_client_maximize(struct client_ctx *, void *);
|
void kbfunc_client_maximize(struct client_ctx *, void *);
|
||||||
void kbfunc_client_vmaximize(struct client_ctx *, void *);
|
void kbfunc_client_vmaximize(struct client_ctx *, void *);
|
||||||
void kbfunc_client_move(struct client_ctx *, void *);
|
void kbfunc_client_move(struct client_ctx *, void *);
|
||||||
|
void kbfunc_client_resize(struct client_ctx *, void *);
|
||||||
void kbfunc_menu_search(struct client_ctx *, void *);
|
void kbfunc_menu_search(struct client_ctx *, void *);
|
||||||
void kbfunc_exec(struct client_ctx *, void *);
|
void kbfunc_exec(struct client_ctx *, void *);
|
||||||
void kbfunc_ssh(struct client_ctx *, void *);
|
void kbfunc_ssh(struct client_ctx *, void *);
|
||||||
|
28
conf.c
28
conf.c
@ -204,7 +204,7 @@ conf_setup(struct conf *c)
|
|||||||
XK_Tab, Mod1Mask, 0, 0);
|
XK_Tab, Mod1Mask, 0, 0);
|
||||||
conf_bindkey(c, kbfunc_client_rcycle,
|
conf_bindkey(c, kbfunc_client_rcycle,
|
||||||
XK_Tab, Mod1Mask|ShiftMask, 0, 0);
|
XK_Tab, Mod1Mask|ShiftMask, 0, 0);
|
||||||
conf_bindkey(c, kbfunc_client_label, XK_l,
|
conf_bindkey(c, kbfunc_client_label, XK_n,
|
||||||
ControlMask|Mod1Mask, KBFLAG_NEEDCLIENT, 0);
|
ControlMask|Mod1Mask, KBFLAG_NEEDCLIENT, 0);
|
||||||
conf_bindkey(c, kbfunc_client_delete, XK_x,
|
conf_bindkey(c, kbfunc_client_delete, XK_x,
|
||||||
ControlMask|Mod1Mask, KBFLAG_NEEDCLIENT, 0);
|
ControlMask|Mod1Mask, KBFLAG_NEEDCLIENT, 0);
|
||||||
@ -258,7 +258,31 @@ conf_setup(struct conf *c)
|
|||||||
conf_bindkey(c, kbfunc_client_move,
|
conf_bindkey(c, kbfunc_client_move,
|
||||||
XK_H, Mod1Mask, KBFLAG_NEEDCLIENT,
|
XK_H, Mod1Mask, KBFLAG_NEEDCLIENT,
|
||||||
(void *)(CWM_LEFT|CWM_BIGMOVE));
|
(void *)(CWM_LEFT|CWM_BIGMOVE));
|
||||||
}
|
conf_bindkey(c, kbfunc_client_resize,
|
||||||
|
XK_k, ControlMask|Mod1Mask,
|
||||||
|
KBFLAG_NEEDCLIENT, (void *)CWM_UP);
|
||||||
|
conf_bindkey(c, kbfunc_client_resize,
|
||||||
|
XK_j, ControlMask|Mod1Mask,
|
||||||
|
KBFLAG_NEEDCLIENT, (void *)CWM_DOWN);
|
||||||
|
conf_bindkey(c, kbfunc_client_resize,
|
||||||
|
XK_l, ControlMask|Mod1Mask,
|
||||||
|
KBFLAG_NEEDCLIENT, (void *)CWM_RIGHT);
|
||||||
|
conf_bindkey(c, kbfunc_client_resize,
|
||||||
|
XK_h, ControlMask|Mod1Mask,
|
||||||
|
KBFLAG_NEEDCLIENT, (void *)CWM_LEFT);
|
||||||
|
conf_bindkey(c, kbfunc_client_resize,
|
||||||
|
XK_K, ControlMask|Mod1Mask, KBFLAG_NEEDCLIENT,
|
||||||
|
(void *)(CWM_UP|CWM_BIGMOVE));
|
||||||
|
conf_bindkey(c, kbfunc_client_resize,
|
||||||
|
XK_J, ControlMask|Mod1Mask, KBFLAG_NEEDCLIENT,
|
||||||
|
(void *)(CWM_DOWN|CWM_BIGMOVE));
|
||||||
|
conf_bindkey(c, kbfunc_client_resize,
|
||||||
|
XK_L, ControlMask|Mod1Mask, KBFLAG_NEEDCLIENT,
|
||||||
|
(void *)(CWM_RIGHT|CWM_BIGMOVE));
|
||||||
|
conf_bindkey(c, kbfunc_client_resize,
|
||||||
|
XK_H, ControlMask|Mod1Mask, KBFLAG_NEEDCLIENT,
|
||||||
|
(void *)(CWM_LEFT|CWM_BIGMOVE));
|
||||||
|
}
|
||||||
|
|
||||||
snprintf(dir_settings, sizeof(dir_settings),
|
snprintf(dir_settings, sizeof(dir_settings),
|
||||||
"%s/.calmwm/.settings", home);
|
"%s/.calmwm/.settings", home);
|
||||||
|
8
cwm.1
8
cwm.1
@ -63,7 +63,7 @@ Raise current window.
|
|||||||
Search for windows.
|
Search for windows.
|
||||||
.It Ic C-/
|
.It Ic C-/
|
||||||
Search for applications.
|
Search for applications.
|
||||||
.It Ic C-M-l
|
.It Ic C-M-n
|
||||||
Label current window.
|
Label current window.
|
||||||
.It Ic M-Tab
|
.It Ic M-Tab
|
||||||
Cycle through currently visible windows.
|
Cycle through currently visible windows.
|
||||||
@ -133,13 +133,17 @@ The default behavior for new windows is to not assign any group.
|
|||||||
This changes the default behavior to assigning the currrently selected
|
This changes the default behavior to assigning the currrently selected
|
||||||
group to any newly created windows.
|
group to any newly created windows.
|
||||||
.El
|
.El
|
||||||
.Sh WINDOW MOVEMENT
|
.Sh WINDOW MOVEMENT AND RESIZING
|
||||||
.Nm
|
.Nm
|
||||||
windows can be moved with the use of the keyboard through Vi-like bindings.
|
windows can be moved with the use of the keyboard through Vi-like bindings.
|
||||||
M-[hjkl] moves the current window a small amount, while M-shift-[hjkl] moves
|
M-[hjkl] moves the current window a small amount, while M-shift-[hjkl] moves
|
||||||
the current window a larger amount.
|
the current window a larger amount.
|
||||||
For example, to move the current window to the left a small amount, press M-h.
|
For example, to move the current window to the left a small amount, press M-h.
|
||||||
To move the current window down by a larger amount, press M-shift-j.
|
To move the current window down by a larger amount, press M-shift-j.
|
||||||
|
.Pp
|
||||||
|
Similarly, windows may be resized with the same keybindings with the addition
|
||||||
|
of the Control key. C-M-[hjkl] resizes the window a small amount and C-M-shift-[hjkl]
|
||||||
|
resizes by a larger increment.
|
||||||
.Sh SEARCH
|
.Sh SEARCH
|
||||||
.Nm
|
.Nm
|
||||||
features the ability to search for windows by their current title,
|
features the ability to search for windows by their current title,
|
||||||
|
45
kbfunc.c
45
kbfunc.c
@ -67,6 +67,51 @@ kbfunc_client_move(struct client_ctx *cc, void *arg)
|
|||||||
cc->ptr.x = x + mx;
|
cc->ptr.x = x + mx;
|
||||||
client_ptrwarp(cc);
|
client_ptrwarp(cc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
kbfunc_client_resize(struct client_ctx *cc, void *arg)
|
||||||
|
{
|
||||||
|
int flags,mx,my;
|
||||||
|
u_int amt;
|
||||||
|
|
||||||
|
mx = my = 0;
|
||||||
|
|
||||||
|
flags = (int)arg;
|
||||||
|
amt = MOVE_AMOUNT;
|
||||||
|
|
||||||
|
if (flags & CWM_BIGMOVE) {
|
||||||
|
flags -= CWM_BIGMOVE;
|
||||||
|
amt = amt*10;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch(flags) {
|
||||||
|
case CWM_UP:
|
||||||
|
my -= amt;
|
||||||
|
break;
|
||||||
|
case CWM_DOWN:
|
||||||
|
my += amt;
|
||||||
|
break;
|
||||||
|
case CWM_RIGHT:
|
||||||
|
mx += amt;
|
||||||
|
break;
|
||||||
|
case CWM_LEFT:
|
||||||
|
mx -= amt;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
cc->geom.height += my;
|
||||||
|
cc->geom.width += mx;
|
||||||
|
client_resize(cc);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Moving the cursor while resizing is problematic. Just place
|
||||||
|
* it in the middle of the window.
|
||||||
|
*/
|
||||||
|
cc->ptr.x = -1;
|
||||||
|
cc->ptr.y = -1;
|
||||||
|
client_ptrwarp(cc);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
kbfunc_client_search(struct client_ctx *scratch, void *arg)
|
kbfunc_client_search(struct client_ctx *scratch, void *arg)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user