156 lines
4 KiB
Markdown
156 lines
4 KiB
Markdown
# Workspaces
|
|
|
|
Workspaces are virtual desktops that group windows together. Each workspace
|
|
lives on an output (monitor) and contains its own tiling layout. Jay creates
|
|
workspaces on demand and automatically manages them when monitors are connected
|
|
or disconnected.
|
|
|
|
## Switching Workspaces
|
|
|
|
Use the `show-workspace` action to switch to a workspace. In the default
|
|
configuration, `alt-F1` through `alt-F12` switch to workspaces named "1"
|
|
through "12":
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-F1 = { type = "show-workspace", name = "1" }
|
|
alt-F2 = { type = "show-workspace", name = "2" }
|
|
alt-F3 = { type = "show-workspace", name = "3" }
|
|
# ... and so on through alt-F12
|
|
```
|
|
|
|
If the workspace does not yet exist, it is created on the output that currently
|
|
contains the cursor. You can override this by specifying an output:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-F1 = {
|
|
type = "show-workspace",
|
|
name = "1",
|
|
output.name = "left",
|
|
}
|
|
```
|
|
|
|
You can also scroll over the bar to cycle through workspaces on that output.
|
|
|
|
## Moving Windows to Workspaces
|
|
|
|
Use the `move-to-workspace` action to send the focused window to a different
|
|
workspace. The default bindings are `alt-shift-F1` through `alt-shift-F12`:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-shift-F1 = { type = "move-to-workspace", name = "1" }
|
|
alt-shift-F2 = { type = "move-to-workspace", name = "2" }
|
|
alt-shift-F3 = { type = "move-to-workspace", name = "3" }
|
|
# ... and so on through alt-shift-F12
|
|
```
|
|
|
|
You can also drag a tile's title onto a workspace tab in the bar to move it to
|
|
that workspace. Dragging a tile onto the bar outside any workspace tab creates a
|
|
new workspace for it.
|
|
|
|
## Moving Workspaces Between Outputs
|
|
|
|
The `move-to-output` action moves a workspace to a different output. You can
|
|
target the output by name or by direction:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
# Move the current workspace to a named output
|
|
alt-o = { type = "move-to-output", output.name = "right" }
|
|
|
|
# Move the current workspace in a direction
|
|
logo-ctrl-shift-Right = {
|
|
type = "move-to-output",
|
|
direction = "right",
|
|
}
|
|
logo-ctrl-shift-Left = {
|
|
type = "move-to-output",
|
|
direction = "left",
|
|
}
|
|
logo-ctrl-shift-Up = {
|
|
type = "move-to-output",
|
|
direction = "up",
|
|
}
|
|
logo-ctrl-shift-Down = {
|
|
type = "move-to-output",
|
|
direction = "down",
|
|
}
|
|
```
|
|
|
|
You can also move a specific workspace by name:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-o = {
|
|
type = "move-to-output",
|
|
workspace = "1",
|
|
output.name = "right",
|
|
}
|
|
```
|
|
|
|
If `workspace` is omitted, the currently active workspace is moved.
|
|
|
|
## Workspace Display Order
|
|
|
|
Workspaces appear as tabs in the bar. Their order can be configured in two
|
|
modes:
|
|
|
|
- **manual** (default) -- workspaces appear in the order they were created and
|
|
can be reordered by dragging their titles in the bar.
|
|
- **sorted** -- workspaces are sorted using natural ordering. Dragging to
|
|
reorder is disabled.
|
|
|
|
Set the order in your configuration:
|
|
|
|
```toml
|
|
workspace-display-order = "sorted"
|
|
```
|
|
|
|
You can also change this at runtime in the control center.
|
|
|
|
## Hot-Plug and Hot-Unplug
|
|
|
|
Jay handles monitor connections gracefully:
|
|
|
|
- When a monitor is **unplugged**, its workspaces are automatically migrated to
|
|
one of the remaining monitors.
|
|
- When the monitor is **plugged back in**, those workspaces are restored to it.
|
|
|
|
This means you never lose your workspace layout when docking or undocking a
|
|
laptop.
|
|
|
|
## Workspace Capture
|
|
|
|
By default, newly created workspaces can be captured by capture clients. You can
|
|
disable this globally:
|
|
|
|
```toml
|
|
workspace-capture = false
|
|
```
|
|
|
|
When workspace capture is enabled, compositor-native capture clients may capture
|
|
individual workspaces instead of whole outputs.
|
|
|
|
## Matching Windows by Workspace
|
|
|
|
In [window rules](window-rules.md), you can match windows based on the
|
|
workspace they are on:
|
|
|
|
```toml
|
|
[[windows]]
|
|
match.workspace = "music"
|
|
action = "enter-fullscreen"
|
|
```
|
|
|
|
The `workspace-regex` field is also available for pattern matching:
|
|
|
|
```toml
|
|
[[windows]]
|
|
match.workspace-regex = "^(music|video)$"
|
|
action = "enter-fullscreen"
|
|
```
|
|
|
|
Since window rules are reactive, these rules are re-evaluated whenever a window
|
|
moves to a different workspace.
|