[IDEA] Support several fullscreen behaviors - potentially rename 'fullscreen'

Coroutines coroutines at gmail.com
Tue Dec 22 04:43:01 PST 2015


# Summary

Wayland compositors like weston have the freedom to display
'fullscreen'-selected content in 3 ways (that I can think of):

- full-window
- fullscreen
- multi-display fullscreen

# The Problem

Something that I've always wanted to have control over is how an
application is shown in in its fullscreen state.  Typically when I'm
watching a video on youtube in a web browser I want the player to
instead fill the existing window dimensions and not the screen.  In
this example I am looking for full-window behavior.  I can of course
propose this to Google's devs, but I'd have to do this for every app
where I want full-window.  I'd much rather have a wayland compositor
that gives me this ability to 'abuse' the fullscreen state.

# What I propose:

The compositor has the freedom with xdg-shell to "lie" to the client
about the geometry of the screen in the configure event, when a
surface sets itself as fullscreen.

In this way, the compositor can show the surface in 3 modes that give
the user more choice/convenience:

- fullscreen (traditional)
- full-window (same size, placed at the same x, y)
- multi-display "fullscreen" (think Far Cry playing across 3 displays)

I also imagined the compositor would have options for dimming the
areas between fullscreen clients (think theater-mode).  Or immediately
turn off all other displays ~

# Why abuse fullscreen?

1) It seems perfectly legal per xdg-shell with no bad side-effects.

2) I was thinking about something said over and over in #wayland, that
xdg-shell is not about providing mechanisms/primitive operations like
X.  It's about providing requests for clients to convey intent.  In my
opinion, the intent of fullscreen behavior is to enlarge and focus
content.  To display specific content from a window in a way that the
user will not be distracted by other apps and activities they're
doing.

If I want to convey "intent" I'm bringing *select* content to the
forefront of what the user has open on screen.

In my opinion, the user should be the one choosing how large this
selected content appears and where - and if other clients are still
visible.

I avoided calling this 'focused' content, if not 'fullscreen'.  I was
thinking maybe it could be called a 'forefront' or 'foreground' state
- or even just 'closer'.  From a protocol perspective, if wayland
compositors were to support this greater level of control over the
fullscreen state, I think it should be renamed in the future.

Anyway, I just wanted to write about this and put the idea in the
heads of people shaping our future desktop experience on Linux.  If
you work on mutter or kde plasma, or shape xdg-shell's mechanics...
This is something we can't do on Mac/Windows (across all clients), and
imo it'd be pretty cool. :>  I personally wish I were prompted by the
compositor to confirm which fullscreen mode I want a client to conform
to, but others might want a default of the 3 modes ~

Thanks for reading ~

Disclaimer?: I don't expect anyone to do anything for me.  I think I
come up with original ideas so I'm simply trying to share it.


More information about the wayland-devel mailing list