Adding fakefullscreen client rule

This commit is contained in:
bakkeby 2020-09-16 11:00:31 +02:00
parent b3cb874ff5
commit b8dc848918
2 changed files with 36 additions and 10 deletions

34
dwm.c
View File

@ -459,6 +459,9 @@ typedef struct {
int iscentered; int iscentered;
#endif // CENTER_PATCH #endif // CENTER_PATCH
int isfloating; int isfloating;
#if SELECTIVEFAKEFULLSCREEN_PATCH && FAKEFULLSCREEN_CLIENT_PATCH
int isfakefullscreen;
#endif // SELECTIVEFAKEFULLSCREEN_PATCH
#if ISPERMANENT_PATCH #if ISPERMANENT_PATCH
int ispermanent; int ispermanent;
#endif // ISPERMANENT_PATCH #endif // ISPERMANENT_PATCH
@ -486,6 +489,11 @@ typedef struct {
#else #else
#define PERMANENT #define PERMANENT
#endif // ISPERMANENT_PATCH #endif // ISPERMANENT_PATCH
#if SELECTIVEFAKEFULLSCREEN_PATCH && FAKEFULLSCREEN_CLIENT_PATCH
#define FAKEFULLSCREEN , .isfakefullscreen = 1
#else
#define FAKEFULLSCREEN
#endif // SELECTIVEFAKEFULLSCREEN_PATCH
#if SWALLOW_PATCH #if SWALLOW_PATCH
#define NOSWALLOW , .noswallow = 1 #define NOSWALLOW , .noswallow = 1
#define TERMINAL , .isterminal = 1 #define TERMINAL , .isterminal = 1
@ -771,6 +779,9 @@ applyrules(Client *c)
#if ISPERMANENT_PATCH #if ISPERMANENT_PATCH
c->ispermanent = r->ispermanent; c->ispermanent = r->ispermanent;
#endif // ISPERMANENT_PATCH #endif // ISPERMANENT_PATCH
#if SELECTIVEFAKEFULLSCREEN_PATCH && FAKEFULLSCREEN_CLIENT_PATCH
c->fakefullscreen = r->isfakefullscreen;
#endif // SELECTIVEFAKEFULLSCREEN_PATCH
#if SWALLOW_PATCH #if SWALLOW_PATCH
c->isterminal = r->isterminal; c->isterminal = r->isterminal;
c->noswallow = r->noswallow; c->noswallow = r->noswallow;
@ -825,6 +836,9 @@ applyrules(Client *c)
} }
} }
#endif // SWITCHTAG_PATCH #endif // SWITCHTAG_PATCH
#if ONLY_ONE_RULE_MATCH_PATCH
break;
#endif // ONLY_ONE_RULE_MATCH_PATCH
} }
} }
if (ch.res_class) if (ch.res_class)
@ -2552,16 +2566,16 @@ resizeclient(Client *c, int x, int y, int w, int h)
#if NOBORDER_PATCH #if NOBORDER_PATCH
if (((nexttiled(c->mon->clients) == c && !nexttiled(c->next)) if (((nexttiled(c->mon->clients) == c && !nexttiled(c->next))
#if MONOCLE_LAYOUT #if MONOCLE_LAYOUT
|| &monocle == c->mon->lt[c->mon->sellt]->arrange || &monocle == c->mon->lt[c->mon->sellt]->arrange
#endif // MONOCLE_LAYOUT #endif // MONOCLE_LAYOUT
) )
#if FAKEFULLSCREEN_CLIENT_PATCH #if FAKEFULLSCREEN_CLIENT_PATCH
&& (c->fakefullscreen == 1 || !c->isfullscreen) && (c->fakefullscreen == 1 || !c->isfullscreen)
#else #else
&& !c->isfullscreen && !c->isfullscreen
#endif // FAKEFULLSCREEN_CLIENT_PATCH #endif // FAKEFULLSCREEN_CLIENT_PATCH
&& !c->isfloating && !c->isfloating
&& c->mon->lt[c->mon->sellt]->arrange) { && c->mon->lt[c->mon->sellt]->arrange) {
c->w = wc.width += c->bw * 2; c->w = wc.width += c->bw * 2;
c->h = wc.height += c->bw * 2; c->h = wc.height += c->bw * 2;
wc.border_width = 0; wc.border_width = 0;

View File

@ -479,6 +479,8 @@
* the space currently given to them. * the space currently given to them.
* The "twist" with this patch is that fake fullscreen can be toggled on a per client basis * The "twist" with this patch is that fake fullscreen can be toggled on a per client basis
* rather than applying to all clients globally. * rather than applying to all clients globally.
* Also see the selectivefakefullscreen option that adds a rule option to enabled this on client
* startup.
*/ */
#define FAKEFULLSCREEN_CLIENT_PATCH 0 #define FAKEFULLSCREEN_CLIENT_PATCH 0
@ -652,6 +654,9 @@
*/ */
#define NO_TRANSPARENT_BORDERS_PATCH 0 #define NO_TRANSPARENT_BORDERS_PATCH 0
/* Minor patch that prevents more than one rule being matched for a given client. */
#define ONLY_ONE_RULE_MATCH_PATCH 0
/* This patch makes it so dwm will only exit via quit() if no windows are open. /* This patch makes it so dwm will only exit via quit() if no windows are open.
* This is to prevent you accidentally losing all your work. * This is to prevent you accidentally losing all your work.
* https://dwm.suckless.org/patches/onlyquitonempty/ * https://dwm.suckless.org/patches/onlyquitonempty/
@ -753,6 +758,13 @@
*/ */
#define SCRATCHPAD_ALT_1_PATCH 0 #define SCRATCHPAD_ALT_1_PATCH 0
/* As opposed to the original patch this only adds a rule option allowing fake fullscreen
* to be enabled for applications when they start. This is intended to be used in combination
* with the fakefullscreenclient patch and offers no practical functionality without it.
* https://dwm.suckless.org/patches/selectivefakefullscreen/
*/
#define SELECTIVEFAKEFULLSCREEN_PATCH 0
/* Allows restarting dwm without the dependency of an external script. /* Allows restarting dwm without the dependency of an external script.
* https://dwm.suckless.org/patches/selfrestart/ * https://dwm.suckless.org/patches/selfrestart/
*/ */