How to "resize" side-by-side windows SIMULTANEOUSLY on Mac?

Solution 1:

Option 1: Native Split View in Big Sur

  1. Make sure you have at least two windows on your desktop

  2. Start by hovering your mouse over the green maximise button of one of these windows

    hover green button

  3. Click on "Tile Window to Left of Screen"

  4. Then, choose the other window, which should become the right part of your tiled window arrangement, by clicking on that window.

    click on right window

  5. When you adjust the width of the left window, the right window will resize accordingly.

    resize window

To learn more about Split View in macOS, have a look at this support document: https://support.apple.com/en-us/HT204948.

Option 2: Tiling window manager

If you would like more configurations options, or you would like to extend this mechanism to more than two windows on one desktop, using a tiling window manager like yabai would be an option.

For example, if a couple of windows are on one desktop using yabai, resizing one of the windows makes the other windows adjust their sizes accordingly.

yabai resize

yabai is a window management utility that is designed to work as an extension to the built-in window manager of macOS. yabai allows you to control your windows, spaces and displays freely using an intuitive command line interface and optionally set user-defined keyboard shortcuts using skhd and other third-party software.

  1. Install the homebrew package manager

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    
  2. Install yabai

    brew install yabai
    
  3. Adjust the configuration in ~/.yabairc if needed to customise the tiling behaviour.

    # ~/.yabairc
    yabai -m config window_placement             second_child
    yabai -m config window_topmost               off
    yabai -m config window_shadow                on
    yabai -m config window_opacity               on
    yabai -m config window_opacity_duration      0.0
    yabai -m config active_window_opacity        1.0
    yabai -m config normal_window_opacity        0.90
    yabai -m config window_border                on
    yabai -m config window_border_width          6
    yabai -m config active_window_border_color   0xff775759
    yabai -m config normal_window_border_color   0xff555555
    yabai -m config insert_feedback_color        0xffd75f5f
    yabai -m config split_ratio                  0.38
    yabai -m config auto_balance                 on
    yabai -m config mouse_modifier               fn
    yabai -m config mouse_action1                move
    yabai -m config mouse_action2                resize
    yabai -m config mouse_drop_action            swap
    
    yabai -m config layout                       bsp
    yabai -m config top_padding                  12
    yabai -m config bottom_padding               12
    yabai -m config left_padding                 12
    yabai -m config right_padding                12
    yabai -m config window_gap                   16
    

Have a look at this wiki to learn more about the tiling-configuration options.