summaryrefslogtreecommitdiff
path: root/src/desktop/view/Group.cpp
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2026-02-22 17:28:02 +0800
committerlittleblack111 <littleblack11111@gmail.com>2026-02-22 17:28:02 +0800
commit7086b0731f9bf172c0550d1fe71daa88db91f935 (patch)
treed842417f430db4f2f43c44c24d1c3398d42e60fd /src/desktop/view/Group.cpp
parent0eb4755a3ed1980c15453fbe73d4ad36dea5da4b (diff)
group: disband_on_empty config
Diffstat (limited to 'src/desktop/view/Group.cpp')
-rw-r--r--src/desktop/view/Group.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/desktop/view/Group.cpp b/src/desktop/view/Group.cpp
index 67a89986..d017e8f4 100644
--- a/src/desktop/view/Group.cpp
+++ b/src/desktop/view/Group.cpp
@@ -121,6 +121,8 @@ void CGroup::add(PHLWINDOW w) {
}
void CGroup::remove(PHLWINDOW w) {
+ static auto DISBAND_ON_EMPTY = CConfigValue<Hyprlang::INT>("group:disband_on_empty");
+
std::optional<size_t> idx;
for (size_t i = 0; i < m_windows.size(); ++i) {
if (m_windows.at(i) == w) {
@@ -158,6 +160,11 @@ void CGroup::remove(PHLWINDOW w) {
// do this here: otherwise the new current is hidden and workspace rules get wrong data
if (!REMOVING_GROUP)
w->m_target->assignToSpace(m_target->space());
+
+ if (*DISBAND_ON_EMPTY && m_windows.size() == 1) {
+ destroy();
+ return;
+ }
}
void CGroup::moveCurrent(bool next) {