<div>Are you thinking of developing a new phone OS on Wayland/Weston? I seem to remember Tizen folks wanted to do something similar. Not sure if it's still in the works.</div>
<div> </div>
<div>Nick<br><br></div>
<div class="gmail_quote">On Mon, Feb 11, 2013 at 8:52 AM, Jason Ekstrand <span dir="ltr"><<a href="mailto:jason@jlekstrand.net" target="_blank">jason@jlekstrand.net</a>></span> wrote:<br>
<blockquote style="BORDER-LEFT:#ccc 1px solid;MARGIN:0px 0px 0px 0.8ex;PADDING-LEFT:1ex" class="gmail_quote">
<div class="HOEnZb">
<div class="h5">On Mon, Feb 11, 2013 at 4:06 AM, Pekka Paalanen <<a href="mailto:ppaalanen@gmail.com">ppaalanen@gmail.com</a>> wrote:<br>> On Sat, 9 Feb 2013 12:20:57 -0600<br>> Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>> wrote:<br>
><br>>> Wayland Devs,<br>>> This is a brainstorming e-mail concerning trying to develop some sort<br>>> of core shell protocol.  I will shortly begin work on developing a<br>>> touch-based compositor for phones and tablets and there have been<br>
>> multiple discussions on IRC concerning trying to implement tiling<br>>> WM's.  There are probably several more use-cases that do not fall into<br>>> these lists.<br>>><br>>> The problem with the current protocol is that wl_shell is, in the<br>
>> words of krh, "inherently desktopy".  I believe the intention is that<br>>> different kinds of compositors will simply implement different<br>>> protocols for putting a surface on the screen.  However, many of these<br>
>> different types of compositors are still shells in the sense that they<br>>> provide a mechanism for users to run other applications.  Right now,<br>>> if an application is written without knowledge of your specific shell<br>
>> type, it won't work.  This is going to cause massive problems for<br>>> alternate shells because old or lazy software won't run on them unless<br>>> they try and implement the desktop protocol which is going to be a<br>
>> hack.<br>>><br>>> In order to solve this problem, I am suggesting that we effectively<br>>> split wl_shell into two components: a core shell interface, and a<br>>> desktopy shell interface that extends the core shell interface.  Then<br>
>> we could write a set of other shell interfaces that each extend the<br>>> core shell interface and provide additional functionality not provided<br>>> by the core.  This way, if an application is written without knowledge<br>
>> of a particular shell, it can use the core as a fallback to at least<br>>> display and work to a certain extent.  Please note that I am referring<br>>> to compositors that act as shells allowing the user to run external<br>
>> programs.  Special purpose compositors such as login manager are<br>>> probably still going to have to be a special case.<br>>><br>>> If this is to happen, there are a number of questions that need to get<br>
>> answered (I'm sure this list is incomplete):<br>>><br>>> 1) What things are common to all shells?  In order to answer this, I<br>>> think we need to look at a lot of use-cases such as standard desktop<br>
>> WM's; touch-based WM's such as Android, iOS, or ModernUI; and tiling<br>>> window managers.  If anyone knows of other eclectic shell schemes,<br>>> those should go on the table too.<br>><br>
> I think that list is still quite desktop'y. We also need to consider<br>> phones, IVI-systems, aeroplane entertainment systems, set-top boxes and<br>> TVs, game consoles... anything that has a graphical display, really.<br>
><br>> A TV or a set-top box is a nice example, if you think you only have a<br>> remote control with some buttons, and no mouse, real keyboard, or touch<br>> input.<br>><br>> At least I do not have enough experience in any one of these to be able<br>
> to really suggest anything.<br>><br>>> 2) Is it even feasible to try and make a lowest-common-denominator<br>>> shell interface?<br>><br>> I have no idea, but it will be very difficult. I would tend to think<br>
> that the Wayland core protocol already is such.<br>><br>> I do not think we would want to end up with an overly generic protocol<br>> extension, where each environment will use only selected bits and not<br>
> others, replacing some bits with shell-interface specific bits.<br>><br>>> 3) What are the UI implications of an application only handling the<br>>> core shell? How do we make that application work in a sensible way<br>
>> without the application providing the shell all the information it<br>>> would like?<br>><br>> You'd need to define a "generic window" in all shells, and how it<br>> behaves, I guess... so it'll be shell specific, and can that really<br>
> work? I'm very sceptical.<br>><br>>> 4) What about decorations? Right now, wayland always assumes<br>>> client-side decorations and the client simply decorates top-level<br>>> windows. However, this leads to a number of problems.  Tiling WM's for<br>
>> instance don't decorate the same way others do, and a touch-based WM<br>>> might not decorate at all.<br>><br>> Decorations are quite desktop-specific, don't you think?<br><br></div></div>Exactly, they are desktop-specific.  Right now, clients assume they<br>
have to draw decorations and most always will.  The bigger issue (this<br>came up on IRC the other day) is how do you tell them not to?  This<br>isn't an issue of you're using a completely separate interface (call<br>
it wl_phone_shell for example) because the client could compensate.<br>However, if you're simply going to break the desktop protocol a little<br>(ex. tiling), this becomes more of an issue.<br>
<div class="im"><br>> On some systems, like TVs, they might not make any sense. I mean, even<br>> having a toggle for decorations.<br>><br>>> 5) How do we handle the migration path? Do we simply add another<br>
>> wl_core_shell interface, or do we deprecate the desktoppy parts of<br>>> wl_shell and add wl_desktop_shell to implement those?  Really, this is<br>>> probably the last question to answer.<br>><br>> Yeah, we can punt this until we have a plan for what might work even<br>
> without backwards compat.<br>><br>>> Giving it a brief look, I think the following can probably stay in the "core":<br>>>  * ping and pong<br>>>  * set_toplevel<br>><br>> How can you have multiple top-level surfaces on a game console or TV?<br>
</div>My understanding is that set_toplevel simply tells the compositor that<br>it's a main window.  In the case of a console or TV, it would get<br>maximized.  On the other hand, you may want to pop a window up on top<br>
to inform the user of something which might be a different kind of<br>window.  Maybe I'm thinking too X/server-side, but a popup/transient<br>window still seems useful in this case.<br>
<div class="im"><br>><br>>>  * set_transient (although positioning might not work exactly the<br>>> same. we need to think about that)<br>><br>> This becomes sub-surface, if you make it shell-agnostic.<br>
><br>>>  * set_fullscreen<br>><br>> Not needed, if the definition of top-level is fullscreen, like maybe in<br>> phones.<br><br></div>The distinction I see here is one between maximized and fullscreen.<br>
In Android, everything is maximized, but not everything is fullscreen.<br> A fullscreen app is usually a game or a video and, in that case, not<br>even the system decorations (clock, battery life etc.) are showing.<br>However, perhaps having shell-level navigation components at all is a<br>
bit too much of an assumption.<br>
<div>
<div class="h5"><br>>>  * set_name<br>>>  * configure<br>>><br>>> and the following probably are specific to the desktop shell:<br>>>  * move<br>>>  * resize<br>>>  * set_maximized<br>
>><br>>> Note: When I say wl_shell above, I also include wl_shell_surface, as<br>>> the two interfaces are inherently tied together.  Each shell interface<br>>> is going to be accompanied by a corresponding surface interface.<br>
><br>> Right.<br>><br>> I want to make sure again, that when we talk about shells in Wayland,<br>> we usually talk about public shell interfaces in the protocol. Therefore<br>> all of Linux desktop, regardless of DE or its components (KDE, Gnome,<br>
> gnome-shell, kwin, ...) are under the one and same shell for desktops.<br>> This is about the generic shell interfaces towards all applications, of<br>> course, that can somehow make sense on any DE.<br>><br>
> When we move to a different shell, desktop features largely stop making<br>> sense.<br>><br>> <a href="http://cgit.freedesktop.org/wayland/weston/tree/notes.txt" target="_blank">http://cgit.freedesktop.org/wayland/weston/tree/notes.txt</a> tries to<br>
> explain the distinction between a shell and a shell from the<br>> perspective of a window manager developer.<br>><br>> Therefore, I would make a counter-question: are you seeking to find the<br>> common denominator over all graphical environments you can still call<br>
> "desktop", even if they have very different GUI paradigms like a tiling<br>> WM (right?), or are you truly seeking for a common denominator over all<br>> shells, which includes TVs, phones, and wristwatches?<br>
<br>> Or in other words, are you looking for the common things in all<br>> applications that can run on a desktop, or are you looking for an<br>> interface which allows you to run an application written for a desktop<br>
> in a TV, with a regular TV remote as input?<br><br></div></div>Perhaps I should be asking a better question.  That question would be,<br>How should alternate compositors be handled?  Perhaps the best answer<br>isn't to change wl_shell, but to simply break it in a reasonable way<br>
such as ignoring requests by the client to move the window.  I guess<br>my concern is that, since having to constantly break the X spec is<br>something we're trying to get away from, is breaking the Wayland spec<br>really the right way to do this?  Is completely ignoring move/resize<br>
requests actually breaking things?<br><br>My primary use-case is android which covers phones, tablets, and TV's.<br> Probably the most defining characteristics of those environments is<br>lack of a mouse and the fact that every window is maximized (except on<br>
the Galaxy Note II).  I would like clients written in GTK or Qt to run<br>without huge modifications if the user so wishes.  (Obviously, they<br>would need to be touch-aware or you would need a bluetooth mouse.)  Is<br>that going to encourage too many broken clients?<br>

<div class="HOEnZb">
<div class="h5"><br>><br>> Thanks,<br>> pq<br>_______________________________________________<br>wayland-devel mailing list<br><a href="mailto:wayland-devel@lists.freedesktop.org">wayland-devel@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/wayland-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/wayland-devel</a><br></div></div></blockquote></div><br>