[RFC] Screensaver/blanking inhibition
Bryce Harrington
bryce at osg.samsung.com
Thu Nov 19 02:04:36 PST 2015
On Thu, Nov 19, 2015 at 04:20:11AM -0500, Christopher Michael wrote:
> Just some random thoughts inlined below...
>
> On 11/19/2015 03:05 AM, Bryce Harrington wrote:
> >A "screensaver inhibition protocol" is on the set of needed enhancements
> >for Wayland. This should turn off screen blanking and any running
> >screensaver for a period, then re-enabling it later.
> >
> >An obvious use case is giving presentations. Other use cases include
> >games, kiosk, automotive infotainment systems.
> >
> >I'd like to take a shot at defining the protocol for this and
>
> Yay !! :)
>
> >implementing it for Weston. The design I have in mind mostly follows
> >xdg-screensaver and the DBUS screensaver API[1], which provide a
> >desktop-neutral 'inhibit' mechanism to temporarily disable the
> >screensaver/screenblanker on a per-process basis, except that it will be
> >per-surface instead of per-process.
> >
>
> Is the protocol going to be in "wayland" or in "weston" ??
I imagine like other protocols it'll gestate in weston (actually
probably the new wayland-protocols repository), and hopefully eventually
move into the wayland repository. But I'm sketchy on where exactly this
should be placed initially, so am hoping to get some advice there.
> >So, after issuing the inhibit request for a surface, the screensaver
> >(and screenblanking) will be blocked until the surface is destroyed,
> >disabled, or otherwise loses visibility or becomes occluded.
> >
> >In X11, various getter functions are provided for the application to
> >poll inhibition status. For Wayland, instead of getters, the current
> >state is just be pushed to the client when the inhibitor global is
> >bound, and then updates pushed if/when the status changes.
> >
>
> This makes sense, and follows "standard" wayland practice
>
> >A corresponding uninhibit API will be added as well. For example, a
> >movie player may wish to inhibit while a video is playing but uninhibit
> >when it is paused.
> >
> >Inhibition can be specified as display-specific or global. If it is set
> >as display-specific, then only the display(s) the surface is visible on
> >will be inhibited and other displays will powersave normally. If it is
> >global, then it affects all displays. We don't give clients the ability
> >to set inhibition arbitrarily on displays - it will only take effect for
> >display(s) where the surface is actually shown.
> >
> >Questions:
> >
> >a. Which protocol file should this stuff be added to? Weston's
> > desktop-shell.xml (soon to be renamed weston-desktop-shell.xml) has
> > a screensaver interface, but that is only weston-specific, yet we
> > want this functionality to work on multiple compositor
> > implementations.
> >
>
> xdg-screensaver.xml maybe ??
Ah, I was thinking the requests should be added to one of the existing
protocol files, but hadn't thought maybe it should go into its own xml
file. Hmm...
> >b. Do we need to handle inhibition for screensavers (i.e. the interface
> > in desktop-shell.xml) separately from screen blanking. I don't see
> > anyone needing to inhibit one without also wanting to inhibit the
> > other too, so it would be nice to have a single request that covers
> > any sort of screen obscurement.
> >
>
> I think that as long as what you come up with can handle
> screensaver, blanking, (and maybe dimming ??) then it should be
> sufficient.
>
> >c. For X, in addition to inhibition, several other methods are provided
> > to client applications to control aspects of the screensaver and
> > display power savings. E.g. 'Poke' to simulate user activity,
> > deliberately activating the screensaver, or locking, or power
> > savings, etc. Do we need/want any of these for Wayland too?
> >
>
> Perhaps a "request" to activate, lock, etc, etc .. then maybe it's
> up to the compositor to allow or not ?
>
> >d. When giving a presentation, there are several other things one may
> > want to inhibit besides the screensaver, such as notifications,
> > sound effects, background music, etc. The above proposal assumes
> > inhibition of each of these is handled separately some other way,
> > but do we want to consider some more generalized solution?
> >
>
> My initial thought would be a generic "inhibit" request, or perhaps
> an "inhibit all" ... then let the compositor deal/decide.
>
> Cheers,
> Chris
Thanks,
Bryce
More information about the wayland-devel
mailing list