sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | Refs

dwm-adjacenttag-6.2.diff (3431B)


      1 diff -up a/config.def.h b/config.def.h
      2 --- a/config.def.h	2021-10-02 13:57:18.011307099 +0100
      3 +++ b/config.def.h	2021-10-02 13:58:07.812080253 +0100
      4 @@ -84,6 +84,10 @@ static Key keys[] = {
      5  	{ MODKEY,                       XK_period, focusmon,       {.i = +1 } },
      6  	{ MODKEY|ShiftMask,             XK_comma,  tagmon,         {.i = -1 } },
      7  	{ MODKEY|ShiftMask,             XK_period, tagmon,         {.i = +1 } },
      8 +	{ MODKEY,                       XK_Right,  viewnext,       {0} },
      9 +	{ MODKEY,                       XK_Left,   viewprev,       {0} },
     10 +	{ MODKEY|ShiftMask,             XK_Right,  tagtonext,      {0} },
     11 +	{ MODKEY|ShiftMask,             XK_Left,   tagtoprev,      {0} },
     12  	TAGKEYS(                        XK_1,                      0)
     13  	TAGKEYS(                        XK_2,                      1)
     14  	TAGKEYS(                        XK_3,                      2)
     15 diff -up a/dwm.c b/dwm.c
     16 --- a/dwm.c	2021-10-02 13:57:18.011307099 +0100
     17 +++ b/dwm.c	2021-10-02 14:21:17.063622953 +0100
     18 @@ -183,8 +183,10 @@ static void maprequest(XEvent *e);
     19  static void monocle(Monitor *m);
     20  static void motionnotify(XEvent *e);
     21  static void movemouse(const Arg *arg);
     22 +static unsigned int nexttag(void);
     23  static Client *nexttiled(Client *c);
     24  static void pop(Client *);
     25 +static unsigned int prevtag(void);
     26  static void propertynotify(XEvent *e);
     27  static void quit(const Arg *arg);
     28  static Monitor *recttomon(int x, int y, int w, int h);
     29 @@ -208,6 +210,8 @@ static void sigchld(int unused);
     30  static void spawn(const Arg *arg);
     31  static void tag(const Arg *arg);
     32  static void tagmon(const Arg *arg);
     33 +static void tagtonext(const Arg *arg);
     34 +static void tagtoprev(const Arg *arg);
     35  static void tile(Monitor *);
     36  static void togglebar(const Arg *arg);
     37  static void togglefloating(const Arg *arg);
     38 @@ -227,6 +231,8 @@ static void updatetitle(Client *c);
     39  static void updatewindowtype(Client *c);
     40  static void updatewmhints(Client *c);
     41  static void view(const Arg *arg);
     42 +static void viewnext(const Arg *arg);
     43 +static void viewprev(const Arg *arg);
     44  static Client *wintoclient(Window w);
     45  static Monitor *wintomon(Window w);
     46  static int xerror(Display *dpy, XErrorEvent *ee);
     47 @@ -1192,6 +1198,13 @@ movemouse(const Arg *arg)
     48  	}
     49  }
     50  
     51 +unsigned int
     52 +nexttag(void)
     53 +{
     54 +	unsigned int seltag = selmon->tagset[selmon->seltags];
     55 +	return seltag == (1 << (LENGTH(tags) - 1)) ? 1 : seltag << 1;
     56 +}
     57 +
     58  Client *
     59  nexttiled(Client *c)
     60  {
     61 @@ -1208,6 +1221,13 @@ pop(Client *c)
     62  	arrange(c->mon);
     63  }
     64  
     65 +unsigned int
     66 +prevtag(void)
     67 +{
     68 +	unsigned int seltag = selmon->tagset[selmon->seltags];
     69 +	return seltag == 1 ? (1 << (LENGTH(tags) - 1)) : seltag >> 1;
     70 +}
     71 +
     72  void
     73  propertynotify(XEvent *e)
     74  {
     75 @@ -1671,6 +1691,32 @@ tagmon(const Arg *arg)
     76  }
     77  
     78  void
     79 +tagtonext(const Arg *arg)
     80 +{
     81 +	unsigned int tmp;
     82 +
     83 +	if (selmon->sel == NULL)
     84 +		return;
     85 +
     86 +	tmp = nexttag();
     87 +	tag(&(const Arg){.ui = tmp });
     88 +	view(&(const Arg){.ui = tmp });
     89 +}
     90 +
     91 +void
     92 +tagtoprev(const Arg *arg)
     93 +{
     94 +	unsigned int tmp;
     95 +
     96 +	if (selmon->sel == NULL)
     97 +		return;
     98 +
     99 +	tmp = prevtag();
    100 +	tag(&(const Arg){.ui = tmp });
    101 +	view(&(const Arg){.ui = tmp });
    102 +}
    103 +
    104 +void
    105  tile(Monitor *m)
    106  {
    107  	unsigned int i, n, h, mw, my, ty;
    108 @@ -2044,6 +2090,18 @@ view(const Arg *arg)
    109  	arrange(selmon);
    110  }
    111  
    112 +void
    113 +viewnext(const Arg *arg)
    114 +{
    115 +	view(&(const Arg){.ui = nexttag()});
    116 +}
    117 +
    118 +void
    119 +viewprev(const Arg *arg)
    120 +{
    121 +	view(&(const Arg){.ui = prevtag()});
    122 +}
    123 + 
    124  Client *
    125  wintoclient(Window w)
    126  {