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

View file

@ -266,7 +266,7 @@ struct Client {
struct wlr_foreign_toplevel_handle_v1 *foreign_toplevel; struct wlr_foreign_toplevel_handle_v1 *foreign_toplevel;
int isfloating, isurgent, isfullscreen, isfakefullscreen, int isfloating, isurgent, isfullscreen, isfakefullscreen,
need_float_size_reduce, isminied, isoverlay, isnosizehint, need_float_size_reduce, isminied, isoverlay, isnosizehint,
ignore_maximize; ignore_maximize, ignore_minimize;
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,
@ -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, isglobal);
APPLY_INT_PROP(c, r, isoverlay); APPLY_INT_PROP(c, r, isoverlay);
APPLY_INT_PROP(c, r, ignore_maximize); 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, isnosizehint);
APPLY_INT_PROP(c, r, isunglobal); APPLY_INT_PROP(c, r, isunglobal);
APPLY_INT_PROP(c, r, scratchpad_width); APPLY_INT_PROP(c, r, scratchpad_width);
@ -3295,6 +3296,7 @@ void init_client_properties(Client *c) {
c->isnoborder = 0; c->isnoborder = 0;
c->isnosizehint = 0; c->isnosizehint = 0;
c->ignore_maximize = 0; c->ignore_maximize = 0;
c->ignore_minimize = 0;
} }
void // old fix to 0.5 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) if (!c || !c->mon || c->iskilling || c->isminied)
return; return;
if (client_request_minimize(c, data)) { if (!c->ignore_minimize && client_request_minimize(c, data)) {
set_minized(c); set_minized(c);
} }
} }