diff --git a/src/config/parse_config.h b/src/config/parse_config.h index b92522a..adb4b42 100644 --- a/src/config/parse_config.h +++ b/src/config/parse_config.h @@ -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) { diff --git a/src/mango.c b/src/mango.c index 6262e39..f14d2cd 100644 --- a/src/mango.c +++ b/src/mango.c @@ -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); } }