Browse Source

big cleanup, new key bindings, smaller config.h

master
Sadoon AlBader 5 months ago
parent
commit
2082534cd3
  1. 180
      config.h
  2. 2
      config.mk
  3. 37
      dwm.c
  4. 6
      shiftview.c

180
config.h

@ -1,8 +1,8 @@
/* See LICENSE file for copyright and license details. */
/* Constants */
#define TERMINAL "st"
#define TERMCLASS "St"
#define TERMINAL "urxvt"
#define TERMCLASS "URxvt"
/* appearance */
static unsigned int borderpx = 3; /* border pixel of windows */
@ -35,13 +35,6 @@ typedef struct {
const char *name;
const void *cmd;
} Sp;
const char *spcmd1[] = {TERMINAL, "-n", "spterm", "-g", "120x34", NULL };
const char *spcmd2[] = {TERMINAL, "-n", "spcalc", "-f", "monospace:size=16", "-g", "50x20", "-e", "bc", "-lq", NULL };
static Sp scratchpads[] = {
/* name cmd */
{"spterm", spcmd1},
{"spcalc", spcmd2},
};
/* tagging */
static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
@ -52,19 +45,14 @@ static const Rule rules[] = {
* WM_NAME(STRING) = title
*/
/* class instance title tags mask isfloating isterminal noswallow monitor */
{ "Gimp", NULL, NULL, 1 << 8, 0, 0, 0, -1 },
{ TERMCLASS, NULL, NULL, 0, 0, 1, 0, -1 },
{ NULL, NULL, "Event Tester", 0, 0, 0, 1, -1 },
{ NULL, "spterm", NULL, SPTAG(0), 1, 1, 0, -1 },
{ NULL, "spcalc", NULL, SPTAG(1), 1, 1, 0, -1 },
{ NULL, "file-roller",NULL, 0, True, 0, 1, -1 },
{ NULL, "xfce4-taskmanager",NULL, 0, True, 0, 1, -1 },
{ NULL, "timeshift-gtk", NULL, 0, True, 0, 1, -1 },
{ NULL, "gnome-calculator", NULL, 0, True, 0, 1, -1 },
{ NULL, "thunar", NULL, 0, True, 0, 1, -1 },
{ NULL, "xfburn", NULL, 0, True, 0, 1, -1 },
{ NULL, "pamac-manager", NULL, 0, True, 0, 1, -1 },
{ NULL, "pamac-updater", NULL, 0, True, 0, 1, -1 },
{ NULL, "xfce4-settings-manager",NULL, 0, True, 0, 1, -1 },
{ NULL, "xfce4-display-settings",NULL, 0, True, 0, 1, -1 },
{ NULL, "wrapper-2.0", NULL, ~0, True, 0, 1, -1 },
@ -104,13 +92,9 @@ static const Layout layouts[] = {
{ MODKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \
{ MODKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui = 1 << TAG} },
#define STACKKEYS(MOD,ACTION) \
{ MOD, XK_j, ACTION##stack, {.i = INC(+1) } }, \
{ MOD, XK_k, ACTION##stack, {.i = INC(-1) } }, \
{ MOD, XK_Right, ACTION##stack, {.i = INC(+1) } }, \
{ MOD, XK_Left, ACTION##stack, {.i = INC(-1) } }, \
{ MOD, XK_v, ACTION##stack, {.i = 0 } }, \
/* { MOD, XK_grave, ACTION##stack, {.i = PREVSEL } }, \ */
/* { MOD, XK_a, ACTION##stack, {.i = 1 } }, \ */
/* { MOD, XK_z, ACTION##stack, {.i = 2 } }, \ */
/* { MOD, XK_x, ACTION##stack, {.i = -1 } }, */
/* helper for spawning shell commands in the pre dwm-5.0 fashion */
#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
@ -150,9 +134,6 @@ static Key keys[] = {
/* modifier key function argument */
STACKKEYS(MODKEY, focus)
STACKKEYS(MODKEY|ShiftMask, push)
/* { MODKEY|ShiftMask, XK_Escape, spawn, SHCMD("") }, */
{ MODKEY, XK_grave, spawn, SHCMD("dmenuunicode") },
/* { MODKEY|ShiftMask, XK_grave, togglescratch, SHCMD("") }, */
TAGKEYS( XK_1, 0)
TAGKEYS( XK_2, 1)
TAGKEYS( XK_3, 2)
@ -164,23 +145,21 @@ static Key keys[] = {
TAGKEYS( XK_9, 8)
{ MODKEY, XK_0, view, {.ui = ~0 } },
{ MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } },
{ MODKEY, XK_minus, spawn, SHCMD("pamixer --allow-boost -d 5") },
{ MODKEY|ShiftMask, XK_minus, spawn, SHCMD("pamixer --allow-boost -d 15") },
{ MODKEY, XK_equal, spawn, SHCMD("pamixer --allow-boost -i 5") },
{ MODKEY|ShiftMask, XK_equal, spawn, SHCMD("pamixer --allow-boost -i 15") },
{ MODKEY, XK_BackSpace, spawn, SHCMD("xfce4-session-logout") },
{ MODKEY|ShiftMask, XK_BackSpace, spawn, SHCMD("xflock4") },
{ MODKEY, XK_Tab, view, {0} },
/* { MODKEY|ShiftMask, XK_Tab, spawn, SHCMD("") }, */
{ MODKEY, XK_q, killclient, {0} },
//{ MODKEY|ShiftMask, XK_q, spawn, SHCMD("sysact") },
{ MODKEY, XK_w, spawn, SHCMD("exo-open --launch WebBrowser") },
{ MODKEY|ShiftMask, XK_w, spawn, SHCMD( "seamonkey -browser") },
{ MODKEY, XK_e, spawn, SHCMD("seamonkey -mail") },
{ MODKEY|ShiftMask, XK_e, spawn, SHCMD( "xfce4-terminal -e neomutt ; rmdir ~/.abook") },
{ MODKEY, XK_w, spawn, SHCMD("$BROWSER") },
{ MODKEY|ShiftMask, XK_w, spawn, SHCMD( "netsurf") },
{ MODKEY, XK_e, spawn, SHCMD("claws-mail --alternate-config-dir $HOME/.config/claws-mail") },
{ MODKEY|ShiftMask, XK_e, spawn, SHCMD( "$TERMINAL -e neomutt ; rmdir ~/.abook") },
{ MODKEY, XK_r, spawn, SHCMD("thunar") },
{ MODKEY|ShiftMask, XK_r, spawn, SHCMD("xfce4-terminal -e mc") },
{ MODKEY|ShiftMask, XK_r, spawn, SHCMD("$TERMINAL -e mc") },
{ MODKEY, XK_t, setlayout, {.v = &layouts[0]} }, /* tile */
{ MODKEY|ShiftMask, XK_t, setlayout, {.v = &layouts[1]} }, /* bstack */
{ MODKEY, XK_y, setlayout, {.v = &layouts[2]} }, /* spiral */
@ -192,134 +171,59 @@ static Key keys[] = {
{ MODKEY, XK_o, incnmaster, {.i = +1 } },
{ MODKEY|ShiftMask, XK_o, incnmaster, {.i = -1 } },
{ MODKEY, XK_p, spawn, SHCMD("xfce4-display-settings") },
//{ MODKEY|ShiftMask, XK_p, spawn, SHCMD("mpc pause ; pauseallmpv") },
//{ MODKEY, XK_bracketleft, spawn, SHCMD("mpc seek -10") },
//{ MODKEY|ShiftMask, XK_bracketleft, spawn, SHCMD("mpc seek -60") },
//{ MODKEY, XK_bracketright, spawn, SHCMD("mpc seek +10") },
//{ MODKEY|ShiftMask, XK_bracketright, spawn, SHCMD("mpc seek +60") },
{ MODKEY, XK_backslash, view, {0} },
/* { MODKEY|ShiftMask, XK_backslash, spawn, SHCMD("") }, */
{ MODKEY, XK_a, togglegaps, {0} },
{ MODKEY|ShiftMask, XK_a, defaultgaps, {0} },
{ MODKEY|ShiftMask, XK_s, togglesticky, {0} },
{ MODKEY, XK_s, spawn, SHCMD("xfce4-settings-manager") },
{ MODKEY, XK_d, spawn, SHCMD("xfce4-popup-whiskermenu") },
{ MODKEY|ShiftMask, XK_d, spawn, SHCMD("xfce4-appfinder") },
{ MODKEY, XK_f, togglefullscr, {0} },
{ MODKEY|ShiftMask, XK_f, setlayout, {.v = &layouts[8]} },
{ MODKEY, XK_g, shiftview, { .i = -1 } },
{ MODKEY|ShiftMask, XK_g, shifttag, { .i = -1 } },
{ MODKEY, XK_h, setmfact, {.f = -0.05} },
{ MODKEY|ShiftMask, XK_h, spawn, SHCMD("xfce4-terminal -e \"htop -d 5\"") },
/* J and K are automatically bound above in STACKEYS */
{ MODKEY, XK_l, setmfact, {.f = +0.05} },
{ MODKEY, XK_semicolon, shiftview, { .i = 1 } },
{ MODKEY|ShiftMask, XK_semicolon, shifttag, { .i = 1 } },
{ MODKEY, XK_apostrophe, togglescratch, {.ui = 1} },
/* { MODKEY|ShiftMask, XK_apostrophe, spawn, SHCMD("") }, */
{ MODKEY, XK_Return, spawn, SHCMD("xfce4-terminal") },
{ MODKEY|ShiftMask, XK_Return, spawn, SHCMD("xfce4-terminal --drop-down")},
{ MODKEY, XK_h, spawn, SHCMD("$TERMINAL -e htop -d5") },
{ MODKEY, XK_Return, spawn, SHCMD("$TERMINAL") },
{ MODKEY|ShiftMask, XK_Return, spawn, SHCMD("$TERMINAL -e tmux")},
{ MODKEY, XK_v, spawn, SHCMD("gvim")},
{ MODKEY|ShiftMask, XK_v, spawn, SHCMD("xfce4-terminal -e vim")},
{ MODKEY|ShiftMask, XK_v, spawn, SHCMD("$TERMINAL -e vim")},
{ MODKEY, XK_z, incrgaps, {.i = +3 } },
/* { MODKEY|ShiftMask, XK_z, spawn, SHCMD("") }, */
{ MODKEY, XK_x, incrgaps, {.i = -3 } },
/* { MODKEY|ShiftMask, XK_x, spawn, SHCMD("") }, */
{ MODKEY, XK_c, spawn, SHCMD("doas cpupower frequency-set --governor conservative") },
{ MODKEY, XK_c, spawn, SHCMD("doas cpupower frequency-set --governor schedutil") },
{ MODKEY|ShiftMask, XK_c, spawn, SHCMD("doas cpupower frequency-set --governor performance") },
/* V is automatically bound above in STACKKEYS */
//{ MODKEY, XK_c, spawn, SHCMD("doas cpupower frequency-set --max 750MHz") },
//{ MODKEY|ShiftMask, XK_c, spawn, SHCMD("doas cpupower frequency-set --max 1.5GHz") },
{ MODKEY, XK_b, togglebar, {0} },
/* { MODKEY|ShiftMask, XK_b, spawn, SHCMD("") }, */
{ MODKEY, XK_n, spawn, SHCMD("nightmode") },
{ MODKEY|ShiftMask, XK_n, spawn, SHCMD("daymode") },
{ MODKEY, XK_m, spawn, SHCMD(TERMINAL " -e ncmpcpp") },
{ MODKEY|ShiftMask, XK_m, spawn, SHCMD("pamixer -t; kill -44 $(pidof dwmblocks)") },
{ MODKEY, XK_comma, spawn, SHCMD("mpc prev") },
{ MODKEY|ShiftMask, XK_comma, spawn, SHCMD("mpc seek 0%") },
{ MODKEY, XK_period, spawn, SHCMD("mpc next") },
{ MODKEY|ShiftMask, XK_period, spawn, SHCMD("mpc repeat") },
{ MODKEY, XK_Left, shiftview, {.i = -1 } },
{ MODKEY|ShiftMask, XK_Left, shifttag, {.i = -1 } },
{ MODKEY, XK_Right, shiftview, {.i = +1 } },
{ MODKEY|ShiftMask, XK_Right, shifttag, {.i = +1 } },
{ MODKEY, XK_Page_Up, focusmon, { .i = -1 } },
{ MODKEY|ShiftMask, XK_Page_Up, tagmon, { .i = -1 } },
{ MODKEY, XK_Page_Down, focusmon, { .i = +1 } },
{ MODKEY|ShiftMask, XK_Page_Down, tagmon, { .i = +1 } },
{ MODKEY, XK_Insert, spawn, SHCMD("xdotool type $(grep -v '^#' ~/.local/share/larbs/snippets | dmenu -i -l 50 | cut -d' ' -f1)") },
{ MODKEY, XK_F1, spawn, SHCMD("groff -mom /usr/local/share/dwm/larbs.mom -Tpdf | zathura -") },
{ MODKEY, XK_F2, spawn, SHCMD("tutorialvids") },
{ MODKEY, XK_F3, spawn, SHCMD("displayselect") },
{ MODKEY, XK_F4, spawn, SHCMD(TERMINAL " -e pulsemixer; kill -44 $(pidof dwmblocks)") },
/* { MODKEY, XK_F5, xrdb, {.v = NULL } }, */
{ MODKEY, XK_F6, spawn, SHCMD("torwrap") },
{ MODKEY, XK_F7, spawn, SHCMD("td-toggle") },
{ MODKEY, XK_F8, spawn, SHCMD("mw -Y") },
{ MODKEY, XK_F9, spawn, SHCMD("dmenumount") },
{ MODKEY, XK_F10, spawn, SHCMD("dmenuumount") },
{ MODKEY, XK_F11, spawn, SHCMD("mpv --no-cache --no-osc --no-input-default-bindings --profile=low-latency --input-conf=/dev/null --title=webcam $(ls /dev/video[0,2,4,6,8] | tail -n 1)") },
{ MODKEY, XK_F12, spawn, SHCMD("remaps & notify-send \\\"⌨️ Keyboard remapping...\\\" \\\"Re-running keyboard defaults for any newly plugged-in keyboards.\\\"") },
{ MODKEY, XK_space, zoom, {0} },
//{ MODKEY, XK_Left, shiftview, {.i = -1 } },
//{ MODKEY|ShiftMask, XK_Left, shifttag, {.i = -1 } },
//{ MODKEY, XK_Right, shiftview, {.i = +1 } },
//{ MODKEY|ShiftMask, XK_Right, shifttag, {.i = +1 } },
{ MODKEY, XK_Up, focusmon, { .i = -1 } },
{ MODKEY|ShiftMask, XK_Up, tagmon, { .i = -1 } },
{ MODKEY, XK_Down, focusmon, { .i = +1 } },
{ MODKEY|ShiftMask, XK_Down, tagmon, { .i = +1 } },
{ MODKEY, XK_space, zoom, {0} },
{ MODKEY|ShiftMask, XK_space, togglefloating, {0} },
{ 0, XK_Print, spawn, SHCMD("xfce4-screenshooter") },
{ ShiftMask, XK_Print, spawn, SHCMD("maimpick") },
{ MODKEY, XK_Print, spawn, SHCMD("simplescreenrecorder") },
{ MODKEY|ShiftMask, XK_Print, spawn, SHCMD("dmenurecord kill") },
{ MODKEY, XK_Delete, spawn, SHCMD("dmenurecord kill") },
{ MODKEY, XK_Scroll_Lock, spawn, SHCMD("killall screenkey || screenkey &") },
{ 0, XF86XK_AudioMute, spawn, SHCMD("pamixer -t; kill -44 $(pidof dwmblocks)") },
{ 0, XF86XK_AudioRaiseVolume, spawn, SHCMD("pamixer --allow-boost -i 3; kill -44 $(pidof dwmblocks)") },
{ 0, XF86XK_AudioLowerVolume, spawn, SHCMD("pamixer --allow-boost -d 3; kill -44 $(pidof dwmblocks)") },
{ 0, XF86XK_AudioPrev, spawn, SHCMD("mpc prev") },
{ 0, XF86XK_AudioNext, spawn, SHCMD("mpc next") },
{ 0, XF86XK_AudioPause, spawn, SHCMD("mpc pause") },
{ 0, XF86XK_AudioPlay, spawn, SHCMD("mpc play") },
{ 0, XF86XK_AudioStop, spawn, SHCMD("mpc stop") },
{ 0, XF86XK_AudioRewind, spawn, SHCMD("mpc seek -10") },
{ 0, XF86XK_AudioForward, spawn, SHCMD("mpc seek +10") },
{ 0, XF86XK_AudioMedia, spawn, SHCMD(TERMINAL " -e ncmpcpp") },
{ 0, XF86XK_AudioMicMute, spawn, SHCMD("pactl set-source-mute @DEFAULT_SOURCE@ toggle") },
{ 0, XF86XK_PowerOff, spawn, SHCMD("sysact") },
{ 0, XF86XK_Calculator, spawn, SHCMD(TERMINAL " -e bc -l") },
//{ 0, XF86XK_Sleep, spawn, SHCMD("sudo -A zzz") },
{ 0, XF86XK_WWW, spawn, SHCMD("$BROWSER") },
{ 0, XF86XK_DOS, spawn, SHCMD(TERMINAL) },
{ 0, XF86XK_ScreenSaver, spawn, SHCMD("slock & xset dpms force off; mpc pause; pauseallmpv") },
{ 0, XF86XK_TaskPane, spawn, SHCMD(TERMINAL " -e htop") },
//{ 0, XF86XK_Mail, spawn, SHCMD(TERMINAL " -e neomutt ; pkill -RTMIN+12 dwmblocks") },
//{ 0, XF86XK_MyComputer, spawn, SHCMD(TERMINAL " -e lf /") },
/* { 0, XF86XK_Battery, spawn, SHCMD("") }, */
//{ 0, XF86XK_Launch1, spawn, SHCMD("xset dpms force off") },
//{ 0, XF86XK_TouchpadToggle, spawn, SHCMD("(synclient | grep 'TouchpadOff.*1' && synclient TouchpadOff=0) || synclient TouchpadOff=1") },
//{ 0, XF86XK_TouchpadOff, spawn, SHCMD("synclient TouchpadOff=1") },
//{ 0, XF86XK_TouchpadOn, spawn, SHCMD("synclient TouchpadOff=0") },
//{ 0, XF86XK_MonBrightnessUp, spawn, SHCMD("xbacklight -inc 15") },
//{ 0, XF86XK_MonBrightnessDown, spawn, SHCMD("xbacklight -dec 15") },
/* { MODKEY|Mod4Mask, XK_h, incrgaps, {.i = +1 } }, */
/* { MODKEY|Mod4Mask, XK_l, incrgaps, {.i = -1 } }, */
/* { MODKEY|Mod4Mask|ShiftMask, XK_h, incrogaps, {.i = +1 } }, */
/* { MODKEY|Mod4Mask|ShiftMask, XK_l, incrogaps, {.i = -1 } }, */
/* { MODKEY|Mod4Mask|ControlMask, XK_h, incrigaps, {.i = +1 } }, */
/* { MODKEY|Mod4Mask|ControlMask, XK_l, incrigaps, {.i = -1 } }, */
/* { MODKEY|Mod4Mask|ShiftMask, XK_0, defaultgaps, {0} }, */
/* { MODKEY, XK_y, incrihgaps, {.i = +1 } }, */
/* { MODKEY, XK_o, incrihgaps, {.i = -1 } }, */
/* { MODKEY|ControlMask, XK_y, incrivgaps, {.i = +1 } }, */
/* { MODKEY|ControlMask, XK_o, incrivgaps, {.i = -1 } }, */
/* { MODKEY|Mod4Mask, XK_y, incrohgaps, {.i = +1 } }, */
/* { MODKEY|Mod4Mask, XK_o, incrohgaps, {.i = -1 } }, */
/* { MODKEY|ShiftMask, XK_y, incrovgaps, {.i = +1 } }, */
/* { MODKEY|ShiftMask, XK_o, incrovgaps, {.i = -1 } }, */
};
};
/* button definitions */
/* click can be ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */

2
config.mk

@ -27,7 +27,7 @@ LIBS = -L${X11LIB} -lX11 ${XINERAMALIBS} ${FREETYPELIBS} -lX11-xcb -lxcb -lxcb-r
# flags
CPPFLAGS = -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_POSIX_C_SOURCE=200809L -DVERSION=\"${VERSION}\" ${XINERAMAFLAGS}
#CFLAGS = -g -std=c99 -pedantic -Wall -O0 ${INCS} ${CPPFLAGS}
CFLAGS = -std=c99 -pedantic -Wall -Wno-deprecated-declarations -O3 -march=native ${INCS} ${CPPFLAGS}
CFLAGS = -std=c99 -pedantic -Wall -Wno-deprecated-declarations -O3 -mcpu=native ${INCS} ${CPPFLAGS}
LDFLAGS = ${LIBS}
# Solaris

37
dwm.c

@ -62,10 +62,8 @@
#define MOD(N,M) ((N)%(M) < 0 ? (N)%(M) + (M) : (N)%(M))
#define WIDTH(X) ((X)->w + 2 * (X)->bw)
#define HEIGHT(X) ((X)->h + 2 * (X)->bw)
#define NUMTAGS (LENGTH(tags) + LENGTH(scratchpads))
#define NUMTAGS LENGTH(tags)
#define TAGMASK ((1 << NUMTAGS) - 1)
#define SPTAG(i) ((1 << LENGTH(tags)) << (i))
#define SPTAGMASK (((1 << LENGTH(scratchpads))-1) << LENGTH(tags))
#define TEXTW(X) (drw_fontset_getwidth(drw, (X)) + lrpad)
#define TRUNC(X,A,B) (MAX((A), MIN((X), (B))))
@ -255,7 +253,6 @@ static void tag(const Arg *arg);
static void tagmon(const Arg *arg);
static void togglebar(const Arg *arg);
static void togglefloating(const Arg *arg);
static void togglescratch(const Arg *arg);
static void togglesticky(const Arg *arg);
static void togglefullscr(const Arg *arg);
static void toggletag(const Arg *arg);
@ -365,7 +362,7 @@ applyrules(Client *c)
c->isfloating = r->isfloating;
c->noswallow = r->noswallow;
c->tags |= r->tags;
if ((r->tags & SPTAGMASK) && r->isfloating) {
if ((r->tags) && r->isfloating) {
c->x = c->mon->wx + (c->mon->ww / 2 - WIDTH(c) / 2);
c->y = c->mon->wy + (c->mon->wh / 2 - HEIGHT(c) / 2);
}
@ -379,7 +376,7 @@ applyrules(Client *c)
XFree(ch.res_class);
if (ch.res_name)
XFree(ch.res_name);
c->tags = c->tags & TAGMASK ? c->tags & TAGMASK : (c->mon->tagset[c->mon->seltags] & ~SPTAGMASK);
c->tags = c->tags & TAGMASK ? c->tags & TAGMASK : (c->mon->tagset[c->mon->seltags]);
}
int
@ -1890,7 +1887,7 @@ showhide(Client *c)
if (!c)
return;
if (ISVISIBLE(c)) {
if ((c->tags & SPTAGMASK) && c->isfloating) {
if ((c->tags) && c->isfloating) {
c->x = c->mon->wx + (c->mon->ww / 2 - WIDTH(c) / 2);
c->y = c->mon->wy + (c->mon->wh / 2 - HEIGHT(c) / 2);
}
@ -2025,32 +2022,6 @@ togglesticky(const Arg *arg)
arrange(selmon);
}
void
togglescratch(const Arg *arg)
{
Client *c;
unsigned int found = 0;
unsigned int scratchtag = SPTAG(arg->ui);
Arg sparg = {.v = scratchpads[arg->ui].cmd};
for (c = selmon->clients; c && !(found = c->tags & scratchtag); c = c->next);
if (found) {
unsigned int newtagset = selmon->tagset[selmon->seltags] ^ scratchtag;
if (newtagset) {
selmon->tagset[selmon->seltags] = newtagset;
focus(NULL);
arrange(selmon);
}
if (ISVISIBLE(c)) {
focus(c);
restack(selmon);
}
} else {
selmon->tagset[selmon->seltags] |= scratchtag;
spawn(&sparg);
}
}
void
toggletag(const Arg *arg)
{

6
shiftview.c

@ -11,21 +11,19 @@ shiftview(const Arg *arg)
unsigned int tagmask = 0;
for (c = selmon->clients; c; c = c->next)
if (!(c->tags & SPTAGMASK))
if (!(c->tags))
tagmask = tagmask | c->tags;
shifted.ui = selmon->tagset[selmon->seltags] & ~SPTAGMASK;
shifted.ui = selmon->tagset[selmon->seltags];
if (arg->i > 0) /* left circular shift */
do {
shifted.ui = (shifted.ui << arg->i)
| (shifted.ui >> (LENGTH(tags) - arg->i));
shifted.ui &= ~SPTAGMASK;
} while (tagmask && !(shifted.ui & tagmask));
else /* right circular shift */
do {
shifted.ui = (shifted.ui >> (- arg->i)
| shifted.ui << (LENGTH(tags) + arg->i));
shifted.ui &= ~SPTAGMASK;
} while (tagmask && !(shifted.ui & tagmask));
view(&shifted);

Loading…
Cancel
Save