JosefNemec / Playnite

Video game library manager with support for wide range of 3rd party libraries and game emulation support, providing one unified interface for your games.
https://playnite.link
MIT License
9.52k stars 505 forks source link

Read-only mode - Fullscreen #1252

Open admiralzeech opened 5 years ago

admiralzeech commented 5 years ago

Describe the solution you'd like Hi, we'd like to use PlayNite as the front end to a gaming kiosk open to the public and unattended by staff. So we really need to lock it down and prevent people from being able to mess with settings, uninstall games, change steam account, etc. We probably wont give them access to keyboard/mouse, just gamepad.

I've been trying fullscreen mode with gamepad, and as far as I can tell there isn't any way to use gamepad to access any settings or uninstall games, which is good.

The only thing is when you press Select or the PS/XBox button, you get the menu to Go Back To Desktop Mode or Exit Playnite. When 5.00 is released with its new theming system, is this something we can block/remove using themes? Or is there some other way I can remove this button binding / menu?

Are there any other ways that users might be able to break the kiosk with a gamepad?

Thanks!

Screenshots If applicable, add screenshots to help explain requested changes.

JosefNemec commented 5 years ago

This is duplicate to #1102. You might be able to disable some functionality via themes in 5.0, but not everything that could be abused in your scenario. We need to add native support for this "read-only" operation mode.

Also it's Playnite, not PlayNite :)

admiralzeech commented 5 years ago

I read that earlier ticket, and I don't think it's quite the same, which is why I opened a new one.

The earlier ticket needs to lock down desktop mode (and used with keyboard and mouse) which is considerably more difficult.

My ticket is partly a question: If I restrict things to fullscreen mode and gamepad only, what are the ways people can break the kiosk? As far as I can tell, the only functionality available to gamepad is the "desktop / exit" menu. Is this true? So I'd like to ask if there is any way to disable that menu.

Any advice on whether the above is possible with 5.0 would be much appreciated.

JosefNemec commented 5 years ago

5.0 Fullscreen mode is quite different to 4.7, it adds multiple new menus and functionality (like filtering and grouping). You would definitely need to modify the application itself to achieve what your are trying to do, just modifying the theme won't be enough to block everything (like settings menu, or game menus).

admiralzeech commented 5 years ago

Oh, ok. 4.74 has a much simpler fullscreen mode then. Is there any legacy documentation on themes in 4.74? Can I block the desktop/exit menu with a theme in 4.74? Or I'd still need to modify code and build myself?

Are the button mappings hardcoded or are they rebindable in a settings file somewhere? If I could rebind select and home to do nothing, that would also work.

JosefNemec commented 5 years ago

Fullscreen mode doesn't support themes in 4.7 and button mappings are hardcoded. You would have to modify and build your own version of Playnite.

admiralzeech commented 5 years ago

Ok, thanks. One last set of questions.

  1. Your build page specifies VS 2017. Will it open and build on the latest VS 2019 Community Edition? Or do I have to get an older version / non-community version?

  2. Can you please give me a clue where in the code the button mappings are found, or alternatively, the code to spawn the exit / desktop menu in fullscreen mode?

  3. I guess you you're probably not merging any sort of changes in 4.74 at this point, so you're not interested in any changes I make going back into the project, I assume?

Thanks for your time.

admiralzeech commented 5 years ago

Ok, so after downloading the Win10 dev environment VM, getting the source, setting everything up, doing a test build, etc, I do some text searches to look for where to begin. Then I discover that I can just get rid of the menu by commenting out the section "ESCPAE MENU" in Playnite\SkinsFullscreen\Playnite\Playnite.xaml on the release version. I didn't need to modify and build after all.

Can you think of any problems with this approach? Or have I found my solution?

JosefNemec commented 5 years ago
  1. It should work with 2019 as long as you install .NET 4.6.2 SDK.
  2. Check the files and directories starting with Fullscreen mainly the .xaml ones.
  3. I'm no longer merging any changes to 4.x branch.

Changing Playnite.xaml won't disable/change input bindings. Those are set in the fullscreen window xaml.

admiralzeech commented 5 years ago

Commenting out the escape menu section in Playnite.xaml doesnt change the input binding, but it seems to eliminate that menu entirely. Which seems to serve my purpose just fine in preventing players from exiting Playnite or accessing the settings (via controller). I will do more testing...

baldsealion commented 2 years ago

Can we get an update on this? As a Patron, I'd like to see this on the Roadmap, is it possible? It seems these have been lumped together and super-low priority, but would be really nice for people with friends that play on their systems or kids.

JosefNemec commented 2 years ago

Per my last Patreon post, there won't be any feature priority voting for Playnite 11. You will be able to vote in future for Playnite 12 features, if this get enough votes, it will get implemented in that version.