feat: windowrule add ignore_minimize

This commit is contained in:
DreamMaoMao 2025-08-23 17:47:11 +08:00
parent c02add7553
commit 15e6b10c20
2 changed files with 8 additions and 2 deletions

View file

@ -51,6 +51,7 @@ typedef struct {
int isglobal;
int isoverlay;
int ignore_maximize;
int ignore_minimize;
int isnosizehint;
const char *monitor;
int offsetx;
@ -1413,6 +1414,7 @@ void parse_config_line(Config *config, const char *line) {
rule->isglobal = -1;
rule->isoverlay = -1;
rule->ignore_maximize = -1;
rule->ignore_minimize = -1;
rule->isnosizehint = -1;
rule->isterm = -1;
rule->noswallow = -1;
@ -1498,6 +1500,8 @@ void parse_config_line(Config *config, const char *line) {
rule->isoverlay = atoi(val);
} else if (strcmp(key, "ignore_maximize") == 0) {
rule->ignore_maximize = atoi(val);
} else if (strcmp(key, "ignore_minimize") == 0) {
rule->ignore_minimize = atoi(val);
} else if (strcmp(key, "isnosizehint") == 0) {
rule->isnosizehint = atoi(val);
} else if (strcmp(key, "isterm") == 0) {

View file

@ -266,7 +266,7 @@ struct Client {
struct wlr_foreign_toplevel_handle_v1 *foreign_toplevel;
int isfloating, isurgent, isfullscreen, isfakefullscreen,
need_float_size_reduce, isminied, isoverlay, isnosizehint,
ignore_maximize;
ignore_maximize, ignore_minimize;
int ismaxmizescreen;
int overview_backup_bw;
int fullscreen_backup_x, fullscreen_backup_y, fullscreen_backup_w,
@ -1043,6 +1043,7 @@ static void apply_rule_properties(Client *c, const ConfigWinRule *r) {
APPLY_INT_PROP(c, r, isglobal);
APPLY_INT_PROP(c, r, isoverlay);
APPLY_INT_PROP(c, r, ignore_maximize);
APPLY_INT_PROP(c, r, ignore_minimize);
APPLY_INT_PROP(c, r, isnosizehint);
APPLY_INT_PROP(c, r, isunglobal);
APPLY_INT_PROP(c, r, scratchpad_width);
@ -3295,6 +3296,7 @@ void init_client_properties(Client *c) {
c->isnoborder = 0;
c->isnosizehint = 0;
c->ignore_maximize = 0;
c->ignore_minimize = 0;
}
void // old fix to 0.5
@ -3472,7 +3474,7 @@ minimizenotify(struct wl_listener *listener, void *data) {
if (!c || !c->mon || c->iskilling || c->isminied)
return;
if (client_request_minimize(c, data)) {
if (!c->ignore_minimize && client_request_minimize(c, data)) {
set_minized(c);
}
}