Config Reference
Rules
Window matching, optional rule composition, opening behavior, appearance and separate capture privacy.
Defaults
Defaults shown here are the effective built-in defaults for the selected wiki version.
Default Config Shape
Use this as the section shape when editing halley.rune.
rules:
endrules
Repeated rule blocks.
| Option | Type | Default | Notes |
|---|---|---|---|
window-rule | repeated nested block | none | Matches a managed Wayland or XWayland toplevel. |
layer-rule | repeated nested block | none | Matches a layer-shell namespace and optional layer. |
window-rule-mode | first-match | compose | first-match | Compose applies all matching window rules; later explicitly set properties override earlier ones. Layer rules remain first-match. |
rules.window-rule
Window matching, initial geometry, visual policy, and cluster participation.
| Option | Type | Default | Notes |
|---|---|---|---|
app-id | string | regex | array | optional | Exact or regex application-id match. |
title | string | regex | array | optional | Exact or regex title match. |
width | height | u32 | unset | Optional fixed initial dimensions. |
opacity | f32 | 1.0 | Client content and popups only. Borders, titlebars, pin badges, and compositor shadows remain opaque. |
blur | bool | unset | Explicit client blur activation policy. |
spawn-placement | center | viewport-center | cursor | app | find-empty | center | Initial window placement. |
cluster-participation | layout | float | layout | Whether the window joins cluster layout management. |
match | exclude | repeated nested block | none | Within a group app-id and title are AND conditions; match groups are OR alternatives. Any matching exclusion rejects the rule. Do not mix match groups with top-level app-id/title. |
match-all | bool | false | Match every window. Do not combine with match groups or top-level app-id/title. |
is-transient | at-startup | bool matcher | unset | Match parent relationships or the first 60 seconds of the compositor session. Use inside match/exclude groups. |
is-focused | is-screencast-target | bool matcher | unset | Match keyboard focus or individual-window portal casting. These conditions update live and cannot set opening properties. |
open-on-output | connector string | selected output | Initial output; unavailable targets fall back to the selected output. Cross-output routing does not take focus by default. |
open-position | [i32, i32] | unset | Initial client top-left in signed Field units relative to the target output origin. Applies only on first map. |
open-focused | open-fullscreen | open-maximized | bool | unset | Initial-map decisions. Fullscreen takes precedence over maximize. |
border | shadow | bool | global setting | Override the border stroke or compositor shadow without changing the configured parameters. |
corner-radius | integer 0–256 | global radius | Override client-content, border, capture and blur rounding. Server titlebars retain their own radius. |
game | bool | automatic detection | Treat the window as a game for same-monitor fullscreen navigation and parking. |
block-screenshot | bool | false | Omit the window and popups from built-in screen/region screenshots; direct screenshots fail. Does not cover portal or third-party capture. |
block-screencast | bool | false | Omit the window and popups from portal monitor shares and source selection. Active window shares turn black. Does not cover screenshots or direct protocols. |
rules.layer-rule
Layer-shell blur matching.
| Option | Type | Default | Notes |
|---|---|---|---|
namespace | string | regex | array | required | Layer-shell namespace match. |
layer | string | array | any | Optional background, bottom, top, or overlay layer match. |
blur | bool | unset | Set blur and/or block-screencast on each layer rule. |
block-screencast | bool | false | Omit the matching layer and its popups from portal monitor shares. Does not block screenshots or direct capture protocols. |