From 58a02ce2905367e4d03e7d12551cadd44d597734 Mon Sep 17 00:00:00 2001 From: Jonas Bloch <128738169+Silzinc@users.noreply.github.com> Date: Thu, 19 Feb 2026 22:26:45 +0100 Subject: [PATCH] Search keybinds fixes (#1748) * fix: close keybind cheatsheet on escape press * feat: match all space separated words in keybind cheatsheet search --- quickshell/Modals/KeybindsModal.qml | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/quickshell/Modals/KeybindsModal.qml b/quickshell/Modals/KeybindsModal.qml index d1f241d7..573e2f82 100644 --- a/quickshell/Modals/KeybindsModal.qml +++ b/quickshell/Modals/KeybindsModal.qml @@ -123,6 +123,7 @@ DankModal { function generateCategories(query) { const lowerQuery = query ? query.toLowerCase().trim() : ""; + const lowerQueryWords = query.split(/\s+/); const processed = {}; for (const cat in rawBinds) { @@ -135,10 +136,25 @@ DankModal { const keyLower = bind.key.toLowerCase(); const descLower = bind.desc.toLowerCase(); const actionLower = bind.action.toLowerCase(); - if (!(lowerQuery.length === 0 || keyLower.includes(lowerQuery) || descLower.includes(lowerQuery) || catLower.includes(lowerQuery) || actionLower.includes(lowerQuery))) - continue; + if (bind.hideOnOverlay) continue; + let shouldContinue = false; + for (let j = 0; j < lowerQueryWords.length; j++) { + const word = lowerQueryWords[j]; + if (!( + word.length === 0 || + keyLower.includes(word) || + descLower.includes(word) || + catLower.includes(word) || + actionLower.includes(word) + )) { + shouldContinue = true; + break; + } + } + if (shouldContinue) + continue; if (bind.subcat) { hasSubcats = true;