feat: support fakefullscreen dispatch

This commit is contained in:
DreamMaoMao
2025-05-02 22:09:07 +08:00
parent e8e5d768c5
commit 719c50de65
4 changed files with 25 additions and 1 deletions

View File

@@ -193,6 +193,7 @@ bind=ALT,Tab,toggleoverview,
bind=ALT,backslash,togglefloating, bind=ALT,backslash,togglefloating,
bind=ALT,a,togglemaxmizescreen, bind=ALT,a,togglemaxmizescreen,
bind=ALT,f,togglefullscreen, bind=ALT,f,togglefullscreen,
bind=ALT+SHIFT,f,togglefakefullscreen,
bind=SUPER,i,minized, bind=SUPER,i,minized,
bind=SUPER+SHIFT,I,restore_minized bind=SUPER+SHIFT,I,restore_minized
bind=ALT,z,toggle_scratchpad bind=ALT,z,toggle_scratchpad

View File

@@ -456,6 +456,8 @@ FuncType parse_func_name(char *func_name, Arg *arg, char *arg_value) {
func = togglefloating; func = togglefloating;
} else if (strcmp(func_name, "togglefullscreen") == 0) { } else if (strcmp(func_name, "togglefullscreen") == 0) {
func = togglefullscreen; func = togglefullscreen;
} else if (strcmp(func_name, "togglefakefullscreen") == 0) {
func = togglefakefullscreen;
} else if (strcmp(func_name, "minized") == 0) { } else if (strcmp(func_name, "minized") == 0) {
func = minized; func = minized;
} else if (strcmp(func_name, "restore_minized") == 0) { } else if (strcmp(func_name, "restore_minized") == 0) {

View File

@@ -49,3 +49,4 @@ void incohgaps(const Arg *arg);
void incovgaps(const Arg *arg); void incovgaps(const Arg *arg);
void incigaps(const Arg *arg); void incigaps(const Arg *arg);
void defaultgaps(const Arg *arg); void defaultgaps(const Arg *arg);
void togglefakefullscreen(const Arg *arg);

View File

@@ -231,7 +231,7 @@ struct Client {
bool dirty; bool dirty;
uint32_t configure_serial; uint32_t configure_serial;
struct wlr_foreign_toplevel_handle_v1 *foreign_toplevel; struct wlr_foreign_toplevel_handle_v1 *foreign_toplevel;
int isfloating, isurgent, isfullscreen, need_float_size_reduce, isminied; int isfloating, isurgent, isfullscreen, isfakefullscreen, need_float_size_reduce, isminied;
int ismaxmizescreen; int ismaxmizescreen;
int overview_backup_bw; int overview_backup_bw;
int fullscreen_backup_x, fullscreen_backup_y, fullscreen_backup_w, int fullscreen_backup_x, fullscreen_backup_y, fullscreen_backup_w,
@@ -539,6 +539,7 @@ static void resize(Client *c, struct wlr_box geo, int interact);
static void run(char *startup_cmd); static void run(char *startup_cmd);
static void setcursor(struct wl_listener *listener, void *data); static void setcursor(struct wl_listener *listener, void *data);
static void setfloating(Client *c, int floating); static void setfloating(Client *c, int floating);
static void setfakefullscreen(Client *c, int fakefullscreen);
static void setfullscreen(Client *c, int fullscreen); static void setfullscreen(Client *c, int fullscreen);
static void setmaxmizescreen(Client *c, int maxmizescreen); static void setmaxmizescreen(Client *c, int maxmizescreen);
static void reset_maxmizescreen_size(Client *c); static void reset_maxmizescreen_size(Client *c);
@@ -5069,6 +5070,17 @@ void setmaxmizescreen(Client *c, int maxmizescreen) {
} }
} }
void
setfakefullscreen(Client *c, int fakefullscreen)
{
c->isfakefullscreen = fakefullscreen;
if (!c->mon)
return;
if (c->isfullscreen)
setfullscreen(c, 0);
client_set_fullscreen(c, fakefullscreen);
}
void setfullscreen(Client *c, int fullscreen) // 用自定义全屏代理自带全屏 void setfullscreen(Client *c, int fullscreen) // 用自定义全屏代理自带全屏
{ {
c->isfullscreen = fullscreen; c->isfullscreen = fullscreen;
@@ -6336,6 +6348,14 @@ void togglefloating(const Arg *arg) {
setborder_color(sel); setborder_color(sel);
} }
void
togglefakefullscreen(const Arg *arg)
{
Client *sel = focustop(selmon);
if (sel)
setfakefullscreen(sel, !sel->isfakefullscreen);
}
void togglefullscreen(const Arg *arg) { void togglefullscreen(const Arg *arg) {
Client *sel = focustop(selmon); Client *sel = focustop(selmon);
if (!sel) if (!sel)