Add fake fullscreen client patch

This commit is contained in:
Sravan Balaji
2024-10-06 14:44:43 -04:00
parent b7500d01e7
commit 65ef994e4c
6 changed files with 140 additions and 0 deletions

View File

@@ -10,6 +10,7 @@
- [[#always-center][Always Center]] - [[#always-center][Always Center]]
- [[#attach-top][Attach Top]] - [[#attach-top][Attach Top]]
- [[#auto-start][Auto Start]] - [[#auto-start][Auto Start]]
- [[#fake-fullscreen-client][Fake Fullscreen Client]]
- [[#float-unfocused-border-color][Float Unfocused Border Color]] - [[#float-unfocused-border-color][Float Unfocused Border Color]]
- [[#foreign-toplevel-management][Foreign Toplevel Management]] - [[#foreign-toplevel-management][Foreign Toplevel Management]]
- [[#gapless-grid][Gapless Grid]] - [[#gapless-grid][Gapless Grid]]
@@ -113,6 +114,14 @@ Note: Commands from array are executed using execvp(). So if you need to execute
#define AUTOSTART_PATCH 0 #define AUTOSTART_PATCH 0
#+END_SRC #+END_SRC
*** [[https://codeberg.org/dwl/dwl-patches/src/branch/main/patches/fakefullscreenclient][Fake Fullscreen Client]]
Allow setting fake fullscreen per client
#+BEGIN_SRC c :tangle patches.def.h
#define FAKE_FULLSCREEN_CLIENT_PATCH 1
#+END_SRC
*** [[https://codeberg.org/dwl/dwl-patches/src/branch/main/patches/float-unfocused-border-color][Float Unfocused Border Color]] *** [[https://codeberg.org/dwl/dwl-patches/src/branch/main/patches/float-unfocused-border-color][Float Unfocused Border Color]]
A revive of the floatBorderColor patch. A revive of the floatBorderColor patch.
@@ -486,6 +495,9 @@ static const Key keys[] = {
{ MODKEY, XKB_KEY_space, setlayout, {0} }, { MODKEY, XKB_KEY_space, setlayout, {0} },
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_space, togglefloating, {0} }, { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_space, togglefloating, {0} },
{ MODKEY, XKB_KEY_e, togglefullscreen, {0} }, { MODKEY, XKB_KEY_e, togglefullscreen, {0} },
#if FAKE_FULLSCREEN_CLIENT_PATCH
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_E, togglefakefullscreen, {0} },
#endif // FAKE_FULLSCREEN_CLIENT_PATCH
{ MODKEY, XKB_KEY_0, view, {.ui = ~0} }, { MODKEY, XKB_KEY_0, view, {.ui = ~0} },
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_parenright, tag, {.ui = ~0} }, { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_parenright, tag, {.ui = ~0} },
{ MODKEY, XKB_KEY_comma, focusmon, {.i = WLR_DIRECTION_LEFT} }, { MODKEY, XKB_KEY_comma, focusmon, {.i = WLR_DIRECTION_LEFT} },

View File

@@ -210,6 +210,9 @@ static const Key keys[] = {
{ MODKEY, XKB_KEY_space, setlayout, {0} }, { MODKEY, XKB_KEY_space, setlayout, {0} },
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_space, togglefloating, {0} }, { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_space, togglefloating, {0} },
{ MODKEY, XKB_KEY_e, togglefullscreen, {0} }, { MODKEY, XKB_KEY_e, togglefullscreen, {0} },
#if FAKE_FULLSCREEN_CLIENT_PATCH
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_E, togglefakefullscreen, {0} },
#endif // FAKE_FULLSCREEN_CLIENT_PATCH
{ MODKEY, XKB_KEY_0, view, {.ui = ~0} }, { MODKEY, XKB_KEY_0, view, {.ui = ~0} },
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_parenright, tag, {.ui = ~0} }, { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_parenright, tag, {.ui = ~0} },
{ MODKEY, XKB_KEY_comma, focusmon, {.i = WLR_DIRECTION_LEFT} }, { MODKEY, XKB_KEY_comma, focusmon, {.i = WLR_DIRECTION_LEFT} },

View File

@@ -203,6 +203,9 @@ static const Key keys[] = {
{ MODKEY, XKB_KEY_space, setlayout, {0} }, { MODKEY, XKB_KEY_space, setlayout, {0} },
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_space, togglefloating, {0} }, { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_space, togglefloating, {0} },
{ MODKEY, XKB_KEY_e, togglefullscreen, {0} }, { MODKEY, XKB_KEY_e, togglefullscreen, {0} },
#if FAKE_FULLSCREEN_CLIENT_PATCH
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_E, togglefakefullscreen, {0} },
#endif // FAKE_FULLSCREEN_CLIENT_PATCH
{ MODKEY, XKB_KEY_0, view, {.ui = ~0} }, { MODKEY, XKB_KEY_0, view, {.ui = ~0} },
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_parenright, tag, {.ui = ~0} }, { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_parenright, tag, {.ui = ~0} },
{ MODKEY, XKB_KEY_comma, focusmon, {.i = WLR_DIRECTION_LEFT} }, { MODKEY, XKB_KEY_comma, focusmon, {.i = WLR_DIRECTION_LEFT} },

33
dwl.c
View File

@@ -162,7 +162,11 @@ typedef struct {
#endif // XWAYLAND #endif // XWAYLAND
unsigned int bw; unsigned int bw;
uint32_t tags; uint32_t tags;
#if !FAKE_FULLSCREEN_CLIENT_PATCH
int isfloating, isurgent, isfullscreen; int isfloating, isurgent, isfullscreen;
#else // FAKE_FULLSCREEN_CLIENT_PATCH
int isfloating, isurgent, isfullscreen, isfakefullscreen;
#endif // FAKE_FULLSCREEN_CLIENT_PATCH
uint32_t resize; /* configure serial of a pending resize */ uint32_t resize; /* configure serial of a pending resize */
} Client; } Client;
@@ -414,6 +418,9 @@ static void setcursor(struct wl_listener *listener, void *data);
static void setcursorshape(struct wl_listener *listener, void *data); static void setcursorshape(struct wl_listener *listener, void *data);
static void setfloating(Client *c, int floating); static void setfloating(Client *c, int floating);
static void setfullscreen(Client *c, int fullscreen); static void setfullscreen(Client *c, int fullscreen);
#if FAKE_FULLSCREEN_CLIENT_PATCH
static void setfakefullscreen(Client *c, int fullscreen);
#endif // FAKE_FULLSCREEN_CLIENT_PATCH
static void setgamma(struct wl_listener *listener, void *data); static void setgamma(struct wl_listener *listener, void *data);
#if VANITYGAPS_PATCH #if VANITYGAPS_PATCH
static void setgaps(int oh, int ov, int ih, int iv); static void setgaps(int oh, int ov, int ih, int iv);
@@ -434,6 +441,9 @@ static void togglebar(const Arg *arg);
#endif // IPC_PATCH #endif // IPC_PATCH
static void togglefloating(const Arg *arg); static void togglefloating(const Arg *arg);
static void togglefullscreen(const Arg *arg); static void togglefullscreen(const Arg *arg);
#if FAKE_FULLSCREEN_CLIENT_PATCH
static void togglefakefullscreen(const Arg *arg);
#endif // FAKE_FULLSCREEN_CLIENT_PATCH
#if VANITYGAPS_PATCH #if VANITYGAPS_PATCH
static void togglegaps(const Arg *arg); static void togglegaps(const Arg *arg);
#endif // VANITYGAPS_PATCH #endif // VANITYGAPS_PATCH
@@ -3221,6 +3231,19 @@ setfullscreen(Client *c, int fullscreen)
printstatus(); printstatus();
} }
#if FAKE_FULLSCREEN_CLIENT_PATCH
void
setfakefullscreen(Client *c, int fullscreen)
{
c->isfakefullscreen = fullscreen;
if (!c->mon)
return;
if (c->isfullscreen)
setfullscreen(c, 0);
client_set_fullscreen(c, fullscreen);
}
#endif // FAKE_FULLSCREEN_CLIENT_PATCH
void void
setgamma(struct wl_listener *listener, void *data) setgamma(struct wl_listener *listener, void *data)
{ {
@@ -3725,6 +3748,16 @@ togglefullscreen(const Arg *arg)
setfullscreen(sel, !sel->isfullscreen); setfullscreen(sel, !sel->isfullscreen);
} }
#if FAKE_FULLSCREEN_CLIENT_PATCH
void
togglefakefullscreen(const Arg *arg)
{
Client *sel = focustop(selmon);
if (sel)
setfakefullscreen(sel, !sel->isfakefullscreen);
}
#endif // FAKE_FULLSCREEN_CLIENT_PATCH
#if VANITYGAPS_PATCH #if VANITYGAPS_PATCH
void void
togglegaps(const Arg *arg) togglegaps(const Arg *arg)

View File

@@ -4,6 +4,8 @@
#define AUTOSTART_PATCH 0 #define AUTOSTART_PATCH 0
#define FAKE_FULLSCREEN_CLIENT_PATCH 1
#define FLOAT_UNFOCUSED_BORDER_COLOR_PATCH 1 #define FLOAT_UNFOCUSED_BORDER_COLOR_PATCH 1
#define FOREIGN_TOPLEVEL_MANAGEMENT_PATCH 1 #define FOREIGN_TOPLEVEL_MANAGEMENT_PATCH 1

View File

@@ -0,0 +1,87 @@
From 2ec6d0c668b4daee601337f8da45ccfa3a7d5fc6 Mon Sep 17 00:00:00 2001
From: choc <notchoc@proton.me>
Date: Fri, 29 Mar 2024 22:50:00 +0800
Subject: [PATCH] implement fakefullscreenclient
---
config.def.h | 1 +
dwl.c | 23 ++++++++++++++++++++++-
2 files changed, 23 insertions(+), 1 deletion(-)
diff --git a/config.def.h b/config.def.h
index 9009517..8c220eb 100644
--- a/config.def.h
+++ b/config.def.h
@@ -137,6 +137,7 @@ static const Key keys[] = {
{ MODKEY, XKB_KEY_space, setlayout, {0} },
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_space, togglefloating, {0} },
{ MODKEY, XKB_KEY_e, togglefullscreen, {0} },
+ { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_E, togglefakefullscreen, {0} },
{ MODKEY, XKB_KEY_0, view, {.ui = ~0} },
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_parenright, tag, {.ui = ~0} },
{ MODKEY, XKB_KEY_comma, focusmon, {.i = WLR_DIRECTION_LEFT} },
diff --git a/dwl.c b/dwl.c
index 5867b0c..1e78491 100644
--- a/dwl.c
+++ b/dwl.c
@@ -137,7 +137,7 @@ typedef struct {
#endif
unsigned int bw;
uint32_t tags;
- int isfloating, isurgent, isfullscreen;
+ int isfloating, isurgent, isfullscreen, isfakefullscreen;
uint32_t resize; /* configure serial of a pending resize */
} Client;
@@ -318,6 +318,7 @@ static void setcursor(struct wl_listener *listener, void *data);
static void setcursorshape(struct wl_listener *listener, void *data);
static void setfloating(Client *c, int floating);
static void setfullscreen(Client *c, int fullscreen);
+static void setfakefullscreen(Client *c, int fullscreen);
static void setgamma(struct wl_listener *listener, void *data);
static void setlayout(const Arg *arg);
static void setmfact(const Arg *arg);
@@ -332,6 +333,7 @@ static void tagmon(const Arg *arg);
static void tile(Monitor *m);
static void togglefloating(const Arg *arg);
static void togglefullscreen(const Arg *arg);
+static void togglefakefullscreen(const Arg *arg);
static void toggletag(const Arg *arg);
static void toggleview(const Arg *arg);
static void unlocksession(struct wl_listener *listener, void *data);
@@ -2181,6 +2183,17 @@ setfullscreen(Client *c, int fullscreen)
printstatus();
}
+void
+setfakefullscreen(Client *c, int fullscreen)
+{
+ c->isfakefullscreen = fullscreen;
+ if (!c->mon)
+ return;
+ if (c->isfullscreen)
+ setfullscreen(c, 0);
+ client_set_fullscreen(c, fullscreen);
+}
+
void
setgamma(struct wl_listener *listener, void *data)
{
@@ -2620,6 +2633,14 @@ togglefullscreen(const Arg *arg)
setfullscreen(sel, !sel->isfullscreen);
}
+void
+togglefakefullscreen(const Arg *arg)
+{
+ Client *sel = focustop(selmon);
+ if (sel)
+ setfakefullscreen(sel, !sel->isfakefullscreen);
+}
+
void
toggletag(const Arg *arg)
{
--
2.44.0