Introduction
Introduction Statistics Contact Development Disclaimer Help
dwm-movethrow-6.2.diff - sites - public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log
Files
Refs
---
dwm-movethrow-6.2.diff (3044B)
---
1 This patch is heavily inspired by the moveplace patch. It allows to "thr…
2 windows in 4 directions, which makes them floating (if not floating alre…
3 and then moves them in the chosen direction until they hit the border of…
4 screen. Unlike moveplace, the windows get to keep their original size.
5 Additionally, there's a "middle direction" defined which simply centers a
6 window on the screen.
7
8 diff --git a/config.def.h b/config.def.h
9 index 1c0b587..cd8b0a7 100644
10 --- a/config.def.h
11 +++ b/config.def.h
12 @@ -84,6 +84,11 @@ static Key keys[] = {
13 { MODKEY, XK_period, focusmon, {.i …
14 { MODKEY|ShiftMask, XK_comma, tagmon, {.i …
15 { MODKEY|ShiftMask, XK_period, tagmon, {.i …
16 + { MODKEY|ShiftMask, XK_Up, movethrow, {.ui…
17 + { MODKEY|ShiftMask, XK_Down, movethrow, {.ui…
18 + { MODKEY|ShiftMask, XK_Left, movethrow, {.ui…
19 + { MODKEY|ShiftMask, XK_Right, movethrow, {.ui…
20 + { MODKEY|ShiftMask, XK_m, movethrow, {.ui…
21 TAGKEYS( XK_1, 0)
22 TAGKEYS( XK_2, 1)
23 TAGKEYS( XK_3, 2)
24 diff --git a/dwm.c b/dwm.c
25 index 4465af1..16f4b08 100644
26 --- a/dwm.c
27 +++ b/dwm.c
28 @@ -66,6 +66,7 @@ enum { NetSupported, NetWMName, NetWMState, NetWMCheck,
29 enum { WMProtocols, WMDelete, WMState, WMTakeFocus, WMLast }; /* defaul…
30 enum { ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle,
31 ClkClientWin, ClkRootWin, ClkLast }; /* clicks */
32 +enum { DIR_N, DIR_W, DIR_C, DIR_E, DIR_S, }; /* coordinates for movethr…
33
34 typedef union {
35 int i;
36 @@ -183,6 +184,7 @@ static void maprequest(XEvent *e);
37 static void monocle(Monitor *m);
38 static void motionnotify(XEvent *e);
39 static void movemouse(const Arg *arg);
40 +static void movethrow(const Arg *arg);
41 static Client *nexttiled(Client *c);
42 static void pop(Client *);
43 static void propertynotify(XEvent *e);
44 @@ -1192,6 +1194,46 @@ movemouse(const Arg *arg)
45 }
46 }
47
48 +void
49 +movethrow(const Arg *arg)
50 +{
51 + Client *c;
52 + int nh, nw, nx, ny;
53 + c = selmon->sel;
54 + if (!c)
55 + return;
56 + if (selmon->lt[selmon->sellt]->arrange && !c->isfloating)
57 + togglefloating(NULL);
58 + nw = c->w;
59 + nh = c->h;
60 + switch(arg->ui) {
61 + case DIR_N:
62 + nx = c->x;
63 + ny = selmon->wy;
64 + break;
65 + case DIR_E:
66 + nx = selmon->wx + selmon->ww - c->w - c->bw*2;
67 + ny = c->y;
68 + break;
69 + case DIR_S:
70 + nx = c->x;
71 + ny = selmon->wy + selmon->wh - c->h - c->bw*2;
72 + break;
73 + case DIR_W:
74 + nx = selmon->wx;
75 + ny = c->y;
76 + break;
77 + case DIR_C:
78 + nx = selmon->wx + ((selmon->ww - c->w - c->bw*2…
79 + ny = selmon->wy + ((selmon->wh - c->h - c->bw*2…
80 + break;
81 + default:
82 + return;
83 + }
84 + resize(c, nx, ny, nw, nh, True);
85 + XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, nw/2, nh/2);
86 +}
87 +
88 Client *
89 nexttiled(Client *c)
90 {
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.