diff --git a/config.def.h b/config.def.h index db0babc..9c570f9 100644 --- a/config.def.h +++ b/config.def.h @@ -42,7 +42,7 @@ static const MonitorRule monrules[] = { { "eDP-1", 0.5, 1, 2, &layouts[0], WL_OUTPUT_TRANSFORM_NORMAL, -1, -1 }, */ /* defaults */ - { NULL, 0.55, 1, 1, &layouts[0], WL_OUTPUT_TRANSFORM_NORMAL, -1, -1 }, + { NULL, 0.55, 1, -1, &layouts[0], WL_OUTPUT_TRANSFORM_NORMAL, -1, -1 }, }; /* keyboard */ diff --git a/dwl.c b/dwl.c index bbb27e4..8afed72 100644 --- a/dwl.c +++ b/dwl.c @@ -877,7 +877,20 @@ createmon(struct wl_listener *listener, void *data) if (!r->name || strstr(wlr_output->name, r->name)) { m->mfact = r->mfact; m->nmaster = r->nmaster; - wlr_output_state_set_scale(&state, r->scale); + if (r->scale > 0) + wlr_output_state_set_scale(&state, r->scale); + else { + struct wlr_output_mode *native = wlr_output_preferred_mode(wlr_output); + float ppi = (native && native->height >= 1080 && wlr_output->phys_width > 0) ? native->width / (wlr_output->phys_width / 25.4) : 96; + if (ppi >= 96 * 2) + wlr_output_state_set_scale(&state, 2); + else if (ppi >= 96 * 1.5) + wlr_output_state_set_scale(&state, 1.5); + else if (ppi >= 96 * 1.25) + wlr_output_state_set_scale(&state, 1.25); + else + wlr_output_state_set_scale(&state, 1); + } m->lt[0] = m->lt[1] = r->lt; wlr_output_state_set_transform(&state, r->rr); m->m.x = r->x;