diff --git a/doc/foot.ini.5.scd b/doc/foot.ini.5.scd index 6829b0cb..30c36b51 100644 --- a/doc/foot.ini.5.scd +++ b/doc/foot.ini.5.scd @@ -48,7 +48,14 @@ in this order: *initial-window-size-chars* Initial window width and height in _characters_, on the form _WIDTHxHEIGHT_. Mutually exclusive to - *initial-window-size-pixels*. Default: _not set_. + *initial-window-size-pixels*.' + + Note that if you have a multi-monitor setup, with different + scaling factors, there is a possibility the window size will not + be set correctly. If that is the case, use + *initial-window-size-pixels* instead. + + Default: _not set_. *initial-window-mode* Initial window mode for each newly spawned window: *windowed*, diff --git a/render.c b/render.c index 0d151ab4..2553c190 100644 --- a/render.c +++ b/render.c @@ -2023,7 +2023,7 @@ maybe_resize(struct terminal *term, int width, int height, bool force) if (scale == -1) { /* Haven't 'entered' an output yet? */ - scale = 1; + scale = term->scale; } width *= scale; @@ -2050,18 +2050,19 @@ maybe_resize(struct terminal *term, int width, int height, bool force) assert(!term->window->is_fullscreen); height -= term->conf->csd.title_height; } + + width *= scale; + height *= scale; break; case CONF_SIZE_CELLS: - width = 2 * term->conf->pad_x; - height = 2 * term->conf->pad_y; + width = 2 * term->conf->pad_x * scale; + height = 2 * term->conf->pad_y * scale; + width += term->conf->size.cells.width * term->cell_width; height += term->conf->size.cells.height * term->cell_height; break; } - - width *= scale; - height *= scale; } }