Tiling Windows in GNOME

Half & Quarter Tiling


Information

Date: June 14th, 2017

Attendees: Lapo, Georges

Goals

  • Improve workflow when using concurrent windows
  • Allow consuming the contents of 2-4 windows simultaneously
  • Allow resizing 2-4 windows simultaneously
  • Improve keyboard interaction

Concepts

  • T-Group: 2-4 windows tiled in complementary way

  • Raise: put the window at the top of the stack

Details

  • Tiled windows that are not complementary sizes are not in the same T-Group (./)

  • When resizing, they join a T-Group if their borders match (./)

  • Resizing to screen borders change to maximized (./)

  • Keyboard tiling always join T-Groups (./)

  • When raising a window in a T-Group, the entire group is raised as well (./)

  • Should GNOME Shell treat T-Groups as a single window?
  • Needs shortcut to break the group and move a single window?
    • Untiling the window (Meta + Down)
    • Maximizing the window (Meta + Up)
    • Swapping the tile mode (Meta + Left/Right)
  • Cursor should be different on T-Groups (v/h double arrow, or cross)
  • Can grab the borders oposite to the tile mode
    • Top/bottom when horizontally tiled
    • Left/right when vertically tiled
    • All when maximized

Plan

Goal

Description

Bug

Status

T-Groups

Define behavior

Have design feedback for the target behavior

---

Done

Fine-tune "tile match" implementation

Also consider horizontal borders to find a matching window

645153

Done

Extend matching to vertical

Extend current implementation to handle vertical checks as well

751857

To Do

Half Tiling

Resize tiled windows in tandem

Allow resizing tiled windows together

645153

Done

Snapping when tandem resizing

Add snapping points in key screen positions

645153

Done

Rework GTK+ internals for tiling

CSD windows manage their own states, and are out of Mutter's control

783669

Done

Design protocol for constrained edges

We need to expose more data for CSD windows, so that GTK+ can mimic Mutter's behavior

Done

Add keyboard auto-snap shortcuts

Being able to control tiled windows with keyboard would be nice

645153

To Do

Quarter Tiling

Extend tiling to TOP/BOTTOM

Left/right snapping should be complementary to top/bottom

751857

To Do

Allow vertical resizing and snapping

Should be just a matter of adding y/height in code

751857

To Do

Add keyboard shortcuts

Users should be able to tile & snap with keyboard

751857

To Do

Challenges & Obstacles

  • T-Groups
    • The border match calculation can potentially be extremely tricky

    • A window can have more than one horizontal/vertical match - how to deal with that?
  • Tiling
    • We should improve the visual indication of tiling state (perhaps with a thick black border)
    • Should there be any constraints?
  • I'm stupidly ignorant about window management

Feedback

(Drop any feedback here)

GeorgesNeto/MinutesOfFeaneron/Tiling (last edited 2017-10-20 18:01:23 by GeorgesNeto)