From 60f2c0b7de50c7b680730a1a75922acb329ccf25 Mon Sep 17 00:00:00 2001 From: "Devin J. Pohly" Date: Thu, 23 Apr 2020 23:55:29 -0500 Subject: [PATCH] draw window borders Works with scaled/rotated displays too! --- README.md | 2 +- config.def.h | 1 + dwl.c | 18 ++++++++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8ec06b0..a7dfd1f 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/config.def.h b/config.def.h index 57cc6de..d445daa 100644 --- a/config.def.h +++ b/config.def.h @@ -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" }; diff --git a/dwl.c b/dwl.c index 80a3d49..5f24226 100644 --- a/dwl.c +++ b/dwl.c @@ -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,