nosignal-shell/modules/nexus/PageCompRegistry.qml
28allday 152923f5d8 fold: bake NoSignal shell patches into the fork (Phase 2)
We now own the pinned shell, so the runtime patches that the pacman-hook +
patch-script machinery re-applied after every caelestia-shell upgrade are
baked directly into source. Folds in all five caelestia-shell-targeting
patches from the builder's `os updates/`:

- Lock PAM (F1, blocker): ship faillock-free assets/pam.d/caelestia and point
  modules/lock/Pam.qml's passwd PamContext at it (config "passwd" -> "caelestia").
  A desktop screen-lock must never lock the user out of their own session.
- Updates page: add modules/nexus/pages/UpdatesPage.qml + register it in the
  first System slot of PageCompRegistry.qml.
- Additions page: add modules/nexus/pages/AdditionsPage.qml + register it in the
  Plugins slot; relabel Plugins -> Additions in PageRegistry.qml.
- Sudo toggle: add modules/nexus/common/SudoToggleRow.qml + insert it into
  ServicesPage.qml after the Smart colour scheme toggle.
- Wi-Fi wrong-password recovery: NetworkConnection.qml saved-profile branch now
  passes a real callback that forgets the bad profile and reopens the dialog.

The builder will drop the corresponding patch-*.sh calls + pacman hooks and
bump NOSIGNAL_SHELL_COMMIT to this commit.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-13 22:08:59 +01:00

190 lines
4.6 KiB
QML

pragma Singleton
import QtQuick
import QtQuick.Layouts
import Caelestia.Config
import qs.components
import qs.services
import qs.modules.nexus.common
import qs.modules.nexus.pages
import qs.modules.nexus.pages.audio
import qs.modules.nexus.pages.bluetooth
import qs.modules.nexus.pages.panels
import qs.modules.nexus.pages.wallandstyle
import qs.modules.nexus.pages.panels.taskbar
QtObject {
id: root
readonly property list<Component> pageComps: [
// Appearance
Component {
// Wallpaper & style
StackPage {
Component {
WallpaperAndStyle {}
}
Component {
WallpaperSelect {}
}
Component {
WallpaperCategory {}
}
Component {
ColourSelect {}
}
}
},
// Connectivity
Component {
// Network
StackPage {
Component {
NetworkPage {}
}
}
},
Component {
// Bluetooth
StackPage {
Component {
BluetoothPage {}
}
Component {
BtDeviceInfo {}
}
Component {
BluetoothPairing {}
}
}
},
Component {
// Audio
StackPage {
Component {
AudioPage {}
}
Component {
AppVolumes {}
}
}
},
// System
Component {
// Updates (NoSignal)
StackPage {
Component {
UpdatesPage {}
}
}
},
Component {
// Additions (NoSignal)
StackPage {
Component {
AdditionsPage {}
}
}
},
// Shell
Component {
// Panels
StackPage {
Component {
PanelsPage {}
}
Component {
DashboardPanel {}
}
Component {
TaskbarPanel {}
}
Component {
LauncherPanel {}
}
Component {
SidebarPanel {}
}
// Taskbar component sub-pages
Component {
BarWorkspaces {}
}
Component {
BarActiveWindow {}
}
Component {
BarTray {}
}
Component {
BarStatusIcons {}
}
Component {
BarClock {}
}
}
},
Component {
// Services
StackPage {
Component {
ServicesPage {}
}
}
},
Component {
// Language & region
StackPage {
Component {
LanguageAndRegion {}
}
}
},
// About
Component {
StackPage {
Component {
AboutPage {}
}
}
}
]
readonly property Component placeholderComp: Component {
PlaceholderComp {}
}
component PlaceholderComp: Item {
property NexusState nState // To avoid the warning from non-existent property
ColumnLayout {
anchors.centerIn: parent
spacing: Tokens.padding.extraSmall
MaterialIcon {
Layout.alignment: Qt.AlignHCenter
text: "handyman"
color: Colours.palette.m3outlineVariant
font: Tokens.font.icon.extraLarge
}
StyledText {
Layout.alignment: Qt.AlignHCenter
text: qsTr("Page under construction")
color: Colours.palette.m3outlineVariant
font: Tokens.font.title.large
}
StyledText {
Layout.alignment: Qt.AlignHCenter
text: qsTr("This page will be available in a future update.")
color: Colours.palette.m3outlineVariant
font: Tokens.font.body.large
}
}
}
}