diff options
| author | gonzo <gonzo@toniatuh.com> | 2023-05-17 20:43:21 +0200 |
|---|---|---|
| committer | gonzo <gonzo@toniatuh.com> | 2023-05-17 20:43:21 +0200 |
| commit | 788731079849b41c6e0cb2c4baa2665aa3bc74c0 (patch) | |
| tree | e2684234eac75062885da6e67fe24c26600e7ca2 | |
| parent | b206a544652e7f1c06172b4c059c057cf946d9ef (diff) | |
| download | dwm-788731079849b41c6e0cb2c4baa2665aa3bc74c0.tar.gz | |
cycle layouts
| -rw-r--r-- | config.h | 5 | ||||
| -rw-r--r-- | dwm.1 | 9 | ||||
| -rw-r--r-- | dwm.c | 18 |
3 files changed, 28 insertions, 4 deletions
@@ -59,6 +59,7 @@ static const Layout layouts[] = { { "[]=", tile }, /* first entry is default */ { "><>", NULL }, /* no layout function means floating behavior */ { "[M]", monocle }, + { NULL, NULL }, }; /* key definitions */ @@ -92,7 +93,9 @@ static const Key keys[] = { { MODKEY, XK_h, setmfact, {.f = -0.05} }, { MODKEY, XK_l, setmfact, {.f = +0.05} }, { MODKEY|ShiftMask, XK_Return, zoom, {0} }, - { MODKEY, XK_Tab, view, {0} }, + //{ MODKEY, XK_Tab, view, {0} }, + { MODKEY, XK_Tab, cyclelayout, {.i = +1 } }, + { MODKEY|ShiftMask, XK_Tab, cyclelayout, {.i = -1 } }, { MODKEY|ShiftMask, XK_q, killclient, {0} }, { MODKEY, XK_t, setlayout, {.v = &layouts[0]} }, { MODKEY, XK_f, togglefullscr, {0} }, @@ -95,6 +95,12 @@ Sets monocle layout. .B Mod1\-space Toggles between current and previous layout. .TP +.B Mod1\-Shift\-Tab +Cycles backwards in layout list. +.TP +.B Mod1\-Tab +Cycles forwards in layout list. +.TP .B Mod1\-j Focus next window. .TP @@ -125,9 +131,6 @@ Toggle fullscreen for focused window. .B Mod1\-Shift\-space Toggle focused window between tiled and floating state. .TP -.B Mod1\-Tab -Toggles to the previously selected tags. -.TP .B Mod1\-Shift\-[1..n] Apply nth tag to focused window. .TP @@ -160,6 +160,7 @@ static void configure(Client *c); static void configurenotify(XEvent *e); static void configurerequest(XEvent *e); static Monitor *createmon(void); +static void cyclelayout(const Arg *arg); static void destroynotify(XEvent *e); static void detach(Client *c); static void detachstack(Client *c); @@ -672,6 +673,23 @@ createmon(void) } void +cyclelayout(const Arg *arg) { + Layout *l; + for(l = (Layout *)layouts; l != selmon->lt[selmon->sellt]; l++); + if(arg->i > 0) { + if(l->symbol && (l + 1)->symbol) + setlayout(&((Arg) { .v = (l + 1) })); + else + setlayout(&((Arg) { .v = layouts })); + } else { + if(l != layouts && (l - 1)->symbol) + setlayout(&((Arg) { .v = (l - 1) })); + else + setlayout(&((Arg) { .v = &layouts[LENGTH(layouts) - 2] })); + } +} + +void destroynotify(XEvent *e) { Client *c; |
