forked from snowarch/iNiR
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathShellWafflePanels.qml
More file actions
96 lines (87 loc) · 5.39 KB
/
Copy pathShellWafflePanels.qml
File metadata and controls
96 lines (87 loc) · 5.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import qs.modules.bootGreeting
import qs.modules.cheatsheet
import qs.modules.lock
import qs.modules.onScreenKeyboard
import qs.modules.recordingOsd
import qs.modules.overview
import qs.modules.polkit
import qs.modules.regionSelector
import qs.modules.screenCorners
import qs.modules.sessionScreen
import qs.modules.wallpaperSelector
import qs.modules.ii.overlay
import "modules/clipboard" as ClipboardModule
import qs.modules.waffle.actionCenter
import qs.modules.waffle.altSwitcher as WaffleAltSwitcherModule
import qs.modules.waffle.background as WaffleBackgroundModule
import qs.modules.waffle.bar as WaffleBarModule
import qs.modules.waffle.clipboard as WaffleClipboardModule
import qs.modules.waffle.notificationCenter
import qs.modules.waffle.onScreenDisplay as WaffleOSDModule
import qs.modules.waffle.startMenu
import qs.modules.waffle.widgets
import qs.modules.waffle.backdrop as WaffleBackdropModule
import qs.modules.waffle.notificationPopup as WaffleNotificationPopupModule
import qs.modules.waffle.taskview as WaffleTaskViewModule
import QtQuick
import Quickshell
import qs.modules.common
import "."
Item {
// Immediate panels — visible at first frame or must catch early events
// Uses `active` which loads synchronously (required for first-frame visibility)
component PanelLoader: LazyLoader {
required property string identifier
property bool extraCondition: true
active: Config.ready && (Config.options?.enabledPanels ?? []).includes(identifier) && extraCondition
}
// Deferred panels — loaded asynchronously after first frame to reduce boot contention
// Uses `loading` to pre-load in spare frame time, then `activeAsync` to activate without blocking
component DeferredPanelLoader: LazyLoader {
required property string identifier
property bool extraCondition: true
// Pre-load async when Config is ready (in spare frame time)
loading: Config.ready && (Config.options?.enabledPanels ?? []).includes(identifier) && extraCondition
// Activate async when deferred phase is ready (doesn't block UI)
activeAsync: Config.ready && GlobalStates.deferredPanelsReady && (Config.options?.enabledPanels ?? []).includes(identifier) && extraCondition
}
// === Immediate panels (first frame + early event capture) ===
PanelLoader { identifier: "wBar"; component: WaffleBarModule.WaffleBar {} }
PanelLoader { identifier: "wBackground"; component: WaffleBackgroundModule.WaffleBackground {} }
PanelLoader { identifier: "wBackdrop"; extraCondition: Config.options?.waffles?.background?.backdrop?.enable ?? true; component: WaffleBackdropModule.WaffleBackdrop {} }
PanelLoader { identifier: "wNotificationPopup"; component: WaffleNotificationPopupModule.WaffleNotificationPopup {} }
PanelLoader { identifier: "wOnScreenDisplay"; component: WaffleOSDModule.WaffleOSD {} }
// === Deferred panels (user-triggered or non-critical at boot) ===
DeferredPanelLoader { identifier: "wStartMenu"; component: WaffleStartMenu {} }
DeferredPanelLoader { identifier: "wActionCenter"; component: WaffleActionCenter {} }
DeferredPanelLoader { identifier: "wNotificationCenter"; component: WaffleNotificationCenter {} }
DeferredPanelLoader { identifier: "wWidgets"; extraCondition: Config.options?.waffles?.modules?.widgets ?? true; component: WaffleWidgets {} }
DeferredPanelLoader { identifier: "wLock"; component: Lock {} }
DeferredPanelLoader { identifier: "wPolkit"; component: Polkit {} }
DeferredPanelLoader { identifier: "wSessionScreen"; component: SessionScreen {} }
DeferredPanelLoader { identifier: "wTaskView"; component: WaffleTaskViewModule.WaffleTaskView {} }
// Shared modules that work with waffle (all deferred — user-triggered)
DeferredPanelLoader { identifier: "iiBootGreeting"; component: BootGreeting {} }
DeferredPanelLoader { identifier: "iiCheatsheet"; component: Cheatsheet {} }
DeferredPanelLoader { identifier: "iiOnScreenKeyboard"; component: OnScreenKeyboard {} }
DeferredPanelLoader { identifier: "iiOverlay"; component: Overlay {} }
DeferredPanelLoader { identifier: "iiOverview"; component: Overview {} }
DeferredPanelLoader { identifier: "iiRegionSelector"; component: RegionSelector {} }
DeferredPanelLoader { identifier: "iiScreenCorners"; component: ScreenCorners {} }
DeferredPanelLoader { identifier: "iiWallpaperSelector"; component: WallpaperSelector {} }
DeferredPanelLoader { identifier: "iiCoverflowSelector"; component: WallpaperCoverflow {} }
DeferredPanelLoader { identifier: "iiClipboard"; extraCondition: Config.options?.panelFamily !== "waffle"; component: ClipboardModule.ClipboardPanel {} }
DeferredPanelLoader { identifier: "iiRecordingOsd"; component: RecordingOsd {} }
// Waffle Clipboard - handles IPC when panelFamily === "waffle"
LazyLoader {
loading: Config.ready && Config.options?.panelFamily === "waffle"
activeAsync: Config.ready && GlobalStates.deferredPanelsReady && Config.options?.panelFamily === "waffle"
component: WaffleClipboardModule.WaffleClipboard {}
}
// Waffle AltSwitcher - handles IPC when panelFamily === "waffle"
LazyLoader {
loading: Config.ready && Config.options?.panelFamily === "waffle"
activeAsync: Config.ready && GlobalStates.deferredPanelsReady && Config.options?.panelFamily === "waffle"
component: WaffleAltSwitcherModule.WaffleAltSwitcher {}
}
}