Screensavers on Roku add a touch of personalization to the user experience, turning idle moments into visually engaging displays. In this guide, we’ll explore the world of Roku screensavers, understand their limitations, and walk through the process of creating our screensaver.
Understanding Roku Screensavers
Roku screensavers are standalone apps invoked when the device is idle. Unlike streaming channels, screensavers do not accept user input and are automatically triggered based on a user-specified idle time. When a screensaver is active, any user input returns them to the streaming channel.
Screensavers operate in a separate BrightScript context, distinct from streaming channels. This ensures a clean execution environment and prevents data sharing between screensavers and channels.
Prohibited Screensaver Features
To maintain a streamlined experience, certain features are restricted in screensavers:
- DynamicComponent libraries: Screensavers cannot include dynamic components.
- Ad insertion: Monetization through ads is not allowed in screensavers.
- In-app purchases: Screensavers cannot implement in-app purchasing functionality.
- Deep links: Deep linking from screensavers is prohibited.
- User-initiated interactivity: Screensavers should not respond to user input.
Discovery and Settings
Screensavers are discovered in the Roku UI under Settings > Theme > Screensavers. Purchased screensavers are not displayed on the Roku Home screen. The RunScreenSaverSettings()
function allows developers to implement customizable settings for their screensavers.
Important: A screensaver must include a manifest entry named
screensaver_title
with the screensaver's title. This entry is exclusive to screensavers and should not be used for other channels.
Usable Components
Screensavers typically use roScreen
or roImageCanvas
to display visuals. Components that accept user input, such as roAudioPlayer
and roChannelStore
, are not supported in screensavers.
SceneGraph Screensavers
While roScreen
and roImageCanvas
are common, SceneGraph can also be used for screensaver development. However, user input and video playback in SceneGraph screensavers are not supported.
See the screensaver sample channels for examples.