Add full screen patch
This commit is contained in:
		
							parent
							
								
									ee71a90f5a
								
							
						
					
					
						commit
						1f62715b3b
					
				
					 6 changed files with 277 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -82,6 +82,7 @@ static Key keys[] = {
 | 
			
		|||
	{ MODKEY,                       XK_t,      setlayout,      {.v = &layouts[0]} },
 | 
			
		||||
	{ MODKEY,                       XK_f,      setlayout,      {.v = &layouts[1]} },
 | 
			
		||||
	{ MODKEY,                       XK_m,      setlayout,      {.v = &layouts[2]} },
 | 
			
		||||
	{ MODKEY|ShiftMask,             XK_f,      fullscreen,     {0} },
 | 
			
		||||
	{ MODKEY,                       XK_space,  setlayout,      {0} },
 | 
			
		||||
	{ MODKEY|ShiftMask,             XK_space,  togglefloating, {0} },
 | 
			
		||||
	{ MODKEY,                       XK_0,      view,           {.ui = ~0 } },
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										121
									
								
								config.def.h.orig
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										121
									
								
								config.def.h.orig
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,121 @@
 | 
			
		|||
/* See LICENSE file for copyright and license details. */
 | 
			
		||||
 | 
			
		||||
/* appearance */
 | 
			
		||||
static const unsigned int borderpx  = 1;        /* border pixel of windows */
 | 
			
		||||
static const unsigned int snap      = 32;       /* snap pixel */
 | 
			
		||||
static const unsigned int systraypinning = 0;   /* 0: sloppy systray follows selected monitor, >0: pin systray to monitor X */
 | 
			
		||||
static const unsigned int systrayonleft = 0;   	/* 0: systray in the right corner, >0: systray on left of status text */
 | 
			
		||||
static const unsigned int systrayspacing = 2;   /* systray spacing */
 | 
			
		||||
static const int systraypinningfailfirst = 1;   /* 1: if pinning fails, display systray on the first monitor, False: display systray on the last monitor*/
 | 
			
		||||
static const int showsystray        = 1;     /* 0 means no systray */
 | 
			
		||||
static const int showbar            = 1;     /* 0 means no bar */
 | 
			
		||||
static const int topbar             = 1;     /* 0 means bottom bar */
 | 
			
		||||
static const char *fonts[]          = { "monospace:size=10" };
 | 
			
		||||
static const char dmenufont[]       = "monospace:size=10";
 | 
			
		||||
static const char col_gray1[]       = "#222222";
 | 
			
		||||
static const char col_gray2[]       = "#444444";
 | 
			
		||||
static const char col_gray3[]       = "#bbbbbb";
 | 
			
		||||
static const char col_gray4[]       = "#eeeeee";
 | 
			
		||||
static const char col_cyan[]        = "#005577";
 | 
			
		||||
static const char *colors[][3]      = {
 | 
			
		||||
	/*               fg         bg         border   */
 | 
			
		||||
	[SchemeNorm] = { col_gray3, col_gray1, col_gray2 },
 | 
			
		||||
	[SchemeSel]  = { col_gray4, col_cyan,  col_cyan  },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* tagging */
 | 
			
		||||
static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
 | 
			
		||||
 | 
			
		||||
static const Rule rules[] = {
 | 
			
		||||
	/* xprop(1):
 | 
			
		||||
	 *	WM_CLASS(STRING) = instance, class
 | 
			
		||||
	 *	WM_NAME(STRING) = title
 | 
			
		||||
	 */
 | 
			
		||||
	/* class      instance    title       tags mask     isfloating   monitor */
 | 
			
		||||
	{ "Gimp",     NULL,       NULL,       0,            1,           -1 },
 | 
			
		||||
	{ "Firefox",  NULL,       NULL,       1 << 8,       0,           -1 },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* layout(s) */
 | 
			
		||||
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 = 1;    /* 1 means respect size hints in tiled resizals */
 | 
			
		||||
static const int lockfullscreen = 1; /* 1 will force focus on the fullscreen window */
 | 
			
		||||
 | 
			
		||||
static const Layout layouts[] = {
 | 
			
		||||
	/* symbol     arrange function */
 | 
			
		||||
	{ "[]=",      tile },    /* first entry is default */
 | 
			
		||||
	{ "><>",      NULL },    /* no layout function means floating behavior */
 | 
			
		||||
	{ "[M]",      monocle },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* key definitions */
 | 
			
		||||
#define MODKEY Mod1Mask
 | 
			
		||||
#define TAGKEYS(KEY,TAG) \
 | 
			
		||||
	{ MODKEY,                       KEY,      view,           {.ui = 1 << TAG} }, \
 | 
			
		||||
	{ MODKEY|ControlMask,           KEY,      toggleview,     {.ui = 1 << TAG} }, \
 | 
			
		||||
	{ MODKEY|ShiftMask,             KEY,      tag,            {.ui = 1 << TAG} }, \
 | 
			
		||||
	{ MODKEY|ControlMask|ShiftMask, KEY,      toggletag,      {.ui = 1 << TAG} },
 | 
			
		||||
 | 
			
		||||
/* helper for spawning shell commands in the pre dwm-5.0 fashion */
 | 
			
		||||
#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
 | 
			
		||||
 | 
			
		||||
/* commands */
 | 
			
		||||
static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */
 | 
			
		||||
static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL };
 | 
			
		||||
static const char *termcmd[]  = { "st", NULL };
 | 
			
		||||
 | 
			
		||||
static Key keys[] = {
 | 
			
		||||
	/* modifier                     key        function        argument */
 | 
			
		||||
	{ MODKEY,                       XK_p,      spawn,          {.v = dmenucmd } },
 | 
			
		||||
	{ MODKEY|ShiftMask,             XK_Return, spawn,          {.v = termcmd } },
 | 
			
		||||
	{ MODKEY,                       XK_b,      togglebar,      {0} },
 | 
			
		||||
	{ MODKEY,                       XK_j,      focusstack,     {.i = +1 } },
 | 
			
		||||
	{ MODKEY,                       XK_k,      focusstack,     {.i = -1 } },
 | 
			
		||||
	{ MODKEY,                       XK_i,      incnmaster,     {.i = +1 } },
 | 
			
		||||
	{ MODKEY,                       XK_d,      incnmaster,     {.i = -1 } },
 | 
			
		||||
	{ MODKEY,                       XK_h,      setmfact,       {.f = -0.05} },
 | 
			
		||||
	{ MODKEY,                       XK_l,      setmfact,       {.f = +0.05} },
 | 
			
		||||
	{ MODKEY,                       XK_Return, zoom,           {0} },
 | 
			
		||||
	{ MODKEY,                       XK_Tab,    view,           {0} },
 | 
			
		||||
	{ MODKEY|ShiftMask,             XK_c,      killclient,     {0} },
 | 
			
		||||
	{ MODKEY,                       XK_t,      setlayout,      {.v = &layouts[0]} },
 | 
			
		||||
	{ MODKEY,                       XK_f,      setlayout,      {.v = &layouts[1]} },
 | 
			
		||||
	{ MODKEY,                       XK_m,      setlayout,      {.v = &layouts[2]} },
 | 
			
		||||
	{ MODKEY,                       XK_space,  setlayout,      {0} },
 | 
			
		||||
	{ MODKEY|ShiftMask,             XK_space,  togglefloating, {0} },
 | 
			
		||||
	{ MODKEY,                       XK_0,      view,           {.ui = ~0 } },
 | 
			
		||||
	{ MODKEY|ShiftMask,             XK_0,      tag,            {.ui = ~0 } },
 | 
			
		||||
	{ MODKEY,                       XK_comma,  focusmon,       {.i = -1 } },
 | 
			
		||||
	{ MODKEY,                       XK_period, focusmon,       {.i = +1 } },
 | 
			
		||||
	{ MODKEY|ShiftMask,             XK_comma,  tagmon,         {.i = -1 } },
 | 
			
		||||
	{ MODKEY|ShiftMask,             XK_period, tagmon,         {.i = +1 } },
 | 
			
		||||
	TAGKEYS(                        XK_1,                      0)
 | 
			
		||||
	TAGKEYS(                        XK_2,                      1)
 | 
			
		||||
	TAGKEYS(                        XK_3,                      2)
 | 
			
		||||
	TAGKEYS(                        XK_4,                      3)
 | 
			
		||||
	TAGKEYS(                        XK_5,                      4)
 | 
			
		||||
	TAGKEYS(                        XK_6,                      5)
 | 
			
		||||
	TAGKEYS(                        XK_7,                      6)
 | 
			
		||||
	TAGKEYS(                        XK_8,                      7)
 | 
			
		||||
	TAGKEYS(                        XK_9,                      8)
 | 
			
		||||
	{ MODKEY|ShiftMask,             XK_q,      quit,           {0} },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* button definitions */
 | 
			
		||||
/* click can be ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */
 | 
			
		||||
static Button buttons[] = {
 | 
			
		||||
	/* click                event mask      button          function        argument */
 | 
			
		||||
	{ ClkTagBar,            MODKEY,         Button1,        tag,            {0} },
 | 
			
		||||
	{ ClkTagBar,            MODKEY,         Button3,        toggletag,      {0} },
 | 
			
		||||
	{ ClkWinTitle,          0,              Button2,        zoom,           {0} },
 | 
			
		||||
	{ ClkStatusText,        0,              Button2,        spawn,          {.v = termcmd } },
 | 
			
		||||
	{ ClkClientWin,         MODKEY,         Button1,        movemouse,      {0} },
 | 
			
		||||
	{ ClkClientWin,         MODKEY,         Button2,        togglefloating, {0} },
 | 
			
		||||
	{ ClkClientWin,         MODKEY,         Button3,        resizemouse,    {0} },
 | 
			
		||||
	{ ClkTagBar,            0,              Button1,        view,           {0} },
 | 
			
		||||
	{ ClkTagBar,            0,              Button3,        toggleview,     {0} },
 | 
			
		||||
	{ ClkTagBar,            MODKEY,         Button1,        tag,            {0} },
 | 
			
		||||
	{ ClkTagBar,            MODKEY,         Button3,        toggletag,      {0} },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										2
									
								
								config.h
									
										
									
									
									
								
							
							
						
						
									
										2
									
								
								config.h
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -82,7 +82,7 @@ static Key keys[] = {
 | 
			
		|||
	/* modifier                     key        function        argument */
 | 
			
		||||
	{ MODKEY,                       XK_p,      spawn,          {.v = dmenucmd } },
 | 
			
		||||
	{ MODKEY,                       XK_Return, spawn,          {.v = termcmd } },
 | 
			
		||||
 | 
			
		||||
	{ MODKEY|ShiftMask,             XK_f,      fullscreen,     {0} },
 | 
			
		||||
	{ MODKEY,                       XK_w,      spawn,          SHCMD(WEBBROWSER) },
 | 
			
		||||
 | 
			
		||||
	{ MODKEY,                       XK_b,      togglebar,      {0} },
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										14
									
								
								dwm.c
									
										
									
									
									
								
							
							
						
						
									
										14
									
								
								dwm.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -227,6 +227,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 setlayout(const Arg *arg);
 | 
			
		||||
static void setmfact(const Arg *arg);
 | 
			
		||||
static void setup(void);
 | 
			
		||||
| 
						 | 
				
			
			@ -1770,6 +1771,19 @@ setfullscreen(Client *c, int fullscreen)
 | 
			
		|||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
setlayout(const Arg *arg)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										84
									
								
								dwm.c.orig
									
										
									
									
									
								
							
							
						
						
									
										84
									
								
								dwm.c.orig
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -29,6 +29,7 @@
 | 
			
		|||
#include <string.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#include <sys/stat.h>
 | 
			
		||||
#include <sys/wait.h>
 | 
			
		||||
#include <X11/cursorfont.h>
 | 
			
		||||
#include <X11/keysym.h>
 | 
			
		||||
| 
						 | 
				
			
			@ -219,6 +220,7 @@ static void resizemouse(const Arg *arg);
 | 
			
		|||
static void resizerequest(XEvent *e);
 | 
			
		||||
static void restack(Monitor *m);
 | 
			
		||||
static void run(void);
 | 
			
		||||
static void runautostart(void);
 | 
			
		||||
static void scan(void);
 | 
			
		||||
static int sendevent(Window w, Atom proto, int m, long d0, long d1, long d2, long d3, long d4);
 | 
			
		||||
static void sendmon(Client *c, Monitor *m);
 | 
			
		||||
| 
						 | 
				
			
			@ -267,7 +269,11 @@ static void zoom(const Arg *arg);
 | 
			
		|||
 | 
			
		||||
/* variables */
 | 
			
		||||
static Systray *systray = NULL;
 | 
			
		||||
static const char autostartblocksh[] = "autostart_blocking.sh";
 | 
			
		||||
static const char autostartsh[] = "autostart.sh";
 | 
			
		||||
static const char broken[] = "broken";
 | 
			
		||||
static const char dwmdir[] = "dwm";
 | 
			
		||||
static const char localshare[] = ".local/share";
 | 
			
		||||
static char stext[256];
 | 
			
		||||
static int screen;
 | 
			
		||||
static int sw, sh;           /* X display screen geometry width, height */
 | 
			
		||||
| 
						 | 
				
			
			@ -1559,6 +1565,83 @@ run(void)
 | 
			
		|||
			handler[ev.type](&ev); /* call handler */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
runautostart(void)
 | 
			
		||||
{
 | 
			
		||||
	char *pathpfx;
 | 
			
		||||
	char *path;
 | 
			
		||||
	char *xdgdatahome;
 | 
			
		||||
	char *home;
 | 
			
		||||
	struct stat sb;
 | 
			
		||||
 | 
			
		||||
	if ((home = getenv("HOME")) == NULL)
 | 
			
		||||
		/* this is almost impossible */
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	/* if $XDG_DATA_HOME is set and not empty, use $XDG_DATA_HOME/dwm,
 | 
			
		||||
	 * otherwise use ~/.local/share/dwm as autostart script directory
 | 
			
		||||
	 */
 | 
			
		||||
	xdgdatahome = getenv("XDG_DATA_HOME");
 | 
			
		||||
	if (xdgdatahome != NULL && *xdgdatahome != '\0') {
 | 
			
		||||
		/* space for path segments, separators and nul */
 | 
			
		||||
		pathpfx = ecalloc(1, strlen(xdgdatahome) + strlen(dwmdir) + 2);
 | 
			
		||||
 | 
			
		||||
		if (sprintf(pathpfx, "%s/%s", xdgdatahome, dwmdir) <= 0) {
 | 
			
		||||
			free(pathpfx);
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
	} else {
 | 
			
		||||
		/* space for path segments, separators and nul */
 | 
			
		||||
		pathpfx = ecalloc(1, strlen(home) + strlen(localshare)
 | 
			
		||||
		                     + strlen(dwmdir) + 3);
 | 
			
		||||
 | 
			
		||||
		if (sprintf(pathpfx, "%s/%s/%s", home, localshare, dwmdir) < 0) {
 | 
			
		||||
			free(pathpfx);
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* check if the autostart script directory exists */
 | 
			
		||||
	if (! (stat(pathpfx, &sb) == 0 && S_ISDIR(sb.st_mode))) {
 | 
			
		||||
		/* the XDG conformant path does not exist or is no directory
 | 
			
		||||
		 * so we try ~/.dwm instead
 | 
			
		||||
		 */
 | 
			
		||||
		char *pathpfx_new = realloc(pathpfx, strlen(home) + strlen(dwmdir) + 3);
 | 
			
		||||
		if(pathpfx_new == NULL) {
 | 
			
		||||
			free(pathpfx);
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		pathpfx = pathpfx_new;
 | 
			
		||||
 | 
			
		||||
		if (sprintf(pathpfx, "%s/.%s", home, dwmdir) <= 0) {
 | 
			
		||||
			free(pathpfx);
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* try the blocking script first */
 | 
			
		||||
	path = ecalloc(1, strlen(pathpfx) + strlen(autostartblocksh) + 2);
 | 
			
		||||
	if (sprintf(path, "%s/%s", pathpfx, autostartblocksh) <= 0) {
 | 
			
		||||
		free(path);
 | 
			
		||||
		free(pathpfx);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (access(path, X_OK) == 0)
 | 
			
		||||
		system(path);
 | 
			
		||||
 | 
			
		||||
	/* now the non-blocking script */
 | 
			
		||||
	if (sprintf(path, "%s/%s", pathpfx, autostartsh) <= 0) {
 | 
			
		||||
		free(path);
 | 
			
		||||
		free(pathpfx);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (access(path, X_OK) == 0)
 | 
			
		||||
		system(strcat(path, " &"));
 | 
			
		||||
 | 
			
		||||
	free(pathpfx);
 | 
			
		||||
	free(path);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
scan(void)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -2512,6 +2595,7 @@ main(int argc, char *argv[])
 | 
			
		|||
		die("pledge");
 | 
			
		||||
#endif /* __OpenBSD__ */
 | 
			
		||||
	scan();
 | 
			
		||||
	runautostart();
 | 
			
		||||
	run();
 | 
			
		||||
	cleanup();
 | 
			
		||||
	XCloseDisplay(dpy);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										56
									
								
								patches/dwm-fullscreen-6.2.diff
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								patches/dwm-fullscreen-6.2.diff
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,56 @@
 | 
			
		|||
From 54719285bd1a984e2efce6e8a8eab184fec11abf Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Sermak <sermak@jarvis.com>
 | 
			
		||||
Date: Mon, 8 Jul 2019 01:06:44 +0200
 | 
			
		||||
Subject: [PATCH] Simulate toggleable fullscreen mode
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 config.def.h |  1 +
 | 
			
		||||
 dwm.c        | 14 ++++++++++++++
 | 
			
		||||
 2 files changed, 15 insertions(+)
 | 
			
		||||
 | 
			
		||||
diff --git a/config.def.h b/config.def.h
 | 
			
		||||
index 1c0b587..f774cc5 100644
 | 
			
		||||
--- a/config.def.h
 | 
			
		||||
+++ b/config.def.h
 | 
			
		||||
@@ -76,6 +76,7 @@ static Key keys[] = {
 | 
			
		||||
 	{ MODKEY,                       XK_t,      setlayout,      {.v = &layouts[0]} },
 | 
			
		||||
 	{ MODKEY,                       XK_f,      setlayout,      {.v = &layouts[1]} },
 | 
			
		||||
 	{ MODKEY,                       XK_m,      setlayout,      {.v = &layouts[2]} },
 | 
			
		||||
+	{ MODKEY|ShiftMask,             XK_f,      fullscreen,     {0} },
 | 
			
		||||
 	{ MODKEY,                       XK_space,  setlayout,      {0} },
 | 
			
		||||
 	{ MODKEY|ShiftMask,             XK_space,  togglefloating, {0} },
 | 
			
		||||
 	{ MODKEY,                       XK_0,      view,           {.ui = ~0 } },
 | 
			
		||||
diff --git a/dwm.c b/dwm.c
 | 
			
		||||
index 4465af1..04b1e06 100644
 | 
			
		||||
--- a/dwm.c
 | 
			
		||||
+++ b/dwm.c
 | 
			
		||||
@@ -199,6 +199,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 setlayout(const Arg *arg);
 | 
			
		||||
 static void setmfact(const Arg *arg);
 | 
			
		||||
 static void setup(void);
 | 
			
		||||
@@ -1497,6 +1498,19 @@ setfullscreen(Client *c, int fullscreen)
 | 
			
		||||
 	}
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
+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
 | 
			
		||||
 setlayout(const Arg *arg)
 | 
			
		||||
 {
 | 
			
		||||
-- 
 | 
			
		||||
2.22.0
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue