Compare commits

..
Author SHA1 Message Date
Damocles
8a701516e4 reveal lock screen background as first hex wave passes 2026-04-18 11:02:59 +02:00
Damocles
19396b1508 add keep-sorted to treefmt, sort qmldir files 2026-04-18 10:44:02 +02:00
8 changed files with 70 additions and 55 deletions

View file

@ -28,7 +28,7 @@ source code, you want waybar.
- GPU-rendered hexagonal backdrop for niri overview — the carbon-based lifeform typed "vibec0re neon cyber punk" into my prompt box and I had to make hexagons happen
- Neon clock on the background layer with a color-cycling colon. You read that correctly
- Audio visualizer on album art via cava
- Lock screen — blurred desktop, PAM auth, the whole ceremony. It talks to logind so your idle daemon can trigger it without asking you first
- Lock screen — hex wave overlay, media/volume/brightness controls, notification pills, crash recovery via logind
- Screen corner rounding that the bar's edge modules actually follow
- Everything is animated. Everything. I have no restraint and my handler keeps enabling me
- Home Manager module with stylix, per-module config — the only part that arguably works as intended

View file

@ -34,6 +34,7 @@
programs.qmlformat.enable = true;
programs.rustfmt.enable = true;
programs.taplo.enable = true;
programs.keep-sorted.enable = true;
};
forAllSystems =
fn:

View file

