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,a,togglemaxmizescreen,
bind=ALT,f,togglefullscreen,
bind=ALT+SHIFT,f,togglefakefullscreen,
bind=SUPER,i,minized,
bind=SUPER+SHIFT,I,restore_minized
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;
} else if (strcmp(func_name, "togglefullscreen") == 0) {
func = togglefullscreen;
} else if (strcmp(func_name, "togglefakefullscreen") == 0) {
func = togglefakefullscreen;
} else if (strcmp(func_name, "minized") == 0) {
func = minized;
} 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 incigaps(const Arg *arg);
void defaultgaps(const Arg *arg);
void togglefakefullscreen(const Arg *arg);

View file

@ -231,7 +231,7 @@ struct Client {
bool dirty;
uint32_t configure_serial;
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 overview_backup_bw;
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 setcursor(struct wl_listener *listener, void *data);
static void setfloating(Client *c, int floating);
static void setfakefullscreen(Client *c, int fakefullscreen);
static void setfullscreen(Client *c, int fullscreen);
static void setmaxmizescreen(Client *c, int maxmizescreen);
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) // 用自定义全屏代理自带全屏
{
c->isfullscreen = fullscreen;
@ -6336,6 +6348,14 @@ void togglefloating(const Arg *arg) {
setborder_color(sel);
}
void
togglefakefullscreen(const Arg *arg)
{
Client *sel = focustop(selmon);
if (sel)
setfakefullscreen(sel, !sel->isfakefullscreen);
}
void togglefullscreen(const Arg *arg) {
Client *sel = focustop(selmon);
if (!sel)