Brightness is a singleton nothing instantiates, so 'qs ipc call brightness increment' answered 'Target not found' while still exiting 0 — the lever's || brightnessctl fallback never fired. Pull the singleton in so the lever owns brightness again.
82 lines
3.1 KiB
QML
82 lines
3.1 KiB
QML
//@ pragma UseQApplication
|
|
//@ pragma Env QS_NO_RELOAD_POPUP=1
|
|
//@ pragma Env QT_QUICK_CONTROLS_STYLE=Basic
|
|
//@ pragma Env QT_QUICK_FLICKABLE_WHEEL_DECELERATION=10000
|
|
|
|
// Souveraine shell entry — `qs -c souveraine`.
|
|
// One family, two modes (desktop and phone), converging over time. Panels
|
|
// that differ by form factor are gated on Config.options.souveraine.phone
|
|
// inside SouveraineFamily; a panel is "homogenized" when its gate is gone.
|
|
// No panelFamily switching: this config loads SouveraineFamily, period.
|
|
// ii's tree is borrowed underneath (composed by deploy.sh) until each piece
|
|
// is owned outright.
|
|
|
|
import "modules/common"
|
|
import "modules/ii/lock"
|
|
import "modules/souveraine/boot"
|
|
import "services"
|
|
import "panelFamilies"
|
|
|
|
import QtQuick
|
|
import QtQuick.Window
|
|
import Quickshell
|
|
import Quickshell.Io
|
|
import Quickshell.Hyprland
|
|
|
|
ShellRoot {
|
|
id: root
|
|
|
|
// NOTE: no DeviceConnectNotification here — the phone's ii snapshot
|
|
// predates it, and version-dependent types don't belong in the entry file.
|
|
ReloadPopup {}
|
|
|
|
// Boot bloom overlay. Top-level (NOT inside the Config.ready LazyLoader) so
|
|
// it maps as Hyprland's first surface, before the rest of the shell loads —
|
|
// covering all of Hyprland's boot render and continuing the C splash's
|
|
// bloom until the lockscreen is secure. Signals the splash to release DRM
|
|
// master on its first frame; LockScreen clears GlobalStates.bootBloomActive.
|
|
BootBloom {}
|
|
|
|
// The lock, top-level and ungated, for both of the reasons the docs give.
|
|
//
|
|
// Boot (`session-authority-boot-order.md` Phase A.1): no surface may
|
|
// precede the lock decision. Behind `Config.ready` it could, and once did —
|
|
// an NM password dialog rendered before the lockscreen.
|
|
//
|
|
// Reload (TASK-48): a `LazyLoader` whose `active` is false when quickshell
|
|
// propagates reloads has no item to hand its successor, so the new
|
|
// `WlSessionLock` never adopts the live compositor lock. As a direct child
|
|
// of `ShellRoot` — itself a `ReloadPropagator` — this matches its
|
|
// predecessor positionally, with no `reloadableId` needed, and the adopt
|
|
// path in `LockScreen.qml` finally has something to adopt.
|
|
//
|
|
// It must stay a direct child. Wrapping it in any conditional loader
|
|
// reintroduces both failures at once.
|
|
Lock {}
|
|
|
|
// A normal XDG app window in this process. Its desktop/sidebar launchers
|
|
// call the `settings` IPC target; no second Quickshell/session scope is
|
|
// created.
|
|
SettingsWindow {}
|
|
|
|
Component.onCompleted: {
|
|
MaterialThemeLoader.reapplyTheme()
|
|
SessiondBridge.claimAuthority()
|
|
SessiondBridge.load()
|
|
Hyprsunset.load()
|
|
FirstRunExperience.load()
|
|
ConflictKiller.load()
|
|
CrashReporter.start()
|
|
Cliphist.refresh()
|
|
Wallpapers.load()
|
|
Updates.load()
|
|
// Brightness is a singleton nothing references, so its IPC target
|
|
// never registers and the lever's `||` fallback never fires.
|
|
Brightness.initializeMonitor(0)
|
|
}
|
|
|
|
LazyLoader {
|
|
active: Config.ready
|
|
component: SouveraineFamily {}
|
|
}
|
|
}
|