41

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

63

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

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

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.

4
  • 1
    is there a way to do this using the workspace name/number? Instead of the active workspace
    – Thayne
    Commented Dec 14, 2018 at 5:29
  • Good question. I don't know.
    – crypdick
    Commented Dec 19, 2018 at 14:39
  • It works perfectly.
    – TuralAsgar
    Commented Nov 29, 2022 at 9:23
  • @Thayne Looks like you need to focus the appropriate workspace first (using something like focus output primary or other options at i3wm.org/docs/userguide.html#_focusing_moving_containers ). Then you can move the workspace.
    – waterproof
    Commented Feb 22 at 16:38
18

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.

2
  • Handy for one-off moves
    – Reuben
    Commented Oct 9, 2020 at 2:39
  • You can get the workspace name using i3-msg -t get_workspaces and the monitor name using xrandr. To move workspace 2 to monitor DP-1, use i3-msg '[workspace="2"]' move workspace to output "DP-1"
    – srgsanky
    Commented Aug 27 at 5:13
10

To move to the next workspace, you can use:

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

docs

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 .