From 2ec6d0c668b4daee601337f8da45ccfa3a7d5fc6 Mon Sep 17 00:00:00 2001 From: choc 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