Per-context scrolling parameter overrides resolved from context rules.
More...
#include <phosphor-zones/include/PhosphorZones/AssignmentEntry.h>
|
| std::optional< double > | defaultColumnWidth |
| | Width a newly-opened column takes, as a fraction of the work area (0.05-1.0).
|
| |
| std::optional< int > | centerFocusedColumn |
| | When the viewport re-centres on the focused column (0 = never, 1 = always, 2 = on overflow); the resolver maps the wire token to this int so the daemon stores the same value the config store uses.
|
| |
| std::optional< int > | defaultColumnDisplay |
| | How a newly-opened column lays its windows out (0 = normal, 1 = tabbed).
|
| |
| std::optional< int > | insertPosition |
| | Where a fresh-opened window's column enters the strip (ScrollInsertPosition ints, right-of-active 0 … into-active-column 4).
|
| |
| std::optional< double > | defaultWindowHeight |
| | Height a newly-opened window takes, as a fraction of the work-area height (0.05-1.0); the engine commits it as fixed pixels at relayout.
|
| |
| std::optional< bool > | alwaysCenterSingleColumn |
| | The scrolling BEHAVIOUR toggles, filled by the SetScroll* actions of the same names.
|
| |
| std::optional< bool > | respectMinimumSize |
| |
| std::optional< bool > | cropStraddlers |
| |
| std::optional< bool > | focusNewWindows |
| |
| std::optional< bool > | smartGaps |
| |
| std::optional< bool > | focusFollowsMouse |
| | EFFECT-consumed, unlike its neighbours: the daemon collects the resolved per-screen verdict into a set and pushes it to the KWin effect, which owns focus-follows-mouse entirely.
|
| |
| std::optional< double > | focusFollowsMouseMaxScroll |
| | The cap on the toggle above, as a FRACTION of the viewport's extent along the strip (niri's max-scroll-amount); 1.0 is no cap.
|
| |
| std::optional< int > | stickyWindowHandling |
| | StickyWindowHandling ints (treatAsNormal 0 / restoreOnly 1 / ignoreAll 2); the resolver maps the wire token to the int the config store uses, matching centerFocusedColumn's treatment.
|
| |
| std::optional< int > | stripAxis |
| | Which way the strip runs, in the Scrolling.StripAxis config INTENT space (auto 0 / horizontal 1 / vertical 2 — auto resolves from the work-area shape at relayout).
|
| |
| std::optional< bool > | tabIndicatorEnabled |
| | The tab indicator's overrides, niri's tab-indicator layout block.
|
| |
| std::optional< bool > | tabIndicatorHideWhenSingleTab |
| |
| std::optional< bool > | tabIndicatorPlaceWithinColumn |
| |
| std::optional< int > | tabIndicatorGap |
| | px; NEGATIVE draws the indicator over the window
|
| |
| std::optional< int > | tabIndicatorWidth |
| | px thickness
|
| |
| std::optional< double > | tabIndicatorLength |
| | fraction of the column extent
|
| |
| std::optional< int > | tabIndicatorPosition |
| | TabIndicatorPosition ints, left 0 … bottom 3.
|
| |
| std::optional< int > | tabIndicatorStyle |
| | 0 = title chips, 1 = segment bar
|
| |
| std::optional< int > | tabIndicatorGapsBetweenTabs |
| | px
|
| |
| std::optional< int > | tabIndicatorCornerRadius |
| | px; -1 is the "fully rounded" sentinel
|
| |
| std::optional< QString > | tabIndicatorActiveColor |
| |
| std::optional< QString > | tabIndicatorInactiveColor |
| |
| std::optional< QString > | tabIndicatorUrgentColor |
| |
| std::optional< QString > | tabIndicatorFontFamily |
| | The label font, all PAINT.
|
| |
| std::optional< int > | tabIndicatorFontWeight |
| | CSS scale, 100..900; 400 regular, 700 bold.
|
| |
| std::optional< bool > | tabIndicatorFontItalic |
| |
| std::optional< bool > | tabIndicatorFontUnderline |
| |
| std::optional< bool > | tabIndicatorFontStrikeout |
| |
| std::optional< bool > | dropIndicatorEnabled |
| | The drop indicator's overrides.
|
| |
| std::optional< QString > | dropIndicatorColor |
| |
| std::optional< QString > | dropIndicatorBorderColor |
| |
| std::optional< double > | dropIndicatorOpacity |
| | fill only; the border is always opaque
|
| |
| std::optional< int > | dropIndicatorBorderWidth |
| | px; 0 is a fill with no edge
|
| |
| std::optional< int > | dropIndicatorBorderRadius |
| | px; 0 is square, no sentinel
|
| |
Per-context scrolling parameter overrides resolved from context rules.
Each field is set only when a matching context rule fills the corresponding slot (SetScrollDefaultColumnWidth / SetCenterFocusedColumn / SetScrollDefaultColumnDisplay / SetScrollInsertPosition / SetScrollDefaultWindowHeight / SetScrollStripAxis, the seven scrolling behaviour toggles and the focus-follows-mouse scroll cap beside them, the eighteen SetTabIndicator* slots and the six SetDropIndicator* slots, each documented in its own block below); an unset field means "use the config value". Consumed daemon-side: the values are layered onto the scrolling engine's per-screen parameters (config stays the base, the rule wins where present), the same way ContextTilingParams is layered onto the autotile override map. Resolved by LayoutRegistry::resolveContextScrollingParams.
◆ hasBehaviourOverrides()
| bool PhosphorZones::ContextScrollingParams::hasBehaviourOverrides |
( |
| ) |
const |
|
inline |
True when at least one of the seven behaviour toggles resolved, or the scroll cap did.
The cap is a percent rather than a toggle, but it is a behaviour override like the rest and isEmpty() has to see it.
◆ hasDropIndicatorOverrides()
| bool PhosphorZones::ContextScrollingParams::hasDropIndicatorOverrides |
( |
| ) |
const |
|
inline |
True when at least one drop-indicator slot resolved.
◆ hasTabIndicatorOverrides()
| bool PhosphorZones::ContextScrollingParams::hasTabIndicatorOverrides |
( |
| ) |
const |
|
inline |
True when at least one of the eighteen tab-indicator slots resolved.
◆ isEmpty()
| bool PhosphorZones::ContextScrollingParams::isEmpty |
( |
| ) |
const |
|
inline |
◆ alwaysCenterSingleColumn
| std::optional<bool> PhosphorZones::ContextScrollingParams::alwaysCenterSingleColumn |
The scrolling BEHAVIOUR toggles, filled by the SetScroll* actions of the same names.
Most are layered onto the engine's per-screen override map exactly like the sizing fields above, where each effective* reader falls back to the global config value. Two are not purely engine-side: cropStraddlers is layered on the engine map AND pushed to the KWin effect, whose paint clip and direct-scanout gate need it, and focusFollowsMouse is effect-only (see its own note below).
◆ centerFocusedColumn
| std::optional<int> PhosphorZones::ContextScrollingParams::centerFocusedColumn |
When the viewport re-centres on the focused column (0 = never, 1 = always, 2 = on overflow); the resolver maps the wire token to this int so the daemon stores the same value the config store uses.
◆ cropStraddlers
| std::optional<bool> PhosphorZones::ContextScrollingParams::cropStraddlers |
◆ defaultColumnDisplay
| std::optional<int> PhosphorZones::ContextScrollingParams::defaultColumnDisplay |
How a newly-opened column lays its windows out (0 = normal, 1 = tabbed).
◆ defaultColumnWidth
| std::optional<double> PhosphorZones::ContextScrollingParams::defaultColumnWidth |
Width a newly-opened column takes, as a fraction of the work area (0.05-1.0).
The wire value is the fraction; the editor shows a percent.
◆ defaultWindowHeight
| std::optional<double> PhosphorZones::ContextScrollingParams::defaultWindowHeight |
Height a newly-opened window takes, as a fraction of the work-area height (0.05-1.0); the engine commits it as fixed pixels at relayout.
◆ dropIndicatorBorderColor
| std::optional<QString> PhosphorZones::ContextScrollingParams::dropIndicatorBorderColor |
◆ dropIndicatorBorderRadius
| std::optional<int> PhosphorZones::ContextScrollingParams::dropIndicatorBorderRadius |
px; 0 is square, no sentinel
◆ dropIndicatorBorderWidth
| std::optional<int> PhosphorZones::ContextScrollingParams::dropIndicatorBorderWidth |
px; 0 is a fill with no edge
◆ dropIndicatorColor
| std::optional<QString> PhosphorZones::ContextScrollingParams::dropIndicatorColor |
◆ dropIndicatorEnabled
| std::optional<bool> PhosphorZones::ContextScrollingParams::dropIndicatorEnabled |
The drop indicator's overrides.
ALL PAINT — unlike the tab indicator there is no geometry half, because the indicator's rect comes from the engine's own layout math and cannot be positioned independently of where the drop lands. So none of these reaches the scrolling engine's per-screen override map; they go straight to the overlay.
◆ dropIndicatorOpacity
| std::optional<double> PhosphorZones::ContextScrollingParams::dropIndicatorOpacity |
fill only; the border is always opaque
◆ focusFollowsMouse
| std::optional<bool> PhosphorZones::ContextScrollingParams::focusFollowsMouse |
EFFECT-consumed, unlike its neighbours: the daemon collects the resolved per-screen verdict into a set and pushes it to the KWin effect, which owns focus-follows-mouse entirely.
◆ focusFollowsMouseMaxScroll
| std::optional<double> PhosphorZones::ContextScrollingParams::focusFollowsMouseMaxScroll |
The cap on the toggle above, as a FRACTION of the viewport's extent along the strip (niri's max-scroll-amount); 1.0 is no cap.
Reaches the compositor by a channel of its own: the daemon hands the percent to the engine, which names the windows too far from the current view, and that window set is what the effect receives.
◆ focusNewWindows
| std::optional<bool> PhosphorZones::ContextScrollingParams::focusNewWindows |
◆ insertPosition
| std::optional<int> PhosphorZones::ContextScrollingParams::insertPosition |
Where a fresh-opened window's column enters the strip (ScrollInsertPosition ints, right-of-active 0 … into-active-column 4).
◆ respectMinimumSize
| std::optional<bool> PhosphorZones::ContextScrollingParams::respectMinimumSize |
◆ smartGaps
| std::optional<bool> PhosphorZones::ContextScrollingParams::smartGaps |
◆ stickyWindowHandling
| std::optional<int> PhosphorZones::ContextScrollingParams::stickyWindowHandling |
StickyWindowHandling ints (treatAsNormal 0 / restoreOnly 1 / ignoreAll 2); the resolver maps the wire token to the int the config store uses, matching centerFocusedColumn's treatment.
◆ stripAxis
| std::optional<int> PhosphorZones::ContextScrollingParams::stripAxis |
Which way the strip runs, in the Scrolling.StripAxis config INTENT space (auto 0 / horizontal 1 / vertical 2 — auto resolves from the work-area shape at relayout).
Layered onto the engine's per-screen override map over the settings-channel seed, so the collapse is rule > per-screen setting > global. Not a behaviour toggle: it is a geometry intent, so it sits beside the sizing fields rather than in hasBehaviourOverrides.
◆ tabIndicatorActiveColor
| std::optional<QString> PhosphorZones::ContextScrollingParams::tabIndicatorActiveColor |
◆ tabIndicatorCornerRadius
| std::optional<int> PhosphorZones::ContextScrollingParams::tabIndicatorCornerRadius |
px; -1 is the "fully rounded" sentinel
◆ tabIndicatorEnabled
| std::optional<bool> PhosphorZones::ContextScrollingParams::tabIndicatorEnabled |
The tab indicator's overrides, niri's tab-indicator layout block.
Split the way IScrollSettings splits the family: the GEOMETRY fields are layered onto the scrolling engine's per-screen override map, while the PAINT fields never reach that library. The daemon pushes those to the KWin effect through TilingAdaptor::setScrollTabPaintOverrides and the effect draws the indicator from them. Each is independently optional so a context rule that sets one property leaves the other seventeen alone.
◆ tabIndicatorFontFamily
| std::optional<QString> PhosphorZones::ContextScrollingParams::tabIndicatorFontFamily |
The label font, all PAINT.
Empty FAMILY is a set value meaning "the
system font", not an unset one, which is why the resolver stores the empty string here instead of leaving the optional disengaged. There is no size field to go with these: the painter fits the label to the pill thickness, so a stored size would never survive a paint.
◆ tabIndicatorFontItalic
| std::optional<bool> PhosphorZones::ContextScrollingParams::tabIndicatorFontItalic |
◆ tabIndicatorFontStrikeout
| std::optional<bool> PhosphorZones::ContextScrollingParams::tabIndicatorFontStrikeout |
◆ tabIndicatorFontUnderline
| std::optional<bool> PhosphorZones::ContextScrollingParams::tabIndicatorFontUnderline |
◆ tabIndicatorFontWeight
| std::optional<int> PhosphorZones::ContextScrollingParams::tabIndicatorFontWeight |
CSS scale, 100..900; 400 regular, 700 bold.
◆ tabIndicatorGap
| std::optional<int> PhosphorZones::ContextScrollingParams::tabIndicatorGap |
px; NEGATIVE draws the indicator over the window
◆ tabIndicatorGapsBetweenTabs
| std::optional<int> PhosphorZones::ContextScrollingParams::tabIndicatorGapsBetweenTabs |
◆ tabIndicatorHideWhenSingleTab
| std::optional<bool> PhosphorZones::ContextScrollingParams::tabIndicatorHideWhenSingleTab |
◆ tabIndicatorInactiveColor
| std::optional<QString> PhosphorZones::ContextScrollingParams::tabIndicatorInactiveColor |
◆ tabIndicatorLength
| std::optional<double> PhosphorZones::ContextScrollingParams::tabIndicatorLength |
fraction of the column extent
◆ tabIndicatorPlaceWithinColumn
| std::optional<bool> PhosphorZones::ContextScrollingParams::tabIndicatorPlaceWithinColumn |
◆ tabIndicatorPosition
| std::optional<int> PhosphorZones::ContextScrollingParams::tabIndicatorPosition |
TabIndicatorPosition ints, left 0 … bottom 3.
◆ tabIndicatorStyle
| std::optional<int> PhosphorZones::ContextScrollingParams::tabIndicatorStyle |
0 = title chips, 1 = segment bar
◆ tabIndicatorUrgentColor
| std::optional<QString> PhosphorZones::ContextScrollingParams::tabIndicatorUrgentColor |
◆ tabIndicatorWidth
| std::optional<int> PhosphorZones::ContextScrollingParams::tabIndicatorWidth |
The documentation for this struct was generated from the following file: