From 5430b7d4154302637d0c2e5638f689c6681fc0f9 Mon Sep 17 00:00:00 2001 From: "Arthur K." Date: Wed, 18 Jun 2025 05:16:41 +0300 Subject: [PATCH] new shortcuts, moved some stuff around --- config.h | 165 ++++++++++++++++++++++++++------------------------- dwm.c | 163 +++++++++++++++++++++++++++----------------------- vanitygaps.c | 2 +- 3 files changed, 172 insertions(+), 158 deletions(-) diff --git a/config.h b/config.h index e620afa..2ff57ae 100644 --- a/config.h +++ b/config.h @@ -2,7 +2,7 @@ #include #include static const unsigned int borderpx = 2; -static const unsigned int snap = 0; +static const unsigned int snap = 0; static const unsigned int swallowfloating = 0; static const unsigned int gappih = 20; static const unsigned int gappiv = 10; @@ -11,7 +11,7 @@ static const unsigned int gappov = 10; static int smartgaps = 1; static const int showbar = 1; static const int topbar = 1; -static const char *fonts[] = { "Mononoki Nerd Font Propo:size=12", "Noto Color Emoji:size=11" }; +static const char *fonts[] = { "Mononoki Nerd Font Propo:size=12", "Apple Color Emoji:size=11" }; static const char col_gray1[] = "#232323"; static const char col_gray2[] = "#3a3a3a"; static const char col_gray3[] = "#a0a0a0"; @@ -33,7 +33,7 @@ static const unsigned int alphas[][3] = { }; /* tagging */ -static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "", "" }; +static const char *tags[] = { "", "", "3", "4", "5", "6", "7", "", "" }; static const char *metaworkspaces[] = { "", "", "", "", "󰢚" }; static const Rule rules[] = { @@ -41,13 +41,16 @@ static const Rule rules[] = { * WM_CLASS(STRING) = instance, class * WM_NAME(STRING) = title */ - /* class instance title tags_mask isfloating isterminal noswallow monitor mwpin*/ - { "firefox-nightly", "Toolkit", "Picture-in-Picture", 511, 1, 0, 1, -1, 1 }, - { "copyq", NULL, NULL, 0, 1, 0, 0, -1, 0 }, - { "Alacritty", NULL, NULL, 0, 0, 1, 0, -1, 0 }, - { "floating", NULL, NULL, 0, 1, 0, 0, -1, 0 }, - { "Spotify", "spotify", NULL, 128, 0, 0, 0, 0, 1 }, - { "TelegramDesktop", "telegram-desktop", NULL, 256, 0, 0, 0, 0, 1 }, + /* class instance title tags_mask isfloating isterminal noswallow monitor mwpin*/ + /* WM_CLASS[2] WM_CLASS[1] WM_NAME tags_mask isfloating isterminal noswallow monitor mwpin*/ + { "firefox-nightly", "Toolkit", "Picture-in-Picture", 511, 1, 0, 1, -1, 1 }, + { "TelegramDesktop", "telegram-desktop", "TelegramDesktop", 511, 1, 0, 1, -1, 1 }, + { "", NULL, "Picture in picture", 511, 1, 0, 1, -1, 1 }, + { "copyq", NULL, NULL, 0, 1, 0, 0, -1, 0 }, + { "Alacritty", NULL, NULL, 0, 0, 1, 0, -1, 0 }, + { "floating", NULL, NULL, 0, 1, 0, 0, -1, 0 }, + { "feishin", "feishin", NULL, 128, 0, 0, 0, 0, 1 }, + { "TelegramDesktop", "telegram-desktop", NULL, 256, 0, 0, 0, 0, 1 }, }; @@ -64,9 +67,7 @@ static const int spawnmaster = 0; static const Layout layouts[] = { /* symbol reverse function */ { "", "", tile }, - { "[/]", "[\\]", dwindle}, { "[M]", "[M]", monocle }, - { "><>", "<><", NULL }, }; /* key definitions */ @@ -74,14 +75,14 @@ static const Layout layouts[] = { #define AltMask Mod1Mask #define TAGKEYS(KEY,TAG) \ - { MODKEY, KEY, view, {.ui = 1 << TAG} }, \ - { MODKEY|ShiftMask, KEY, tagview, {.ui = 1 << TAG} }, \ - { MODKEY|ControlMask, KEY, tag, {.ui = 1 << TAG} }, \ + { MODKEY, KEY, view, {.ui = 1 << TAG} }, \ + { MODKEY|ShiftMask, KEY, tagview, {.ui = 1 << TAG} }, \ + { MODKEY|ControlMask, KEY, tag, {.ui = 1 << TAG} }, \ { MODKEY|AltMask, KEY, toggletag, {.ui = 1 << TAG} }, \ - { MODKEY|ControlMask|ShiftMask, KEY, toggleview, {.ui = 1 << TAG} }, \ - { AltMask, KEY, viewmetaws, {.ui = TAG} }, \ - { AltMask|ShiftMask, KEY, tagviewmetaws, {.ui = TAG} }, \ - { AltMask|ControlMask, KEY, tagmetaws, {.ui = TAG} }, \ + { MODKEY|ControlMask|ShiftMask, KEY, toggleview, {.ui = 1 << TAG} }, \ + { AltMask, KEY, viewmetaws, {.ui = TAG} }, \ + { AltMask|ShiftMask, KEY, tagviewmetaws, {.ui = TAG} }, \ + { AltMask|ControlMask, KEY, tagmetaws, {.ui = TAG} }, \ #define SHCMD(...) { .v = (const char*[]){ __VA_ARGS__, NULL } } @@ -91,93 +92,93 @@ static const char *termcmd[] = { "alacritty", NULL }; #include "movestack.c" static const Key keys[] = { - /* modifier key function argument */ + /* modifier key function argument */ // movement - { MODKEY, XK_d, spawn, {.v = dmenucmd } }, - { MODKEY, XK_Return, spawn, {.v = termcmd } }, - { MODKEY|ShiftMask, XK_b, togglebar, {0} }, - { MODKEY, XK_j, focusstack, {.i = +1 } }, - { MODKEY, XK_k, focusstack, {.i = -1 } }, - { MODKEY, XK_n, setmfact, {.f = -0.05} }, - { MODKEY, XK_m, setmfact, {.f = +0.05} }, - { MODKEY|ShiftMask, XK_n, incnmaster, {.i = -1} }, - { MODKEY|ShiftMask, XK_m, incnmaster, {.i = +1} }, - { MODKEY, XK_c, zoom, {0} }, - { MODKEY, XK_q, killclient, {0} }, + { MODKEY, XK_d, spawn, {.v = dmenucmd } }, + { MODKEY, XK_Return, spawn, {.v = termcmd } }, + { MODKEY|ShiftMask, XK_b, togglebar, {0} }, + { MODKEY, XK_j, focusstack, {.i = +1 } }, + { MODKEY, XK_k, focusstack, {.i = -1 } }, + { MODKEY|ShiftMask, XK_n, setmfact, {.f = -0.05} }, + { MODKEY|ShiftMask, XK_m, setmfact, {.f = +0.05} }, + { MODKEY, XK_c, zoom, {0} }, + { MODKEY, XK_q, killclient, {0} }, // layout - { MODKEY, XK_f, togglefullscr, {0} }, - { MODKEY|ShiftMask, XK_f, togglefloating, {0} }, - { MODKEY|ShiftMask, XK_j, movestack, {.i = +1 } }, - { MODKEY|ShiftMask, XK_k, movestack, {.i = -1 } }, - { MODKEY, XK_0, view, {.ui = ~0 } }, - { MODKEY|ControlMask, XK_0, tag, {.ui = ~0 } }, - { AltMask|ControlMask, XK_0, pinmetaws, {0} }, - { MODKEY|ControlMask, XK_p, invertdir, {0} }, + { MODKEY, XK_f, togglefullscr, {0} }, + { MODKEY|ShiftMask, XK_f, togglefloating, {0} }, + { MODKEY|ShiftMask, XK_j, movestack, {.i = +1 } }, + { MODKEY|ShiftMask, XK_k, movestack, {.i = -1 } }, + { MODKEY, XK_0, view, {.ui = ~0 } }, + { MODKEY|ControlMask, XK_0, tag, {.ui = ~0 } }, + { AltMask|ControlMask, XK_0, pinmetaws, {0} }, + { MODKEY|ControlMask, XK_p, invertdir, {0} }, // apps - { MODKEY, XK_w, spawn, SHCMD("firefox") }, - { MODKEY, XK_t, spawn, SHCMD("telegram-desktop") }, - { MODKEY|ShiftMask, XK_s, spawn, SHCMD("flameshot", "gui") }, - { MODKEY|ShiftMask, XK_r, spawn, SHCMD("xr") }, + { MODKEY, XK_w, spawn, SHCMD("firefox") }, + { MODKEY|ShiftMask, XK_w, spawn, SHCMD("chromium") }, + { MODKEY, XK_t, spawn, SHCMD("telegram-desktop") }, + { MODKEY, XK_x, spawn, SHCMD("win") }, + { MODKEY|ShiftMask, XK_s, spawn, SHCMD("flameshot", "gui") }, + { MODKEY|ShiftMask, XK_r, spawn, SHCMD("xr") }, + { MODKEY|ShiftMask|ControlMask, XK_s, spawn, SHCMD("systemctl", "suspend")}, // dunst - { MODKEY, XK_i, spawn, SHCMD("dunstctl", "history-pop") }, - { MODKEY, XK_o, spawn, SHCMD("dunstctl", "close") }, - { MODKEY|ControlMask, XK_i, spawn, SHCMD("dunstctl", "set-paused", "false") }, - { MODKEY|ControlMask, XK_o, spawn, SHCMD("dunstctl", "set-paused", "true") }, - { MODKEY|ShiftMask, XK_i, spawn, SHCMD("dunstctl", "context") }, - { MODKEY|ShiftMask, XK_o, spawn, SHCMD("dunstctl", "action") }, + { MODKEY, XK_i, spawn, SHCMD("dunstctl", "history-pop") }, + { MODKEY, XK_o, spawn, SHCMD("dunstctl", "close") }, + { MODKEY|ShiftMask, XK_i, spawn, SHCMD("dunstctl", "set-paused", "false") }, + { MODKEY|ShiftMask, XK_o, spawn, SHCMD("dunstctl", "set-paused", "true") }, + { MODKEY|ControlMask, XK_i, spawn, SHCMD("dunstctl", "context") }, + { MODKEY|ControlMask, XK_o, spawn, SHCMD("dunstctl", "action") }, // vpn - { MODKEY, XK_v, spawn, SHCMD("vpn", "msk") }, - { MODKEY|ControlMask, XK_v, spawn, SHCMD("vpn", "-d") }, - { MODKEY|ShiftMask, XK_v, spawn, SHCMD("vpn") }, - { MODKEY|AltMask, XK_v, spawn, SHCMD("vpn", "-d", "msk") }, + { MODKEY, XK_v, spawn, SHCMD("vpn") }, + { MODKEY|ShiftMask, XK_v, spawn, SHCMD("vpn", "msk") }, + // volume - { MODKEY|ShiftMask, XK_Up, spawn, SHCMD("volume", "+1") }, - { MODKEY|ShiftMask, XK_Down, spawn, SHCMD("volume", "-1") }, - { MODKEY, XK_Up, spawn, SHCMD("volume", "+5") }, - { MODKEY, XK_Down, spawn, SHCMD("volume", "-5") }, - { MODKEY, XK_y, setlayout, {.v = &layouts[0]} }, - { MODKEY|ShiftMask, XK_y, setlayout, {.v = &layouts[2]} }, + { MODKEY|ShiftMask, XK_Up, spawn, SHCMD("volume", "+1") }, + { MODKEY|ShiftMask, XK_Down, spawn, SHCMD("volume", "-1") }, + { MODKEY, XK_Up, spawn, SHCMD("volume", "+5") }, + { MODKEY, XK_Down, spawn, SHCMD("volume", "-5") }, + { MODKEY, XK_y, setlayout, {.v = &layouts[0]} }, + { MODKEY|ShiftMask, XK_y, setlayout, {.v = &layouts[1]} }, // tags - TAGKEYS( XK_1, 0) - TAGKEYS( XK_2, 1) - TAGKEYS( XK_3, 2) - TAGKEYS( XK_4, 3) - TAGKEYS( XK_5, 4) - TAGKEYS( XK_6, 5) - TAGKEYS( XK_7, 6) - TAGKEYS( XK_8, 7) - TAGKEYS( XK_9, 8) - { MODKEY|ShiftMask, XK_q, quit, {0} }, - { MODKEY, XK_h, focusmon, {.i = -1 } }, - { MODKEY, XK_l, focusmon, {.i = +1 } }, - { MODKEY|ControlMask, XK_h, tagmon, {.i = -1 } }, - { MODKEY|ControlMask, XK_l, tagmon, {.i = +1 } }, - { MODKEY|ShiftMask, XK_h, focustagmon, {.i = -1 } }, - { MODKEY|ShiftMask, XK_l, focustagmon, {.i = +1 } }, + TAGKEYS( XK_1, 0) + TAGKEYS( XK_2, 1) + TAGKEYS( XK_3, 2) + TAGKEYS( XK_4, 3) + TAGKEYS( XK_5, 4) + TAGKEYS( XK_6, 5) + TAGKEYS( XK_7, 6) + TAGKEYS( XK_8, 7) + TAGKEYS( XK_9, 8) + { MODKEY|ShiftMask, XK_q, quit, {0} }, + { MODKEY, XK_h, focusmon, {.i = -1 } }, + { MODKEY, XK_l, focusmon, {.i = +1 } }, + { MODKEY|ControlMask, XK_h, tagmon, {.i = -1 } }, + { MODKEY|ControlMask, XK_l, tagmon, {.i = +1 } }, + { MODKEY|ShiftMask, XK_h, focustagmon, {.i = -1 } }, + { MODKEY|ShiftMask, XK_l, focustagmon, {.i = +1 } }, }; /* button definitions */ /* click can be ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, ClkRootWin, or ClkMetaWorkspace */ static const Button buttons[] = { - /* click event mask button function argument */ + /* click event mask button function argument */ { ClkClientWin, MODKEY, Button1, movemouse, {0} }, { ClkClientWin, MODKEY, Button2, togglefloating, {0} }, { ClkClientWin, MODKEY, Button3, resizemouse, {0} }, { ClkClientWin, MODKEY|ControlMask, Button1, resizemouse, {0} }, - { ClkTagBar, 0, Button3, toggleview, {0} }, - { ClkTagBar, MODKEY, Button3, toggletag, {0} }, + { ClkTagBar, 0, Button3, toggleview, {0} }, + { ClkTagBar, MODKEY, Button3, toggletag, {0} }, - { ClkTagBar, 0, Button1, view, {0} }, + { ClkTagBar, 0, Button1, view, {0} }, { ClkTagBar, ShiftMask, Button1, tagview, {0} }, { ClkTagBar, ControlMask, Button1, tag, {0} }, - { ClkTagBar, AltMask, Button1, toggletag, {0} }, + { ClkTagBar, AltMask, Button1, toggletag, {0} }, { ClkTagBar, ControlMask|ShiftMask, Button1, toggleview, {0} }, - { ClkMwSymbol, 0, Button1, cyclemetaws, {.i = +1} }, - { ClkMwSymbol, 0, Button3, cyclemetaws, {.i = -1} }, + { ClkMwSymbol, 0, Button1, cyclemetaws, {.i = +1} }, + { ClkMwSymbol, 0, Button3, cyclemetaws, {.i = -1} }, }; diff --git a/dwm.c b/dwm.c index 7850da6..bdf0e7d 100644 --- a/dwm.c +++ b/dwm.c @@ -21,6 +21,7 @@ * To understand everything else, start reading main(). */ +#define focus(c) _focus(__func__, c) #include #include #include @@ -51,29 +52,29 @@ #include "util.h" /* macros */ -#define BUTTONMASK (ButtonPressMask|ButtonReleaseMask) -#define CLEANMASK(mask) (mask & ~(numlockmask|LockMask) & (ShiftMask|ControlMask|Mod1Mask|Mod2Mask|Mod3Mask|Mod4Mask|Mod5Mask)) -#define INTERSECT(x,y,w,h,m) (MAX(0, MIN((x)+(w),(m)->wx+(m)->ww) - MAX((x),(m)->wx)) \ - * MAX(0, MIN((y)+(h),(m)->wy+(m)->wh) - MAX((y),(m)->wy))) -#define ISVISIBLE(C) ((C->tags[metaws] & C->mon->tagset[metaws][C->mon->seltags[metaws]])) -#define LENGTH(X) (sizeof X / sizeof X[0]) -#define MOUSEMASK (BUTTONMASK|PointerMotionMask) -#define WIDTH(X) ((X)->w + 2 * (X)->bw) -#define HEIGHT(X) ((X)->h + 2 * (X)->bw) -#define TAGMASK ((1 << LENGTH(tags)) - 1) -#define TEXTW(X) (drw_fontset_getwidth(drw, (X)) + lrpad) -#define OPAQUE 0xffU +#define BUTTONMASK (ButtonPressMask|ButtonReleaseMask) +#define CLEANMASK(mask) (mask & ~(numlockmask|LockMask) & (ShiftMask|ControlMask|Mod1Mask|Mod2Mask|Mod3Mask|Mod4Mask|Mod5Mask)) +#define INTERSECT(x,y,w,h,m) (MAX(0, MIN((x)+(w),(m)->wx+(m)->ww) - MAX((x),(m)->wx)) \ + * MAX(0, MIN((y)+(h),(m)->wy+(m)->wh) - MAX((y),(m)->wy))) +#define ISVISIBLE(C) ((C->tags[metaws] & C->mon->tagset[metaws][C->mon->seltags[metaws]])) +#define LENGTH(X) (sizeof X / sizeof X[0]) +#define MOUSEMASK (BUTTONMASK|PointerMotionMask) +#define WIDTH(X) ((X)->w + 2 * (X)->bw) +#define HEIGHT(X) ((X)->h + 2 * (X)->bw) +#define TAGMASK ((1 << LENGTH(tags)) - 1) +#define TEXTW(X) (drw_fontset_getwidth(drw, (X)) + lrpad) +#define OPAQUE 0xffU #define MAX_METAWS 32 /* enums */ enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */ enum { SchemeNorm, SchemeSel }; /* color schemes */ enum { NetSupported, NetWMName, NetWMState, NetWMCheck, - NetWMFullscreen, NetActiveWindow, NetWMWindowType, - NetWMWindowTypeDialog, NetClientList, NetLast }; /* EWMH atoms */ + NetWMFullscreen, NetActiveWindow, NetWMWindowType, + NetWMWindowTypeDialog, NetClientList, NetLast }; /* EWMH atoms */ enum { WMProtocols, WMDelete, WMState, WMTakeFocus, WMLast }; /* default atoms */ enum { ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle, - ClkClientWin, ClkRootWin, ClkLast, ClkMwSymbol }; /* clicks */ + ClkClientWin, ClkRootWin, ClkLast, ClkMwSymbol }; /* clicks */ typedef union { int i; @@ -129,13 +130,13 @@ struct Monitor { float mfact; int nmaster; int num; - int by; /* bar geometry */ + int by; /* bar geometry */ int mx, my, mw, mh; /* screen size */ int wx, wy, ww, wh; /* window area */ - int gappih; /* horizontal gap between windows */ - int gappiv; /* vertical gap between windows */ - int gappoh; /* horizontal outer gaps */ - int gappov; /* vertical outer gaps */ + int gappih; /* horizontal gap between windows */ + int gappiv; /* vertical gap between windows */ + int gappoh; /* horizontal outer gaps */ + int gappov; /* vertical outer gaps */ unsigned int seltags[MAX_METAWS]; unsigned int tagset[MAX_METAWS][2]; int showbar; @@ -187,7 +188,7 @@ static void drawbar(Monitor *m); static void drawbars(void); static void enternotify(XEvent *e); static void expose(XEvent *e); -static void focus(Client *c); +static void _focus(const char* fname, Client *c); static void focusin(XEvent *e); static void focusmon(const Arg *arg); static void focusstack(const Arg *arg); @@ -281,9 +282,9 @@ static pid_t winpid(Window w); static const char broken[] = "broken"; static char stext[256]; static int screen; -static int sw, sh; /* X display screen geometry width, height */ -static int bh; /* bar height */ -static int lrpad; /* sum of left and right padding for text */ +static int sw, sh; /* X display screen geometry width, height */ +static int bh; /* bar height */ +static int lrpad; /* sum of left and right padding for text */ static int (*xerrorxlib)(Display *, XErrorEvent *); static unsigned int numlockmask = 0; static void (*handler[LASTEvent]) (XEvent *) = { @@ -341,7 +342,7 @@ applyrules(Client *c) c->isfloating = 0; c->tags[metaws] = 0; XGetClassHint(dpy, c->win, &ch); - class = ch.res_class ? ch.res_class : broken; + class = ch.res_class ? ch.res_class : broken; instance = ch.res_name ? ch.res_name : broken; for (i = 0; i < LENGTH(rules); i++) { @@ -652,7 +653,7 @@ clientmessage(XEvent *e) if (cme->message_type == netatom[NetWMState]) { if (cme->data.l[1] == netatom[NetWMFullscreen] || cme->data.l[2] == netatom[NetWMFullscreen]) - setfullscreen(c, (cme->data.l[0] == 1 /* _NET_WM_STATE_ADD */ + setfullscreen(c, (cme->data.l[0] == 1 /* _NET_WM_STATE_ADD */ || (cme->data.l[0] == 2 /* _NET_WM_STATE_TOGGLE */ && !c->isfullscreen))); } else if (cme->message_type == netatom[NetActiveWindow]) { if (c != selmon->sel && !c->isurgent) @@ -876,8 +877,8 @@ drawbar(Monitor *m) drw_setscheme(drw, scheme[m->tagset[metaws][m->seltags[metaws]] & 1 << i ? SchemeSel : SchemeNorm]); drw_text(drw, x, 0, w, bh, lrpad / 2, tags[i], urg & 1 << i); if (m == selmon && - selmon->sel && selmon->sel->tags[metaws] & 1 << i && - selmon->sel->tags[metaws] & ~(1 << i)) + selmon->sel && selmon->sel->tags[metaws] & 1 << i && + selmon->sel->tags[metaws] & ~(1 << i)) drw_rect(drw, x + boxs, boxs, boxw, boxw, 1, urg & 1 << i); x += w; } @@ -916,15 +917,20 @@ enternotify(XEvent *e) Monitor *m; XCrossingEvent *ev = &e->xcrossing; - if ((ev->mode != NotifyNormal || ev->detail == NotifyInferior) && ev->window != root) + // notify("enternotify called, ev.mode: %d, ev.detail: %d, ev.window == root: %d", ev->mode, ev->detail, ev->window == root); + if ((ev->mode != NotifyNormal || ev->detail == NotifyInferior) && ev->window != root) { + // notify("en return 1"); return; + } c = wintoclient(ev->window); m = c ? c->mon : wintomon(ev->window); if (m != selmon) { unfocus(selmon->sel, 1); selmon = m; - } else if (!c || c == selmon->sel) + } else if (!c || c == selmon->sel) { + // notify("en return 2"); return; + } focus(c); } @@ -938,9 +944,11 @@ expose(XEvent *e) drawbar(m); } + void -focus(Client *c) +_focus(const char *fname, Client *c) { + // notify("focus called from %s", fname); if (!c || !ISVISIBLE(c)) { for (c = selmon->stack; c && (!ISVISIBLE(c) || (!c->isfullscreen && c->isfloating)); c = c->snext); if (!c) for (c = selmon->stack; c && !ISVISIBLE(c); c = c->snext); @@ -948,6 +956,7 @@ focus(Client *c) if (selmon->sel && selmon->sel != c) unfocus(selmon->sel, 0); + if (c) { if (c->mon != selmon) selmon = c->mon; @@ -1281,9 +1290,9 @@ manage(Window w, XWindowAttributes *wa) XRaiseWindow(dpy, c->win); if (c->mon->spawnmaster) - attach(c); + attach(c); else - attachbottom(c); + attachbottom(c); attachstack(c); XChangeProperty(dpy, root, netatom[NetClientList], XA_WINDOW, 32, PropModeAppend, @@ -1417,7 +1426,7 @@ movemouse(const Arg *arg) if ((m = recttomon(c->x, c->y, c->w, c->h)) != selmon) { sendmon(c, m); selmon = m; - focus(NULL); + focus(c); } } @@ -1658,34 +1667,31 @@ scan(void) void sendmon(Client *c, Monitor *m) { - int i = 0; - if (c->mon == m ) + int i; + if (c->mon == m) return; if (c->is_mwpinned) c->is_mwpinned = 0; - unfocus(c, 1); detach(c); + unfocus(c, 1); detachstack(c); - - Client *pc = selmon->stack; - c->mon = m; - for (; i < LENGTH(metaworkspaces); ++i) c->tags[i] = 0; + + for (i = 0; i < LENGTH(metaworkspaces); ++i) c->tags[i] = 0; c->tags[metaws] = m->tagset[metaws][m->seltags[metaws]]; /* assign tags of target monitor */ if (m->spawnmaster) - attach(c); + attach(c); else - attachbottom(c); + attachbottom(c); attachstack(c); - - focus(pc); - - arrange(m); - arrange(selmon); + // notify("focus from sendmon"); + focus(NULL); + // notify("focus after sendmon"); + arrange(NULL); } void @@ -1946,9 +1952,9 @@ int solitary(Client *c) { return ((nexttiled(c->mon->clients) == c && !nexttiled(c->next)) - || &monocle == getlayout(c->mon)->arrange) - && !c->isfullscreen && !c->isfloating - && NULL != getlayout(c->mon)->arrange; + || &monocle == getlayout(c->mon)->arrange) + && !c->isfullscreen && !c->isfloating + && NULL != getlayout(c->mon)->arrange; } void @@ -2031,19 +2037,24 @@ tagviewmetaws(const Arg *arg) viewmetaws(arg); } + void tagmon(const Arg *arg) { + Monitor *m; + Client *c; + int restore; + if (!selmon->sel || !mons->next) return; - Monitor *m = dirtomon(arg->i); + m = dirtomon(arg->i); - if ((m->sel && m->sel->isfullscreen)) + if (m->sel && m->sel->isfullscreen) return; - Client *c = selmon->sel; - int restore = c->isfullscreen; + c = selmon->sel; + restore = c->isfullscreen; if (restore) setfullscreen(c, 0); @@ -2294,9 +2305,9 @@ updategeom(void) detachstack(c); c->mon = mons; if (spawnmaster) { - attach(c); + attach(c); } else { - attachbottom(c); + attachbottom(c); } attach(c); attachstack(c); @@ -2494,18 +2505,18 @@ winpid(Window w) #endif /* __linux__ */ #ifdef __OpenBSD__ - Atom type; - int format; - unsigned long len, bytes; - unsigned char *prop; - pid_t ret; + Atom type; + int format; + unsigned long len, bytes; + unsigned char *prop; + pid_t ret; - if (XGetWindowProperty(dpy, w, XInternAtom(dpy, "_NET_WM_PID", 0), 0, 1, False, AnyPropertyType, &type, &format, &len, &bytes, &prop) != Success || !prop) - return 0; + if (XGetWindowProperty(dpy, w, XInternAtom(dpy, "_NET_WM_PID", 0), 0, 1, False, AnyPropertyType, &type, &format, &len, &bytes, &prop) != Success || !prop) + return 0; - ret = *(pid_t*)prop; - XFree(prop); - result = ret; + ret = *(pid_t*)prop; + XFree(prop); + result = ret; #endif /* __OpenBSD__ */ return result; @@ -2657,13 +2668,13 @@ xerrorstart(Display *dpy, XErrorEvent *ee) void xinitvisual(void) { - XVisualInfo *infos; + XVisualInfo *infos; XRenderPictFormat *fmt; int nitems; int i; XVisualInfo tpl = { - .screen = screen, + .screen = screen, .depth = 32, .class = TrueColor }; @@ -2672,23 +2683,23 @@ xinitvisual(void) infos = XGetVisualInfo(dpy, masks, &tpl, &nitems); visual = NULL; for(i = 0; i < nitems; i ++) { - fmt = XRenderFindVisualFormat(dpy, infos[i].visual); + fmt = XRenderFindVisualFormat(dpy, infos[i].visual); if (fmt->type == PictTypeDirect && fmt->direct.alphaMask) { - visual = infos[i].visual; + visual = infos[i].visual; depth = infos[i].depth; cmap = XCreateColormap(dpy, root, visual, AllocNone); useargb = 1; break; - } - } + } + } XFree(infos); if (! visual) { - visual = DefaultVisual(dpy, screen); + visual = DefaultVisual(dpy, screen); depth = DefaultDepth(dpy, screen); cmap = DefaultColormap(dpy, screen); - } + } } void @@ -2729,3 +2740,5 @@ main(int argc, char *argv[]) XCloseDisplay(dpy); return EXIT_SUCCESS; } + +// vim: tabstop=4 diff --git a/vanitygaps.c b/vanitygaps.c index 5ab6f30..faedc20 100644 --- a/vanitygaps.c +++ b/vanitygaps.c @@ -455,7 +455,7 @@ deck(Monitor *m) getfacts(m, mh, sh, &mfacts, &sfacts, &mrest, &srest); if (n - m->nmaster > 0) /* override layout symbol */ - snprintf(m->ltsymbol, sizeof m->ltsymbol, "D %d", n - m->nmaster); + snprintf(m->ltsymbol, sizeof m->ltsymbol, "[%d]", n - m->nmaster); for (i = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++) if (i < m->nmaster) {