~ruther/dwl

60f2c0b7de50c7b680730a1a75922acb329ccf25 — Devin J. Pohly 5 years ago 6254bcd
draw window borders

Works with scaled/rotated displays too!
3 files changed, 20 insertions(+), 1 deletions(-)

M README.md
M config.def.h
M dwl.c
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,

Do not follow this link