34

In a multiple monitor set-up, is there a way to transfer entire workspaces (as opposed to single applications) to a different monitor?

crypdick
  • 1,593
  • 4
  • 14
  • 23

3 Answers3

53

You can define a binding in your i3 config. Note: windows are called "containers", and monitors are called "outputs".

move workspace to output left|right|down|up|current|primary|<output>

Here's what I use in my config:

# move focused workspace between monitors
bindsym $mod+Ctrl+greater move workspace to output right
bindsym $mod+Ctrl+less move workspace to output left

Strangely, I'd expect the $mod+Ctrl+greater to require me to hit Ctrl and Shift at the same time, since you need to press Shift to type < and >. However, pressing just mod, Ctrl, and , works, which is very nice.

Note, you can also set a keybinding to send things to a specific monitor by its name.

crypdick
  • 1,593
  • 4
  • 14
  • 23
15

The workspace can be explicitly specified by name like this, for values of workspace_name and output_name:

i3-msg '[workspace="workspace_name"]' move workspace to output output_index

Note that if you name your workspaces like 1:first, you use 1 not first.

Raphael
  • 2,035
  • 1
  • 21
  • 34
kgilmer
  • 151
  • 1
  • 3
3

in 2021 they added something, you can now also use;

bindsym $mod+Ctrl+greater move workspace to output next

This has the advantage of being agnostic as to the position of the workspace - it just cycles through them, no matter if they are up or down or whatever.

emilBeBri
  • 157
  • 8