I have been thinking of ways to solve the issue of getting streaming services to work well with Plasma Bigscreen, and think a strong start would be to figure out a system that allows you to navigate traditional websites on a controller.
I have been working on a prototype for this in the form of a browser extension, and see a lot of potential in binding controller buttons to utilize tabbing navigation – Dpad-right simulates tab, Dpad-left simulates shift+tab, etc.
I believe that this concept could go as far as creating a VacuumTube-like app for all streaming services, but I’m facing difficulties with developing a clean implementation.
I’ll see if I can figure this out from the way VacuumTube implements controllers (which I probably should’ve thought of trying before now ). If I can’t, does anybody have ideas for getting a standard “this signal from this controller means this output” with any controller?
The end goal of what I’m brainstorming is a browser fork/extension that has:
Full support for navigating websites with controllers through tab-navigation
Scroll-wheel with one joystick, mouse control with the other
On-screen keyboard, which could be a browser extension
Cross-platform support to maximize interest in the project
I’ve made a prototype based on VacuumTube that seems to work well enough. I’m not sure if the best option will be a browser extension or electron yet because they seem to have very similar capabilities for what I’m doing.
I really like this idea! Is there a way I can test this?
I’m no developer, but I know my way around a command line. I’m happy to report bugs or do whatever testing needs doing. If the project isn’t to that point yet, I totally get it. I’ll just watch the progress with great interest.
This never got into a decent state unfortunately (it was one of the first projects I ever attempted), but I have been working on controller-related projects since. While I likely won’t continue this, I can offer some ideas based on my current much-better understanding of programming on how this could work. In case someone else wants to take on the challenge, I’ll give some context for how I would approach this if I did try again:
Unless it is simply not possible to do this with a chrome extension, that should be how it is done to make sure the app/project stays secure. I would also expect less problems with DRM while using a browser directly.
SDL3 perfectly solves the issue with getting full compatibility with any controller. It even has a page for emscripten, so I would spend a lot of time trying to get that working in an extension.
A project like this could either try to get all websites to work decently well, or focus on individual websites (such as Netflix) to try and get those to work. Either approach could work well, I would look into if it’s viable to trick a website into displaying its official console interface (like Vacuumtube) or if it would be possible to re-implement the content sections of the site around a new shell.
I have no clue if that can be done, but my initial idea would be something like: getElementById(“the video player”), “the menu buttons”, etc, then remove everything else, and place those elements into a new custom-made interface designed for controllers.
I would like to see something like this happen, but I’m currently spending my time on other projects (like a controller-supported System Update app for Bazzite) and will likely not get back to this one.