From 00baedf8c9f7d9e2a7f111d3da98e6f99184e6a3 Mon Sep 17 00:00:00 2001 From: Sho Date: Sun, 2 Aug 2026 16:16:10 +0900 Subject: [PATCH] feat(lockscreen): smooth out typing dot animation, isolate QuickShell lockscreen from plasma kscreenlocker, and exclude QuickShell from Meta+W overview --- install.sh | 16 ++++++++++++++++ .../modules/lockscreen/LockscreenContent.qml | 15 ++++++++------- quickshell/services/SessionService.qml | 1 - 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/install.sh b/install.sh index de7c412..d4197dc 100755 --- a/install.sh +++ b/install.sh @@ -508,6 +508,21 @@ setup_refresh_script() { fi } +setup_kwin_overview_rules() { + info "Configuring KWin Overview rules to ignore QuickShell components..." + if command -v kwriteconfig6 &>/dev/null; then + kwriteconfig6 --file kwinrulesrc --group "quickshell-ignore-overview" --key "Description" "Ignore QuickShell from KWin Overview Effect" + kwriteconfig6 --file kwinrulesrc --group "quickshell-ignore-overview" --key "wmclass" "quickshell" + kwriteconfig6 --file kwinrulesrc --group "quickshell-ignore-overview" --key "wmclassmatch" "1" + kwriteconfig6 --file kwinrulesrc --group "quickshell-ignore-overview" --key "skipoverview" "true" + kwriteconfig6 --file kwinrulesrc --group "quickshell-ignore-overview" --key "skipoverviewrule" "2" + if command -v qdbus6 &>/dev/null; then + qdbus6 org.kde.KWin /KWin reconfigure 2>/dev/null || true + fi + success "KWin Overview exclusion rule configured for QuickShell!" + fi +} + # Execution Flow install_dependencies install_quickshell @@ -518,6 +533,7 @@ deploy_kde_colorschemes repair_feishin_flatpak setup_bashrc setup_refresh_script +setup_kwin_overview_rules setup_systemd_service run_initial_sync diff --git a/quickshell/modules/lockscreen/LockscreenContent.qml b/quickshell/modules/lockscreen/LockscreenContent.qml index c838ddb..4d74d16 100644 --- a/quickshell/modules/lockscreen/LockscreenContent.qml +++ b/quickshell/modules/lockscreen/LockscreenContent.qml @@ -266,10 +266,10 @@ Item { font.weight: Font.Medium } - // ANIMATED TYPING DOTS (Shows WHEN and HOW MANY letters are typed) + // ANIMATED TYPING DOTS (Ultra-smooth scale, opacity, & glow entry) Row { anchors.centerIn: parent - spacing: 10 + spacing: 12 visible: LockscreenService.typedCount > 0 && !LockscreenService.isAuthenticating Repeater { @@ -282,14 +282,15 @@ Item { radius: 7 color: index === LockscreenService.typedCount - 1 ? Theme.accent : Theme.fg - Behavior on color { ColorAnimation { duration: 120 } } + Behavior on color { ColorAnimation { duration: 180 } } - // Spawn Bounce & Pulse Animation for each character typed scale: 1.0 - SequentialAnimation on scale { + opacity: 1.0 + + ParallelAnimation { running: true - NumberAnimation { from: 0.2; to: 1.4; duration: 120; easing.type: Easing.OutQuad } - NumberAnimation { from: 1.4; to: 1.0; duration: 100; easing.type: Easing.OutBounce } + NumberAnimation { target: dot; property: "scale"; from: 0.1; to: 1.0; duration: 240; easing.type: Easing.OutBack; easing.overshoot: 1.8 } + NumberAnimation { target: dot; property: "opacity"; from: 0.0; to: 1.0; duration: 180; easing.type: Easing.OutCubic } } // Inner Glow Core diff --git a/quickshell/services/SessionService.qml b/quickshell/services/SessionService.qml index 26f845f..fa79e15 100644 --- a/quickshell/services/SessionService.qml +++ b/quickshell/services/SessionService.qml @@ -8,7 +8,6 @@ Item { function lock() { LockscreenService.lock() - lockProc.running = true } function logout() {