59 if (!groupName.startsWith(prefix))
61 QString remainder = groupName.mid(prefix.size());
62 if (remainder.isEmpty())
65 constexpr QLatin1String kActivityTag(
":Activity:");
66 constexpr QLatin1String kDesktopTag(
":Desktop:");
67 int actIdx = remainder.indexOf(kActivityTag);
69 const QString
activity = remainder.mid(actIdx + kActivityTag.size());
72 remainder = remainder.left(actIdx);
74 int deskIdx = remainder.indexOf(kDesktopTag);
77 int desktop = remainder.mid(deskIdx + kDesktopTag.size()).toInt(&ok);
78 if (ok && desktop > 0)
80 remainder = remainder.left(deskIdx);
335 const QUuid parsed = QUuid::fromString(layoutId);
336 entry.
snappingLayout = parsed.isNull() ? layoutId : parsed.toString();
631 return QStringLiteral(
"snapping");
633 return QStringLiteral(
"autotile");
635 return QStringLiteral(
"scrolling");
660 Q_UNREACHABLE_RETURN(QStringLiteral(
"invalid"));
673 if (wire == QLatin1String(
"snapping")) {
676 if (wire == QLatin1String(
"autotile")) {
679 if (wire == QLatin1String(
"scrolling")) {
constexpr QLatin1String ScrollingId
Scrolling has no layout entity, so its whole id is the bare sentinel — it exists so a mode-only Scrol...
Definition LayoutId.h:37
QString makeAutotileId(const QString &algorithmId)
Definition LayoutId.h:76
bool isScrolling(const QString &id)
Definition LayoutId.h:44
bool isAutotile(const QString &id)
Definition LayoutId.h:39
QString extractAlgorithmId(const QString &id)
Extract the algorithm id portion from an autotile preview id.
Definition LayoutId.h:64
Definition IWindowTrackingService.h:23
size_t qHash(const LayoutAssignmentKey &key, size_t seed=0)
Definition AssignmentEntry.h:87
constexpr QLatin1String NoTilingAlgorithm
Reserved value of AssignmentEntry::tilingAlgorithm meaning "this context explicitly uses NO tiling al...
Definition AssignmentEntry.h:190
std::optional< AssignmentEntry::Mode > modeFromWireString(const QString &wire)
Inverse of modeToWireString.
Definition AssignmentEntry.h:671
QString modeToWireString(AssignmentEntry::Mode mode)
Canonical wire-string for an AssignmentEntry::Mode.
Definition AssignmentEntry.h:627
constexpr QLatin1String NoScrollingTemplate
Reserved value of AssignmentEntry::scrollingTemplateLayout meaning "this context explicitly uses NO s...
Definition AssignmentEntry.h:132
constexpr QLatin1String NoSnappingLayout
Reserved value of AssignmentEntry::snappingLayout meaning "this context explicitly uses NO snapping l...
Definition AssignmentEntry.h:173
QList< AssignmentEntry::Mode > allModes()
Iteration order for every AssignmentEntry::Mode value.
Definition AssignmentEntry.h:695
Explicit per-context assignment entry storing every mode's payload.
Definition AssignmentEntry.h:202
QString snappingLayout
Definition AssignmentEntry.h:228
static AssignmentEntry fromLayoutId(const QString &layoutId)
Create a fresh AssignmentEntry from a layoutId string.
Definition AssignmentEntry.h:344
static AssignmentEntry fromLayoutId(const QString &layoutId, const AssignmentEntry &existing)
Update an existing AssignmentEntry from a layoutId, preserving the "other" field.
Definition AssignmentEntry.h:308
QString activeLayoutId() const
Definition AssignmentEntry.h:254
Mode
Per-context engine selection.
Definition AssignmentEntry.h:212
@ Scrolling
The niri-style scrolling engine (PhosphorScrollEngine): windows form columns on an endless strip per ...
Definition AssignmentEntry.h:225
@ Snapping
Definition AssignmentEntry.h:213
@ Autotile
Definition AssignmentEntry.h:214
QString scrollingTemplateLayout
Id of the native scrolling template (ScrollingTemplate) a Scrolling context uses for its seed bluepri...
Definition AssignmentEntry.h:252
bool operator==(const AssignmentEntry &other) const
Definition AssignmentEntry.h:297
bool isValid() const
True when the entry carries a layout/algorithm PAYLOAD — including the reserved opt-out word,...
Definition AssignmentEntry.h:293
QString tilingAlgorithm
Definition AssignmentEntry.h:229
Mode mode
Definition AssignmentEntry.h:227
Per-context gap override resolved from rules.
Definition AssignmentEntry.h:362
std::optional< int > outerGapLeft
Definition AssignmentEntry.h:368
std::optional< int > outerGapBottom
Definition AssignmentEntry.h:367
std::optional< int > outerGapTop
Definition AssignmentEntry.h:366
bool isEmpty() const
Definition AssignmentEntry.h:371
std::optional< bool > usePerSideOuterGap
Definition AssignmentEntry.h:365
std::optional< int > outerGap
Definition AssignmentEntry.h:364
std::optional< int > innerGap
Definition AssignmentEntry.h:363
std::optional< int > outerGapRight
Definition AssignmentEntry.h:369
Per-context overlay-property overrides resolved from window-rule actions.
Definition AssignmentEntry.h:400
std::optional< int > style
Definition AssignmentEntry.h:403
std::optional< QColor > inactiveColor
Definition AssignmentEntry.h:405
std::optional< int > borderRadius
Definition AssignmentEntry.h:410
std::optional< int > borderWidth
Definition AssignmentEntry.h:409
QVariantMap shaderParams
Definition AssignmentEntry.h:402
std::optional< double > inactiveOpacity
Definition AssignmentEntry.h:408
std::optional< QString > shaderId
Definition AssignmentEntry.h:401
bool isEmpty() const
Definition AssignmentEntry.h:413
std::optional< QColor > highlightColor
Definition AssignmentEntry.h:404
std::optional< QColor > borderColor
Definition AssignmentEntry.h:406
std::optional< double > activeOpacity
Definition AssignmentEntry.h:407
std::optional< bool > showZoneNumbers
Definition AssignmentEntry.h:411
Per-context scrolling parameter overrides resolved from context rules.
Definition AssignmentEntry.h:481
std::optional< bool > tabIndicatorFontUnderline
Definition AssignmentEntry.h:562
std::optional< QString > tabIndicatorInactiveColor
Definition AssignmentEntry.h:552
std::optional< bool > dropIndicatorEnabled
The drop indicator's overrides.
Definition AssignmentEntry.h:570
std::optional< bool > smartGaps
Definition AssignmentEntry.h:509
std::optional< bool > tabIndicatorPlaceWithinColumn
Definition AssignmentEntry.h:543
std::optional< int > centerFocusedColumn
When the viewport re-centres on the focused column (0 = never, 1 = always, 2 = on overflow); the reso...
Definition AssignmentEntry.h:488
std::optional< QString > tabIndicatorActiveColor
Definition AssignmentEntry.h:551
std::optional< int > dropIndicatorBorderRadius
px; 0 is square, no sentinel
Definition AssignmentEntry.h:575
std::optional< QString > tabIndicatorFontFamily
The label font, all PAINT.
Definition AssignmentEntry.h:559
std::optional< QString > dropIndicatorBorderColor
Definition AssignmentEntry.h:572
std::optional< int > tabIndicatorPosition
TabIndicatorPosition ints, left 0 … bottom 3.
Definition AssignmentEntry.h:547
bool hasTabIndicatorOverrides() const
True when at least one of the eighteen tab-indicator slots resolved.
Definition AssignmentEntry.h:591
std::optional< int > tabIndicatorFontWeight
CSS scale, 100..900; 400 regular, 700 bold.
Definition AssignmentEntry.h:560
std::optional< int > tabIndicatorStyle
0 = title chips, 1 = segment bar
Definition AssignmentEntry.h:548
std::optional< bool > focusNewWindows
Definition AssignmentEntry.h:508
std::optional< int > tabIndicatorGap
px; NEGATIVE draws the indicator over the window
Definition AssignmentEntry.h:544
std::optional< double > defaultColumnWidth
Width a newly-opened column takes, as a fraction of the work area (0.05-1.0).
Definition AssignmentEntry.h:484
std::optional< int > dropIndicatorBorderWidth
px; 0 is a fill with no edge
Definition AssignmentEntry.h:574
std::optional< int > insertPosition
Where a fresh-opened window's column enters the strip (ScrollInsertPosition ints, right-of-active 0 …...
Definition AssignmentEntry.h:493
std::optional< bool > tabIndicatorHideWhenSingleTab
Definition AssignmentEntry.h:542
std::optional< bool > tabIndicatorEnabled
The tab indicator's overrides, niri's tab-indicator layout block.
Definition AssignmentEntry.h:541
std::optional< int > tabIndicatorGapsBetweenTabs
px
Definition AssignmentEntry.h:549
std::optional< bool > focusFollowsMouse
EFFECT-consumed, unlike its neighbours: the daemon collects the resolved per-screen verdict into a se...
Definition AssignmentEntry.h:513
std::optional< bool > tabIndicatorFontStrikeout
Definition AssignmentEntry.h:563
std::optional< QString > tabIndicatorUrgentColor
Definition AssignmentEntry.h:553
std::optional< bool > respectMinimumSize
Definition AssignmentEntry.h:506
std::optional< int > stickyWindowHandling
StickyWindowHandling ints (treatAsNormal 0 / restoreOnly 1 / ignoreAll 2); the resolver maps the wire...
Definition AssignmentEntry.h:523
std::optional< bool > tabIndicatorFontItalic
Definition AssignmentEntry.h:561
bool hasDropIndicatorOverrides() const
True when at least one drop-indicator slot resolved.
Definition AssignmentEntry.h:584
std::optional< int > defaultColumnDisplay
How a newly-opened column lays its windows out (0 = normal, 1 = tabbed).
Definition AssignmentEntry.h:490
std::optional< int > tabIndicatorCornerRadius
px; -1 is the "fully rounded" sentinel
Definition AssignmentEntry.h:550
std::optional< double > focusFollowsMouseMaxScroll
The cap on the toggle above, as a FRACTION of the viewport's extent along the strip (niri's max-scrol...
Definition AssignmentEntry.h:519
bool isEmpty() const
Definition AssignmentEntry.h:609
std::optional< bool > alwaysCenterSingleColumn
The scrolling BEHAVIOUR toggles, filled by the SetScroll* actions of the same names.
Definition AssignmentEntry.h:505
std::optional< double > tabIndicatorLength
fraction of the column extent
Definition AssignmentEntry.h:546
std::optional< int > stripAxis
Which way the strip runs, in the Scrolling.StripAxis config INTENT space (auto 0 / horizontal 1 / ver...
Definition AssignmentEntry.h:531
std::optional< double > defaultWindowHeight
Height a newly-opened window takes, as a fraction of the work-area height (0.05-1....
Definition AssignmentEntry.h:496
std::optional< double > dropIndicatorOpacity
fill only; the border is always opaque
Definition AssignmentEntry.h:573
std::optional< int > tabIndicatorWidth
px thickness
Definition AssignmentEntry.h:545
std::optional< bool > cropStraddlers
Definition AssignmentEntry.h:507
std::optional< QString > dropIndicatorColor
Definition AssignmentEntry.h:571
bool hasBehaviourOverrides() const
True when at least one of the seven behaviour toggles resolved, or the scroll cap did.
Definition AssignmentEntry.h:603
Per-context autotile parameter overrides resolved from context rules.
Definition AssignmentEntry.h:434
std::optional< int > insertPosition
The AutotileInsertPosition int (0 = End, 1 = AfterFocused, 2 = AsMaster); the resolver maps the wire ...
Definition AssignmentEntry.h:441
std::optional< int > dragBehavior
The AutotileDragBehavior int (0 = Float, 1 = Reorder).
Definition AssignmentEntry.h:446
std::optional< int > masterCount
Definition AssignmentEntry.h:437
std::optional< int > overflowBehavior
The AutotileOverflowBehavior int (0 = Float, 1 = Unlimited).
Definition AssignmentEntry.h:443
QString algorithmParamTarget
A SetAlgorithmParam override: the target algorithm id and the custom-param values to layer over that ...
Definition AssignmentEntry.h:451
std::optional< int > maxWindows
Definition AssignmentEntry.h:435
QVariantMap algorithmParams
Definition AssignmentEntry.h:452
std::optional< double > splitRatio
Definition AssignmentEntry.h:436
bool isEmpty() const
Definition AssignmentEntry.h:454
Key for layout assignment (screen + desktop + activity)
Definition AssignmentEntry.h:33
static LayoutAssignmentKey fromGroupName(const QString &groupName, const QString &prefix)
Parse a "<prefix><screenId>[:Desktop:N][:Activity:uuid]" group name.
Definition AssignmentEntry.h:56
bool operator==(const LayoutAssignmentKey &other) const
Definition AssignmentEntry.h:38
QString screenId
Definition AssignmentEntry.h:34
int virtualDesktop
Definition AssignmentEntry.h:35
QString activity
Definition AssignmentEntry.h:36