Skip to content

Proposal: Add details about windowing modes #153

Description

@patrickkettner

Right now, it is not straightforward to determine how new windows open,. If you call window.open() it may open a new full window (like on mobile), force a split tab (like on a number of tablets), or just open an entire new window. A call to open a 300x400 "palette" window works fine on a desktop, but on a tablet, it might unexpectedly split the screen 50/50 and break the main app's layout. On a phone, it will just fail entirely by opening a tab. New environments like Apple's Stage Manager on iPadOS and the various split-screen/pop-up views on Android tablets are not "freeform" desktops, but they do support multiple windows. Developers are completely blind to this distinction.

I am preposing that we add a windowingMode attribute to ScreenDetailed that signals what to expect

  • freeform: A traditional desktop where coordinate-based, overlapping windows are honored
  • managed: A device (like a tablet in split-screen or Stage Manager) that supports multiple windows but where the OS controls placement. The script's coordinates are ignored in favor of a tiled or constrained layout. Note my intention is that this is not just 50/50 splits, but would also be situations like VisionOS, where multiple windows are allowed, but the layout constraints are ignored.
  • single-context: A system (like a phone) that doesn't support a second window context, forcing popups into tabs.

I sent in a proposal to the spec in #152, but am of course more than happy to redo any/all of it.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions