Tiling Windows Revisited
This issue is a renewed discussion from this issue about how we are to handle tiling windows as part of a holistic multitasking system in GNOME.
Since GNOME has a well-integrated overview, there's an opportunity to use that as the primary UI for both managing tiled windows and tiling them.
Current state
From #58:
We never really designed the current window tiling behaviour and the UX is somewhat incomplete. The principle issues are that, if you tile two windows, you can't switch to them as a pair, and they don't appear together.
Goals
- Make tiling arrangements easy to switch to/from as a group
- Support more than just 2 windows side-by-side
- at least one vertical split (quarter tiling)
- more than 2 horizontal splits (e.g. 3 narrow windows on wide displays)
- Integrate tiling more naturally with overview and workspaces
- Enable the single-window workspaces we need for mobile
- Works with all input methods
- Easy-to-learn keybindings, extending the
Super + Arrow
ones we have currently
Open questions
- Do we want arbitrary splitting of tiles? What would be the implications?
- If not, which layouts do we support and how do you choose/switch between them?
- Other OSes seem to do 3x2 max, but for things like ultrawide more than 3 columns would be nice probably.
- With tiling groups, does dragging in the overview affect the window, its tiling group, or its workspace?
- Is tiling always opt-in, or is there a tiling-first mode?
- In a tiling-first mode, what happens to new windows? Every window a new workspace? Split current workspace if it fits, new workspace if it doesn't?
- Can tiling workspaces contain floating windows? If so, what happens in the overview?
- How can we have tile resizing not look janky with >2 windows since we can't rely on windows keeping up ? iPad blur effect?
- What happens when the screen resolution changes (e.g. when disconnecting a monitor) and the current tiling setup no longer fits due to window min sizes?
- Implications for fullscreen?
Relevant Art
Windows 11
- hovering (press and hold?) maximize button shows a menu with tiling arrangements [1]
- windows are shown separately in overview
- not grouped in taskbar
- choose tiling partner in a second step - works for multiple partners, one after another
- it's still snapping (relies on corners/edges), limited to certain layouts (not generic tiling)
iPadOS
- new multitasking features in 15: https://www.apple.com/ipados/ipados-15/
- three dots at the top of the screen for fullscreen, left, right ("lets you create a full screen, Slide Over, Split View, and in some instances, a center window, so you can work on multiple apps at once")
- when tiling an app to the side it slides to the edge, and you can launch a new app from the homescreen as the tiling partner
- re-arranging the tiling pairs works in the overview, because apps are grouped there
- Lots of odd floating window things: quick note, slideover, picture in picture
- Only two tiled apps side-by-side
Apple Support page for multitasking: https://support.apple.com/en-ca/HT207582
ChromeOS
https://www.youtube.com/watch?v=1JpBd-wEBGs
- drag windows to the side of the screen to tile
- no picker to select a tiling partner
- special handle for resizing two tiled windows
- press and hold the maximize button - shows buttons for tiling left and right
- no grouping of tiled windows in the overview
- dragging a window in the overview shows two vertical bars on each side of the screen, labelled "Drag here to use split screen". when you do this, the overview resizes to the remaining space, allows picking a tiling partner
macOS
https://appletoolbox.com/how-to-use-split-screen-on-a-mac-to-view-side-by-side-apps
- fullscreen windows are tiling workspaces by default. no window spread in the overview for these.
- similar long press/hover menu as Windows 11, tiling partner choice in a second step
- adding a second window to an existing tiling workspace? only from overview
- it's cumbersome to move apps in/out of tiling workspaces (Catalina)
- Only two windows side-by-side
Adding a second window to a tiling workspace via DnD:
pop!_OS
- tries to emulate an old-school tiling WM?
- opens new windows on the current workspace, changing the tiling arrangement (automatically splits current tile?)
- first window is fullscreen, second is half-tiled, third is two windows on one side,third on the other. windows get progressively smaller.
- if windows are too large, they overlap other windows
- it's all in the session, no integration in overview
- how do you re-arrange? dragging one window onto another one in the session switches them
Android
- very hidden, not used much (probably also because Android tablets aren't really a thing)
- long press the app icon to get two vertically tiled apps on phones
- Are folding phones relevant? Some of them do tiling
- how does Samsung Android/oneUI handle this?
Windows 8
- only 2 windows side by side
- drag from the top
webOS
https://www.theverge.com/2014/1/2/5264580/the-lost-secrets-of-webos
- System of flexible vertical panes
- The left panel is static, the right one is a dynamic stack that scrolls as you open things from the left panel as links
- Windows on the right are partially overlapping, and dynamically scrollable horizontally
Swish for macOS
Third party gesture/tiling system for macOS https://highlyopinionated.co/swish
- While the cursor is over the window titlebar, swipe left to tile on the left, and then a second swipe up/down to quarter tile
- 2x2 or 3x2 grid (press a key while swiping to enable 3x2)
- Only gestures (with static feedforward) and keyboard shortcuts, doesn't work with mouse or touch
- Gestures at specific points on the screen trigger different kinds of actions
- Only works from the session
Fancyzones for Windows
https://docs.microsoft.com/en-us/windows/powertoys/fancyzones
- Fixed tiling "zones" are shown as overlays when you drag windows, dropping them moves them into that slot
- Windows can fill more than one zone
- Multiple sets of zones can be customized per-monitor
- Feels static and fiddly, high setup cost
One Plus Pad
The Pad does not have as many multitasking or windowing options as an iPad or Samsung tablet, but you can split-screen two apps and have a floating window for select apps.
https://www.theverge.com/23701161/oneplus-pad-android-tablet-review
Concepts
2020 Convergent Shell concept
https://gitlab.gnome.org/Teams/Design/os-mockups/-/tree/master/mobile-shell/tiling
- tiling-first, which simplifies a lot of things (e.g. no window spread, two-stage overview)
- apps open on a new workspace by default
- much of the management of the tiling arrangement happens in the overview (e.g. adding a second app to a workspace)
- allows arbitrary splitting on both axes
- on large screens there's an app-defined maximum size to keep layouts from falling apart, they're centered on their respective tile
- special carve-out for contextual apps that need to be floating, e.g. color pickers