Interface screenshots
Rendered by pelagia-capture (software rasterizer, 1920x1080, no display) by driving the
application with real gamepad inputs against the fake Jellyfin server
(tools/fake_jellyfin_server.py --catalog demo, then --catalog tracks for the tracks), once
per interface language: en/ (used by README.md) and fr/ (used by README.fr.md), same file names.
Regeneration: tools/update_screenshots.sh.
The same walkthrough runs in ctest (test_ui_capture), in both languages: a screen that is not reached
fails the test.
| File | Screen |
|---|---|
01-sign-in.png |
Sign-in: pre-filled address (--server), user name, masked password |
02-virtual-keyboard.png |
Virtual keyboard driven by the gamepad (QWERTY in English, AZERTY in French; typing the user name) |
03-home.png |
Home: "Continue watching" (episode with its series poster), libraries, latest additions |
04-movie-grid.png |
Movie grid, sorted ignoring U+200E and accents; titles with ‐ ’ ® « » ° € ™; movie without a poster and poster answering 404 (placeholder frames), watched movie |
04b-movie-grid-scrolled.png |
Grid after scrolling one row |
05-movie-page.png |
Detail page: "Resume at …" / "Play from the beginning", progress, overview |
06-series-episodes.png |
Series: seasons, episodes of season 2, playback in progress |
07-episode-page.png |
Episode detail page |
08-options.png |
Options menu: refresh, language, sign out, about, quit |
08b-about.png |
About: subtitle "unofficial Jellyfin client for PS5", license, trademark notice |
08c-language.png |
Language menu: automatic (system language), English, Français |
09-player-loading.png |
Player: opening the stream (dedicated thread, cancellable) |
10-player.png |
Playback with the banner: title, time, progress bar |
11-player-seeking.png |
Seek in progress ("Seeking to 0:52…") |
12-player-paused.png |
Pause |
13-page-after-playback.png |
Back on the detail page: resume position re-read after the stop report |
14-home-after-playback.png |
"Continue watching" reordered, the focus follows the movie |
Audio tracks and subtitles (tracks catalog, --scenario tracks of pelagia-capture):
| File | Screen |
|---|---|
15-movie-tracks.png |
Detail page of a subbed movie: tracks preselected from the profile (audio "English (original)", forced French subtitles), "Audio" and "Subtitles" rows |
16-audio-menu.png |
List of audio tracks, current track checked |
17-subtitle-menu.png |
List of subtitles: "None", text (rendered by the client), forced, ASS, image "burned in" by the server |
18-tracks-burned-in.png |
Real case "1917": the profile gives a PGS, burned in by the server |
19-player-tracks.png |
Player: the banner shows the current audio and subtitles |
24-player-subtitles.png |
Text subtitles rendered by the client over the video (SRT cue of the forced track, downloaded separately) |
20-player-options.png |
Player: Options menu (Audio, Subtitles) |
21-player-audio-list.png |
Player: list of audio tracks, current track checked |
22-player-track-change.png |
"Changing track at …": stream reopened at the current position |
23-page-after-track-change.png |
Back on the detail page: the server remembered the reported tracks (French audio) |
The video is the fake server's test pattern: its luminance follows time (16 + 5 × T, which overflows after 44 s), hence a bright picture at 0:42 and a dark one at 0:52. Software rendering reproduces the layout faithfully; at the pixel level, smoothing may differ slightly from the GPU's (SDL).