summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChris Naporlee <55722668+chrisn731@users.noreply.github.com>2026-03-28 11:30:25 -0400
committerGitHub <noreply@github.com>2026-03-28 15:30:25 +0000
commit3103119b7cdda67e1d43588ad07a80465626b3c2 (patch)
treef4e93492a8baa7f2ab840297a59559b74ed52815 /src
parent98036faba08c2654ceff4d9895ba1e13745f4710 (diff)
input: allow focus to switch to most recently used window on closed (#13769)
Diffstat (limited to 'src')
-rw-r--r--src/config/supplementary/ConfigDescriptions.hpp8
-rw-r--r--src/layout/algorithm/Algorithm.cpp4
2 files changed, 7 insertions, 5 deletions
diff --git a/src/config/supplementary/ConfigDescriptions.hpp b/src/config/supplementary/ConfigDescriptions.hpp
index 6a287d43..7d752e5a 100644
--- a/src/config/supplementary/ConfigDescriptions.hpp
+++ b/src/config/supplementary/ConfigDescriptions.hpp
@@ -655,9 +655,9 @@ namespace Config::Supplementary {
.value = "input:focus_on_close",
.description =
"Controls the window focus behavior when a window is closed. When set to 0, focus will shift to the next window candidate. When set to 1, focus will shift "
- "to the window under the cursor.",
+ "to the window under the cursor. When set to 2, focus will shift to the most recently used/active window.",
.type = CONFIG_OPTION_CHOICE,
- .data = SConfigOptionDescription::SChoiceData{0, "next,cursor"},
+ .data = SConfigOptionDescription::SChoiceData{0, "next,cursor,mru"},
},
SConfigOptionDescription{
.value = "input:mouse_refocus",
@@ -697,8 +697,8 @@ namespace Config::Supplementary {
},
/*
- * input:touchpad:
- */
+ * input:touchpad:
+ */
SConfigOptionDescription{
.value = "input:touchpad:disable_while_typing",
diff --git a/src/layout/algorithm/Algorithm.cpp b/src/layout/algorithm/Algorithm.cpp
index b83a03a3..b9e94524 100644
--- a/src/layout/algorithm/Algorithm.cpp
+++ b/src/layout/algorithm/Algorithm.cpp
@@ -237,7 +237,9 @@ const UP<IFloatingAlgorithm>& CAlgorithm::floatingAlgo() const {
}
SP<ITarget> CAlgorithm::getNextCandidate(SP<ITarget> old) {
- if (old->floating()) {
+ static auto FOCUSONCLOSE = CConfigValue<Hyprlang::INT>("input:focus_on_close");
+
+ if (old->floating() || *FOCUSONCLOSE == 2) {
// use window history to determine best target
for (const auto& w : Desktop::History::windowTracker()->fullHistory() | std::views::reverse) {
if (!w->m_workspace || w->m_workspace->m_space != m_space || !w->layoutTarget() || !w->layoutTarget()->space())