summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMightyPlaza <123664421+MightyPlaza@users.noreply.github.com>2023-07-09 21:10:35 +0000
committerGitHub <noreply@github.com>2023-07-09 23:10:35 +0200
commitd9f7f039e13b7d40c1d3e65809b65a96f0c68781 (patch)
treede0e9dd2408646121ac43eef359fecf609235dd6 /src
parentb99ac063eae32995ba83047a4c5d4cb3490a4b10 (diff)
monitor desc support (#2670)
* monitor desc * monitor desc
Diffstat (limited to 'src')
-rw-r--r--src/Compositor.cpp10
-rw-r--r--src/Compositor.hpp4
-rw-r--r--src/config/ConfigManager.cpp6
3 files changed, 17 insertions, 3 deletions
diff --git a/src/Compositor.cpp b/src/Compositor.cpp
index 50ea0b5d..89c0d08b 100644
--- a/src/Compositor.cpp
+++ b/src/Compositor.cpp
@@ -499,6 +499,16 @@ CMonitor* CCompositor::getMonitorFromName(const std::string& name) {
return nullptr;
}
+CMonitor* CCompositor::getMonitorFromDesc(const std::string& desc) {
+ for (auto& m : m_vMonitors) {
+ if (desc == m->output->description) {
+ return m.get();
+ }
+ }
+
+ return nullptr;
+}
+
CMonitor* CCompositor::getMonitorFromCursor() {
const auto COORDS = Vector2D(m_sWLRCursor->x, m_sWLRCursor->y);
diff --git a/src/Compositor.hpp b/src/Compositor.hpp
index e4f5483f..55633fc6 100644
--- a/src/Compositor.hpp
+++ b/src/Compositor.hpp
@@ -28,8 +28,7 @@
#include "hyprerror/HyprError.hpp"
#include "plugins/PluginSystem.hpp"
-enum eManagersInitStage
-{
+enum eManagersInitStage {
STAGE_PRIORITY = 0,
STAGE_LATE
};
@@ -125,6 +124,7 @@ class CCompositor {
CMonitor* getMonitorFromID(const int&);
CMonitor* getMonitorFromName(const std::string&);
+ CMonitor* getMonitorFromDesc(const std::string&);
CMonitor* getMonitorFromCursor();
CMonitor* getMonitorFromVector(const Vector2D&);
void removeWindowFromVectorSafe(CWindow*);
diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp
index 2cf6a5c4..e6894865 100644
--- a/src/config/ConfigManager.cpp
+++ b/src/config/ConfigManager.cpp
@@ -2106,7 +2106,11 @@ void CConfigManager::addParseError(const std::string& err) {
}
CMonitor* CConfigManager::getBoundMonitorForWS(const std::string& wsname) {
- return g_pCompositor->getMonitorFromName(getBoundMonitorStringForWS(wsname));
+ auto monitor = getBoundMonitorStringForWS(wsname);
+ if (monitor.substr(0, 5) == "desc:")
+ return g_pCompositor->getMonitorFromDesc(monitor.substr(5));
+ else
+ return g_pCompositor->getMonitorFromName(monitor);
}
std::string CConfigManager::getBoundMonitorStringForWS(const std::string& wsname) {