With two screens of different resolutions, the ceratopsian Plymouth theme
lays everything out for the larger screen. On the smaller screen, the
"debian" logo is missing and the frill in the bottom-right corner is cut
off.
My setup: the laptop panel is 1920x1200 and the external monitor is
2560x1440, each on its own AMD GPU. On the external monitor the splash
looks right. On the laptop panel there's no logo and the frill is cropped
on the right and bottom. With the external monitor unplugged, the laptop
panel shows the full layout with the logo.
I think this comes from how the theme sizes things. ceratopsian.script
takes its dimensions from Window.GetWidth() and Window.GetHeight() with no
screen index (window_max at line 133, and calcfmt() at lines 144-180). In
Plymouth's script plugin, those calls return the largest width and height
across all displays. Each display is then centered on that canvas
(update_displays() in src/plugins/splash/script/script-lib-sprite.c). So a
1920x1200 panel shows the middle 1920x1200 of a 2560x1440 layout:
- the logo starts at x = 26 px (1% of 2560) and is at most 256 px wide, but
the panel starts at x = 320, so the logo is entirely off-screen
- the frill, anchored to the 2560x1440 bottom-right corner, runs 320 px
past the right edge and 120 px past the bottom
The password prompt is centered, so it still shows on both screens.
A fix could size and place the logo and frill per screen, using
Window.GetWidth(i), Window.GetHeight(i), Window.GetX(i) and Window.GetY(i)
for each display. Another option is to lay everything out for the smallest
screen. The comment at line 120 shows the theme already tries this for the
text lines.
Software: Debian forky (testing), plymouth 26.134.222-1, kernel
7.2.11+deb14-amd64.
I have photos of both screens at the prompt (both connected, and laptop
only) and can send them if useful.
Thanadis Charoenrujijin