w3c / window-management

Window Management API
https://www.w3.org/TR/window-management/
Other
95 stars 25 forks source link

Feature Request: Initiate a multi-screen experience from a single user activation #98

Open michaelwasserman opened 2 years ago

michaelwasserman commented 2 years ago

An API partner submitted a feature request: the ability to initiate a multi-screen experience from a single user activation. This is a reasonable request, and there are many avenues of exploration for future API enhancements in this regard.

The API partner's specific request is to request fullscreen on a specific screen, and open a popup window on another screen see https://crbug.com/1233970. This specific request seems highly actionable in the short term, since the requisite API surface already exists, and support only requires modifications of user activation gating, likely adding a separate internal slot for this specific use case, which could be generalized in the future.

Chromium is highly interested in supporting this functionality, and has some functionaly available behind a flag; see the chromestatus entry https://chromestatus.com/feature/5173162437246976.

michaelwasserman commented 2 years ago

As stated in the goals of the new EXPLAINER_initiating_multi_screen_experiences.md,

An eventual end-goal (that is not explored here) is to enable scripts to enter fullscreen on N screens and open M popup windows on M screens from a single user activation, where N and M are disjoint and potentially empty sets, as long as the site has the multi-screen window-placement permission.

lcl45 commented 2 years ago

Opening two or more new windows directly in fullscreen would be awesome! In the company I'm currently working this would be very useful for our software: we need a way to open automatically two new windows from a single click. In these windows we will display medical exams and information regarding the patient's health. Dealing with physicians who commonly have 2/3/more monitors and being very useful to compare the wanted exam with some others (like previous exams of the same patient), not having to enter in fullscreen in every windows manually every time would be very useful.

morsssss commented 2 years ago

Thanks for your comment @lcl45 ! What you describe is exactly one of our fundamental goals for this API: allowing an application to open a number of fullscreen windows after a single user activation.

fortheday001 commented 1 year ago

This is what my company need (my company is a google api partner). Our software open windows for each extended monitors and make each window enter fullscreen. Right now, user need to click buttons in each window to enter fullscreen,which is very inconvenient. So we have a strong demand that user only click one button to make all windows in extended monitors enter fullscreen. It will be better if can open window directly in fullscreen no need any click.

morsssss commented 1 year ago

Thanks for speaking up, @fortheday001 ! All makes sense.

Would you want to say more about the application your company makes?

fortheday001 commented 1 year ago

@morsssss Thanks, I work for VMware Horizon product. We have a strong demand that user only click one button to make all windows enter fullscreen.

morsssss commented 1 year ago

Ah, you're from VMWare. I see why this feature would be crucial for your product! Thanks.

tarasinf commented 1 year ago

Also, it would be very useful for me to open an element on multiple screens, instead of this await elem.requestFullscreen({ screen: primary } make it possible to accept a list: await elem.requestFullscreen({ screens: [] }.

michaelwasserman commented 1 year ago

Thanks for your comments! There's lots to explore in this space and we would really appreciate detailed use cases to motivate these suggestions. I'll be actively soliciting more directed feedback and brainstorming as we explore this space in the coming months.

Regarding elem.requestFullscreen({ screens: [] }): It's unclear how a single element would be made fullscreen across multiple screens, especially if the union of screen bounds is non-rectilinear or even disjoint (containing other screens and/or offscreen regions).

nadavsinai-philips commented 1 year ago

Hello @michaelwasserman, I've participated in this spec discussion in the past as @nadavsinai. for us in Philips medical systems, the use of a window spread over multiple screen is an every reality - in our radiology viewer. In our current implementation - we use a Chrome Extension to solve the issue of resizing and placing it. Giving the platform native abilities to achieve this would be great and could perhaps allow us to ditch the need of extension. (although we still have no way to do window.minimize(), but that's another issue...)

We only extend windows across multiple screens when the screens have same dimensions, for multiple screens of different resolutions/sizes - we use multiple windows.

tarasinf commented 1 year ago

Hello @michaelwasserman, thank you for the feedback. In my case, I have to open the same element over all monitors (a wallpaper/ a video). It's very useful for people with multiple monitors (3, 4 or even 5).

morsssss commented 1 year ago

Sounds like there's a lot of interest in extending a single element across multiple screens. We're not sure quite how this would work, or if it could be made to work reliably, but given the interest we will give this some thought!

If you have more detailed ideas about how you'd like to see this work, and how this could work in the way you'd like it to, please add those here.