fix: lock action calls moonlock directly instead of loginctl

loginctl lock-session requires a D-Bus listener that is
difficult to set up reliably. Direct moonlock invocation
is simpler and works immediately.
Also removes CSS fade-in animation (low-fps on layer shell).
This commit is contained in:
nevaforget 2026-03-27 15:12:56 +01:00
parent 004e3d2855
commit 934a92384c
4 changed files with 5 additions and 17 deletions

View File

@ -4,7 +4,7 @@
# Maintainer: Dominik Kressler # Maintainer: Dominik Kressler
pkgname=moonset-git pkgname=moonset-git
pkgver=0.1.0.r6.g63bd7cf pkgver=0.1.0.r7.g004e3d2
pkgrel=1 pkgrel=1
pkgdesc="A Wayland session power menu with GTK4 and Layer Shell" pkgdesc="A Wayland session power menu with GTK4 and Layer Shell"
arch=('any') arch=('any')

View File

@ -8,8 +8,8 @@ POWER_TIMEOUT = 30
def lock() -> None: def lock() -> None:
"""Lock the current session via loginctl.""" """Lock the current session by launching moonlock."""
subprocess.run(["loginctl", "lock-session"], check=True, timeout=POWER_TIMEOUT) subprocess.run(["moonlock"], check=True, timeout=POWER_TIMEOUT)
def logout() -> None: def logout() -> None:

View File

@ -6,23 +6,11 @@ window.panel {
background-color: @theme_bg_color; background-color: @theme_bg_color;
background-size: cover; background-size: cover;
background-position: center; background-position: center;
opacity: 0;
transition: opacity 350ms ease-in;
}
window.panel.visible {
opacity: 1;
} }
/* Wallpaper-only window for secondary monitors */ /* Wallpaper-only window for secondary monitors */
window.wallpaper { window.wallpaper {
background-color: @theme_bg_color; background-color: @theme_bg_color;
opacity: 0;
transition: opacity 350ms ease-in;
}
window.wallpaper.visible {
opacity: 1;
} }
/* Round avatar image */ /* Round avatar image */

View File

@ -13,11 +13,11 @@ class TestLock:
"""Tests for the lock power action.""" """Tests for the lock power action."""
@patch("moonset.power.subprocess.run") @patch("moonset.power.subprocess.run")
def test_calls_loginctl_lock_session(self, mock_run) -> None: def test_calls_moonlock(self, mock_run) -> None:
lock() lock()
mock_run.assert_called_once_with( mock_run.assert_called_once_with(
["loginctl", "lock-session"], check=True, timeout=POWER_TIMEOUT ["moonlock"], check=True, timeout=POWER_TIMEOUT
) )
@patch("moonset.power.subprocess.run") @patch("moonset.power.subprocess.run")