Phosphor
Qt6 / Wayland library suite for window-management tools
 
Loading...
Searching...
No Matches
AutotileConstants.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2026 fuddlesworth
2// SPDX-License-Identifier: LGPL-2.1-or-later
3
4#pragma once
5
7#include <QLatin1String>
8#include <QMetaType>
9#include <limits>
10
25namespace PhosphorTiles {
26
34namespace AutotileDefaults {
35// Default values used by tiling primitives when no setting is supplied.
36// The application config layer surfaces these as the user-facing defaults
37// (see ConfigDefaults::autotile{SplitRatio,MasterCount,MaxWindows} in
38// src/config/configdefaults.h, which delegate here).
39constexpr qreal DefaultSplitRatio = 0.5;
40constexpr int DefaultMasterCount = 1;
41constexpr int DefaultMaxWindows = 5;
42inline constexpr QLatin1String DefaultAlgorithmId{"bsp"};
43constexpr qreal DefaultSplitRatioStep = 0.05;
44constexpr qreal MinSplitRatioStep = 0.01;
45constexpr qreal MaxSplitRatioStep = 0.25;
46
47constexpr qreal MinSplitRatio = 0.1;
48constexpr qreal MaxSplitRatio = 0.9;
49constexpr int MinMasterCount = 1;
50constexpr int MaxMasterCount = 5;
51constexpr int DefaultInnerGap = 8;
52constexpr int DefaultOuterGap = 8;
53constexpr int MinGap = 0;
54constexpr int MaxGap = 50;
55constexpr int MinRectSizePx = 50;
56constexpr int GapEdgeThresholdPx = 5;
57constexpr int MinMaxWindows = 1;
58constexpr int MaxMaxWindows = 12;
59// Sentinel returned by PerScreenConfigResolver::effectiveMaxWindows() when the
60// user has selected AutotileOverflowBehavior::Unlimited. INT_MAX/2 — not
61// INT_MAX — so any caller that does `effectiveMaxWindows(...) + 1` (e.g.
62// growth-headroom calculations) can't overflow.
63constexpr int UnlimitedMaxWindowsSentinel = std::numeric_limits<int>::max() / 2;
64constexpr int MaxZones = 256;
65constexpr int MaxRuntimeTreeDepth = 50;
69constexpr int MaxTreeNodesForJs = MaxZones * 2;
70constexpr qreal SplitRatioHysteresis = 0.05;
71constexpr int MinMetadataWindows = 1;
72constexpr int MaxMetadataWindows = 100;
73constexpr int MinInsertPosition = 0;
74constexpr int MaxInsertPosition = 2;
75// Animation duration + stagger limits previously lived here for
76// historical reasons but are NOT autotile-specific — they bound every
77// animation in the system. Moved to
78// libs/phosphor-animation/include/PhosphorAnimation/AnimationLimits.h
79// (PhosphorAnimation::Limits namespace). Consumers that need them
80// should include that header directly; ConfigDefaults already does.
86constexpr int ScriptWatchdogTimeoutMs = 100;
87
90constexpr bool isNumericMetaType(int typeId)
91{
92 return typeId == QMetaType::Double || typeId == QMetaType::Float || typeId == QMetaType::Int
93 || typeId == QMetaType::UInt || typeId == QMetaType::LongLong || typeId == QMetaType::ULongLong;
94}
95} // namespace AutotileDefaults
96
100namespace AutotileJsonKeys {
101// TilingState keys
102inline constexpr QLatin1String ScreenName{"screenName"};
103inline constexpr QLatin1String WindowOrder{"windowOrder"};
104inline constexpr QLatin1String FloatingWindows{"floatingWindows"};
105inline constexpr QLatin1String FocusedWindow{"focusedWindow"};
106inline constexpr QLatin1String MasterCount{"masterCount"};
107inline constexpr QLatin1String SplitRatio{"splitRatio"};
108inline constexpr QLatin1String SplitRatioStep{"splitRatioStep"};
109inline constexpr QLatin1String CustomParams{"customParams"};
110
111// AutotileConfig keys
112inline constexpr QLatin1String PerAlgorithmSettings{"perAlgorithmSettings"};
113inline constexpr QLatin1String AlgorithmId{"algorithmId"};
114inline constexpr QLatin1String InnerGap{"innerGap"};
115inline constexpr QLatin1String OuterGap{"outerGap"};
116
117// Per-side outer-gap keys — canonical definition in phosphor-layout-api's
118// GapKeys.h (shared with phosphor-zones ZoneJsonKeys). Re-exported here so
119// AutotileJsonKeys callers can keep their fully-qualified references
120// unchanged while both libraries consume a single source of truth.
126
127inline constexpr QLatin1String SmartGaps{"smartGaps"};
128inline constexpr QLatin1String FocusNewWindows{"focusNewWindows"};
129inline constexpr QLatin1String FocusFollowsMouse{"focusFollowsMouse"};
130inline constexpr QLatin1String InsertPosition{"insertPosition"};
131inline constexpr QLatin1String RespectMinimumSize{"respectMinimumSize"};
132inline constexpr QLatin1String MaxWindows{"maxWindows"};
133inline constexpr QLatin1String OverflowBehavior{"overflowBehavior"};
134inline constexpr QLatin1String CenteredMasterSplitRatio{"centeredMasterSplitRatio"};
135inline constexpr QLatin1String CenteredMasterMasterCount{"centeredMasterMasterCount"};
136inline constexpr QLatin1String SplitTreeKey{"splitTree"};
137} // namespace AutotileJsonKeys
138
146namespace AutotileJsonValues {
147// OverflowBehavior values
148inline constexpr QLatin1String OverflowFloat{"float"};
149inline constexpr QLatin1String OverflowUnlimited{"unlimited"};
150// InsertPosition values
151inline constexpr QLatin1String InsertEnd{"end"};
152inline constexpr QLatin1String InsertAfterFocused{"afterFocused"};
153inline constexpr QLatin1String InsertAsMaster{"asMaster"};
154} // namespace AutotileJsonValues
155
161namespace AutotileJsonKeys {
167} // namespace AutotileJsonKeys
168
170 Float = 0,
171 Unlimited = 1
172};
173
175 End = 0,
176 AfterFocused = 1,
177 AsMaster = 2
178};
179
181 Float = 0,
182 Reorder = 1
183};
184
185} // namespace PhosphorTiles
constexpr QLatin1String OuterGapLeft
Definition GapKeys.h:22
constexpr QLatin1String UsePerSideOuterGap
Definition GapKeys.h:19
constexpr QLatin1String OuterGapBottom
Definition GapKeys.h:21
constexpr QLatin1String OuterGapRight
Definition GapKeys.h:23
constexpr QLatin1String OuterGapTop
Definition GapKeys.h:20
constexpr qreal MaxSplitRatio
Definition AutotileConstants.h:48
constexpr int DefaultMasterCount
Single master window.
Definition AutotileConstants.h:40
constexpr int DefaultInnerGap
Definition AutotileConstants.h:51
constexpr int DefaultOuterGap
Definition AutotileConstants.h:52
constexpr bool isNumericMetaType(int typeId)
Returns true if typeId is a numeric QMetaType (Double, Float, Int, UInt, LongLong,...
Definition AutotileConstants.h:90
constexpr int MaxMaxWindows
Definition AutotileConstants.h:58
constexpr int MinInsertPosition
Definition AutotileConstants.h:73
constexpr QLatin1String DefaultAlgorithmId
Default tiling algorithm.
Definition AutotileConstants.h:42
constexpr int MaxMasterCount
Definition AutotileConstants.h:50
constexpr int MinRectSizePx
Definition AutotileConstants.h:55
constexpr int MaxZones
Definition AutotileConstants.h:64
constexpr int MinMaxWindows
Definition AutotileConstants.h:57
constexpr int UnlimitedMaxWindowsSentinel
Definition AutotileConstants.h:63
constexpr qreal DefaultSplitRatio
50/50 split when nothing else specified
Definition AutotileConstants.h:39
constexpr int GapEdgeThresholdPx
Definition AutotileConstants.h:56
constexpr int MaxTreeNodesForJs
Cap on total node count when converting a SplitTree to a QJSValue object.
Definition AutotileConstants.h:69
constexpr int MinGap
Definition AutotileConstants.h:53
constexpr int ScriptWatchdogTimeoutMs
Watchdog deadline for a single JS evaluation guarded by ScriptedAlgorithm::guardedCall().
Definition AutotileConstants.h:86
constexpr int MaxInsertPosition
Definition AutotileConstants.h:74
constexpr int DefaultMaxWindows
Maximum tiled windows before overflow.
Definition AutotileConstants.h:41
constexpr int MaxMetadataWindows
Definition AutotileConstants.h:72
constexpr int MinMetadataWindows
Definition AutotileConstants.h:71
constexpr qreal MaxSplitRatioStep
Definition AutotileConstants.h:45
constexpr qreal MinSplitRatio
Definition AutotileConstants.h:47
constexpr qreal SplitRatioHysteresis
Band within which algorithm-switch ratio reset is suppressed.
Definition AutotileConstants.h:70
constexpr int MaxRuntimeTreeDepth
Maximum recursion depth for split tree operations.
Definition AutotileConstants.h:65
constexpr qreal DefaultSplitRatioStep
Definition AutotileConstants.h:43
constexpr qreal MinSplitRatioStep
Definition AutotileConstants.h:44
constexpr int MaxGap
Definition AutotileConstants.h:54
constexpr int MinMasterCount
Definition AutotileConstants.h:49
constexpr QLatin1String FocusedWindow
Definition AutotileConstants.h:105
constexpr QLatin1String CenteredMasterSplitRatio
Definition AutotileConstants.h:134
constexpr QLatin1String ScreenName
Definition AutotileConstants.h:102
constexpr QLatin1String FocusFollowsMouse
Definition AutotileConstants.h:129
constexpr QLatin1String WindowOrder
Definition AutotileConstants.h:103
constexpr QLatin1String OuterGap
Definition AutotileConstants.h:115
constexpr QLatin1String InsertPosition
Definition AutotileConstants.h:130
constexpr QLatin1String PerAlgorithmSettings
Definition AutotileConstants.h:112
constexpr QLatin1String CenteredMasterMasterCount
Definition AutotileConstants.h:135
constexpr QLatin1String SplitRatioStep
Definition AutotileConstants.h:108
constexpr QLatin1String FloatingWindows
Definition AutotileConstants.h:104
constexpr QLatin1String MaxWindows
Definition AutotileConstants.h:132
constexpr QLatin1String SplitRatio
Definition AutotileConstants.h:107
constexpr QLatin1String OverflowBehavior
Definition AutotileConstants.h:133
constexpr QLatin1String SmartGaps
< canonical: PhosphorLayoutApi/GapKeys.h
Definition AutotileConstants.h:127
constexpr QLatin1String CustomParams
Definition AutotileConstants.h:109
constexpr QLatin1String InnerGap
Definition AutotileConstants.h:114
constexpr QLatin1String AlgorithmId
Definition AutotileConstants.h:113
constexpr QLatin1String MasterCount
Definition AutotileConstants.h:106
constexpr QLatin1String RespectMinimumSize
Definition AutotileConstants.h:131
constexpr QLatin1String FocusNewWindows
Definition AutotileConstants.h:128
constexpr QLatin1String SplitTreeKey
Definition AutotileConstants.h:136
constexpr QLatin1String OverflowFloat
Definition AutotileConstants.h:148
constexpr QLatin1String InsertAsMaster
Definition AutotileConstants.h:153
constexpr QLatin1String InsertAfterFocused
Definition AutotileConstants.h:152
constexpr QLatin1String InsertEnd
Definition AutotileConstants.h:151
constexpr QLatin1String OverflowUnlimited
Definition AutotileConstants.h:149
Definition AutotileEngine.h:71
AutotileDragBehavior
Definition AutotileConstants.h:180
AutotileInsertPosition
Definition AutotileConstants.h:174
AutotileOverflowBehavior
Definition AutotileConstants.h:169