diff --git a/src/desktop.c b/src/desktop.c index b622e8d4..6b130f28 100644 --- a/src/desktop.c +++ b/src/desktop.c @@ -246,6 +246,7 @@ desktop_t *make_desktop(const char *name, uint32_t id) d->user_layout = LAYOUT_TILED; d->layout = single_monocle ? LAYOUT_MONOCLE : LAYOUT_TILED; d->padding = (padding_t) PADDING; + d->monocle_padding = (padding_t) MONOCLE_PADDING; d->window_gap = window_gap; d->border_width = border_width; return d; diff --git a/src/messages.c b/src/messages.c index c3a42014..955da104 100644 --- a/src/messages.c +++ b/src/messages.c @@ -1558,24 +1558,35 @@ void set_setting(coordinates_t loc, char *name, char *value, FILE *rsp) fail(rsp, "config: %s: Invalid value: '%s'.\n", name, value); return; } - SET_DEF_MON_DESK(padding.left, lp) -#undef SET_DEF_MON_DESK } else if (streq("top_monocle_padding", name)) { - if (sscanf(value, "%i", &monocle_padding.top) != 1) { + int tp; + if (sscanf(value, "%i", &tp) != 1) { fail(rsp, "config: %s: Invalid value: '%s'.\n", name, value); + return; } + SET_DEF_MON_DESK(monocle_padding.top, tp) } else if (streq("right_monocle_padding", name)) { - if (sscanf(value, "%i", &monocle_padding.right) != 1) { + int rp; + if (sscanf(value, "%i", &rp) != 1) { fail(rsp, "config: %s: Invalid value: '%s'.\n", name, value); + return; } + SET_DEF_MON_DESK(monocle_padding.right, rp) } else if (streq("bottom_monocle_padding", name)) { - if (sscanf(value, "%i", &monocle_padding.bottom) != 1) { + int bp; + if (sscanf(value, "%i", &bp) != 1) { fail(rsp, "config: %s: Invalid value: '%s'.\n", name, value); + return; } + SET_DEF_MON_DESK(monocle_padding.bottom, bp) } else if (streq("left_monocle_padding", name)) { - if (sscanf(value, "%i", &monocle_padding.left) != 1) { + int lp; + if (sscanf(value, "%i", &lp) != 1) { fail(rsp, "config: %s: Invalid value: '%s'.\n", name, value); + return; } + SET_DEF_MON_DESK(monocle_padding.left, lp) +#undef SET_DEF_MON_DESK #define SET_STR(s) \ } else if (streq(#s, name)) { \ if (snprintf(s, sizeof(s), "%s", value) < 0) { \ @@ -1813,15 +1824,15 @@ void get_setting(coordinates_t loc, char *name, FILE* rsp) GET_DEF_MON_DESK(padding.bottom) } else if (streq("left_padding", name)) { GET_DEF_MON_DESK(padding.left) -#undef GET_DEF_MON_DESK } else if (streq("top_monocle_padding", name)) { - fprintf(rsp, "%i", monocle_padding.top); + GET_DEF_MON_DESK(monocle_padding.top) } else if (streq("right_monocle_padding", name)) { - fprintf(rsp, "%i", monocle_padding.right); + GET_DEF_MON_DESK(monocle_padding.right) } else if (streq("bottom_monocle_padding", name)) { - fprintf(rsp, "%i", monocle_padding.bottom); + GET_DEF_MON_DESK(monocle_padding.bottom) } else if (streq("left_monocle_padding", name)) { - fprintf(rsp, "%i", monocle_padding.left); + GET_DEF_MON_DESK(monocle_padding.left) +#undef GET_DEF_MON_DESK } else if (streq("external_rules_command", name)) { fprintf(rsp, "%s", external_rules_command); } else if (streq("status_prefix", name)) { diff --git a/src/monitor.c b/src/monitor.c index 4b248bc2..96112915 100644 --- a/src/monitor.c +++ b/src/monitor.c @@ -48,6 +48,7 @@ monitor_t *make_monitor(const char *name, xcb_rectangle_t *rect, uint32_t id) m->randr_id = XCB_NONE; snprintf(m->name, sizeof(m->name), "%s", name == NULL ? DEFAULT_MON_NAME : name); m->padding = padding; + m->monocle_padding = monocle_padding; m->border_width = border_width; m->window_gap = window_gap; m->root = XCB_NONE; diff --git a/src/tree.c b/src/tree.c index db8208d8..04f00e8b 100644 --- a/src/tree.c +++ b/src/tree.c @@ -54,10 +54,10 @@ void arrange(monitor_t *m, desktop_t *d) rect.height -= m->padding.top + d->padding.top + d->padding.bottom + m->padding.bottom; if (d->layout == LAYOUT_MONOCLE) { - rect.x += monocle_padding.left; - rect.y += monocle_padding.top; - rect.width -= monocle_padding.left + monocle_padding.right; - rect.height -= monocle_padding.top + monocle_padding.bottom; + rect.x += m->monocle_padding.left + d->monocle_padding.left; + rect.y += m->monocle_padding.top + d->monocle_padding.top; + rect.width -= m->monocle_padding.left + d->monocle_padding.left + d->monocle_padding.right + m->monocle_padding.right; + rect.height -= m->monocle_padding.top + d->monocle_padding.top + d->monocle_padding.bottom + m->monocle_padding.bottom; } if (!gapless_monocle || d->layout != LAYOUT_MONOCLE) { diff --git a/src/types.h b/src/types.h index c11b591c..f26a94a6 100644 --- a/src/types.h +++ b/src/types.h @@ -281,6 +281,7 @@ struct desktop_t { desktop_t *prev; desktop_t *next; padding_t padding; + padding_t monocle_padding; int window_gap; unsigned int border_width; }; @@ -293,6 +294,7 @@ struct monitor_t { xcb_window_t root; bool wired; padding_t padding; + padding_t monocle_padding; unsigned int sticky_count; int window_gap; unsigned int border_width;