diff --git a/config.conf b/config.conf index ce234a1..883ed14 100644 --- a/config.conf +++ b/config.conf @@ -44,6 +44,7 @@ overviewgappi=5 overviewgappo=30 # Misc +no_border_when_single=0 axis_bind_apply_timeout=100 focus_on_activate=1 bypass_surface_visibility=0 diff --git a/src/config/parse_config.h b/src/config/parse_config.h index a514651..2ce8d49 100644 --- a/src/config/parse_config.h +++ b/src/config/parse_config.h @@ -119,6 +119,7 @@ typedef struct { int scroller_prefer_center; int focus_cross_monitor; int focus_cross_tag; + int no_border_when_single; int snap_distance; int enable_floating_snap; unsigned int swipe_min_threshold; @@ -726,6 +727,8 @@ void parse_config_line(Config *config, const char *line) { config->focus_cross_monitor = atoi(value); } else if (strcmp(key, "focus_cross_tag") == 0) { config->focus_cross_tag = atoi(value); + } else if (strcmp(key, "no_border_when_single") == 0) { + config->no_border_when_single= atoi(value); } else if (strcmp(key, "snap_distance") == 0) { config->snap_distance = atoi(value); } else if (strcmp(key, "enable_floating_snap") == 0) { @@ -1673,6 +1676,7 @@ void override_config(void) { scroller_focus_center = config.scroller_focus_center; focus_cross_monitor = config.focus_cross_monitor; focus_cross_tag = config.focus_cross_tag; + no_border_when_single= config.no_border_when_single; snap_distance = config.snap_distance; enable_floating_snap = config.enable_floating_snap; swipe_min_threshold = config.swipe_min_threshold; @@ -1771,6 +1775,7 @@ void set_value_default() { config.scroller_prefer_center = scroller_prefer_center; config.focus_cross_monitor = focus_cross_monitor; config.focus_cross_tag = focus_cross_tag; + config.no_border_when_single= no_border_when_single; config.snap_distance = snap_distance; config.enable_floating_snap = enable_floating_snap; config.swipe_min_threshold = swipe_min_threshold; diff --git a/src/config/preset_config.h b/src/config/preset_config.h index d167f03..29cbbc2 100644 --- a/src/config/preset_config.h +++ b/src/config/preset_config.h @@ -53,6 +53,7 @@ int scroller_focus_center = 0; int scroller_prefer_center = 0; int focus_cross_monitor = 0; int focus_cross_tag = 0; +int no_border_when_single = 0; int snap_distance = 30; int enable_floating_snap = 0; unsigned int cursor_size = 24; diff --git a/src/maomao.c b/src/maomao.c index 74178cc..edddfd8 100644 --- a/src/maomao.c +++ b/src/maomao.c @@ -1048,6 +1048,9 @@ void set_rect_size(struct wlr_scene_rect *rect, int width, int height) { void apply_border(Client *c, struct wlr_box clip_box, int offsetx, int offsety) { int i; + int num = 0; + Client *ec; + if (c->iskilling || !client_surface(c)->mapped) return; @@ -1078,6 +1081,24 @@ void apply_border(Client *c, struct wlr_box clip_box, int offsetx, } } + if(no_border_when_single) { + wl_list_for_each(ec, &clients, link) { + if (c->iskilling || !client_surface(c)->mapped) + continue; + + if (ec != c && ec->tags & c->mon->tagset[c->mon->seltags]) + num++; + } + + if (num == 0) { + set_rect_size(c->border[0], 0, 0); + set_rect_size(c->border[1], 0, 0); + set_rect_size(c->border[2], 0, 0); + set_rect_size(c->border[3], 0, 0); + return; + } + } + wlr_scene_node_set_position(&c->scene_surface->node, c->bw, c->bw); set_rect_size(c->border[0], clip_box.width, c->bw); set_rect_size(c->border[1], clip_box.width, c->bw);