Table of Contents

Workspaces

A "workspace" or IWorkspace in Whim is a collection of windows displayed on a single monitor. The layouts of workspaces are determined by their layout engines. Each workspace has a single active layout engine, and can cycle through different layout engines.

There must be at least as many workspaces defined in the config as there are monitors connected to the system. If there are more workspaces defined than monitors, workspaces named Workspace {workspaces.Count + 1} will be created for the extra monitors. If there are fewer workspaces defined than monitors, the extra monitors will not have any workspaces displayed on them.

When Whim exits, it will save the current workspaces and the current positions of each window within them. When Whim is started again, it will attempt to merge the saved workspaces with the workspaces defined in the config.

Configuration

The workspaces property is a list of workspaces that can be displayed on a monitor. Each workspace has a name and a list of layout engines. The layout engines determine how windows are displayed on the workspace. If no layout engines are provided, the workspace will default to the layout engines defined in Layout Engines.

workspaces:
  entries:
    - name: Browser
      layout_engines:
        - type: SliceLayoutEngine
          variant:
            type: column
        - type: SliceLayoutEngine
          variant:
            type: row
        - type: TreeLayoutEngine

    - name: IDE
    - name: Chat
    - name: Spotify
    - name: Other

Sticky Workspaces

Sticky workspaces can only be displayed on specific monitors. To create a sticky workspace, specify the monitor indices when creating the workspace:

workspaces:
  entries:
    - name: Browser
      monitors: [0, 1]

Here, the workspace can only be displayed on the first and second monitors (0-based index). For more on the ordering of monitors monitors, see the Monitors page.