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 - 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 - Neon clock on the background layer with a color-cycling colon. You read that correctly
- Audio visualizer on album art via cava - 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 - 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 - 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 - 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.qmlformat.enable = true;
programs.rustfmt.enable = true; programs.rustfmt.enable = true;
programs.taplo.enable = true; programs.taplo.enable = true;
programs.keep-sorted.enable = true;
}; };
forAllSystems = forAllSystems =
fn: fn:

View file

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

View file

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

View file

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

View file

@ -1,43 +1,45 @@
module modules 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 Bar 1.0 Bar.qml
BarGroup 1.0 BarGroup.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 BarIcon 1.0 BarIcon.qml
BarLabel 1.0 BarLabel.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 module services
singleton Theme 1.0 Theme.qml # keep-sorted start
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
NotifItem 1.0 NotifItem.qml NotifItem 1.0 NotifItem.qml
singleton LockService 1.0 LockService.qml
singleton BacklightService 1.0 BacklightService.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 BluetoothService 1.0 BluetoothService.qml
singleton IdleInhibitService 1.0 IdleInhibitService.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