~ruther/dwl

1907ee3879d9dbeccad311aa3e2fc36e3a7be1d5 — Devin J. Pohly 5 years ago 97f29ec
introduce rules for monitor configuration

(with dwm, this would already have been done by the X server)
2 files changed, 25 insertions(+), 1 deletions(-)

M config.h
M dwl.c
M config.h => config.h +11 -0
@@ 1,3 1,14 @@
/* monitors */
static const MonitorRule monrules[] = {
	/* name     scale */
	{ "X11-1",    1 },
	{ "eDP-1",    2 },
	{ "HDMI-A-1", 1 },
	/* defaults */
	{ NULL,       1 },
};

/* keyboard */
static const struct xkb_rule_names xkb_rules = {
	.rules = NULL,
	.model = NULL,

M dwl.c => dwl.c +14 -1
@@ 81,6 81,11 @@ typedef struct {
	struct wl_listener frame;
} Monitor;

typedef struct {
	const char *name;
	float scale;
} MonitorRule;

/* Used to move all of the data necessary to render a surface from the top-level
 * frame handler to the per-surface render function. */
struct render_data {


@@ 247,9 252,17 @@ createmon(struct wl_listener *listener, void *data)
		}
	}

	/* Allocates and configures our state for this output */
	/* Allocates and configures monitor state using configured rules */
	Monitor *m = calloc(1, sizeof(*m));
	m->wlr_output = wlr_output;
	int i;
	for (i = 0; i < LENGTH(monrules); i++) {
		if (!monrules[i].name ||
				!strcmp(wlr_output->name, monrules[i].name)) {
			wlr_output_set_scale(wlr_output, monrules[i].scale);
			break;
		}
	}
	/* Sets up a listener for the frame notify event. */
	m->frame.notify = rendermon;
	wl_signal_add(&wlr_output->events.frame, &m->frame);

Do not follow this link