aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md1
-rw-r--r--config.def.h15
-rw-r--r--config.h15
-rwxr-xr-xdwmbin0 -> 73624 bytes
-rw-r--r--dwm.c58
5 files changed, 79 insertions, 10 deletions
diff --git a/README.md b/README.md
index d7e331b..7c52758 100644
--- a/README.md
+++ b/README.md
@@ -3,4 +3,5 @@
- xrdb
- swallow
- rotatestack
+- adjacent
diff --git a/config.def.h b/config.def.h
index d8e7992..394512b 100644
--- a/config.def.h
+++ b/config.def.h
@@ -32,7 +32,7 @@ static const Rule rules[] = {
/* class instance title tags mask isfloating isterminal noswallow monitor */
{ "Gimp", NULL, NULL, 0, 1, 0, 0, -1 },
{ "Firefox", NULL, NULL, 1 << 8, 0, 0, -1, -1 },
- { "St", NULL, NULL, 0, 0, 1, 0, -1 },
+ { "Ghostty", NULL, NULL, 0, 0, 1, 0, -1 },
{ NULL, NULL, "Event Tester", 0, 0, 0, 1, -1 }, /* xev */
};
@@ -63,7 +63,7 @@ static const Layout layouts[] = {
/* commands */
static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */
static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", normbgcolor, "-nf", normfgcolor, "-sb", selbgcolor, "-sf", selfgcolor, NULL };
-static const char *termcmd[] = { "st", NULL };
+static const char *termcmd[] = { "ghostty", NULL };
static const Key keys[] = {
/* modifier key function argument */
@@ -78,22 +78,27 @@ static const Key keys[] = {
{ MODKEY, XK_k, focusstack, {.i = -1 } },
{ MODKEY, XK_p, spawn, {.v = dmenucmd } },
{ MODKEY, XK_t, setlayout, {.v = &layouts[0]} },
- { MODKEY, XK_Return, zoom, {0} },
+ { MODKEY, XK_w, spawn, SHCMD("librewolf") },
{ MODKEY, XK_Tab, view, {0} },
{ MODKEY, XK_space, setlayout, {0} },
{ MODKEY, XK_comma, focusmon, {.i = -1 } },
{ MODKEY, XK_semicolon, focusmon, {.i = +1 } },
{ MODKEY, XK_F5, xrdb, {.v = NULL } },
+ { MODKEY, XK_Return, spawn, {.v = termcmd } },
+ { MODKEY, XK_Right, viewnext, {0} },
+ { MODKEY, XK_Left, viewprev, {0} },
+ { MODKEY|ShiftMask, XK_Right, tagtonext, {0} },
+ { MODKEY|ShiftMask, XK_Left, tagtoprev, {0} },
+ { MODKEY|ShiftMask, XK_Return, zoom, {0} },
{ MODKEY|ShiftMask, XK_c, killclient, {0} },
{ MODKEY|ShiftMask, XK_j, rotatestack, {.i = +1 } },
{ MODKEY|ShiftMask, XK_k, rotatestack, {.i = -1 } },
{ MODKEY|ShiftMask, XK_q, quit, {0} },
{ MODKEY|ShiftMask, XK_x, spawn, SHCMD("rofi -show power-menu -modi power-menu:rofi-power-menu") },
- { MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } },
{ MODKEY|ShiftMask, XK_space, togglefloating, {0} },
{ MODKEY|ShiftMask, XK_agrave, tag, {.ui = ~0 } },
{ MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } },
- { MODKEY|ShiftMask, XK_semicolon, tagmon, {.i = +1 } },
+ { MODKEY|ShiftMask, XK_semicolon, tagmon, {.i = +1 } },
{ 0, XF86XK_AudioMute, spawn, SHCMD("dwm-audio voltoggle") },
{ 0, XF86XK_AudioLowerVolume, spawn, SHCMD("dwm-audio volquieter") },
{ 0, XF86XK_AudioRaiseVolume, spawn, SHCMD("dwm-audio vollouder") },
diff --git a/config.h b/config.h
index d8e7992..394512b 100644
--- a/config.h
+++ b/config.h
@@ -32,7 +32,7 @@ static const Rule rules[] = {
/* class instance title tags mask isfloating isterminal noswallow monitor */
{ "Gimp", NULL, NULL, 0, 1, 0, 0, -1 },
{ "Firefox", NULL, NULL, 1 << 8, 0, 0, -1, -1 },
- { "St", NULL, NULL, 0, 0, 1, 0, -1 },
+ { "Ghostty", NULL, NULL, 0, 0, 1, 0, -1 },
{ NULL, NULL, "Event Tester", 0, 0, 0, 1, -1 }, /* xev */
};
@@ -63,7 +63,7 @@ static const Layout layouts[] = {
/* commands */
static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */
static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", normbgcolor, "-nf", normfgcolor, "-sb", selbgcolor, "-sf", selfgcolor, NULL };
-static const char *termcmd[] = { "st", NULL };
+static const char *termcmd[] = { "ghostty", NULL };
static const Key keys[] = {
/* modifier key function argument */
@@ -78,22 +78,27 @@ static const Key keys[] = {
{ MODKEY, XK_k, focusstack, {.i = -1 } },
{ MODKEY, XK_p, spawn, {.v = dmenucmd } },
{ MODKEY, XK_t, setlayout, {.v = &layouts[0]} },
- { MODKEY, XK_Return, zoom, {0} },
+ { MODKEY, XK_w, spawn, SHCMD("librewolf") },
{ MODKEY, XK_Tab, view, {0} },
{ MODKEY, XK_space, setlayout, {0} },
{ MODKEY, XK_comma, focusmon, {.i = -1 } },
{ MODKEY, XK_semicolon, focusmon, {.i = +1 } },
{ MODKEY, XK_F5, xrdb, {.v = NULL } },
+ { MODKEY, XK_Return, spawn, {.v = termcmd } },
+ { MODKEY, XK_Right, viewnext, {0} },
+ { MODKEY, XK_Left, viewprev, {0} },
+ { MODKEY|ShiftMask, XK_Right, tagtonext, {0} },
+ { MODKEY|ShiftMask, XK_Left, tagtoprev, {0} },
+ { MODKEY|ShiftMask, XK_Return, zoom, {0} },
{ MODKEY|ShiftMask, XK_c, killclient, {0} },
{ MODKEY|ShiftMask, XK_j, rotatestack, {.i = +1 } },
{ MODKEY|ShiftMask, XK_k, rotatestack, {.i = -1 } },
{ MODKEY|ShiftMask, XK_q, quit, {0} },
{ MODKEY|ShiftMask, XK_x, spawn, SHCMD("rofi -show power-menu -modi power-menu:rofi-power-menu") },
- { MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } },
{ MODKEY|ShiftMask, XK_space, togglefloating, {0} },
{ MODKEY|ShiftMask, XK_agrave, tag, {.ui = ~0 } },
{ MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } },
- { MODKEY|ShiftMask, XK_semicolon, tagmon, {.i = +1 } },
+ { MODKEY|ShiftMask, XK_semicolon, tagmon, {.i = +1 } },
{ 0, XF86XK_AudioMute, spawn, SHCMD("dwm-audio voltoggle") },
{ 0, XF86XK_AudioLowerVolume, spawn, SHCMD("dwm-audio volquieter") },
{ 0, XF86XK_AudioRaiseVolume, spawn, SHCMD("dwm-audio vollouder") },
diff --git a/dwm b/dwm
new file mode 100755
index 0000000..bfe8b08
--- /dev/null
+++ b/dwm
Binary files differ
diff --git a/dwm.c b/dwm.c
index 4e19624..e6b653c 100644
--- a/dwm.c
+++ b/dwm.c
@@ -256,6 +256,8 @@ static void updatetitle(Client *c);
static void updatewindowtype(Client *c);
static void updatewmhints(Client *c);
static void view(const Arg *arg);
+static void viewnext(const Arg *arg);
+static void viewprev(const Arg *arg);
static Client *wintoclient(Window w);
static Monitor *wintomon(Window w);
static int xerror(Display *dpy, XErrorEvent *ee);
@@ -263,6 +265,10 @@ static int xerrordummy(Display *dpy, XErrorEvent *ee);
static int xerrorstart(Display *dpy, XErrorEvent *ee);
static void xrdb(const Arg *arg);
static void zoom(const Arg *arg);
+static unsigned int nexttag(void);
+static unsigned int prevtag(void);
+static void tagtonext(const Arg *arg);
+static void tagtoprev(const Arg *arg);
static pid_t getparentprocess(pid_t p);
static int isdescprocess(pid_t p, pid_t c);
@@ -1349,6 +1355,13 @@ movemouse(const Arg *arg)
}
}
+unsigned int
+nexttag(void)
+{
+ unsigned int seltag = selmon->tagset[selmon->seltags];
+ return seltag == (1 << (LENGTH(tags) - 1)) ? 1 : seltag << 1;
+}
+
Client *
nexttiled(Client *c)
{
@@ -1365,6 +1378,13 @@ pop(Client *c)
arrange(c->mon);
}
+unsigned int
+prevtag(void)
+{
+ unsigned int seltag = selmon->tagset[selmon->seltags];
+ return seltag == 1 ? (1 << (LENGTH(tags) - 1)) : seltag >> 1;
+}
+
void
propertynotify(XEvent *e)
{
@@ -1864,6 +1884,32 @@ tagmon(const Arg *arg)
}
void
+tagtonext(const Arg *arg)
+{
+ unsigned int tmp;
+
+ if (selmon->sel == NULL)
+ return;
+
+ tmp = nexttag();
+ tag(&(const Arg){.ui = tmp });
+ view(&(const Arg){.ui = tmp });
+}
+
+void
+tagtoprev(const Arg *arg)
+{
+ unsigned int tmp;
+
+ if (selmon->sel == NULL)
+ return;
+
+ tmp = prevtag();
+ tag(&(const Arg){.ui = tmp });
+ view(&(const Arg){.ui = tmp });
+}
+
+void
tile(Monitor *m)
{
unsigned int i, n, h, mw, my, ty;
@@ -2388,6 +2434,18 @@ swallowingclient(Window w)
return NULL;
}
+void
+viewnext(const Arg *arg)
+{
+ view(&(const Arg){.ui = nexttag()});
+}
+
+void
+viewprev(const Arg *arg)
+{
+ view(&(const Arg){.ui = prevtag()});
+}
+
Client *
wintoclient(Window w)
{