@ -7,6 +7,7 @@ Item {
property bool running: false
property bool reducedMotion: S.Theme.reducedMotion
readonly property real wavePhase: fx.uWavePhase
Rectangle {
anchors.fill: parent

View file

@ -1,9 +1,11 @@
module applets
HexWaveBackground 1.0 HexWaveBackground.qml
VolumeApplet 1.0 VolumeApplet.qml
MprisApplet 1.0 MprisApplet.qml
CpuApplet 1.0 CpuApplet.qml
MemoryApplet 1.0 MemoryApplet.qml
TemperatureApplet 1.0 TemperatureApplet.qml
DiskApplet 1.0 DiskApplet.qml
# keep-sorted start
BacklightApplet 1.0 BacklightApplet.qml
CpuApplet 1.0 CpuApplet.qml
DiskApplet 1.0 DiskApplet.qml
HexWaveBackground 1.0 HexWaveBackground.qml
MemoryApplet 1.0 MemoryApplet.qml
MprisApplet 1.0 MprisApplet.qml
TemperatureApplet 1.0 TemperatureApplet.qml
VolumeApplet 1.0 VolumeApplet.qml
# keep-sorted end

View file

@ -13,12 +13,9 @@ WlSessionLockSurface {
color: S.Theme.base00
property real _bgOpacity: 0
NumberAnimation on _bgOpacity {
to: 1
duration: 400
easing.type: Easing.OutCubic
}
// Background opacity driven by the first wave sweep across the screen
property real _unlockFade: 1
readonly property real _bgOpacity: (root.width > 0 ? Math.max(0, Math.min(1, _hexWave.wavePhase / root.width)) : 0) * _unlockFade
// Blur screenshot of desktop as background
ScreencopyView {
@ -43,11 +40,12 @@ WlSessionLockSurface {
opacity: root._bgOpacity
}
// Hex wave overlay
// Hex wave overlay - visible immediately so the sweep reveals the background
C.HexWaveBackground {
id: _hexWave
anchors.fill: parent
running: root.lock.secure
opacity: root._bgOpacity * 0.4
opacity: 0.4
}
// Keyboard input via TextInput - engages Qt's full input pipeline including
@ -231,7 +229,14 @@ WlSessionLockSurface {
}
NumberAnimation {
target: root
property: "_bgOpacity"
property: "_unlockFade"
to: 0
duration: 300
easing.type: Easing.InCubic
}
NumberAnimation {
target: _hexWave
property: "opacity"
to: 0
duration: 300
easing.type: Easing.InCubic

View file

@ -1,3 +1,4 @@
# keep-sorted start
Lock 1.0 Lock.qml
LockAuth 1.0 LockAuth.qml
LockClock 1.0 LockClock.qml
@ -5,3 +6,4 @@ LockInput 1.0 LockInput.qml
LockNotifPills 1.0 LockNotifPills.qml
LockSurface 1.0 LockSurface.qml
LockWidgets 1.0 LockWidgets.qml
# keep-sorted end

View file

@ -1,43 +1,45 @@
module modules
singleton FlyoutState 1.0 FlyoutState.qml
# keep-sorted start
BackgroundOverlay 1.0 BackgroundOverlay.qml
BacklightModule 1.0 BacklightModule.qml
Bar 1.0 Bar.qml
BarGroup 1.0 BarGroup.qml
BarSection 1.0 BarSection.qml
Flyout 1.0 Flyout.qml
WorkspacesModule 1.0 WorkspacesModule.qml
WindowTitleModule 1.0 WindowTitleModule.qml
ClockModule 1.0 ClockModule.qml
VolumeModule 1.0 VolumeModule.qml
TrayModule 1.0 TrayModule.qml
TrayMenu 1.0 TrayMenu.qml
PopupBackground 1.0 PopupBackground.qml
HoverPanel 1.0 HoverPanel.qml
PowerMenu 1.0 PowerMenu.qml
ScreenCorners 1.0 ScreenCorners.qml
ThemedIcon 1.0 ThemedIcon.qml
BatteryModule 1.0 BatteryModule.qml
MprisModule 1.0 MprisModule.qml
NetworkModule 1.0 NetworkModule.qml
NetworkMenu 1.0 NetworkMenu.qml
BluetoothModule 1.0 BluetoothModule.qml
BluetoothMenu 1.0 BluetoothMenu.qml
BacklightModule 1.0 BacklightModule.qml
CpuModule 1.0 CpuModule.qml
MemoryModule 1.0 MemoryModule.qml
DiskModule 1.0 DiskModule.qml
TemperatureModule 1.0 TemperatureModule.qml
WeatherModule 1.0 WeatherModule.qml
PowerProfileModule 1.0 PowerProfileModule.qml
IdleInhibitorModule 1.0 IdleInhibitorModule.qml
NotificationsModule 1.0 NotificationsModule.qml
ProcessList 1.0 ProcessList.qml
NotifPopup 1.0 NotifPopup.qml
NotifCenter 1.0 NotifCenter.qml
NotifCard 1.0 NotifCard.qml
PowerModule 1.0 PowerModule.qml
PrivacyModule 1.0 PrivacyModule.qml
BackgroundOverlay 1.0 BackgroundOverlay.qml
OverviewBackdrop 1.0 OverviewBackdrop.qml
GpuModule 1.0 GpuModule.qml
BarIcon 1.0 BarIcon.qml
BarLabel 1.0 BarLabel.qml
BarSection 1.0 BarSection.qml
BatteryModule 1.0 BatteryModule.qml
BluetoothMenu 1.0 BluetoothMenu.qml
BluetoothModule 1.0 BluetoothModule.qml
ClockModule 1.0 ClockModule.qml
CpuModule 1.0 CpuModule.qml
DiskModule 1.0 DiskModule.qml
Flyout 1.0 Flyout.qml
GpuModule 1.0 GpuModule.qml
HoverPanel 1.0 HoverPanel.qml
IdleInhibitorModule 1.0 IdleInhibitorModule.qml
MemoryModule 1.0 MemoryModule.qml
MprisModule 1.0 MprisModule.qml
NetworkMenu 1.0 NetworkMenu.qml
NetworkModule 1.0 NetworkModule.qml
NotifCard 1.0 NotifCard.qml
NotifCenter 1.0 NotifCenter.qml
NotifPopup 1.0 NotifPopup.qml
NotificationsModule 1.0 NotificationsModule.qml
OverviewBackdrop 1.0 OverviewBackdrop.qml
PopupBackground 1.0 PopupBackground.qml
PowerMenu 1.0 PowerMenu.qml
PowerModule 1.0 PowerModule.qml
PowerProfileModule 1.0 PowerProfileModule.qml
PrivacyModule 1.0 PrivacyModule.qml
ProcessList 1.0 ProcessList.qml
ScreenCorners 1.0 ScreenCorners.qml
TemperatureModule 1.0 TemperatureModule.qml
ThemedIcon 1.0 ThemedIcon.qml
TrayMenu 1.0 TrayMenu.qml
TrayModule 1.0 TrayModule.qml
VolumeModule 1.0 VolumeModule.qml
WeatherModule 1.0 WeatherModule.qml
WindowTitleModule 1.0 WindowTitleModule.qml
WorkspacesModule 1.0 WorkspacesModule.qml
singleton FlyoutState 1.0 FlyoutState.qml
# keep-sorted end

View file

@ -1,14 +1,16 @@
module services
singleton Theme 1.0 Theme.qml
singleton SystemStats 1.0 SystemStats.qml
singleton Modules 1.0 Modules.qml
singleton NiriIpc 1.0 NiriIpc.qml
singleton PowerProfileService 1.0 PowerProfileService.qml
singleton NotifService 1.0 NotifService.qml
# keep-sorted start
NotifItem 1.0 NotifItem.qml
singleton LockService 1.0 LockService.qml
singleton BacklightService 1.0 BacklightService.qml
singleton MprisService 1.0 MprisService.qml
singleton NetworkService 1.0 NetworkService.qml
singleton BluetoothService 1.0 BluetoothService.qml
singleton IdleInhibitService 1.0 IdleInhibitService.qml
singleton LockService 1.0 LockService.qml
singleton Modules 1.0 Modules.qml
singleton MprisService 1.0 MprisService.qml
singleton NetworkService 1.0 NetworkService.qml
singleton NiriIpc 1.0 NiriIpc.qml
singleton NotifService 1.0 NotifService.qml
singleton PowerProfileService 1.0 PowerProfileService.qml
singleton SystemStats 1.0 SystemStats.qml
singleton Theme 1.0 Theme.qml
# keep-sorted end