M README.md => README.md +1 -1
@@ 80,7 80,7 @@ number of ways:
- Features not yet implemented:
- xdg-shell popups
- Urgent/attention/focus-request
- - Borders and selected/normal/urgent colors
+ - Normal/selected/urgent border colors
- layer-shell
- Statusbar support (built-in or external)
- Damage tracking
M config.def.h => config.def.h +1 -0
@@ 2,6 2,7 @@
static const int sloppyfocus = 1; /* focus follows mouse */
static const unsigned int borderpx = 1; /* border pixel of windows */
static const float rootcolor[] = {0.3, 0.3, 0.3, 1.0};
+static const float bordercolor[] = {0.5, 0.5, 0.5, 1.0};
/* tagging */
static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
M dwl.c => dwl.c +18 -0
@@ 847,6 847,24 @@ renderclients(Monitor *m, struct timespec *now)
if (!VISIBLEON(c, m))
continue;
+ double ox = c->x, oy = c->y;
+ wlr_output_layout_output_coords(output_layout, m->wlr_output,
+ &ox, &oy);
+ int w = c->xdg_surface->surface->current.width;
+ int h = c->xdg_surface->surface->current.height;
+ struct wlr_box borders[] = {
+ {ox, oy, w + 2 * c->bw, c->bw}, /* top */
+ {ox, oy + c->bw, c->bw, h}, /* left */
+ {ox + c->bw + w, oy + c->bw, c->bw, h}, /* right */
+ {ox, oy + c->bw + h, w + 2 * c->bw, c->bw}, /* bottom */
+ };
+ int i;
+ for (i = 0; i < sizeof(borders) / sizeof(borders[0]); i++) {
+ scalebox(&borders[i], m->wlr_output->scale);
+ wlr_render_rect(drw, &borders[i], bordercolor,
+ m->wlr_output->transform_matrix);
+ }
+
struct render_data rdata = {
.output = m->wlr_output,
.when = now,