hyprland-wiki/pages/Configuring/Workspace-Rules.md
2024-10-29 21:38:12 +00:00

4.1 KiB

weight title
8 Workspace Rules

You can set workspace rules to achieve workspace-specific behaviors. For instance, you can define a workspace where all windows are drawn without borders or gaps.

For layout-specific rules, see the specific layout page. For example: Master Layout->Workspace Rules.

Workspace selectors

Workspaces that have already been created can be targeted by workspace selectors, e.g. r[2-4] w[t1].

Selectors have props separated by a space. No spaces are allowed inside props themselves.

Props:

  • r[A-B] - ID range from A to B inclusive
  • s[bool] - Whether the workspace is special or not
  • n[bool], n[s:string], n[e:string] - named actions. n[bool] -> whether a workspace is a named workspace, s and e are starts and ends with respectively
  • m[monitor] - Monitor selector
  • w[(flags)A-B], w[(flags)X] - Prop for window counts on the workspace. A-B is an inclusive range, X is a specific number. Flags can be omitted. It can be t for tiled-only, f for floating-only, g to count groups instead of windows, and v to count only visible windows.
  • f[-1], f[0], f[1], f[2] - fullscreen state of the workspace. -1: no fullscreen, 0: fullscreen, 1: maximized, 2, fullscreen without fullscreen state sent to the window.

Syntax

workspace = WORKSPACE, RULES
  • WORKSPACE is a valid workspace identifier (see Dispatchers->Workspaces). This field is mandatory. This can be a workspace selector, but please note workspace selectors can only match existing workspaces.
  • RULES is one (or more) rule(s) as described here in rules.

Examples

workspace = name:myworkspace, gapsin:0, gapsout:0
workspace = 3, rounding:false, bordersize:0
workspace = w[tg1-4], shadow:false

Smart gaps

To replicate "smart gaps" / "no gaps when only" from other WMs/Compositors, use this bad boy:

workspace = w[t1], gapsout:0, gapsin:0
workspace = w[tg1], gapsout:0, gapsin:0
workspace = f[1], gapsout:0, gapsin:0
windowrulev2 = bordersize 0, floating:0, onworkspace:w[t1]
windowrulev2 = rounding 0, floating:0, onworkspace:w[t1]
windowrulev2 = bordersize 0, floating:0, onworkspace:w[tg1]
windowrulev2 = rounding 0, floating:0, onworkspace:w[tg1]
windowrulev2 = bordersize 0, floating:0, onworkspace:f[1]
windowrulev2 = rounding 0, floating:0, onworkspace:f[1]

Rules

Rule Description type
monitor:[m] Binds a workspace to a monitor. See syntax and Monitors. string
default:[b] Whether this workspace should be the default workspace for the given monitor bool
gapsin:[x] Set the gaps between windows (equivalent to General->gaps_in) int
gapsout:[x] Set the gaps between windows and monitor edges (equivalent to General->gaps_out) int
bordersize:[x] Set the border size around windows (equivalent to General->border_size) int
border:[b] Whether to draw borders or not bool
shadow:[b] Whether to draw shadows or not bool
rounding:[b] Whether to draw rounded windows or not bool
decorate:[b] Whether to draw window decorations or not bool
persistent:[b] Keep this workspace alive even if empty and inactive bool
on-created-empty:[c] A command to be executed once a workspace is created empty (i.e. not created by moving a window to it). See the command syntax string
defaultName:[s] A default name for the workspace. string

Example Rules

workspace = 3, rounding:false, decorate:false
workspace = name:coding, rounding:false, decorate:false, gapsin:0, gapsout:0, border:false, decorate:false, monitor:DP-1
workspace = 8,bordersize:8
workspace = name:Hello, monitor:DP-1, default:true
workspace = name:gaming, monitor:desc:Chimei Innolux Corporation 0x150C, default:true
workspace = 5, on-created-empty:[float] firefox
workspace = special:scratchpad, on-created-empty:foot