From 3c7dfcb220bf41bd13993191ac7014d1a7525bf4 Mon Sep 17 00:00:00 2001 From: outfoxxed Date: Wed, 22 Jan 2025 04:14:55 -0800 Subject: [PATCH] hyprland/ipc: handle renameworkspace --- src/wayland/hyprland/ipc/connection.cpp | 16 ++++++++++++++++ src/wayland/hyprland/ipc/workspace.cpp | 8 ++++++++ src/wayland/hyprland/ipc/workspace.hpp | 5 ++++- 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/wayland/hyprland/ipc/connection.cpp b/src/wayland/hyprland/ipc/connection.cpp index 1e1af05a..794ecff6 100644 --- a/src/wayland/hyprland/ipc/connection.cpp +++ b/src/wayland/hyprland/ipc/connection.cpp @@ -352,6 +352,22 @@ void HyprlandIpc::onEvent(HyprlandIpcEvent* event) { auto* monitor = this->findMonitorByName(monitorName, true); workspace->setMonitor(monitor); + } else if (event->name == "renameworkspace") { + auto args = event->parseView(2); + auto id = args.at(0).toInt(); + auto name = QString::fromUtf8(args.at(1)); + + const auto& mList = this->mWorkspaces.valueList(); + + auto workspaceIter = + std::ranges::find_if(mList, [id](const HyprlandWorkspace* m) { return m->id() == id; }); + + if (workspaceIter == mList.end()) return; + + qCDebug(logHyprlandIpc) << "Workspace with id" << id << "renamed from" + << (*workspaceIter)->name() << "to" << name; + + (*workspaceIter)->setName(name); } } diff --git a/src/wayland/hyprland/ipc/workspace.cpp b/src/wayland/hyprland/ipc/workspace.cpp index fbf8477f..153dea6b 100644 --- a/src/wayland/hyprland/ipc/workspace.cpp +++ b/src/wayland/hyprland/ipc/workspace.cpp @@ -11,7 +11,15 @@ namespace qs::hyprland::ipc { qint32 HyprlandWorkspace::id() const { return this->mId; } + QString HyprlandWorkspace::name() const { return this->mName; } + +void HyprlandWorkspace::setName(QString name) { + if (name == this->mName) return; + this->mName = std::move(name); + emit this->nameChanged(); +} + QVariantMap HyprlandWorkspace::lastIpcObject() const { return this->mLastIpcObject; } void HyprlandWorkspace::updateInitial(qint32 id, QString name) { diff --git a/src/wayland/hyprland/ipc/workspace.hpp b/src/wayland/hyprland/ipc/workspace.hpp index dab01eb3..5eedfe22 100644 --- a/src/wayland/hyprland/ipc/workspace.hpp +++ b/src/wayland/hyprland/ipc/workspace.hpp @@ -32,11 +32,14 @@ public: void updateFromObject(QVariantMap object); [[nodiscard]] qint32 id() const; + [[nodiscard]] QString name() const; + void setName(QString name); + [[nodiscard]] QVariantMap lastIpcObject() const; - void setMonitor(HyprlandMonitor* monitor); [[nodiscard]] HyprlandMonitor* monitor() const; + void setMonitor(HyprlandMonitor* monitor); signals: void idChanged();