mirror of
https://github.com/DreamMaoMao/maomaowm.git
synced 2025-11-18 06:59:53 -05:00
opt: add force_maximize
sf
This commit is contained in:
parent
43798176f3
commit
28bd66d4b0
3 changed files with 33 additions and 3 deletions
|
|
@ -343,6 +343,21 @@ static inline void client_set_minimized(Client *c, bool minimized) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void client_set_maximized(Client *c, bool maximized) {
|
||||||
|
struct wlr_xdg_toplevel *toplevel;
|
||||||
|
|
||||||
|
#ifdef XWAYLAND
|
||||||
|
if (client_is_x11(c)) {
|
||||||
|
wlr_xwayland_surface_set_maximized(c->surface.xwayland, maximized,
|
||||||
|
maximized);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
toplevel = c->surface.xdg->toplevel;
|
||||||
|
wlr_xdg_toplevel_set_maximized(toplevel, maximized);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
static inline void client_set_tiled(Client *c, uint32_t edges) {
|
static inline void client_set_tiled(Client *c, uint32_t edges) {
|
||||||
struct wlr_xdg_toplevel *toplevel;
|
struct wlr_xdg_toplevel *toplevel;
|
||||||
#ifdef XWAYLAND
|
#ifdef XWAYLAND
|
||||||
|
|
@ -361,7 +376,7 @@ static inline void client_set_tiled(Client *c, uint32_t edges) {
|
||||||
wlr_xdg_toplevel_set_tiled(c->surface.xdg->toplevel, edges);
|
wlr_xdg_toplevel_set_tiled(c->surface.xdg->toplevel, edges);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!c->ignore_maximize) {
|
if (!c->ignore_maximize && c->force_maximize) {
|
||||||
wlr_xdg_toplevel_set_maximized(toplevel, edges != WLR_EDGE_NONE);
|
wlr_xdg_toplevel_set_maximized(toplevel, edges != WLR_EDGE_NONE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -72,6 +72,7 @@ typedef struct {
|
||||||
int no_force_center;
|
int no_force_center;
|
||||||
int isterm;
|
int isterm;
|
||||||
int allow_csd;
|
int allow_csd;
|
||||||
|
int force_maximize;
|
||||||
int noswallow;
|
int noswallow;
|
||||||
float focused_opacity;
|
float focused_opacity;
|
||||||
float unfocused_opacity;
|
float unfocused_opacity;
|
||||||
|
|
@ -1483,6 +1484,7 @@ void parse_option(Config *config, char *key, char *value) {
|
||||||
rule->isnosizehint = -1;
|
rule->isnosizehint = -1;
|
||||||
rule->isterm = -1;
|
rule->isterm = -1;
|
||||||
rule->allow_csd = -1;
|
rule->allow_csd = -1;
|
||||||
|
rule->force_maximize = -1;
|
||||||
rule->noswallow = -1;
|
rule->noswallow = -1;
|
||||||
rule->nofadein = -1;
|
rule->nofadein = -1;
|
||||||
rule->nofadeout = -1;
|
rule->nofadeout = -1;
|
||||||
|
|
@ -1576,6 +1578,8 @@ void parse_option(Config *config, char *key, char *value) {
|
||||||
rule->isterm = atoi(val);
|
rule->isterm = atoi(val);
|
||||||
} else if (strcmp(key, "allow_csd") == 0) {
|
} else if (strcmp(key, "allow_csd") == 0) {
|
||||||
rule->allow_csd = atoi(val);
|
rule->allow_csd = atoi(val);
|
||||||
|
} else if (strcmp(key, "force_maximize") == 0) {
|
||||||
|
rule->force_maximize = atoi(val);
|
||||||
} else if (strcmp(key, "noswallow") == 0) {
|
} else if (strcmp(key, "noswallow") == 0) {
|
||||||
rule->noswallow = atoi(val);
|
rule->noswallow = atoi(val);
|
||||||
} else if (strcmp(key, "scroller_proportion") == 0) {
|
} else if (strcmp(key, "scroller_proportion") == 0) {
|
||||||
|
|
|
||||||
15
src/mango.c
15
src/mango.c
|
|
@ -325,6 +325,7 @@ struct Client {
|
||||||
struct dwl_animation animation;
|
struct dwl_animation animation;
|
||||||
int isterm, noswallow;
|
int isterm, noswallow;
|
||||||
int allow_csd;
|
int allow_csd;
|
||||||
|
int force_maximize;
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
Client *swallowing, *swallowedby;
|
Client *swallowing, *swallowedby;
|
||||||
bool is_clip_to_hide;
|
bool is_clip_to_hide;
|
||||||
|
|
@ -1140,6 +1141,7 @@ void toggle_hotarea(int x_root, int y_root) {
|
||||||
static void apply_rule_properties(Client *c, const ConfigWinRule *r) {
|
static void apply_rule_properties(Client *c, const ConfigWinRule *r) {
|
||||||
APPLY_INT_PROP(c, r, isterm);
|
APPLY_INT_PROP(c, r, isterm);
|
||||||
APPLY_INT_PROP(c, r, allow_csd);
|
APPLY_INT_PROP(c, r, allow_csd);
|
||||||
|
APPLY_INT_PROP(c, r, force_maximize);
|
||||||
APPLY_INT_PROP(c, r, noswallow);
|
APPLY_INT_PROP(c, r, noswallow);
|
||||||
APPLY_INT_PROP(c, r, nofadein);
|
APPLY_INT_PROP(c, r, nofadein);
|
||||||
APPLY_INT_PROP(c, r, nofadeout);
|
APPLY_INT_PROP(c, r, nofadeout);
|
||||||
|
|
@ -3438,6 +3440,7 @@ void init_client_properties(Client *c) {
|
||||||
c->stack_innder_per = 0.0f;
|
c->stack_innder_per = 0.0f;
|
||||||
c->isterm = 0;
|
c->isterm = 0;
|
||||||
c->allow_csd = 0;
|
c->allow_csd = 0;
|
||||||
|
c->force_maximize = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void // old fix to 0.5
|
void // old fix to 0.5
|
||||||
|
|
@ -3458,7 +3461,8 @@ mapnotify(struct wl_listener *listener, void *data) {
|
||||||
|
|
||||||
client_get_geometry(c, &c->geom);
|
client_get_geometry(c, &c->geom);
|
||||||
|
|
||||||
init_client_properties(c);
|
if (client_is_x11(c))
|
||||||
|
init_client_properties(c);
|
||||||
|
|
||||||
// set special window properties
|
// set special window properties
|
||||||
if (client_is_unmanaged(c) || client_should_ignore_focus(c)) {
|
if (client_is_unmanaged(c) || client_should_ignore_focus(c)) {
|
||||||
|
|
@ -4064,9 +4068,10 @@ void requestdecorationmode(struct wl_listener *listener, void *data) {
|
||||||
// 如果客户端没有指定,使用默认模式
|
// 如果客户端没有指定,使用默认模式
|
||||||
if (!c->allow_csd) {
|
if (!c->allow_csd) {
|
||||||
requested_mode = WLR_XDG_TOPLEVEL_DECORATION_V1_MODE_SERVER_SIDE;
|
requested_mode = WLR_XDG_TOPLEVEL_DECORATION_V1_MODE_SERVER_SIDE;
|
||||||
|
} else if (requested_mode ==
|
||||||
|
WLR_XDG_TOPLEVEL_DECORATION_V1_MODE_CLIENT_SIDE) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 尊重客户端的请求
|
|
||||||
wlr_xdg_toplevel_decoration_v1_set_mode(c->decoration, requested_mode);
|
wlr_xdg_toplevel_decoration_v1_set_mode(c->decoration, requested_mode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -4408,6 +4413,12 @@ void setmaxmizescreen(Client *c, int maxmizescreen) {
|
||||||
set_size_per(c->mon, c);
|
set_size_per(c->mon, c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!c->force_maximize && !c->ismaxmizescreen) {
|
||||||
|
client_set_maximized(c, false);
|
||||||
|
} else {
|
||||||
|
client_set_maximized(c, true);
|
||||||
|
}
|
||||||
|
|
||||||
arrange(c->mon, false);
|
arrange(c->mon, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue