support isfakefullscreen as windowrule property

This commit is contained in:
Daniel Jampen 2026-02-08 17:56:26 +01:00 committed by DreamMaoMao
parent d8b8d71fed
commit 52703a638f
2 changed files with 9 additions and 0 deletions

View file

@ -58,6 +58,7 @@ typedef struct {
uint32_t tags;
int32_t isfloating;
int32_t isfullscreen;
int32_t isfakefullscreen;
float scroller_proportion;
const char *animation_type_open;
const char *animation_type_close;
@ -1918,6 +1919,7 @@ bool parse_option(Config *config, char *key, char *value) {
// int32_t rule value, relay to a client property
rule->isfloating = -1;
rule->isfullscreen = -1;
rule->isfakefullscreen = -1;
rule->isnoborder = -1;
rule->isnoshadow = -1;
rule->isnoanimation = -1;
@ -2054,6 +2056,8 @@ bool parse_option(Config *config, char *key, char *value) {
rule->scroller_proportion = atof(val);
} else if (strcmp(key, "isfullscreen") == 0) {
rule->isfullscreen = atoi(val);
} else if (strcmp(key, "isfakefullscreen") == 0) {
rule->isfakefullscreen = atoi(val);
} else if (strcmp(key, "globalkeybinding") == 0) {
char mod_str[256], keysym_str[256];
sscanf(val, "%255[^-]-%255[a-zA-Z]", mod_str, keysym_str);

View file

@ -1307,6 +1307,7 @@ static void apply_rule_properties(Client *c, const ConfigWinRule *r) {
APPLY_INT_PROP(c, r, no_force_center);
APPLY_INT_PROP(c, r, isfloating);
APPLY_INT_PROP(c, r, isfullscreen);
APPLY_INT_PROP(c, r, isfakefullscreen);
APPLY_INT_PROP(c, r, isnoborder);
APPLY_INT_PROP(c, r, isnoshadow);
APPLY_INT_PROP(c, r, isnoanimation);
@ -1506,6 +1507,10 @@ void applyrules(Client *c) {
setfullscreen(c, fullscreen_state_backup);
if (c->isfakefullscreen) {
setfakefullscreen(c, 1);
}
/*
if there is a new non-floating window in the current tag, the fullscreen
window in the current tag will exit fullscreen and participate in tiling