Build it on Retroarch and you don’t even need X/Wayland. And the menu/launching functionality is done, you’d just be making a theme for it.
Really if someone made a WebKit “core” and a Jellyfin client “core” (which, actually, you might get “for free” with the browser if you can tolerate web bloat on your platform) under libretro it’d be a pretty damn capable set-top-box UI. All the “cores” right now are games/emulators, but they don’t have to be.
This is a very interesting take -- I wonder how it would deal with web browsers? I'm curious because I actually did try to add firefox to my Steam Deck as a "game" and it couldn't deal with multiple windows?
Writing against libretro, I think you’d basically just draw on whatever surface libretro provided you. In retroarch booting on the Lakka distro (for example) this would ultimately draw using Linux Direct Rendering Modules (no X or Wayland). Last I checked that distro could cold-boot into Retorarch ready to accept input, on an RPi2, faster than most modern TVs wake from sleep, which is nice (I wanna say it was under 3 seconds). But you wouldn’t have a windowing system, you’d need something that could draw buttons or menus or something on a surface. Libretro’d also take care of mapping input, but you’d still have to handle it. Not sure if it provides a network interface or if you have to reach outside it for that.
Aside from most emulators of note having been released as a libretro “core”, the sole non-game core I’m aware of is some kind of ffmpeg video player. If things like 3d console emulators and ffmpeg can draw to the surface that libretro provides, doesn’t seem like it should be insurmountable to get something like WebKit rendering content there (I briefly looked into doing this with Firefox years ago but found it’s hellish to embed—chrome’s a little better, but it’s chrome and heavy as hell. WebKit seems to me like the most promising engine for such a project, lighter than the other two and relatively embedding-friendly). Get that working, and the main remaining hurdle would be getting an overlay modal menu or something like that working to allow interaction and drive the engine.
Really if someone made a WebKit “core” and a Jellyfin client “core” (which, actually, you might get “for free” with the browser if you can tolerate web bloat on your platform) under libretro it’d be a pretty damn capable set-top-box UI. All the “cores” right now are games/emulators, but they don’t have to be.