about summary refs log tree commit diff
diff options
context:
space:
mode:
authorManuel Palenzuela <manuelpalenzuelamerino@gmail.com>2019-06-18 00:40:37 +0200
committerManuel Palenzuela <manuelpalenzuelamerino@gmail.com>2019-06-18 00:40:37 +0200
commit78c94bb7ba99bea753eca523afaadbd102ecc07d (patch)
treec235fc9f8c6e7f4d122c4d5afdf6b071d21096cb
parentFixed high temp icon in dwm-status (diff)
downloaddwm-78c94bb7ba99bea753eca523afaadbd102ecc07d.tar.gz
dwm-78c94bb7ba99bea753eca523afaadbd102ecc07d.tar.bz2
dwm-78c94bb7ba99bea753eca523afaadbd102ecc07d.zip
Added togglefullscreen patch and keybinding [Patch]
-rw-r--r--config.h5
-rw-r--r--dwm.c29
-rw-r--r--patches/dwm-togglefullscreen.diff59
3 files changed, 91 insertions, 2 deletions
diff --git a/config.h b/config.h
index 04fc97f..95b9ea1 100644
--- a/config.h
+++ b/config.h
@@ -22,14 +22,14 @@ static const char *colors[][3]      = {
 	/*               fg         bg         border   */
 	[SchemeNorm] = { col_gray3, col_gray1, col_gray2 },
 	[SchemeSel]  = { col_gray4, col_cyan,  col_cyan  },
-	[SchemeTitle]= { col_gray3, col_gray1, col_gray2  },
+	[SchemeTitle]= { col_gray3, col_gray1, col_gray2 },
 
 };
 static const unsigned int alphas[][3]      = {
 	/*               fg      bg        border     */
 	[SchemeNorm] = { OPAQUE, baralpha, borderalpha },
 	[SchemeSel]  = { OPAQUE, baralpha, borderalpha },
-	[SchemeTitle]= { OPAQUE, baralpha,  borderalpha},
+	[SchemeTitle]= { OPAQUE, baralpha, borderalpha },
 };
 
 /* tagging */
