removing the mouse part of config and some keybinds that I never use
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
static const unsigned int borderpx = 2;
|
static const unsigned int borderpx = 2;
|
||||||
static const unsigned int gappx = 3;
|
static const unsigned int gappx = 3;
|
||||||
static const int showbar = 0;
|
static const int showbar = 0;
|
||||||
static const int topbar = 1;
|
static const int topbar = 0;
|
||||||
|
|
||||||
static const char *fonts[] = { "Cascadia Mono:style=Bold:size=10:antialias=true:autohint=true" };
|
static const char *fonts[] = { "Cascadia Mono:style=Bold:size=10:antialias=true:autohint=true" };
|
||||||
static const char *colors[][3] = {
|
static const char *colors[][3] = {
|
||||||
@@ -29,7 +29,6 @@ static const Layout layouts[] = {
|
|||||||
#define MODKEY Mod1Mask
|
#define MODKEY Mod1Mask
|
||||||
#define TAGKEYS(KEY,TAG) \
|
#define TAGKEYS(KEY,TAG) \
|
||||||
{ MODKEY, KEY, view, {.ui = 1 << TAG} }, \
|
{ MODKEY, KEY, view, {.ui = 1 << TAG} }, \
|
||||||
{ MODKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \
|
|
||||||
{ MODKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \
|
{ MODKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \
|
||||||
|
|
||||||
#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
|
#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
|
||||||
@@ -37,7 +36,6 @@ static const Layout layouts[] = {
|
|||||||
#include "X11/XF86keysym.h"
|
#include "X11/XF86keysym.h"
|
||||||
static const Key keys[] = {
|
static const Key keys[] = {
|
||||||
{ MODKEY, XK_Return, spawn, SHCMD("ghostty -e tmux a") },
|
{ MODKEY, XK_Return, spawn, SHCMD("ghostty -e tmux a") },
|
||||||
{ MODKEY, XK_space, spawn, SHCMD("dmenu_run -l 6") },
|
|
||||||
{ MODKEY, XK_f, spawn, SHCMD("librewolf") },
|
{ MODKEY, XK_f, spawn, SHCMD("librewolf") },
|
||||||
{ MODKEY|ShiftMask, XK_s, spawn, SHCMD("steam") },
|
{ MODKEY|ShiftMask, XK_s, spawn, SHCMD("steam") },
|
||||||
{ MODKEY, XK_j, focusstack, {.i = +1 } },
|
{ MODKEY, XK_j, focusstack, {.i = +1 } },
|
||||||
@@ -45,26 +43,9 @@ static const Key keys[] = {
|
|||||||
{ MODKEY, XK_h, setmfact, {.f = -0.05} },
|
{ MODKEY, XK_h, setmfact, {.f = -0.05} },
|
||||||
{ MODKEY, XK_l, setmfact, {.f = +0.05} },
|
{ MODKEY, XK_l, setmfact, {.f = +0.05} },
|
||||||
{ MODKEY, XK_q, killclient, {0} },
|
{ MODKEY, XK_q, killclient, {0} },
|
||||||
{ MODKEY|ShiftMask, XK_Return, zoom, {0} },
|
|
||||||
{ MODKEY|ShiftMask, XK_space, togglefloating, {0} },
|
|
||||||
{ MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } },
|
|
||||||
|
|
||||||
{ 0, XF86XK_AudioRaiseVolume, spawn, SHCMD("pactl set-sink-volume @DEFAULT_SINK@ +5%") },
|
{ 0, XF86XK_AudioRaiseVolume, spawn, SHCMD("pactl set-sink-volume @DEFAULT_SINK@ +5%") },
|
||||||
{ 0, XF86XK_AudioLowerVolume, spawn, SHCMD("pactl set-sink-volume @DEFAULT_SINK@ -5%") },
|
{ 0, XF86XK_AudioLowerVolume, spawn, SHCMD("pactl set-sink-volume @DEFAULT_SINK@ -5%") },
|
||||||
|
|
||||||
TAGKEYS(XK_1, 0) TAGKEYS(XK_2, 1) TAGKEYS(XK_3, 2)
|
TAGKEYS(XK_1, 0) TAGKEYS(XK_2, 1) TAGKEYS(XK_3, 2)
|
||||||
};
|
};
|
||||||
|
|
||||||
static const Button buttons[] = {
|
|
||||||
/* click event mask button function argument */
|
|
||||||
{ ClkLtSymbol, 0, Button1, setlayout, {0} },
|
|
||||||
{ ClkLtSymbol, 0, Button3, setlayout, {.v = &layouts[2]} },
|
|
||||||
{ ClkWinTitle, 0, Button2, zoom, {0} },
|
|
||||||
{ ClkTagBar, 0, Button1, view, {0} },
|
|
||||||
{ ClkTagBar, 0, Button3, toggleview, {0} },
|
|
||||||
{ ClkClientWin, MODKEY, Button1, movemouse, {0} },
|
|
||||||
{ ClkClientWin, MODKEY, Button2, togglefloating, {0} },
|
|
||||||
{ ClkClientWin, MODKEY, Button3, resizemouse, {0} },
|
|
||||||
{ ClkTagBar, MODKEY, Button1, tag, {0} },
|
|
||||||
{ ClkTagBar, MODKEY, Button3, toggletag, {0} },
|
|
||||||
};
|
|
||||||
|
|||||||
@@ -120,7 +120,6 @@ static void arrange(Monitor *m);
|
|||||||
static void arrangemon(Monitor *m);
|
static void arrangemon(Monitor *m);
|
||||||
static void attach(Client *c);
|
static void attach(Client *c);
|
||||||
static void attachstack(Client *c);
|
static void attachstack(Client *c);
|
||||||
static void buttonpress(XEvent *e);
|
|
||||||
static void cleanup(void);
|
static void cleanup(void);
|
||||||
static void cleanupmon(Monitor *mon);
|
static void cleanupmon(Monitor *mon);
|
||||||
static void clientmessage(XEvent *e);
|
static void clientmessage(XEvent *e);
|
||||||
@@ -142,7 +141,6 @@ static Atom getatomprop(Client *c, Atom prop);
|
|||||||
static int getrootptr(int *x, int *y);
|
static int getrootptr(int *x, int *y);
|
||||||
static long getstate(Window w);
|
static long getstate(Window w);
|
||||||
static int gettextprop(Window w, Atom atom, char *text, unsigned int size);
|
static int gettextprop(Window w, Atom atom, char *text, unsigned int size);
|
||||||
static void grabbuttons(Client *c, int focused);
|
|
||||||
static void grabkeys(void);
|
static void grabkeys(void);
|
||||||
static void keypress(XEvent *e);
|
static void keypress(XEvent *e);
|
||||||
static void killclient(const Arg *arg);
|
static void killclient(const Arg *arg);
|
||||||
@@ -150,23 +148,18 @@ static void manage(Window w, XWindowAttributes *wa);
|
|||||||
static void mappingnotify(XEvent *e);
|
static void mappingnotify(XEvent *e);
|
||||||
static void maprequest(XEvent *e);
|
static void maprequest(XEvent *e);
|
||||||
static void motionnotify(XEvent *e);
|
static void motionnotify(XEvent *e);
|
||||||
static void movemouse(const Arg *arg);
|
|
||||||
static Client *nexttiled(Client *c);
|
static Client *nexttiled(Client *c);
|
||||||
static void pop(Client *c);
|
|
||||||
static void propertynotify(XEvent *e);
|
static void propertynotify(XEvent *e);
|
||||||
static Monitor *recttomon(int x, int y, int w, int h);
|
static Monitor *recttomon(int x, int y, int w, int h);
|
||||||
static void resize(Client *c, int x, int y, int w, int h, int interact);
|
static void resize(Client *c, int x, int y, int w, int h, int interact);
|
||||||
static void resizeclient(Client *c, int x, int y, int w, int h);
|
static void resizeclient(Client *c, int x, int y, int w, int h);
|
||||||
static void resizemouse(const Arg *arg);
|
|
||||||
static void restack(Monitor *m);
|
static void restack(Monitor *m);
|
||||||
static void run(void);
|
static void run(void);
|
||||||
static void scan(void);
|
static void scan(void);
|
||||||
static int sendevent(Client *c, Atom proto);
|
static int sendevent(Client *c, Atom proto);
|
||||||
static void sendmon(Client *c, Monitor *m);
|
|
||||||
static void setclientstate(Client *c, long state);
|
static void setclientstate(Client *c, long state);
|
||||||
static void setfocus(Client *c);
|
static void setfocus(Client *c);
|
||||||
static void setfullscreen(Client *c, int fullscreen);
|
static void setfullscreen(Client *c, int fullscreen);
|
||||||
static void setlayout(const Arg *arg);
|
|
||||||
static void setmfact(const Arg *arg);
|
static void setmfact(const Arg *arg);
|
||||||
static void setup(void);
|
static void setup(void);
|
||||||
static void seturgent(Client *c, int urg);
|
static void seturgent(Client *c, int urg);
|
||||||
@@ -174,9 +167,6 @@ static void showhide(Client *c);
|
|||||||
static void spawn(const Arg *arg);
|
static void spawn(const Arg *arg);
|
||||||
static void tag(const Arg *arg);
|
static void tag(const Arg *arg);
|
||||||
static void tile(Monitor *m);
|
static void tile(Monitor *m);
|
||||||
static void togglefloating(const Arg *arg);
|
|
||||||
static void toggletag(const Arg *arg);
|
|
||||||
static void toggleview(const Arg *arg);
|
|
||||||
static void unfocus(Client *c, int setfocus);
|
static void unfocus(Client *c, int setfocus);
|
||||||
static void unmanage(Client *c, int destroyed);
|
static void unmanage(Client *c, int destroyed);
|
||||||
static void unmapnotify(XEvent *e);
|
static void unmapnotify(XEvent *e);
|
||||||
@@ -195,7 +185,6 @@ static Client *wintoclient(Window w);
|
|||||||
static Monitor *wintomon(Window w);
|
static Monitor *wintomon(Window w);
|
||||||
static int xerror(Display *dpy, XErrorEvent *ee);
|
static int xerror(Display *dpy, XErrorEvent *ee);
|
||||||
static int xerrordummy(Display *dpy, XErrorEvent *ee);
|
static int xerrordummy(Display *dpy, XErrorEvent *ee);
|
||||||
static void zoom(const Arg *arg);
|
|
||||||
|
|
||||||
/* variables */
|
/* variables */
|
||||||
static const char broken[] = "broken";
|
static const char broken[] = "broken";
|
||||||
@@ -207,7 +196,6 @@ static int lrpad; /* sum of left and right padding for text */
|
|||||||
static int (*xerrorxlib)(Display *, XErrorEvent *);
|
static int (*xerrorxlib)(Display *, XErrorEvent *);
|
||||||
static unsigned int numlockmask = 0;
|
static unsigned int numlockmask = 0;
|
||||||
static void (*handler[LASTEvent]) (XEvent *) = {
|
static void (*handler[LASTEvent]) (XEvent *) = {
|
||||||
[ButtonPress] = buttonpress,
|
|
||||||
[ClientMessage] = clientmessage,
|
[ClientMessage] = clientmessage,
|
||||||
[ConfigureRequest] = configurerequest,
|
[ConfigureRequest] = configurerequest,
|
||||||
[ConfigureNotify] = configurenotify,
|
[ConfigureNotify] = configurenotify,
|
||||||
@@ -378,48 +366,6 @@ attachstack(Client *c)
|
|||||||
c->mon->stack = c;
|
c->mon->stack = c;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
buttonpress(XEvent *e)
|
|
||||||
{
|
|
||||||
unsigned int i, x, click;
|
|
||||||
Arg arg = {0};
|
|
||||||
Client *c;
|
|
||||||
Monitor *m;
|
|
||||||
XButtonPressedEvent *ev = &e->xbutton;
|
|
||||||
|
|
||||||
click = ClkRootWin;
|
|
||||||
/* focus monitor if necessary */
|
|
||||||
if ((m = wintomon(ev->window)) && m != selmon) {
|
|
||||||
unfocus(selmon->sel, 1);
|
|
||||||
selmon = m;
|
|
||||||
focus(NULL);
|
|
||||||
}
|
|
||||||
if (ev->window == selmon->barwin) {
|
|
||||||
i = x = 0;
|
|
||||||
do
|
|
||||||
x += TEXTW(tags[i]);
|
|
||||||
while (ev->x >= x && ++i < LENGTH(tags));
|
|
||||||
if (i < LENGTH(tags)) {
|
|
||||||
click = ClkTagBar;
|
|
||||||
arg.ui = 1 << i;
|
|
||||||
} else if (ev->x < x + TEXTW(selmon->ltsymbol))
|
|
||||||
click = ClkLtSymbol;
|
|
||||||
else if (ev->x > selmon->ww - (int)TEXTW(stext))
|
|
||||||
click = ClkStatusText;
|
|
||||||
else
|
|
||||||
click = ClkWinTitle;
|
|
||||||
} else if ((c = wintoclient(ev->window))) {
|
|
||||||
focus(c);
|
|
||||||
restack(selmon);
|
|
||||||
XAllowEvents(dpy, ReplayPointer, CurrentTime);
|
|
||||||
click = ClkClientWin;
|
|
||||||
}
|
|
||||||
for (i = 0; i < LENGTH(buttons); i++)
|
|
||||||
if (click == buttons[i].click && buttons[i].func && buttons[i].button == ev->button
|
|
||||||
&& CLEANMASK(buttons[i].mask) == CLEANMASK(ev->state))
|
|
||||||
buttons[i].func(click == ClkTagBar && buttons[i].arg.i == 0 ? &arg : &buttons[i].arg);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
cleanup(void)
|
cleanup(void)
|
||||||
{
|
{
|
||||||
@@ -741,7 +687,6 @@ focus(Client *c)
|
|||||||
seturgent(c, 0);
|
seturgent(c, 0);
|
||||||
detachstack(c);
|
detachstack(c);
|
||||||
attachstack(c);
|
attachstack(c);
|
||||||
grabbuttons(c, 1);
|
|
||||||
XSetWindowBorder(dpy, c->win, scheme[SchemeSel][ColBorder].pixel);
|
XSetWindowBorder(dpy, c->win, scheme[SchemeSel][ColBorder].pixel);
|
||||||
setfocus(c);
|
setfocus(c);
|
||||||
} else {
|
} else {
|
||||||
@@ -855,27 +800,6 @@ gettextprop(Window w, Atom atom, char *text, unsigned int size)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
grabbuttons(Client *c, int focused)
|
|
||||||
{
|
|
||||||
updatenumlockmask();
|
|
||||||
{
|
|
||||||
unsigned int i, j;
|
|
||||||
unsigned int modifiers[] = { 0, LockMask, numlockmask, numlockmask|LockMask };
|
|
||||||
XUngrabButton(dpy, AnyButton, AnyModifier, c->win);
|
|
||||||
if (!focused)
|
|
||||||
XGrabButton(dpy, AnyButton, AnyModifier, c->win, False,
|
|
||||||
BUTTONMASK, GrabModeSync, GrabModeSync, None, None);
|
|
||||||
for (i = 0; i < LENGTH(buttons); i++)
|
|
||||||
if (buttons[i].click == ClkClientWin)
|
|
||||||
for (j = 0; j < LENGTH(modifiers); j++)
|
|
||||||
XGrabButton(dpy, buttons[i].button,
|
|
||||||
buttons[i].mask | modifiers[j],
|
|
||||||
c->win, False, BUTTONMASK,
|
|
||||||
GrabModeAsync, GrabModeSync, None, None);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
grabkeys(void)
|
grabkeys(void)
|
||||||
{
|
{
|
||||||
@@ -977,7 +901,6 @@ manage(Window w, XWindowAttributes *wa)
|
|||||||
updatesizehints(c);
|
updatesizehints(c);
|
||||||
updatewmhints(c);
|
updatewmhints(c);
|
||||||
XSelectInput(dpy, w, EnterWindowMask|FocusChangeMask|PropertyChangeMask|StructureNotifyMask);
|
XSelectInput(dpy, w, EnterWindowMask|FocusChangeMask|PropertyChangeMask|StructureNotifyMask);
|
||||||
grabbuttons(c, 0);
|
|
||||||
if (!c->isfloating)
|
if (!c->isfloating)
|
||||||
c->isfloating = c->oldstate = trans != None || c->isfixed;
|
c->isfloating = c->oldstate = trans != None || c->isfixed;
|
||||||
if (c->isfloating)
|
if (c->isfloating)
|
||||||
@@ -1035,58 +958,6 @@ motionnotify(XEvent *e)
|
|||||||
mon = m;
|
mon = m;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
movemouse(const Arg *arg)
|
|
||||||
{
|
|
||||||
int x, y, ocx, ocy, nx, ny;
|
|
||||||
Client *c;
|
|
||||||
Monitor *m;
|
|
||||||
XEvent ev;
|
|
||||||
Time lasttime = 0;
|
|
||||||
|
|
||||||
if (!(c = selmon->sel))
|
|
||||||
return;
|
|
||||||
if (c->isfullscreen) /* no support moving fullscreen windows by mouse */
|
|
||||||
return;
|
|
||||||
restack(selmon);
|
|
||||||
ocx = c->x;
|
|
||||||
ocy = c->y;
|
|
||||||
if (XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync,
|
|
||||||
None, cursor[CurMove]->cursor, CurrentTime) != GrabSuccess)
|
|
||||||
return;
|
|
||||||
if (!getrootptr(&x, &y))
|
|
||||||
return;
|
|
||||||
do {
|
|
||||||
XMaskEvent(dpy, MOUSEMASK|ExposureMask|SubstructureRedirectMask, &ev);
|
|
||||||
switch(ev.type) {
|
|
||||||
case ConfigureRequest:
|
|
||||||
case Expose:
|
|
||||||
case MapRequest:
|
|
||||||
handler[ev.type](&ev);
|
|
||||||
break;
|
|
||||||
case MotionNotify:
|
|
||||||
if ((ev.xmotion.time - lasttime) <= (1000 / refreshrate))
|
|
||||||
continue;
|
|
||||||
lasttime = ev.xmotion.time;
|
|
||||||
|
|
||||||
nx = ocx + (ev.xmotion.x - x);
|
|
||||||
ny = ocy + (ev.xmotion.y - y);
|
|
||||||
if (!c->isfloating && selmon->lt[selmon->sellt]->arrange
|
|
||||||
&& (abs(nx - c->x) > 0 || abs(ny - c->y) > 0))
|
|
||||||
togglefloating(NULL);
|
|
||||||
if (!selmon->lt[selmon->sellt]->arrange || c->isfloating)
|
|
||||||
resize(c, nx, ny, c->w, c->h, 1);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} while (ev.type != ButtonRelease);
|
|
||||||
XUngrabPointer(dpy, CurrentTime);
|
|
||||||
if ((m = recttomon(c->x, c->y, c->w, c->h)) != selmon) {
|
|
||||||
sendmon(c, m);
|
|
||||||
selmon = m;
|
|
||||||
focus(NULL);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Client *
|
Client *
|
||||||
nexttiled(Client *c)
|
nexttiled(Client *c)
|
||||||
{
|
{
|
||||||
@@ -1094,15 +965,6 @@ nexttiled(Client *c)
|
|||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
pop(Client *c)
|
|
||||||
{
|
|
||||||
detach(c);
|
|
||||||
attach(c);
|
|
||||||
focus(c);
|
|
||||||
arrange(c->mon);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
propertynotify(XEvent *e)
|
propertynotify(XEvent *e)
|
||||||
{
|
{
|
||||||
@@ -1176,63 +1038,6 @@ resizeclient(Client *c, int x, int y, int w, int h)
|
|||||||
XSync(dpy, False);
|
XSync(dpy, False);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
resizemouse(const Arg *arg)
|
|
||||||
{
|
|
||||||
int ocx, ocy, nw, nh;
|
|
||||||
Client *c;
|
|
||||||
Monitor *m;
|
|
||||||
XEvent ev;
|
|
||||||
Time lasttime = 0;
|
|
||||||
|
|
||||||
if (!(c = selmon->sel))
|
|
||||||
return;
|
|
||||||
if (c->isfullscreen) /* no support resizing fullscreen windows by mouse */
|
|
||||||
return;
|
|
||||||
restack(selmon);
|
|
||||||
ocx = c->x;
|
|
||||||
ocy = c->y;
|
|
||||||
if (XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync,
|
|
||||||
None, cursor[CurResize]->cursor, CurrentTime) != GrabSuccess)
|
|
||||||
return;
|
|
||||||
XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->bw - 1, c->h + c->bw - 1);
|
|
||||||
do {
|
|
||||||
XMaskEvent(dpy, MOUSEMASK|ExposureMask|SubstructureRedirectMask, &ev);
|
|
||||||
switch(ev.type) {
|
|
||||||
case ConfigureRequest:
|
|
||||||
case Expose:
|
|
||||||
case MapRequest:
|
|
||||||
handler[ev.type](&ev);
|
|
||||||
break;
|
|
||||||
case MotionNotify:
|
|
||||||
if ((ev.xmotion.time - lasttime) <= (1000 / refreshrate))
|
|
||||||
continue;
|
|
||||||
lasttime = ev.xmotion.time;
|
|
||||||
|
|
||||||
nw = MAX(ev.xmotion.x - ocx - 2 * c->bw + 1, 1);
|
|
||||||
nh = MAX(ev.xmotion.y - ocy - 2 * c->bw + 1, 1);
|
|
||||||
if (c->mon->wx + nw >= selmon->wx && c->mon->wx + nw <= selmon->wx + selmon->ww
|
|
||||||
&& c->mon->wy + nh >= selmon->wy && c->mon->wy + nh <= selmon->wy + selmon->wh)
|
|
||||||
{
|
|
||||||
if (!c->isfloating && selmon->lt[selmon->sellt]->arrange
|
|
||||||
&& (abs(nw - c->w) > 0 || abs(nh - c->h) > 0))
|
|
||||||
togglefloating(NULL);
|
|
||||||
}
|
|
||||||
if (!selmon->lt[selmon->sellt]->arrange || c->isfloating)
|
|
||||||
resize(c, c->x, c->y, nw, nh, 1);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} while (ev.type != ButtonRelease);
|
|
||||||
XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->bw - 1, c->h + c->bw - 1);
|
|
||||||
XUngrabPointer(dpy, CurrentTime);
|
|
||||||
while (XCheckMaskEvent(dpy, EnterWindowMask, &ev));
|
|
||||||
if ((m = recttomon(c->x, c->y, c->w, c->h)) != selmon) {
|
|
||||||
sendmon(c, m);
|
|
||||||
selmon = m;
|
|
||||||
focus(NULL);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
restack(Monitor *m)
|
restack(Monitor *m)
|
||||||
{
|
{
|
||||||
@@ -1296,22 +1101,6 @@ scan(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
sendmon(Client *c, Monitor *m)
|
|
||||||
{
|
|
||||||
if (c->mon == m)
|
|
||||||
return;
|
|
||||||
unfocus(c, 1);
|
|
||||||
detach(c);
|
|
||||||
detachstack(c);
|
|
||||||
c->mon = m;
|
|
||||||
c->tags = m->tagset[m->seltags]; /* assign tags of target monitor */
|
|
||||||
attach(c);
|
|
||||||
attachstack(c);
|
|
||||||
focus(NULL);
|
|
||||||
arrange(NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
setclientstate(Client *c, long state)
|
setclientstate(Client *c, long state)
|
||||||
{
|
{
|
||||||
@@ -1386,20 +1175,6 @@ setfullscreen(Client *c, int fullscreen)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
setlayout(const Arg *arg)
|
|
||||||
{
|
|
||||||
if (!arg || !arg->v || arg->v != selmon->lt[selmon->sellt])
|
|
||||||
selmon->sellt ^= 1;
|
|
||||||
if (arg && arg->v)
|
|
||||||
selmon->lt[selmon->sellt] = (Layout *)arg->v;
|
|
||||||
strncpy(selmon->ltsymbol, selmon->lt[selmon->sellt]->symbol, sizeof selmon->ltsymbol);
|
|
||||||
if (selmon->sel)
|
|
||||||
arrange(selmon);
|
|
||||||
else
|
|
||||||
drawbar(selmon);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* arg > 1.0 will set mfact absolutely */
|
/* arg > 1.0 will set mfact absolutely */
|
||||||
void
|
void
|
||||||
setmfact(const Arg *arg)
|
setmfact(const Arg *arg)
|
||||||
@@ -1583,53 +1358,11 @@ tile(Monitor *m)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
togglefloating(const Arg *arg)
|
|
||||||
{
|
|
||||||
if (!selmon->sel)
|
|
||||||
return;
|
|
||||||
if (selmon->sel->isfullscreen) /* no support for fullscreen windows */
|
|
||||||
return;
|
|
||||||
selmon->sel->isfloating = !selmon->sel->isfloating || selmon->sel->isfixed;
|
|
||||||
if (selmon->sel->isfloating)
|
|
||||||
resize(selmon->sel, selmon->sel->x, selmon->sel->y,
|
|
||||||
selmon->sel->w, selmon->sel->h, 0);
|
|
||||||
arrange(selmon);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
toggletag(const Arg *arg)
|
|
||||||
{
|
|
||||||
unsigned int newtags;
|
|
||||||
|
|
||||||
if (!selmon->sel)
|
|
||||||
return;
|
|
||||||
newtags = selmon->sel->tags ^ (arg->ui & TAGMASK);
|
|
||||||
if (newtags) {
|
|
||||||
selmon->sel->tags = newtags;
|
|
||||||
focus(NULL);
|
|
||||||
arrange(selmon);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
toggleview(const Arg *arg)
|
|
||||||
{
|
|
||||||
unsigned int newtagset = selmon->tagset[selmon->seltags] ^ (arg->ui & TAGMASK);
|
|
||||||
|
|
||||||
if (newtagset) {
|
|
||||||
selmon->tagset[selmon->seltags] = newtagset;
|
|
||||||
focus(NULL);
|
|
||||||
arrange(selmon);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
unfocus(Client *c, int setfocus)
|
unfocus(Client *c, int setfocus)
|
||||||
{
|
{
|
||||||
if (!c)
|
if (!c)
|
||||||
return;
|
return;
|
||||||
grabbuttons(c, 0);
|
|
||||||
XSetWindowBorder(dpy, c->win, scheme[SchemeNorm][ColBorder].pixel);
|
XSetWindowBorder(dpy, c->win, scheme[SchemeNorm][ColBorder].pixel);
|
||||||
if (setfocus) {
|
if (setfocus) {
|
||||||
XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
|
XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
|
||||||
@@ -1925,18 +1658,6 @@ xerrordummy(Display *dpy, XErrorEvent *ee)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
zoom(const Arg *arg)
|
|
||||||
{
|
|
||||||
Client *c = selmon->sel;
|
|
||||||
|
|
||||||
if (!selmon->lt[selmon->sellt]->arrange || !c || c->isfloating)
|
|
||||||
return;
|
|
||||||
if (c == nexttiled(selmon->clients) && !(c = nexttiled(c->next)))
|
|
||||||
return;
|
|
||||||
pop(c);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
int
|
||||||
main(int argc, char *argv[])
|
main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user