diff options
| author | Devin J. Pohly <djpohly@gmail.com> | 2020-04-21 21:53:25 -0500 | 
|---|---|---|
| committer | Devin J. Pohly <djpohly@gmail.com> | 2020-04-21 21:53:34 -0500 | 
| commit | 1907ee3879d9dbeccad311aa3e2fc36e3a7be1d5 (patch) | |
| tree | a2dfc0b1c0a950dd97ec559eeffd2f7c31381a0d | |
| parent | 97f29ec67f0937dd34343fd50ff5b4fa6840f5f3 (diff) | |
introduce rules for monitor configuration
(with dwm, this would already have been done by the X server)
| -rw-r--r-- | config.h | 11 | ||||
| -rw-r--r-- | dwl.c | 15 | 
2 files changed, 25 insertions, 1 deletions
| @@ -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, @@ -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); | 
