aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/Compositor.cpp17
-rw-r--r--src/Compositor.hpp1
-rw-r--r--src/managers/KeybindManager.cpp16
-rw-r--r--src/managers/KeybindManager.hpp1
4 files changed, 33 insertions, 2 deletions
diff --git a/src/Compositor.cpp b/src/Compositor.cpp
index 35e30b77..6b72465d 100644
--- a/src/Compositor.cpp
+++ b/src/Compositor.cpp
@@ -391,11 +391,10 @@ void CCompositor::startCompositor() {
if (sd_booted() > 0)
// tell systemd that we are ready so it can start other bond, following, related units
sd_notify(0, "READY=1");
- else
+ else
Debug::log(LOG, "systemd integration is baked in but system itself is not booted à la systemd!");
#endif
-
// This blocks until we are done.
Debug::log(LOG, "Hyprland is ready, running the event loop!");
wl_display_run(m_sWLDisplay);
@@ -2071,6 +2070,20 @@ CWorkspace* CCompositor::createNewWorkspace(const int& id, const int& monid, con
return PWORKSPACE;
}
+void CCompositor::renameWorkspace(const int& id, const std::string& name) {
+ const auto PWORKSPACE = getWorkspaceByID(id);
+
+ if (!PWORKSPACE)
+ return;
+
+ if (isWorkspaceSpecial(id))
+ return;
+
+ Debug::log(LOG, "renameWorkspace: Renaming workspace %d to '%s'", id, name);
+ wlr_ext_workspace_handle_v1_set_name(PWORKSPACE->m_pWlrHandle, name.c_str());
+ PWORKSPACE->m_szName = name;
+}
+
void CCompositor::setActiveMonitor(CMonitor* pMonitor) {
if (m_pLastMonitor == pMonitor)
return;
diff --git a/src/Compositor.hpp b/src/Compositor.hpp
index e12caec5..fb0eb8fa 100644
--- a/src/Compositor.hpp
+++ b/src/Compositor.hpp
@@ -171,6 +171,7 @@ class CCompositor {
void forceReportSizesToWindowsOnWorkspace(const int&);
bool cursorOnReservedArea();
CWorkspace* createNewWorkspace(const int&, const int&, const std::string& name = ""); // will be deleted next frame if left empty and unfocused!
+ void renameWorkspace(const int&, const std::string& name = "");
void setActiveMonitor(CMonitor*);
bool isWorkspaceSpecial(const int&);
int getNewSpecialID();
diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp
index ead93231..f5b3e34b 100644
--- a/src/managers/KeybindManager.cpp
+++ b/src/managers/KeybindManager.cpp
@@ -10,6 +10,7 @@ CKeybindManager::CKeybindManager() {
m_mDispatchers["closewindow"] = kill;
m_mDispatchers["togglefloating"] = toggleActiveFloating;
m_mDispatchers["workspace"] = changeworkspace;
+ m_mDispatchers["renameworkspace"] = renameWorkspace;
m_mDispatchers["fullscreen"] = fullscreenActive;
m_mDispatchers["fakefullscreen"] = fakeFullscreenActive;
m_mDispatchers["movetoworkspace"] = moveActiveToWorkspace;
@@ -1289,6 +1290,21 @@ void CKeybindManager::workspaceOpt(std::string args) {
g_pLayoutManager->getCurrentLayout()->recalculateMonitor(g_pCompositor->m_pLastMonitor->ID);
}
+void CKeybindManager::renameWorkspace(std::string args) {
+ try {
+ const auto FIRSTSPACEPOS = args.find_first_of(' ');
+ if (FIRSTSPACEPOS != std::string::npos) {
+ int workspace = std::stoi(args.substr(0, FIRSTSPACEPOS));
+ std::string name = args.substr(FIRSTSPACEPOS + 1);
+ g_pCompositor->renameWorkspace(workspace, name);
+ } else {
+ g_pCompositor->renameWorkspace(std::stoi(args), "");
+ }
+ } catch (std::exception& e) {
+ Debug::log(ERR, "Invalid arg in renameWorkspace, expected numeric id only or a numeric id and string name. \"%s\": \"%s\"", args.c_str(), e.what());
+ }
+}
+
void CKeybindManager::exitHyprland(std::string argz) {
g_pCompositor->cleanup();
}
diff --git a/src/managers/KeybindManager.hpp b/src/managers/KeybindManager.hpp
index 7794c24c..3923d571 100644
--- a/src/managers/KeybindManager.hpp
+++ b/src/managers/KeybindManager.hpp
@@ -104,6 +104,7 @@ class CKeybindManager {
static void toggleSplit(std::string);
static void moveCursorToCorner(std::string);
static void workspaceOpt(std::string);
+ static void renameWorkspace(std::string);
static void exitHyprland(std::string);
static void moveCurrentWorkspaceToMonitor(std::string);
static void moveWorkspaceToMonitor(std::string);