| name | quickshell-nine-slice-frame |
| description | Use when creating scalable ornate frames, thorn borders, parchment panels, worn-metal borders, or image-backed UI frames. |
| source_examples | ["examples/quickshell/components/NineSliceFrame.qml"] |
| source_docs | ["https://doc.qt.io/qt-6/qml-qtquick-borderimage.html"] |
Quickshell Nine-slice Frame
When to use
Use this when a widget needs a scalable ornamental frame without bulky hand-drawn terminal boxes: parchment, soot, ash, worn metal, thorn borders, inventory frames, or bonfire-style UI panels.
Steps
- Use
BorderImage for 9-slice scaling/tile behavior.
- Keep the corner slices unscaled by choosing correct
border.left/right/top/bottom values.
- Prefer
BorderImage.Repeat for thorn/chain/noisy edges and BorderImage.Stretch for smooth parchment or metal gradients.
- Put real content in an inner item with margins equal to or larger than the slice size.
- Keep asset paths sandbox-local and validate that they do not escape the generated output root.
- Provide a simple
Rectangle fallback when no asset exists yet.
Safety baseline
- Keep work in the project sandbox unless explicitly asked to edit source.
- Do not write to
~/.config/quickshell.
- Do not launch a live persistent widget from a skill; generate/static-review first.
- Keep KDE/Wayland examples free of
hyprctl and FloatingWindow.
Verification
BorderImage has source and all four border slice properties.
- Content margins account for the frame slice.
- Asset path remains under the sandbox output root.