diff options
author | Devin J. Pohly <djpohly@gmail.com> | 2020-04-23 23:55:29 -0500 |
---|---|---|
committer | Devin J. Pohly <djpohly@gmail.com> | 2020-04-23 23:55:29 -0500 |
commit | 60f2c0b7de50c7b680730a1a75922acb329ccf25 (patch) | |
tree | aab36a3b86bd1e91186bb4aef1ae710d390f97e6 | |
parent | 6254bcd033d330268077ec5683c5bee4f29a720f (diff) |
draw window borders
Works with scaled/rotated displays too!
-rw-r--r-- | README.md | 2 | ||||
-rw-r--r-- | config.def.h | 1 | ||||
-rw-r--r-- | dwl.c | 18 |
3 files changed, 20 insertions, 1 deletions
@@ -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" }; @@ -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, |