35

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

0

3 Answers 3

55

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.

3
  • 1
    is there a way to do this using the workspace name/number? Instead of the active workspace
    – Thayne
    Dec 14, 2018 at 5:29
  • Good question. I don't know.
    – crypdick
    Dec 19, 2018 at 14:39
  • It works perfectly.
    – TuralAsgar
    Nov 29, 2022 at 9:23
16

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.

1
  • Handy for one-off moves
    – Reuben
    Oct 9, 2020 at 2:39
5

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.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .