20#include <PhosphorRules/RuleEvaluator.h>
21#include <PhosphorRules/RuleStore.h>
33class ScrollingTemplateStore;
92 Q_PROPERTY(
int layoutCount READ layoutCount NOTIFY layoutsChanged)
95 Q_PROPERTY(QString layoutDirectory READ layoutDirectory WRITE setLayoutDirectory NOTIFY layoutDirectoryChanged)
139 LayoutRegistry(PhosphorRules::RuleStore* ruleStore, QString layoutSubdirectory, QObject* parent =
nullptr);
146 return m_layouts.size();
167 return QStringLiteral(
" (Copy)");
172 return m_activeLayout;
181 return m_layoutDirectory;
315 std::function<std::optional<int>(
const QString& screenId,
int virtualDesktop,
const QString& activity)>
418 return m_previousLayout;
421 Q_INVOKABLE
void assignLayout(
const QString& screenId,
int virtualDesktop,
const QString& activity,
Layout* layout);
422 Q_INVOKABLE
void assignLayoutById(
const QString& screenId,
int virtualDesktop,
const QString& activity,
423 const QString& layoutId);
439 const QString& templateId);
446 const QString& activity)
const override;
453 m_scrollingTemplateStore = store;
457 return m_scrollingTemplateStore;
467 m_defaultScrollingTemplateProvider = std::move(provider);
483 const QString& activity = QString())
const override;
495 return layoutForScreen(screenId, currentVirtualDesktopForScreen(screenId), m_currentActivity);
523 const QString& mode = QString())
const override;
531 bool resolveContextLocked(
const QString& screenId,
int virtualDesktop,
const QString& activity)
const override;
543 const QString& activity)
const;
557 const QString& activity)
const;
577 const QString& activity)
const override;
587 const QString& activity)
const override;
598 const QString& activity)
const;
609 const QString& activity)
const;
617 if (m_screenOrientationProvider) {
618 if (
const auto token = m_screenOrientationProvider(screenId)) {
640 query.screenOrientation = screenOrientationToken(screenId);
656 if (m_colorSchemeProvider) {
657 if (
const auto token = m_colorSchemeProvider()) {
672 query.colorScheme = colorSchemeToken();
687 const QString& orientationToken,
const QString& colorSchemeToken)
689 return escapeKeyComponent(modeToken) + QLatin1String(
"|al:") + escapeKeyComponent(activeLayoutId)
690 + QLatin1String(
"|or:") + escapeKeyComponent(orientationToken) + QLatin1String(
"|cs:")
691 + escapeKeyComponent(colorSchemeToken);
703 const QString& colorSchemeToken)
705 return (tiledCount ? (QLatin1String(
"twc:") + QString::number(*tiledCount)) : QString()) + QLatin1String(
"|or:")
706 + escapeKeyComponent(orientationToken) + QLatin1String(
"|cs:") + escapeKeyComponent(colorSchemeToken);
720 QString escaped = component;
721 escaped.replace(QLatin1Char(
'%'), QLatin1String(
"%25"));
722 escaped.replace(QLatin1Char(
'|'), QLatin1String(
"%7C"));
727 const QString& activity = QString());
737 const QString& activity = QString())
const;
775 const QString& activity = QString())
const override;
787 const QString& activity = QString())
const;
807 const QString& activity = QString())
const;
810 const QString& activity = QString())
const;
825 const QString& activity = QString())
const override;
839 const QString& activity = QString())
const;
852 const QString& activity = QString())
const;
854 const QString& activity = QString())
const override;
862 const QString& activity = QString())
const;
869 const QString& activity)
const override;
938 static constexpr QLatin1String QuickSlotsSnappingKey{
"snapping"};
939 static constexpr QLatin1String QuickSlotsAutotileKey{
"autotile"};
940 static constexpr QLatin1String QuickSlotsScrollingKey{
"scrolling"};
948 return m_quickLayoutSlots[slotIndexFor(mode)];
988 return m_currentVirtualDesktop;
992 return m_currentActivity;
996 m_currentVirtualDesktop = desktop;
1005 if (m_currentVirtualDesktopProvider) {
1006 if (
const auto desktop = m_currentVirtualDesktopProvider(screenId); desktop && *desktop >= 1) {
1010 return m_currentVirtualDesktop;
1017 m_currentVirtualDesktopProvider = std::move(provider);
1021 m_currentActivity = activity;
1046 return static_cast<int>(m_contextResolveCache.size());
1065 void ensureLayoutDirectory();
1066 void loadLayoutsFromDirectory(
const QString& directory);
1067 Layout* restoreSystemLayout(
const QUuid&
id,
const QString& systemPath);
1068 QString layoutFilePath(
const QUuid&
id)
const;
1069 QString quickLayoutsFilePath()
const;
1070 QString layoutSettingsFilePath()
const;
1071 void readQuickLayouts();
1072 void writeQuickLayouts();
1081 static constexpr int QuickSlotCount = 9;
1093 if (mode == AssignmentEntry::Autotile) {
1096 return mode == AssignmentEntry::Scrolling ? 2 : 0;
1098 Layout* cycleLayoutImpl(
const QString& screenId,
int direction);
1099 bool shouldSkipLayoutAssignment(
const QString& layoutId,
const QString& context)
const;
1100 void emitLayoutAssigned(
const QString& screenId,
int virtualDesktop,
const QString& layoutId);
1121 bool applyLayoutToScreen(
const QString& screenId, Layout* layout);
1124 void migrateLegacyAutotileOverrides();
1165 std::optional<AssignmentEntry> resolveAssignmentEntry(
const QString& screenId,
int virtualDesktop,
1166 const QString& activity)
const;
1173 bool hasExactContextRule(
const QString& screenId,
int virtualDesktop,
const QString& activity)
const;
1191 const PhosphorRules::Rule* findExactContextRule(
const QString& screenId,
int virtualDesktop,
1192 const QString& activity)
const;
1199 bool hasExplicitSnappingModePin(
const QString& screenId,
int virtualDesktop,
const QString& activity,
1200 const AssignmentEntry& entry)
const;
1210 std::optional<QString> resolveStoredAssignmentId(
const QString& screenId,
int virtualDesktop,
1211 const QString& activity)
const;
1215 QUuid exactContextRuleId(
const QString& screenId,
int virtualDesktop,
const QString& activity)
const;
1234 bool upsertAssignmentRule(
const QString& screenId,
int virtualDesktop,
const QString& activity,
1235 const AssignmentEntry& entry);
1239 bool removeAssignmentRule(
const QString& screenId,
int virtualDesktop,
const QString& activity);
1254 template<
typename KeyT,
typename DecodeFn,
typename Val
idFn,
typename FamilyFn>
1255 void applyBatchAssignments(
const QHash<KeyT, QString>& assignments, DecodeFn decode, ValidFn valid,
1256 FamilyFn familyMatches,
int emitDesktop,
const char* label);
1270 AssignmentEntry resolveDefaultAssignmentEntryRaw()
const;
1278 AssignmentEntry resolveDefaultAssignmentEntry()
const;
1288 AssignmentEntry resolveDefaultAssignmentEntryForContext(
const QString& screenId,
int virtualDesktop,
1289 const QString& activity)
const;
1300 bool hasMatchingAssignmentRule(
const QString& screenId,
int virtualDesktop,
const QString& activity)
const;
1322 template<
typename V,
typename ComputeFn>
1323 V resolveCachedContext(QHash<ContextResolveKey, V>& cache, quint64& cacheRevision,
const QString& screenId,
1324 int virtualDesktop,
const QString& activity,
const QString& mode, ComputeFn&& compute)
const
1326 const quint64 revision = m_ruleStore->ruleSet().revision();
1327 if (revision != cacheRevision) {
1329 cacheRevision = revision;
1331 const ContextResolveKey key{screenId, virtualDesktop, activity, mode};
1332 const auto cached = cache.constFind(key);
1333 if (cached != cache.constEnd()) {
1334 return cached.value();
1336 V value = compute();
1337 constexpr qsizetype kMaxEntries = 256;
1338 if (cache.size() >= kMaxEntries) {
1341 cache.insert(key, value);
1362 struct RuleSlotResolution
1364 std::optional<AssignmentEntry> modeEntry;
1365 std::optional<QString> snappingLayout;
1366 std::optional<QString> tilingAlgorithm;
1367 std::optional<QString> scrollingTemplate;
1376 mutable QHash<ContextResolveKey, std::optional<RuleSlotResolution>> m_contextResolveCache;
1380 mutable quint64 m_contextResolveCacheRevision = 0;
1388 mutable QHash<ContextResolveKey, ContextGapOverride> m_contextGapCache;
1389 mutable quint64 m_contextGapCacheRevision = 0;
1396 mutable QHash<ContextResolveKey, bool> m_contextLockCache;
1397 mutable quint64 m_contextLockCacheRevision = 0;
1405 mutable QHash<ContextResolveKey, std::optional<bool>> m_contextDefaultAssignmentCache;
1406 mutable quint64 m_contextDefaultAssignmentCacheRevision = 0;
1416 std::optional<bool> resolveContextBoolSlot(QHash<ContextResolveKey, std::optional<bool>>& cache,
1417 quint64& cacheRevision, QLatin1StringView actionType,
1418 const QString& screenId,
int virtualDesktop,
1419 const QString& activity)
const;
1427 mutable QHash<ContextResolveKey, std::optional<bool>> m_contextOsdCache;
1428 mutable quint64 m_contextOsdCacheRevision = 0;
1436 mutable QHash<ContextResolveKey, std::optional<bool>> m_contextDragSelectorCache;
1437 mutable quint64 m_contextDragSelectorCacheRevision = 0;
1444 mutable QHash<ContextResolveKey, ContextOverlayOverride> m_contextOverlayCache;
1445 mutable quint64 m_contextOverlayCacheRevision = 0;
1447 std::function<QString()> m_defaultLayoutIdProvider;
1453 std::function<QString()> m_defaultAutotileAlgorithmProvider;
1458 std::function<std::optional<int>(
const QString& screenId,
int virtualDesktop,
const QString& activity)>
1459 m_tiledWindowCountProvider;
1464 std::function<std::optional<QString>(
const QString& screenId)> m_screenOrientationProvider;
1466 std::function<std::optional<QString>()> m_colorSchemeProvider;
1470 ScrollingTemplateStore* m_scrollingTemplateStore =
nullptr;
1474 std::function<QString()> m_defaultScrollingTemplateProvider;
1479 std::function<bool()> m_snappingPreferredProvider;
1484 std::function<bool()> m_defaultAssignmentSuppressedProvider;
1488 PhosphorRules::RuleStore* m_ruleStore =
nullptr;
1490 std::unique_ptr<PhosphorRules::RuleEvaluator> m_evaluator;
1491 QString m_layoutSubdirectory;
1492 QString m_layoutDirectory;
1493 QVector<Layout*> m_layouts;
1494 Layout* m_activeLayout =
nullptr;
1495 Layout* m_previousLayout =
nullptr;
1501 QHash<int, QString> m_quickLayoutSlots[3];
1505 LayoutSettingsStore m_layoutSettings;
1506 int m_currentVirtualDesktop = 1;
1511 std::function<std::optional<int>(
const QString&)> m_currentVirtualDesktopProvider;
1512 QString m_currentActivity;
Enumeration + mutation surface for the in-memory zone-layout catalog.
Definition IZoneLayoutRegistry.h:51
Manual zone-layout registry + per-context assignment store.
Definition LayoutRegistry.h:89
bool removeLayoutById(const QUuid &id) override
AssignmentEntry::Mode modeForScreen(const QString &screenId, int virtualDesktop=0, const QString &activity=QString()) const
bool applyScrollingTemplateToScreen(const QString &screenId, const QString &templateId)
Commit templateId as screenId's scrolling template on the screen's OWN desktop (the template twin of ...
QString layoutDirectory() const
Definition LayoutRegistry.h:179
void applyQuickLayout(AssignmentEntry::Mode mode, int number, const QString &screenId)
void setAllDesktopAssignments(const QHash< QPair< QString, int >, QString > &assignments)
LayoutRegistry(PhosphorRules::RuleStore *ruleStore, QString layoutSubdirectory, QObject *parent=nullptr)
std::optional< bool > resolveContextDragSelectorEnabled(const QString &screenId, int virtualDesktop, const QString &activity) const override
Resolve a per-context override of the drag selector popup — the edge-triggered zone / strip picker of...
QString assignmentIdForScreen(const QString &screenId, int virtualDesktop=0, const QString &activity=QString()) const override
Raw assignment id for a (screen, desktop, activity) context.
QString snappingLayoutForScreen(const QString &screenId, int virtualDesktop=0, const QString &activity=QString()) const
Per-field cascade readers — return the named field from the first entry in the cascade where it is no...
Layout * importLayout(const QString &filePath)
Load a layout from filePath and add it to the registry.
QString screenOrientationToken(const QString &screenId) const
The screen-orientation token from m_screenOrientationProvider ("portrait" / "landscape"),...
Definition LayoutRegistry.h:615
void setDefaultScrollingTemplateProvider(std::function< QString()> provider)
Provider for the DEFAULT scrolling template id (a config setting the daemon owns): consulted when a S...
Definition LayoutRegistry.h:465
int currentVirtualDesktop() const override
Definition LayoutRegistry.h:986
QHash< int, QString > quickLayoutSlots(AssignmentEntry::Mode mode) const
Definition LayoutRegistry.h:946
void stampScreenOrientation(PhosphorRules::WindowQuery &query, const QString &screenId) const
Stamp the screen-orientation token onto query from m_screenOrientationProvider (a no-op when the prov...
Definition LayoutRegistry.h:638
void setColorSchemeProvider(std::function< std::optional< QString >()> provider)
Inject a callback that reports the system colour scheme ("light" / "dark"), or std::nullopt when it i...
Layout * duplicateLayout(Layout *source) override
int layoutCount() const override
Definition LayoutRegistry.h:144
QString storedAssignmentIdForScreen(const QString &screenId, int virtualDesktop=0, const QString &activity=QString()) const
Like assignmentIdForScreen, but WITHOUT the level-1 global default fallback: resolves the same per-co...
void setActiveLayoutById(const QUuid &id) override
void assignScrollingTemplate(const QString &screenId, int virtualDesktop, const QString &activity, const QString &templateId)
Assign templateId as the context's scrolling TEMPLATE (the native ScrollingTemplate whose vocabularie...
Layout * layoutForScreen(const QString &screenId, int virtualDesktop=0, const QString &activity=QString()) const override
Cascade-resolve the manual layout for screenId.
QString rulesVisibleActiveLayoutId(const QString &screenId, int virtualDesktop, const QString &activity) const
The RULES-VISIBLE ActiveLayout value the context resolvers stamp onto their windowless queries: the a...
void setAssignmentEntryDirect(const QString &screenId, int virtualDesktop, const QString &activity, const AssignmentEntry &entry)
Store a full entry directly (from KCM via D-Bus).
void cycleToNextLayout(const QString &screenId)
void setAllActivityAssignments(const QHash< QPair< QString, QString >, QString > &assignments)
static QString duplicateNameSuffix()
The literal suffix duplicateLayout appends to the source layout's name.
Definition LayoutRegistry.h:165
void setAllScreenAssignments(const QHash< QString, QString > &assignments)
Batch setters - clear existing, set new, save once at end.
Layout * resolveLayoutForScreen(const QString &screenId) const override
Resolve layout for screenId using the current desktop/activity context.
Definition LayoutRegistry.h:489
static QString escapeKeyComponent(const QString &component)
Make a cache-key component unambiguous under concatenation.
Definition LayoutRegistry.h:718
Layout * activeLayout() const override
Definition LayoutRegistry.h:170
bool hasExplicitAssignment(const QString &screenId, int virtualDesktop=0, const QString &activity=QString()) const
True iff a context-assignment rule whose match is exactly this (screen, desktop, activity) tuple's sh...
void cycleToPreviousLayout(const QString &screenId)
static QString contextCacheKeyToken(const QString &modeToken, const QString &activeLayoutId, const QString &orientationToken, const QString &colorSchemeToken)
Compose the extra cache-key token a daemon-facing context resolver (gap / lock / overlay / default-as...
Definition LayoutRegistry.h:686
void addLayout(Layout *layout) override
Layout * layout(int index) const override
ContextOverlayOverride resolveContextOverlay(const QString &screenId, int virtualDesktop, const QString &activity) const override
Resolve the per-context overlay-property override (shader / style) for (screen, desktop,...
void setLayoutDirectory(const QString &directory)
void setCurrentVirtualDesktopProvider(std::function< std::optional< int >(const QString &screenId)> provider)
Inject the per-screen desktop resolver above.
Definition LayoutRegistry.h:1015
void saveAutotileOverrides(const QString &algorithmId, const QJsonObject &overrides)
void setQuickLayoutSlot(AssignmentEntry::Mode mode, int number, const QString &layoutId)
ContextScrollingParams resolveContextScrollingParams(const QString &screenId, int virtualDesktop, const QString &activity) const
Resolve the per-context scrolling parameter overrides (default column width / focused-column centerin...
~LayoutRegistry() override
void assignLayoutById(const QString &screenId, int virtualDesktop, const QString &activity, const QString &layoutId)
static bool isLayoutJsonValid(const QJsonObject &json, const QString &context)
Validate json against the bundled layout schema — the single gate every untrusted layout document pas...
ScrollingTemplateStore * scrollingTemplateStore() const override
The native scrolling-template store wired into this registry, or null when none is (lightweight stubs...
Definition LayoutRegistry.h:455
Layout * previousLayout() const
Get the previous active layout (before the most recent setActiveLayout).
Definition LayoutRegistry.h:416
void setSnappingPreferredProvider(std::function< bool()> provider)
Inject a callback that returns true when Snapping is the user's preferred default mode (regardless of...
int currentVirtualDesktopForScreen(const QString &screenId) const override
This screen's current virtual desktop, resolved through the injected provider (the daemon wires it to...
Definition LayoutRegistry.h:1003
void setCurrentActivity(const QString &activity)
Definition LayoutRegistry.h:1019
Layout * defaultLayout() const override
Resolve the effective default layout.
bool exactContextDeclaresEngineMode(const QString &screenId, int virtualDesktop, const QString &activity) const
Whether the exact-context rule for this tuple DECLARES an engine mode, rather than merely being defau...
void clearAssignment(const QString &screenId, int virtualDesktop=0, const QString &activity=QString())
std::optional< bool > resolveContextOsdEnabled(const QString &screenId, int virtualDesktop, const QString &activity) const
Resolve a per-context override of the OSD toggles for the (screen, desktop, activity) context by eval...
int contextResolveCacheSize() const
Current entry count in the resolveAssignmentEntry hot-path cache.
Definition LayoutRegistry.h:1044
bool isContextActiveLayoutSuppressed(const QString &screenId, int virtualDesktop=0, const QString &activity=QString()) const override
True iff the context has NO active layout specifically because the default assignment is suppressed —...
void clearAutotileAssignments()
Flip mode to Snapping for every entry currently in Autotile (preserves snappingLayout + tilingAlgorit...
void setCurrentVirtualDesktop(int desktop)
Definition LayoutRegistry.h:994
bool snappingPreferred() const
True when the snapping-preferred provider is wired AND reports true — i.e.
AssignmentEntry assignmentEntryForScreen(const QString &screenId, int virtualDesktop=0, const QString &activity=QString()) const
Full entry for a (screen, desktop, activity) context.
void stampColorScheme(PhosphorRules::WindowQuery &query) const
Stamp the colour-scheme token onto query from m_colorSchemeProvider (a no-op when unset).
Definition LayoutRegistry.h:670
Layout * layoutByName(const QString &name) const override
Layout * layoutById(const QUuid &id) const override
Resolve a layout by its stable UUID.
void setAllQuickLayoutSlots(AssignmentEntry::Mode mode, const QHash< int, QString > &slots)
bool resolveContextLocked(const QString &screenId, int virtualDesktop, const QString &activity) const override
Resolve whether a context rule locks the active layout for the (screen, desktop, activity) context by...
QHash< QPair< QString, QString >, AssignmentEntry > activityAssignments() const
ContextTilingParams resolveContextTilingParams(const QString &screenId, int virtualDesktop, const QString &activity) const
Resolve the per-context autotile parameter overrides (max windows / split ratio / master count) for (...
QString colorSchemeToken() const
The colour-scheme token from m_colorSchemeProvider ("light" / "dark"), or an empty string when the pr...
Definition LayoutRegistry.h:654
bool removeLayout(Layout *layout) override
ContextGapOverride resolveContextGaps(const QString &screenId, int virtualDesktop, const QString &activity, const QString &mode=QString()) const override
Resolve the per-context gap override for (screen, desktop, activity) by evaluating a windowless Windo...
void setScreenOrientationProvider(std::function< std::optional< QString >(const QString &screenId)> provider)
Inject a callback that returns a screen's orientation token ("portrait" / "landscape"),...
QHash< CombinedAssignmentKey, AssignmentEntry > combinedAssignments() const
Strict Combined-context reader.
AssignmentEntry exactContextEntry(const QString &screenId, int virtualDesktop, const QString &activity) const
The EXPLICIT assignment entry pinned by this exact context tuple's rule, or a default entry when none...
bool purgeLayoutIdFromAssignments(const QString &layoutId)
Drop id from every assignment rule's SetSnappingLayout and SetScrollingTemplate actions,...
void setScrollingTemplateStore(ScrollingTemplateStore *store)
Wire the native template store (borrowed, post-construction like the other injected collaborators; pa...
Definition LayoutRegistry.h:451
std::optional< bool > resolveContextDefaultAssignment(const QString &screenId, int virtualDesktop, const QString &activity) const
Resolve a per-context override of the global default-layout-assignment baseline for the (screen,...
QString currentActivity() const override
Definition LayoutRegistry.h:990
void seedDefaultLayoutSettingsIfFresh(const QJsonObject &defaults)
Seed curated default picker visibility into the sidecar, but ONLY on a fresh install — when neither l...
Layout * layoutForShortcut(AssignmentEntry::Mode mode, int number) const
void setDefaultLayoutIdProvider(std::function< QString()> provider)
Inject a callback that returns the user-configured default layout id (or empty if unset).
ScrollingTemplate scrollingTemplateForContext(const QString &screenId, int virtualDesktop, const QString &activity) const override
The resolved ScrollingTemplate for a scrolling context, by value — invalid when the cascade has no Sc...
void setDefaultAssignmentSuppressedProvider(std::function< bool()> provider)
Inject a callback that returns true when the user has opted to suppress the synthesized level-1 defau...
void layoutDirectoryChanged()
QString scrollingTemplateLayoutForScreen(const QString &screenId, int virtualDesktop=0, const QString &activity=QString()) const
Raw template-field sibling of the two getters above: NOT mode-gated, so a dormant template preserved ...
void setDefaultAutotileAlgorithmProvider(std::function< QString()> provider)
Inject a callback that returns the user-configured default autotile algorithm id (or empty if autotil...
QJsonObject loadAutotileOverrides(const QString &algorithmId) const override
Per-algorithm autotile settings (gaps, shader, hiddenFromSelector, …) stored in the unified layout-se...
bool scrollingTemplateExplicitlyNone(const QString &screenId, int virtualDesktop, const QString &activity) const override
Mode-gated like scrollingTemplateForContext rather than like the raw getter above: a token preserved ...
QString tilingAlgorithmForScreen(const QString &screenId, int virtualDesktop=0, const QString &activity=QString()) const override
Raw id of the tiling algorithm active for the (screenId, virtualDesktop, activity) context,...
void saveLayout(Layout *layout)
static QString assignmentCacheKeyToken(const std::optional< int > &tiledCount, const QString &orientationToken, const QString &colorSchemeToken)
The resolveAssignmentEntry cache's own extra token.
Definition LayoutRegistry.h:702
QVector< Layout * > builtInLayouts() const
QHash< QPair< QString, int >, AssignmentEntry > desktopAssignments() const
The three projection readers return the FULL AssignmentEntry per context (mode + all three payload fi...
void setTiledWindowCountProvider(std::function< std::optional< int >(const QString &screenId, int virtualDesktop, const QString &activity)> provider)
Inject a callback that returns the tiled-window count for a screen, or std::nullopt when the screen i...
void setActiveLayout(Layout *layout) override
void assignLayout(const QString &screenId, int virtualDesktop, const QString &activity, Layout *layout)
bool exportLayout(Layout *layout, const QString &filePath)
Write layout to filePath as a standalone layout document.
int restoreAutotileAssignments()
Reverse direction of clearAutotileAssignments FOR THE ASSIGNMENT RULES ONLY (the wiped quick-layout s...
void createBuiltInLayouts()
bool isDefaultAssignmentSuppressedForContext(const QString &screenId, int virtualDesktop=0, const QString &activity=QString()) const
True iff the SYNTHESIZED default (the level-1 provider layout / autotile algorithm) is suppressed for...
void setAllCombinedAssignments(const QHash< CombinedAssignmentKey, QString > &assignments)
Combined-context (screen + desktop + activity) batch setter — the triple-axis sibling of the Activity...
QVector< Layout * > layouts() const override
Enumerate every known layout.
Definition LayoutRegistry.h:148
Represents a collection of zones that form a layout.
Definition Layout.h:42
Definition IWindowTrackingService.h:23
size_t qHash(const LayoutAssignmentKey &key, size_t seed=0)
Definition AssignmentEntry.h:87
Explicit per-context assignment entry storing every mode's payload.
Definition AssignmentEntry.h:202
Mode
Per-context engine selection.
Definition AssignmentEntry.h:212
Triple-axis key for the Combined-context batch API.
Definition LayoutRegistry.h:47
int virtualDesktop
Definition LayoutRegistry.h:49
QString activity
Definition LayoutRegistry.h:50
QString screenId
Definition LayoutRegistry.h:48
bool operator==(const CombinedAssignmentKey &other) const
Definition LayoutRegistry.h:52
Per-context gap override resolved from rules.
Definition AssignmentEntry.h:362
Per-context overlay-property overrides resolved from window-rule actions.
Definition AssignmentEntry.h:400
Lookup key for the LayoutRegistry context-resolver caches.
Definition ContextResolveKey.h:17
Per-context scrolling parameter overrides resolved from context rules.
Definition AssignmentEntry.h:481
Per-context autotile parameter overrides resolved from context rules.
Definition AssignmentEntry.h:434