@@ -90,6 +90,7 @@ static Key keys[] = {
 	{ MODKEY,                       XK_h,      setmfact,       {.f = -0.05} },
 	{ MODKEY,                       XK_l,      setmfact,       {.f = +0.05} },
 	{ MODKEY,                       XK_Return, zoom,           {0} },
+	{ MODKEY,                       XK_f,      togglefullscreen,{0}},
 	{ MODKEY,                       XK_Tab,    view,           {0} },
 	{ MODKEY,                       XK_q,      killclient,     {0} },
 	/*
diff --git a/dwm.c b/dwm.c
index cdba5eb..c05ef8c 100644
--- a/dwm.c
+++ b/dwm.c
@@ -218,6 +218,7 @@ static void tagmon(const Arg *arg);
 static void tile(Monitor *);
 static void togglebar(const Arg *arg);
 static void togglefloating(const Arg *arg);
+static void togglefullscreen(const Arg *arg);
 static void toggletag(const Arg *arg);
 static void toggleview(const Arg *arg);
 static void unfocus(Client *c, int setfocus);
@@ -1770,6 +1771,34 @@ togglefloating(const Arg *arg)
 }
 
 void
+togglefullscreen(const Arg *arg)
+{
+  if (!selmon->sel->isfullscreen) {
+		XChangeProperty(dpy, selmon->sel->win, netatom[NetWMState], XA_ATOM, 32,
+			PropModeReplace, (unsigned char*)&netatom[NetWMFullscreen], 1);
+		selmon->sel->isfullscreen = 1;
+		selmon->sel->oldstate = selmon->sel->isfloating;
+		selmon->sel->oldbw = selmon->sel->bw;
+		selmon->sel->bw = 0;
+		selmon->sel->isfloating = 1;
+		resizeclient(selmon->sel, selmon->sel->mon->mx, selmon->sel->mon->my, selmon->sel->mon->mw, selmon->sel->mon->mh);
+		XRaiseWindow(dpy, selmon->sel->win);
+	} else if (selmon->sel->isfullscreen){
+		XChangeProperty(dpy, selmon->sel->win, netatom[NetWMState], XA_ATOM, 32,
+			PropModeReplace, (unsigned char*)0, 0);
+		selmon->sel->isfullscreen = 0;
+		selmon->sel->isfloating = selmon->sel->oldstate;
+		selmon->sel->bw = selmon->sel->oldbw;
+		selmon->sel->x = selmon->sel->oldx;
+		selmon->sel->y = selmon->sel->oldy;
+		selmon->sel->w = selmon->sel->oldw;
+		selmon->sel->h = selmon->sel->oldh;
+		resizeclient(selmon->sel, selmon->sel->x, selmon->sel->y, selmon->sel->w, selmon->sel->h);
+		arrange(selmon->sel->mon);
+	}
+}
+
+void
 toggletag(const Arg *arg)
 {
 	unsigned int newtags;
diff --git a/patches/dwm-togglefullscreen.diff b/patches/dwm-togglefullscreen.diff
new file mode 100644
index 0000000..78de821
--- /dev/null
+++ b/patches/dwm-togglefullscreen.diff
@@ -0,0 +1,59 @@
+diff --git a/config.h b/config.h
+index 04fc97f..657e8f2 100644
+--- a/config.h
++++ b/config.h
+
+ /* tagging */
+@@ -90,6 +90,7 @@ static Key keys[] = {
+        { MODKEY,                       XK_h,      setmfact,       {.f = -0.05} },
+        { MODKEY,                       XK_l,      setmfact,       {.f = +0.05} },
+        { MODKEY,                       XK_Return, zoom,           {0} },
++       { MODKEY,                       XK_f,      togglefullscreen,  {0} },
+        { MODKEY,                       XK_Tab,    view,           {0} },
+        { MODKEY,                       XK_q,      killclient,     {0} },
+        /*
+diff --git a/dwm.c b/dwm.c
+index cdba5eb..c05ef8c 100644
+--- a/dwm.c
++++ b/dwm.c
+@@ -218,6 +218,7 @@ static void tagmon(const Arg *arg);
+ static void tile(Monitor *);
+ static void togglebar(const Arg *arg);
+ static void togglefloating(const Arg *arg);
++static void togglefullscreen(const Arg *arg);
+ static void toggletag(const Arg *arg);
+ static void toggleview(const Arg *arg);
+ static void unfocus(Client *c, int setfocus);
+
+
++void
++togglefullscreen(const Arg *arg)
++{
++  if (!selmon->sel->isfullscreen) {
++               XChangeProperty(dpy, selmon->sel->win, netatom[NetWMState], XA_ATOM, 32,
++                       PropModeReplace, (unsigned char*)&netatom[NetWMFullscreen], 1);
++               selmon->sel->isfullscreen = 1;
++               selmon->sel->oldstate = selmon->sel->isfloating;
++               selmon->sel->oldbw = selmon->sel->bw;
++               selmon->sel->bw = 0;
++               selmon->sel->isfloating = 1;
++               resizeclient(selmon->sel, selmon->sel->mon->mx, selmon->sel->mon->my, selmon->sel->mon->mw, selmon->sel->mon->mh);
++               XRaiseWindow(dpy, selmon->sel->win);
++       } else if (selmon->sel->isfullscreen){
++               XChangeProperty(dpy, selmon->sel->win, netatom[NetWMState], XA_ATOM, 32,
++                       PropModeReplace, (unsigned char*)0, 0);
++               selmon->sel->isfullscreen = 0;
++               selmon->sel->isfloating = selmon->sel->oldstate;
++               selmon->sel->bw = selmon->sel->oldbw;
++               selmon->sel->x = selmon->sel->oldx;
++               selmon->sel->y = selmon->sel->oldy;
++               selmon->sel->w = selmon->sel->oldw;
++               selmon->sel->h = selmon->sel->oldh;
++               resizeclient(selmon->sel, selmon->sel->x, selmon->sel->y, selmon->sel->w, selmon->sel->h);
++               arrange(selmon->sel->mon);
++       }
++}
++
+ void
+ toggletag(const Arg *arg)
+ {