Opposite anchors force the corresponding dimension to span the screen between margins.
The exclusion zone only takes effect with the anchor combinations documented by the installed PanelWindow type page.
For click-through rendering:
PanelWindow {
color: "transparent"
mask: Region {}
}
FloatingWindow
Use FloatingWindow for an ordinary desktop window controlled by the window manager.
Do not use panel anchors or WlrLayershell on it.
Use PopupWindow only when the popup is anchored to another Quickshell window.
Its anchor API is version-sensitive, so read the installed PopupWindow and PopupAnchor pages rather than copying a recipe from this skill.
Layer shell
WlrLayershell is an attached object on PanelWindow.
It is not attached to FloatingWindow.
Layer-shell support depends on the compositor protocol, not on a blanket "Wayland" or "wlroots" label.
Niri is not wlroots-based.
i3 is an X11 window manager; Sway is its Wayland counterpart.
Verify the target compositor's protocol support independently.
Session lock
WlSessionLock and WlSessionLockSurface are security-sensitive protocol objects.
Do not derive a lockscreen from an abbreviated recipe.
Use the official example matching the installed Quickshell version and review the complete PAM conversation.
Never launch a lockscreen or authentication flow on the real session during routine validation.
Use a nested compositor and isolated authentication setup with an explicit recovery path.
# Windowing
Read the installed-version type page for each window and attached property before coding.
## PanelWindow
Use `PanelWindow` for a decorationless surface attached to screen edges.
It can be the root object of `shell.qml`.
```qml
import Quickshell
PanelWindow {
anchors { top: true; left: true; right: true }
implicitHeight: 30
margins { top: 4; left: 4; right: 4 }
}
```
Opposite anchors force the corresponding dimension to span the screen between margins.
The exclusion zone only takes effect with the anchor combinations documented by the installed `PanelWindow` type page.
For click-through rendering:
```qml
PanelWindow {
color: "transparent"
mask: Region {}
}
```
## FloatingWindow
Use `FloatingWindow` for an ordinary desktop window controlled by the window manager.
Do not use panel anchors or `WlrLayershell` on it.
```qml
import Quickshell
FloatingWindow {
width: 600
height: 400
}
```
## PopupWindow
Use `PopupWindow` only when the popup is anchored to another Quickshell window.
Its anchor API is version-sensitive, so read the installed `PopupWindow` and `PopupAnchor` pages rather than copying a recipe from this skill.
## Layer shell
`WlrLayershell` is an attached object on `PanelWindow`.
It is not attached to `FloatingWindow`.
```qml
import Quickshell
import Quickshell.Wayland
PanelWindow {
WlrLayershell.layer: WlrLayer.Overlay
WlrLayershell.namespace: "my-osd"
}
```
Layer-shell support depends on the compositor protocol, not on a blanket "Wayland" or "wlroots" label.
Niri is not wlroots-based.
i3 is an X11 window manager; Sway is its Wayland counterpart.
Verify the target compositor's protocol support independently.
## Session lock
`WlSessionLock` and `WlSessionLockSurface` are security-sensitive protocol objects.
Do not derive a lockscreen from an abbreviated recipe.
Use the official example matching the installed Quickshell version and review the complete PAM conversation.
Never launch a lockscreen or authentication flow on the real session during routine validation.
Use a nested compositor and isolated authentication setup with an explicit recovery path.