From 74967d798c9dc772ecfc6d44a9dc810a59f3fddf Mon Sep 17 00:00:00 2001 From: Damocles Date: Fri, 17 Apr 2026 22:42:39 +0200 Subject: [PATCH] add per-applet toggle options for lock screen widgets --- README.md | 2 ++ nix/hm-module.nix | 13 ++++++++++++- shell/lock/LockSurface.qml | 4 ++-- shell/services/Modules.qml | 4 +++- 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 60f347e..ba11722 100644 --- a/README.md +++ b/README.md @@ -107,6 +107,8 @@ programs.nova-shell.modules = { disk.enable = false; # the number will only make you anxious power.enable = false; # if you enjoy living dangerously without a logout button lock.enable = false; # if you prefer your session unlocked and your secrets free + lock.mpris = false; # hide media controls on the lock screen + lock.volume = false; # hide volume slider on the lock screen # modules with extra config backlight.step = 2; # brightness adjustment % diff --git a/nix/hm-module.nix b/nix/hm-module.nix index 0f7082f..6114608 100644 --- a/nix/hm-module.nix +++ b/nix/hm-module.nix @@ -96,11 +96,22 @@ in "power" "backgroundOverlay" "overviewBackdrop" - "lock" ] (name: moduleOpt name { }); in simpleModules // { + lock = moduleOpt "lock" { + mpris = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Show media controls on the lock screen."; + }; + volume = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Show volume slider on the lock screen."; + }; + }; notifications = moduleOpt "notifications" { timeout = lib.mkOption { type = lib.types.int; diff --git a/shell/lock/LockSurface.qml b/shell/lock/LockSurface.qml index 8cfa1cb..56dc9dc 100644 --- a/shell/lock/LockSurface.qml +++ b/shell/lock/LockSurface.qml @@ -203,7 +203,7 @@ WlSessionLockSurface { color: Qt.rgba(M.Theme.base01.r, M.Theme.base01.g, M.Theme.base01.b, 0.7) border.color: Qt.rgba(M.Theme.base03.r, M.Theme.base03.g, M.Theme.base03.b, 0.3) border.width: 1 - visible: _mprisPlayer !== null + visible: (M.Modules.lock.mpris ?? true) && _mprisPlayer !== null readonly property var _mprisPlayers: (Mpris.players.values ?? []).filter(p => p.trackTitle || p.playbackState === MprisPlaybackState.Playing || p.playbackState === MprisPlaybackState.Paused) readonly property var _mprisPlayer: _mprisPlayers[0] ?? null @@ -233,7 +233,7 @@ WlSessionLockSurface { color: Qt.rgba(M.Theme.base01.r, M.Theme.base01.g, M.Theme.base01.b, 0.7) border.color: Qt.rgba(M.Theme.base03.r, M.Theme.base03.g, M.Theme.base03.b, 0.3) border.width: 1 - visible: Pipewire.defaultAudioSink !== null + visible: (M.Modules.lock.volume ?? true) && Pipewire.defaultAudioSink !== null PwObjectTracker { objects: [Pipewire.defaultAudioSink] diff --git a/shell/services/Modules.qml b/shell/services/Modules.qml index 705ba43..4a0c826 100644 --- a/shell/services/Modules.qml +++ b/shell/services/Modules.qml @@ -93,7 +93,9 @@ QtObject { enable: true }) property var lock: ({ - enable: true + enable: true, + mpris: true, + volume: true }) property var statsDaemon: ({ interval: -1