mirror of
https://github.com/DreamMaoMao/maomaowm.git
synced 2026-05-03 06:46:38 -04:00
fix&feat: fixed scratchpads tilling when they shouldnt, create a new canvas_notile windowrule so the user can define if a certain window should be tiled, also added canvas_pan_on_kill to disable the pan to next focused window when focused window is killed
This commit is contained in:
parent
601b8cffcf
commit
179ae4995c
3 changed files with 14 additions and 2 deletions
|
|
@ -95,6 +95,7 @@ typedef struct {
|
||||||
int32_t force_tearing;
|
int32_t force_tearing;
|
||||||
int32_t noswallow;
|
int32_t noswallow;
|
||||||
int32_t noblur;
|
int32_t noblur;
|
||||||
|
int32_t canvas_notile;
|
||||||
float focused_opacity;
|
float focused_opacity;
|
||||||
float unfocused_opacity;
|
float unfocused_opacity;
|
||||||
float scroller_proportion_single;
|
float scroller_proportion_single;
|
||||||
|
|
@ -316,6 +317,7 @@ typedef struct {
|
||||||
uint32_t borderpx;
|
uint32_t borderpx;
|
||||||
int32_t canvas_tiling;
|
int32_t canvas_tiling;
|
||||||
int32_t canvas_tiling_gap;
|
int32_t canvas_tiling_gap;
|
||||||
|
int32_t canvas_pan_on_kill;
|
||||||
float scratchpad_width_ratio;
|
float scratchpad_width_ratio;
|
||||||
float scratchpad_height_ratio;
|
float scratchpad_height_ratio;
|
||||||
float rootcolor[4];
|
float rootcolor[4];
|
||||||
|
|
@ -1719,6 +1721,8 @@ bool parse_option(Config *config, char *key, char *value) {
|
||||||
config->canvas_tiling = atoi(value);
|
config->canvas_tiling = atoi(value);
|
||||||
} else if (strcmp(key, "canvas_tiling_gap") == 0) {
|
} else if (strcmp(key, "canvas_tiling_gap") == 0) {
|
||||||
config->canvas_tiling_gap = atoi(value);
|
config->canvas_tiling_gap = atoi(value);
|
||||||
|
} else if (strcmp(key, "canvas_pan_on_kill") == 0) {
|
||||||
|
config->canvas_pan_on_kill = atoi(value);
|
||||||
} else if (strcmp(key, "rootcolor") == 0) {
|
} else if (strcmp(key, "rootcolor") == 0) {
|
||||||
int64_t color = parse_color(value);
|
int64_t color = parse_color(value);
|
||||||
if (color == -1) {
|
if (color == -1) {
|
||||||
|
|
@ -2091,6 +2095,7 @@ bool parse_option(Config *config, char *key, char *value) {
|
||||||
rule->force_tearing = -1;
|
rule->force_tearing = -1;
|
||||||
rule->noswallow = -1;
|
rule->noswallow = -1;
|
||||||
rule->noblur = -1;
|
rule->noblur = -1;
|
||||||
|
rule->canvas_notile = -1;
|
||||||
rule->nofocus = -1;
|
rule->nofocus = -1;
|
||||||
rule->nofadein = -1;
|
rule->nofadein = -1;
|
||||||
rule->nofadeout = -1;
|
rule->nofadeout = -1;
|
||||||
|
|
@ -2210,6 +2215,8 @@ bool parse_option(Config *config, char *key, char *value) {
|
||||||
rule->noswallow = atoi(val);
|
rule->noswallow = atoi(val);
|
||||||
} else if (strcmp(key, "noblur") == 0) {
|
} else if (strcmp(key, "noblur") == 0) {
|
||||||
rule->noblur = atoi(val);
|
rule->noblur = atoi(val);
|
||||||
|
} else if (strcmp(key, "canvas_notile") == 0) {
|
||||||
|
rule->canvas_notile = atoi(val);
|
||||||
} else if (strcmp(key, "scroller_proportion") == 0) {
|
} else if (strcmp(key, "scroller_proportion") == 0) {
|
||||||
rule->scroller_proportion = atof(val);
|
rule->scroller_proportion = atof(val);
|
||||||
} else if (strcmp(key, "isfullscreen") == 0) {
|
} else if (strcmp(key, "isfullscreen") == 0) {
|
||||||
|
|
@ -3360,6 +3367,7 @@ void set_value_default() {
|
||||||
config.borderpx = 4;
|
config.borderpx = 4;
|
||||||
config.canvas_tiling = 0;
|
config.canvas_tiling = 0;
|
||||||
config.canvas_tiling_gap = 10;
|
config.canvas_tiling_gap = 10;
|
||||||
|
config.canvas_pan_on_kill = 1;
|
||||||
config.overviewgappi = 5;
|
config.overviewgappi = 5;
|
||||||
config.overviewgappo = 30;
|
config.overviewgappo = 30;
|
||||||
config.cursor_hide_timeout = 0;
|
config.cursor_hide_timeout = 0;
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,8 @@ static void canvas_geom_init(Client *c, Monitor *m, uint32_t tag, float pan_x,
|
||||||
|
|
||||||
int tiling = config.canvas_tiling;
|
int tiling = config.canvas_tiling;
|
||||||
|
|
||||||
if (tiling > 0 && !client_is_float_type(c) && !client_get_parent(c)) {
|
if (tiling > 0 && !client_is_float_type(c) && !client_get_parent(c) &&
|
||||||
|
!c->is_in_scratchpad && !c->isnamedscratchpad && !c->canvas_notile) {
|
||||||
Client *focused = NULL, *tmp;
|
Client *focused = NULL, *tmp;
|
||||||
wl_list_for_each(tmp, &fstack, flink) {
|
wl_list_for_each(tmp, &fstack, flink) {
|
||||||
if (tmp == c || tmp->iskilling || tmp->isunglobal)
|
if (tmp == c || tmp->iskilling || tmp->isunglobal)
|
||||||
|
|
|
||||||
|
|
@ -412,6 +412,7 @@ struct Client {
|
||||||
float unfocused_opacity;
|
float unfocused_opacity;
|
||||||
char oldmonname[128];
|
char oldmonname[128];
|
||||||
int32_t noblur;
|
int32_t noblur;
|
||||||
|
int32_t canvas_notile;
|
||||||
double master_mfact_per, master_inner_per, stack_inner_per;
|
double master_mfact_per, master_inner_per, stack_inner_per;
|
||||||
double old_master_mfact_per, old_master_inner_per, old_stack_inner_per;
|
double old_master_mfact_per, old_master_inner_per, old_stack_inner_per;
|
||||||
double old_scroller_pproportion;
|
double old_scroller_pproportion;
|
||||||
|
|
@ -1443,6 +1444,7 @@ static void apply_rule_properties(Client *c, const ConfigWinRule *r) {
|
||||||
APPLY_INT_PROP(c, r, indleinhibit_when_focus);
|
APPLY_INT_PROP(c, r, indleinhibit_when_focus);
|
||||||
APPLY_INT_PROP(c, r, isunglobal);
|
APPLY_INT_PROP(c, r, isunglobal);
|
||||||
APPLY_INT_PROP(c, r, noblur);
|
APPLY_INT_PROP(c, r, noblur);
|
||||||
|
APPLY_INT_PROP(c, r, canvas_notile);
|
||||||
APPLY_INT_PROP(c, r, allow_shortcuts_inhibit);
|
APPLY_INT_PROP(c, r, allow_shortcuts_inhibit);
|
||||||
|
|
||||||
APPLY_FLOAT_PROP(c, r, scroller_proportion);
|
APPLY_FLOAT_PROP(c, r, scroller_proportion);
|
||||||
|
|
@ -4273,6 +4275,7 @@ void init_client_properties(Client *c) {
|
||||||
c->noswallow = 0;
|
c->noswallow = 0;
|
||||||
c->isterm = 0;
|
c->isterm = 0;
|
||||||
c->noblur = 0;
|
c->noblur = 0;
|
||||||
|
c->canvas_notile = 0;
|
||||||
c->tearing_hint = 0;
|
c->tearing_hint = 0;
|
||||||
c->overview_isfullscreenbak = 0;
|
c->overview_isfullscreenbak = 0;
|
||||||
c->overview_ismaximizescreenbak = 0;
|
c->overview_ismaximizescreenbak = 0;
|
||||||
|
|
@ -6965,7 +6968,7 @@ void unmapnotify(struct wl_listener *listener, void *data) {
|
||||||
|
|
||||||
if (nextfocus) {
|
if (nextfocus) {
|
||||||
focusclient(nextfocus, 0);
|
focusclient(nextfocus, 0);
|
||||||
if (selmon && is_canvas_layout(selmon))
|
if (config.canvas_pan_on_kill && selmon && is_canvas_layout(selmon))
|
||||||
canvas_pan_to_client(selmon, nextfocus);
|
canvas_pan_to_client(selmon, nextfocus);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue