dwm-movetoedge-6.2.diff - sites - public wiki contents of suckless.org
 (HTM) git clone git://git.suckless.org/sites
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
       dwm-movetoedge-6.2.diff (2355B)
       ---
            1 diff --git a/config.def.h b/config.def.h
            2 index 1c0b587..7e8436f 100644
            3 --- a/config.def.h
            4 +++ b/config.def.h
            5 @@ -84,6 +84,15 @@ static Key keys[] = {
            6          { MODKEY,                       XK_period, focusmon,       {.i = +1 } },
            7          { MODKEY|ShiftMask,             XK_comma,  tagmon,         {.i = -1 } },
            8          { MODKEY|ShiftMask,             XK_period, tagmon,         {.i = +1 } },
            9 +        { MODKEY,                         XK_KP_End,    movetoedge,       {.v = "-1 1" } },
           10 +        { MODKEY,                         XK_KP_Down,   movetoedge,       {.v = "0 1" } },
           11 +        { MODKEY,                         XK_KP_Next,   movetoedge,       {.v = "1 1" } },
           12 +        { MODKEY,                         XK_KP_Left,   movetoedge,       {.v = "-1 0" } },
           13 +        { MODKEY,                         XK_KP_Begin,  movetoedge,       {.v = "0 0" } },
           14 +        { MODKEY,                         XK_KP_Right,  movetoedge,       {.v = "1 0" } },
           15 +        { MODKEY,                         XK_KP_Home,   movetoedge,       {.v = "-1 -1" } },
           16 +        { MODKEY,                         XK_KP_Up,     movetoedge,       {.v = "0 -1" } },
           17 +        { MODKEY,                         XK_KP_Prior,  movetoedge,       {.v = "1 -1" } },
           18          TAGKEYS(                        XK_1,                      0)
           19          TAGKEYS(                        XK_2,                      1)
           20          TAGKEYS(                        XK_3,                      2)
           21 diff --git a/dwm.c b/dwm.c
           22 index 9fd0286..b9030fe 100644
           23 --- a/dwm.c
           24 +++ b/dwm.c
           25 @@ -184,6 +184,7 @@ static void maprequest(XEvent *e);
           26  static void monocle(Monitor *m);
           27  static void motionnotify(XEvent *e);
           28  static void movemouse(const Arg *arg);
           29 +static void movetoedge(const Arg *arg);
           30  static Client *nexttiled(Client *c);
           31  static void pop(Client *);
           32  static void propertynotify(XEvent *e);
           33 @@ -1193,6 +1194,43 @@ movemouse(const Arg *arg)
           34          }
           35  }
           36  
           37 +void
           38 +movetoedge(const Arg *arg) {
           39 +        /* only floating windows can be moved */
           40 +        Client *c;
           41 +        c = selmon->sel;
           42 +        int x, y, nx, ny;
           43 +
           44 +        if (!c || !arg)
           45 +                return;
           46 +        if (selmon->lt[selmon->sellt]->arrange && !c->isfloating)
           47 +                return;
           48 +        if (sscanf((char *)arg->v, "%d %d", &x, &y) != 2)
           49 +                return;
           50 +
           51 +        if(x == 0)
           52 +                nx = (selmon->mw - c->w)/2;
           53 +        else if(x == -1)
           54 +                nx = borderpx;
           55 +        else if(x == 1)
           56 +                nx = selmon->mw - (c->w + 2 * borderpx);
           57 +        else
           58 +                nx = c->x;
           59 +
           60 +        if(y == 0)
           61 +                ny = (selmon->mh - (c->h + bh))/2;
           62 +        else if(y == -1)
           63 +                ny = bh + borderpx;
           64 +        else if(y == 1)
           65 +                ny = selmon->mh - (c->h + 2 * borderpx);
           66 +        else 
           67 +                ny = c->y;
           68 +
           69 +
           70 +        XRaiseWindow(dpy, c->win);
           71 +        resize(c, nx, ny, c->w, c->h, True);
           72 +}
           73 +
           74  Client *
           75  nexttiled(Client *c)
           76  {