From 1bec4400dbb55c2675f2a8e4b34f0e92f30de46d Mon Sep 17 00:00:00 2001 From: nagbalae Date: Wed, 17 Jun 2020 19:30:01 +0200 Subject: [PATCH] Added fullscreen --- config.h | 11 ++++++++++- dwm.c | 34 +++++++++++++++++++++++++++++++++- 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/config.h b/config.h index e937055..007b276 100644 --- a/config.h +++ b/config.h @@ -49,12 +49,16 @@ static const Rule rules[] = { static const float mfact = 0.55; /* factor of master area size [0.05..0.95] */ static const int nmaster = 1; /* number of clients in master area */ static const int resizehints = 0; /* 1 means respect size hints in tiled resizals */ +#include "fibonacci.c" static const Layout layouts[] = { /* symbol arrange function */ { "[]=", tile }, /* first entry is default */ { "><>", NULL }, /* no layout function means floating behavior */ { "[M]", monocle }, + { "[@]", spiral }, + { "[\\]", dwindle }, + { NULL, NULL }, }; /* key definitions */ @@ -87,7 +91,7 @@ static Key keys[] = { { MODKEY, XK_o, incnmaster, {.i = -1 } }, { MODKEY, XK_h, setmfact, {.f = -0.05} }, { MODKEY, XK_l, setmfact, {.f = +0.05} }, - { MODKEY|ShiftMask, XK_Return, zoom, {0} }, + { MODKEY|ShiftMask, XK_Return, zoom, {0} }, { MODKEY, XK_Tab, view, {0} }, { MODKEY, XK_q, killclient, {0} }, { MODKEY, XK_w, spawn, SHCMD("$BROWSER")}, @@ -96,7 +100,12 @@ static Key keys[] = { { MODKEY, XK_t, setlayout, {.v = &layouts[0]} }, { MODKEY, XK_z, setlayout, {.v = &layouts[1]} }, { MODKEY, XK_u, setlayout, {.v = &layouts[2]} }, + { MODKEY, XK_i, setlayout, {.v = &layouts[3]} }, + { MODKEY|ShiftMask, XK_i, setlayout, {.v = &layouts[4]} }, + { MODKEY|ControlMask, XK_comma, cyclelayout, {.i = -1 } }, + { MODKEY|ControlMask, XK_period, cyclelayout, {.i = +1 } }, { MODKEY, XK_s, togglesticky, {0} }, + { MODKEY, XK_f, fullscreen, {0} }, { MODKEY, XK_m, spawn, SHCMD("$TERM -e ncmpcpp")}, { MODKEY|ShiftMask, XK_m, spawn, SHCMD("$TERM -e pulsemixer")}, { MODKEY, XK_space, setlayout, {0} }, diff --git a/dwm.c b/dwm.c index 833e197..1684bf0 100644 --- a/dwm.c +++ b/dwm.c @@ -184,6 +184,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); @@ -230,6 +231,7 @@ static void sendmon(Client *c, Monitor *m); static void setclientstate(Client *c, long state); static void setfocus(Client *c); static void setfullscreen(Client *c, int fullscreen); +static void fullscreen(const Arg *arg); static void setgaps(int oh, int ov, int ih, int iv); static void incrgaps(const Arg *arg); static void incrigaps(const Arg *arg); @@ -762,6 +764,23 @@ createmon(void) return m; } +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) { @@ -1710,7 +1729,20 @@ setfullscreen(Client *c, int fullscreen) arrange(c->mon); } } - void +Layout *last_layout; +void +fullscreen(const Arg *arg) +{ + if (selmon->showbar) { + for(last_layout = (Layout *)layouts; last_layout != selmon->lt[selmon->sellt]; last_layout++); + setlayout(&((Arg) { .v = &layouts[2] })); + } else { + setlayout(&((Arg) { .v = last_layout })); + } + togglebar(arg); +} + +void setgaps(int oh, int ov, int ih, int iv) { if (oh < 0) oh = 0;