cnapolit / screensaver Goto Github PK
View Code? Open in Web Editor NEWExtension for Playnite to dynamically display game content as a screen saver
License: MIT License
Extension for Playnite to dynamically display game content as a screen saver
License: MIT License
The idea of each slide focusing on a series is interesting and might be worth exploring.
The ScreenSaver transitions only after a set interval. Another possibility would be to transition when video/audio has reached its end.
Rounding the corners would match the clock and provide a cleaner experience.
Similar to previewing individual games, groups should be previewable without changing the active group or leaving the polling service running after the fact if it should not be.
The ability to view the ScreenSaver as a slideshow (arrow keys to change games, only closes on enter) could help with some niche circumstance like deciding what game to play or reviewing media for bad elements.
Dependencies: [ #30 ]
To enhance the start screen like nature of this plugin, displaying the weather either via text or icon alongside the time would certainly be interesting.
No good reason to use it when perfectly valid dll imports exist. Will definitely cause headaches in the future if left around.
ScreenSaver currently only displays on the primary monitor.
Users are not necessarily working out of that monitor, so allowing them to specify which monitor to display from would enable further custom experiences for atypical setups.
A lot of videos start off with logos, so by the time gameplay is reached, the ScreenSaver has already transitioned to the next game.
An option to specify to starting point in videos, either by percentage or seconds, would help mitigate this.
Just thought Id let you know you set the wrong RequiredApiVersion in your manifest file so currently no one can install from the Playnite Add-ons menu. You have it set to 9.0.0 it should be set to I believe its 6.2.0 for P9 or 6.3.0 for P10.
Currently, the ScreenSaver games are selected from all games.
It would be better if groups could be created based on selected games, saved, and selected as the pool of games to display.
The ScreenSaver plugin by the time this issue is started will only create groups using simple right click menus.
A refined dedicated interface to create groups would streamline the user experience.
This interface should support:
The same icon is pasted through the menus of the plugin. It would be more informative if each item had a unique icon.
A hotkey trigger for supported inputs to start the ScreenSaver would increase usability.
A Description of the game displayed would help users understand unfamiliar titles in their library.
Power users may not like the default appearance or find the exposed properties in the settings lacking.
Allowing these users to define their own WPF for the ScreenSaver would be the best option for customizability.
Dependencies: [ #41 ]
When interacting with the volume slider in the settings, the label does not update based on the sliders position.
In preparation for custom screen savers, as much logic should be moved into the WPF file as possible. This will give more control to custom versions going forward.
Dependencies: [ #42 ]
Currently, previewing only works for a single game. Previewing multiple games at a time would improve functionality.
Dependencies [ #45 ]
Playnite Sounds allows for multiple music file, but ScreenSaver grabs any of these files with no particular intent.
ScreenSaver should support randomly selecting one of the files and always selecting the same file, with both paths controlled via a toggle inside the settings.
Every time this screen saver displays, it queries for a new list of games every time. This can lead to unwanted repetition, since we fail to iterate through the entire list of games each time.
If we cache the list of viewed games, we can filter them out on next display without needing to worry about displaying invalid titles if we cached the remaining games instead.
The cache should be cleared upon every completed iteration of all games and only be used if the active group has not changed.
The ScreenSaver uses the default logo in menus. A custom logo would help distinguish the plugin.
One potential logo is some sort of film reel icon.
Currently, the ScreenSaver is designed to display from a single monitor.
ScreenSaver should support displaying across multiple windows.
Supporting different games per monitor is ideal, but optional.
A separate issue should be created if this cannot be easily achieved in this one.
Some users may desire the video to be on full display instead of the background, so supporting an alternative window with this behavior would improve customizability.
Dependencies: [ #30 ]
To improve customizability, the ScreenSaver should support the option to toggle the video between the full & micro trailer.
ScreenSaver can sometimes show during gameplay when the setting to disable is toggled on.
This is most likely due to one of the various application events triggering the poll to start up and the corresponding closing event failing to trigger while also returning to the game.
An easy fix will be to never poll if we think a game is playing rather than only polling when Playnite is the active application.
In the future, it would be ideal to interact with PlayState to resume polling when a game is suspended.
Viewers may be curious about what music is playing. By observing the file metadata (or just the file name without the extension), the plugin could satisfy their curiosity.
Since I have Playnite opened on my third monitor (TV) at all time, the option to have some kind of slide show showing on there while I'm not playing is really great to avoid burn-in. However, since I am still using the PC in the meantime, the screensaver will never actually turn on.
Having an option to have the Screensaver trigger when there's x amount of time of inactivity in Playnite specifically (and not on the PC at large) and then requiring for the user to click on the window or some other kind of input to exit the Screen Saver when they want to use Playnite to launch a game would make it work perfectly with this use case.
Some users may want to see the achievements they've earned over the total achievements for each game, on top of some select achievements they have acquired.
This may be possible through the achievement plugin.
This is just to investigate if possible. A follow-up issue should be created to properly implement.
Exposing particular UI elements in settings would allow easy customization for users.
An interface allowing the creation & editing of custom WPF files would enable all users to customize the appearance to their liking without a background in WPF. The Interface should allow the scaling, movement, addition, and deletion of UI elements.
The ability to set the pool of games to display based on time of day.
The main use case would be to match lighting/mood of the hour, as an example:
orange titles for sunrise, blue titles for midday, grey titles for dusk, black titles for night.
Dependencies [ #44 ]
The ScreenSaver by default does not filter out hidden games. It should match the main app's behavior and ignore these titles instead.
To improve stability, ScreenSaver should have test suites ensuring intended functionality.
Video/audio content is currently unhandled when it completes. It should instead loop.
Documentation within the codebase is very minimal. Adding descriptions for interfaces, classes, and methods stating intent will improve understandability of the application.
The current implementation of ScreenSaver is a bit hacky, using three windows: 2 for smooth transitions, 1 for a black background elements.
There is clear room here for consolidation into a single window.
The default behavior to sort the given pool of games is random.
However, it would be better if the user could specify how games are sorted to grant greater control to the user,
Description:
Changing the selected monitor in the addon settings has no bearing on the location of the screensaver.
Steps To Reproduce:
Groups by the point of this issue are statically defined.
When Playnite 10.x is released, it will expose the current filter to plugins.
ScreenSaver could leverage this to easily support dynamic groups without any need for complex UI elements,
When curved corners are enabled for videos in the screen saver window, the background color slightly clips through (most noticeable with colors outside of black and white).
This results from the background color of the border responsible for the curve feature bleeding through. Normally, setting the color to transparent would fix this, but this makes the entire video invisible.
Best solution would be to find another method of curving the corners.
Even though Playnite does not currently support DirectInput, there is intent to support it in the future and it would be nice to stay ahead of the curve.
It would also benefit users who decide to enable ScreenSaver in game who happen to be using at least one DirectInput device.
Some directInput devices include PS4/5 & Switch Controllers.
Users may only want the screen saver to open and/or close in response to certain input events.
Allowing users to toggle controller, mouse, and keyboard inputs would enhance usability.
Currently, logos just kind of hover in place when the video is not render. This is fine if the video is just missing, as it keeps the logo in a consistent location. If videos are disabled, then it gives an awkward default appearance.
Playnite Sounds now stores its files inside the extrametadata folder. This plugin needs to look there for music files to continue support.
Group specific settings would enable versatile screen savers only requiring selecting a new group to drastically change behavior.
For example, a group focused on music would want to transition upon the music ending and guarantee all entries have music files (or at least audio), and be noticeably louder.
Another general group may want a set interval instead and not care about the audio state at all.
Dependencies: [ #4 ]
Since the ScreenSaver occupies the entire monitor, optionally showing the current date & time would refine the user experience.
Playnite exposes the plugins to one another via a list. It should be possible to find Sounds, cast it to a matching interface (or some similar process), and invoke a method to mute/unmute the plugin.
Added games act as a whitelist for dynamic groups, but the opposite does not exist.
Dependencies: [ #4 ]
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.