diff --git a/src/Compositor.cpp b/src/Compositor.cpp index b554f361..ed044fc8 100644 --- a/src/Compositor.cpp +++ b/src/Compositor.cpp @@ -144,6 +144,9 @@ void CCompositor::cleanupExit() { if (!m_sWLDisplay) return; + m_lWorkspaces.clear(); + m_lWindows.clear(); + if (g_pXWaylandManager->m_sWLRXWayland) { wlr_xwayland_destroy(g_pXWaylandManager->m_sWLRXWayland); g_pXWaylandManager->m_sWLRXWayland = nullptr; diff --git a/src/gmon.out b/src/gmon.out new file mode 100644 index 00000000..681e51e9 Binary files /dev/null and b/src/gmon.out differ diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp index f37c853f..f2efb29b 100644 --- a/src/managers/KeybindManager.cpp +++ b/src/managers/KeybindManager.cpp @@ -20,6 +20,7 @@ CKeybindManager::CKeybindManager() { m_mDispatchers["focusmonitor"] = focusMonitor; m_mDispatchers["movecursortocorner"] = moveCursorToCorner; m_mDispatchers["workspaceopt"] = workspaceOpt; + m_mDispatchers["exit"] = exitHyprland; } void CKeybindManager::addKeybind(SKeybind kb) { @@ -674,4 +675,9 @@ void CKeybindManager::workspaceOpt(std::string args) { // recalc mon g_pLayoutManager->getCurrentLayout()->recalculateMonitor(g_pCompositor->m_pLastMonitor->ID); +} + +void CKeybindManager::exitHyprland(std::string argz) { + g_pCompositor->cleanupExit(); + exit(0); } \ No newline at end of file diff --git a/src/managers/KeybindManager.hpp b/src/managers/KeybindManager.hpp index cf028111..cf9b36d2 100644 --- a/src/managers/KeybindManager.hpp +++ b/src/managers/KeybindManager.hpp @@ -50,6 +50,7 @@ private: static void toggleSplit(std::string); static void moveCursorToCorner(std::string); static void workspaceOpt(std::string); + static void exitHyprland(std::string); }; inline std::unique_ptr g_pKeybindManager; \ No newline at end of file