mirror of
https://github.com/DreamMaoMao/maomaowm.git
synced 2026-02-15 04:27:47 -05:00
feat: make force_tiled_state as a option
This commit is contained in:
parent
910bb78dab
commit
0fe3197574
2 changed files with 26 additions and 5 deletions
|
|
@ -88,6 +88,7 @@ typedef struct {
|
|||
int32_t isterm;
|
||||
int32_t allow_csd;
|
||||
int32_t force_maximize;
|
||||
int32_t force_tiled_state;
|
||||
int32_t force_tearing;
|
||||
int32_t noswallow;
|
||||
float focused_opacity;
|
||||
|
|
@ -1933,6 +1934,7 @@ bool parse_option(Config *config, char *key, char *value) {
|
|||
rule->isterm = -1;
|
||||
rule->allow_csd = -1;
|
||||
rule->force_maximize = -1;
|
||||
rule->force_tiled_state = -1;
|
||||
rule->force_tearing = -1;
|
||||
rule->noswallow = -1;
|
||||
rule->nofocus = -1;
|
||||
|
|
@ -2042,6 +2044,8 @@ bool parse_option(Config *config, char *key, char *value) {
|
|||
rule->allow_csd = atoi(val);
|
||||
} else if (strcmp(key, "force_maximize") == 0) {
|
||||
rule->force_maximize = atoi(val);
|
||||
} else if (strcmp(key, "force_tiled_state") == 0) {
|
||||
rule->force_tiled_state = atoi(val);
|
||||
} else if (strcmp(key, "force_tearing") == 0) {
|
||||
rule->force_tearing = atoi(val);
|
||||
} else if (strcmp(key, "noswallow") == 0) {
|
||||
|
|
|
|||
27
src/mango.c
27
src/mango.c
|
|
@ -3,6 +3,7 @@
|
|||
*/
|
||||
#include "wlr-layer-shell-unstable-v1-protocol.h"
|
||||
#include "wlr/util/box.h"
|
||||
#include "wlr/util/edges.h"
|
||||
#include <getopt.h>
|
||||
#include <libinput.h>
|
||||
#include <limits.h>
|
||||
|
|
@ -390,6 +391,7 @@ struct Client {
|
|||
int32_t isterm, noswallow;
|
||||
int32_t allow_csd;
|
||||
int32_t force_maximize;
|
||||
int32_t force_tiled_state;
|
||||
pid_t pid;
|
||||
Client *swallowing, *swallowedby;
|
||||
bool is_clip_to_hide;
|
||||
|
|
@ -1293,6 +1295,7 @@ static void apply_rule_properties(Client *c, const ConfigWinRule *r) {
|
|||
APPLY_INT_PROP(c, r, isterm);
|
||||
APPLY_INT_PROP(c, r, allow_csd);
|
||||
APPLY_INT_PROP(c, r, force_maximize);
|
||||
APPLY_INT_PROP(c, r, force_tiled_state);
|
||||
APPLY_INT_PROP(c, r, force_tearing);
|
||||
APPLY_INT_PROP(c, r, noswallow);
|
||||
APPLY_INT_PROP(c, r, nofocus);
|
||||
|
|
@ -2395,9 +2398,6 @@ void commitnotify(struct wl_listener *listener, void *data) {
|
|||
setmon(c, NULL, 0,
|
||||
true); /* Make sure to reapply rules in mapnotify() */
|
||||
|
||||
client_set_tiled(c, WLR_EDGE_TOP | WLR_EDGE_BOTTOM | WLR_EDGE_LEFT |
|
||||
WLR_EDGE_RIGHT);
|
||||
|
||||
uint32_t serial = wlr_xdg_surface_schedule_configure(c->surface.xdg);
|
||||
if (serial > 0) {
|
||||
c->configure_serial = serial;
|
||||
|
|
@ -3776,6 +3776,7 @@ void init_client_properties(Client *c) {
|
|||
c->isterm = 0;
|
||||
c->allow_csd = 0;
|
||||
c->force_maximize = 0;
|
||||
c->force_tiled_state = 1;
|
||||
c->force_tearing = 0;
|
||||
c->allow_shortcuts_inhibit = SHORTCUTS_INHIBIT_ENABLE;
|
||||
c->scroller_proportion_single = 0.0f;
|
||||
|
|
@ -3895,8 +3896,10 @@ mapnotify(struct wl_listener *listener, void *data) {
|
|||
|
||||
applyrules(c);
|
||||
|
||||
client_set_tiled(c, WLR_EDGE_TOP | WLR_EDGE_BOTTOM | WLR_EDGE_LEFT |
|
||||
WLR_EDGE_RIGHT);
|
||||
if (!c->isfloating || c->force_tiled_state) {
|
||||
client_set_tiled(c, WLR_EDGE_TOP | WLR_EDGE_BOTTOM | WLR_EDGE_LEFT |
|
||||
WLR_EDGE_RIGHT);
|
||||
}
|
||||
|
||||
// set border color
|
||||
setborder_color(c);
|
||||
|
|
@ -4737,6 +4740,13 @@ setfloating(Client *c, int32_t floating) {
|
|||
if (!c->force_maximize)
|
||||
client_set_maximized(c, false);
|
||||
|
||||
if (!c->isfloating || c->force_tiled_state) {
|
||||
client_set_tiled(c, WLR_EDGE_TOP | WLR_EDGE_BOTTOM | WLR_EDGE_LEFT |
|
||||
WLR_EDGE_RIGHT);
|
||||
} else {
|
||||
client_set_tiled(c, WLR_EDGE_NONE);
|
||||
}
|
||||
|
||||
arrange(c->mon, false, false);
|
||||
setborder_color(c);
|
||||
printstatus();
|
||||
|
|
@ -5477,6 +5487,9 @@ void overview_backup(Client *c) {
|
|||
c->ismaximizescreen = 0;
|
||||
}
|
||||
c->bw = c->isnoborder ? 0 : borderpx;
|
||||
|
||||
client_set_tiled(c, WLR_EDGE_TOP | WLR_EDGE_BOTTOM | WLR_EDGE_LEFT |
|
||||
WLR_EDGE_RIGHT);
|
||||
}
|
||||
|
||||
// overview切回到普通视图还原窗口的状态
|
||||
|
|
@ -5516,6 +5529,10 @@ void overview_restore(Client *c, const Arg *arg) {
|
|||
!c->isfullscreen) { // 如果是在ov模式中创建的窗口,没有bw记录
|
||||
c->bw = c->isnoborder ? 0 : borderpx;
|
||||
}
|
||||
|
||||
if (c->isfloating && !c->force_tiled_state) {
|
||||
client_set_tiled(c, WLR_EDGE_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
void handlecursoractivity(void) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue