Intent to Experiment: Multi-Screen Window Placement

Skip to first unread message

Mike Wasserman

Jun 25, 2021, 4:49:59 PM6/25/21
to blink-dev, Adrienne Walker

Contact emails



Design docs


Adds new screen information APIs and makes incremental improvements to existing window placement APIs, allowing web applications to offer compelling multi-screen experiences. The existing singular window.screen offers a limited view of available screen space, and window placement functions generally clamp bounds to the current screen. This feature unlocks modern multi-screen workspaces for web applications.

Blink component


Search tags

window placementscreen enumerationwindowopenmoveTomoveByrequestFullscreenscreendisplaymonitormulti-screenmulti-displaymulti-monitorcross-screencross-displaycross-monitor

TAG review

TAG review status



Interoperability and Compatibility

Feature detection of new screen information APIs and Permission API integration allows sites to handle different levels of feature support. Existing window placement APIs generally use compatible multi-screen coordinates, but implementations often restrict bounds to the current screen. We expect low levels of risk in supporting permitted cross-screen placement requests, and falling back on legacy same-screen behavior otherwise. This work is included in the W3C Second Screen CG charter to seek consensus and support for broad interoperability: The Screen IDL interface duplicates EventTarget members to mark them RuntimeEnabled for this experiment, since using interface inheritance would also change the stable JS API.

Gecko: No signal We requested a position and are waiting for feedback. Firefox supports cross-screen*() requests. This work partly pursues compatibility with that behavior.

WebKit: No signal We requested a position and are waiting for feedback.

Web developers: Positive ( Positive. This work is also of interest to Google Slides. See: See:


The minor improvements to|move*() API behaviors have no effect on their poor ergonomics (synchronous, features string shape, etc.). This API does not preclude future work from improving the ergonomics of those existing APIs. Extending the requestFullscreen dictionary with an optional screen should pose no ergonomic risks. The new multi-screen information APIs have some minor potential ergonomics issues around naming, object comparison, and event handling that we hope to resolve using OT feedback. See for more details. New dual-screen and foldable screen devices are entering the consumer market, increasing the complexity of exposing reliable and actionable screen information for all device form factors. Additionally, operating systems and their window managers support different levels of screen placement APIs, and new paradigms may emerge that complicate the availability of window placement features. See the Second Screen's "Form Factors Explained" report for more explorations on these topics:


This feature incrementally extends existing screen information and window placement interfaces with basic multi-screen support. This immediately enables new compelling experiences through progressive enhancement of existing applications.


Security and Privacy risks are explored in repo documents: <>. That analysis and review uncovered minimal risks. Privacy concerns center around fingerprinting screen information, while security risks center around deceptive, surreptitious, or annoying window placements, such as clickjacking. Gating new functionality with a permission helps mitigate these concerns, and may aid or inspire similar protections for legacy API behavior with similar abuse vectors. The overall added risks are low and further mitigated by limiting to secure contexts, a permissions policy, providing origin-scoped generated screen ids that reset when cookies are cleared, being selective about display information to expose, and continuing to prevent off-screen window placement.

Goals for experimentation

We want developer feedback around the feature's performance and applicability in production scenarios with a broad set of screen configurations. The API shape has changed significantly since the first Origin Trial (M86-M88), and we would like to get additional developer feedback before shipping. - Does the feature permit sufficiently expressive placement requests? - Does the permission model/flow integrate well with product design? - Do any screen configurations or placement scenarios pose unforeseen challenges? At least one major customer inside Google wants to use this API in their product. We want to learn from their deployment experiences and collect metrics on feature subsets.

Reason this experiment is being extended


Ongoing technical constraints



New and existing screen and window APIs are readily debuggable in existing developer tools.

Will this feature be supported on all six Blink platforms (Windows, Mac, Linux, Chrome OS, Android, and Android WebView)?


All Blink platforms have some support for multiple displays, but may restrict the placement and sizing of windows. The overall API will be exposed everywhere except WebView, as developers have primarily voiced interest for use cases in desktop applications, and the added complexity strongly exceeds developer enthusiasm for WebView support. All other Blink platforms will be supported.

Is this feature fully tested by web-platform-tests?


Flag name


Tracking bug

Launch bug


Link to entry on the Chrome Platform Status

Links to previous Intent discussions

Intent to prototype:
Intent to Experiment:

This intent message was generated by Chrome Platform Status.

Yoav Weiss

Jun 28, 2021, 11:48:02 AM6/28/21
to Mike Wasserman, blink-dev, Adrienne Walker
Thanks for working on a better multi-screen experience! I know I could use that as a user :)

What's the relationship between this and the previous I2E? Has the API changed since? Any learnings from the previous trial that were incorporated into the current design?

You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to
To view this discussion on the web visit

Thomas Steiner

Jun 29, 2021, 4:29:05 AM6/29/21
to Yoav Weiss, Mike Wasserman, blink-dev, Adrienne Walker
Hi Yoav,

The API changes are documented in (and The tl;dr is that the API shape and ergonomics have changed, based on the feedback from the first origin trial.


Thomas Steiner, PhD—Developer Advocate (,

Google Germany GmbH, ABC-Str. 19, 20354 Hamburg, Germany
Geschäftsführer: Paul Manicle, Halimah DeLaine Prado
Registergericht und -nummer: Hamburg, HRB 86891

Version: GnuPG v2.1.23 (GNU/Linux)


Mike West

Jul 1, 2021, 2:36:51 PM7/1/21
to Thomas Steiner, Yoav Weiss, Mike Wasserman, blink-dev, Adrienne Walker
I appreciate the work y'all have done to satisfy folks from the security and privacy teams around the UX of this feature. I'm comfortable with y'all taking another stab at getting feedback from developers.

What timeline are you requesting for experimentation? M93-M95ish?


Mike Wasserman

Jul 1, 2021, 3:30:57 PM7/1/21
to Mike West, Thomas Steiner, Yoav Weiss, blink-dev, Adrienne Walker
Thanks Mike and Yoav,

Yes, M93-M95 is our target timeframe for this second OT.
As Tom said, we made nontrivial API shape (and implementation) changes to address feedback from the first OT.
See, the spec PR, a slide (some of that deck is outdated), and a google-internal (for now) shape change design doc.
We want to ensure these changes satisfy partner needs and work well across a variety of OS+display configuration environments.

Let me know if you have any questions or requests. Thanks!

Mike West

Jul 1, 2021, 3:34:21 PM7/1/21
to Mike Wasserman, Thomas Steiner, Yoav Weiss, blink-dev, Adrienne Walker
LGTM to experiment from M93-M95.

Good luck!


Ajay Rahatekar

Aug 18, 2021, 5:12:03 PM8/18/21
to blink-dev, Mike West, Thomas Steiner,, blink-dev, Adrienne Walker, Mike Wasserman
Hi All,

Due to the new Chrome 4 week cycle release cycle and the team expecting to land so CLs during the OT, can we please have approval to extend the OT by one milestone to M96? The new OT window would be M93-M96

Thanks in advance,


Chris Harrelson

Aug 18, 2021, 5:17:59 PM8/18/21
to Ajay Rahatekar, blink-dev, Mike West, Thomas Steiner,, Adrienne Walker, Mike Wasserman

Ajay Rahatekar

Aug 18, 2021, 5:18:46 PM8/18/21
to Chris Harrelson, blink-dev, Mike West, Thomas Steiner,, Adrienne Walker, Mike Wasserman
Ty, Chris.

Thomas Schaaf

Jan 13, 2022, 12:37:54 PMJan 13
to blink-dev, Ajay Rahatekar, blink-dev, Mike West, Thomas Steiner,, Adrienne Walker, Mike Wasserman, Chris Harrelson

right now it's not possible to register for the experiment anymore. Would it be possible to open registration again? Or will the feature be changed so that it is available behind a feature flag?


Mike Wasserman

Jan 13, 2022, 1:01:58 PMJan 13
to Thomas Schaaf, Ajay Rahatekar, Mike West, Thomas Steiner,, Adrienne Walker, Chris Harrelson
[BCC blink-dev]

Hi, Thanks for reaching out. The Origin Trial has ended, but developers can still test these features.
  • Either enable: chrome://flags/#enable-experimental-web-platform-features
  • Or run chrome with the command line flag: --enable-blink-features=WindowPlacement
Feel free to submit issues on GitHub and watch ChromeStatus for status updates.


Reply all
Reply to author
0 new messages