summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFrançois Conzelmann <45296195+zephvr@users.noreply.github.com>2023-11-30 02:48:10 +0100
committerGitHub <noreply@github.com>2023-11-30 01:48:10 +0000
commit1fc1e4e9cbc2569eb4d3841f22020f35e9642f12 (patch)
treee8234f8e0cc5608e7729e699fc947d1d3b864922 /src
parente1258707adeb3061600c43a5445063c5e3c59037 (diff)
monitor: remove comma from monitor description (#3996)
this allows for monitor specific rules to work on monitor with comma on their description fixes #2457
Diffstat (limited to 'src')
-rw-r--r--src/Compositor.cpp4
-rw-r--r--src/config/ConfigManager.cpp4
-rw-r--r--src/debug/HyprCtl.cpp4
-rw-r--r--src/helpers/Monitor.cpp6
-rw-r--r--src/helpers/Monitor.hpp1
-rw-r--r--src/managers/KeybindManager.cpp2
6 files changed, 13 insertions, 8 deletions
diff --git a/src/Compositor.cpp b/src/Compositor.cpp
index 5adfea86..a842bb6b 100644
--- a/src/Compositor.cpp
+++ b/src/Compositor.cpp
@@ -574,7 +574,7 @@ CMonitor* CCompositor::getMonitorFromName(const std::string& name) {
CMonitor* CCompositor::getMonitorFromDesc(const std::string& desc) {
for (auto& m : m_vMonitors) {
- if (m->output->description && std::string(m->output->description).starts_with(desc))
+ if (m->szDescription.starts_with(desc))
return m.get();
}
return nullptr;
@@ -2059,7 +2059,7 @@ CMonitor* CCompositor::getMonitorFromString(const std::string& name) {
if (!m->output)
continue;
- if (m->output->description && std::string(m->output->description).starts_with(DESCRIPTION)) {
+ if (m->szDescription.starts_with(DESCRIPTION)) {
return m.get();
}
}
diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp
index 07c1f51f..257446ee 100644
--- a/src/config/ConfigManager.cpp
+++ b/src/config/ConfigManager.cpp
@@ -2082,7 +2082,7 @@ void CConfigManager::performMonitorReload() {
if (!m->output || m->isUnsafeFallback)
continue;
- auto rule = getMonitorRuleFor(m->szName, m->output->description ? m->output->description : "");
+ auto rule = getMonitorRuleFor(m->szName, m->szDescription);
if (!g_pHyprRenderer->applyMonitorRule(m.get(), &rule)) {
overAgain = true;
@@ -2163,7 +2163,7 @@ void CConfigManager::ensureMonitorStatus() {
if (!rm->output || rm->isUnsafeFallback)
continue;
- auto rule = getMonitorRuleFor(rm->szName, rm->output->description ? rm->output->description : "");
+ auto rule = getMonitorRuleFor(rm->szName, rm->szDescription);
if (rule.disabled == rm->m_bEnabled)
g_pHyprRenderer->applyMonitorRule(rm.get(), &rule);
diff --git a/src/debug/HyprCtl.cpp b/src/debug/HyprCtl.cpp
index 9745a0fe..91bbe264 100644
--- a/src/debug/HyprCtl.cpp
+++ b/src/debug/HyprCtl.cpp
@@ -75,7 +75,7 @@ std::string monitorsRequest(std::string request, HyprCtl::eHyprCtlOutputFormat f
"vrr": {},
"activelyTearing": {}
}},)#",
- m->ID, escapeJSONStrings(m->szName), escapeJSONStrings(m->output->description ? m->output->description : ""), (m->output->make ? m->output->make : ""),
+ m->ID, escapeJSONStrings(m->szName), escapeJSONStrings(m->szDescription), (m->output->make ? m->output->make : ""),
(m->output->model ? m->output->model : ""), (m->output->serial ? m->output->serial : ""), (int)m->vecPixelSize.x, (int)m->vecPixelSize.y, m->refreshRate,
(int)m->vecPosition.x, (int)m->vecPosition.y, m->activeWorkspace,
(m->activeWorkspace == -1 ? "" : escapeJSONStrings(g_pCompositor->getWorkspaceByID(m->activeWorkspace)->m_szName)), m->specialWorkspaceID,
@@ -99,7 +99,7 @@ std::string monitorsRequest(std::string request, HyprCtl::eHyprCtlOutputFormat f
"{} {} {}\n\tscale: {:.2f}\n\ttransform: "
"{}\n\tfocused: {}\n\tdpmsStatus: {}\n\tvrr: {}\n\tactivelyTearing: {}\n\n",
m->szName, m->ID, (int)m->vecPixelSize.x, (int)m->vecPixelSize.y, m->refreshRate, (int)m->vecPosition.x, (int)m->vecPosition.y,
- (m->output->description ? m->output->description : ""), (m->output->make ? m->output->make : ""), (m->output->model ? m->output->model : ""),
+ m->szDescription, (m->output->make ? m->output->make : ""), (m->output->model ? m->output->model : ""),
(m->output->serial ? m->output->serial : ""), m->activeWorkspace, (m->activeWorkspace == -1 ? "" : g_pCompositor->getWorkspaceByID(m->activeWorkspace)->m_szName),
m->specialWorkspaceID, getWorkspaceNameFromSpecialID(m->specialWorkspaceID), (int)m->vecReservedTopLeft.x, (int)m->vecReservedTopLeft.y,
(int)m->vecReservedBottomRight.x, (int)m->vecReservedBottomRight.y, m->scale, (int)m->transform, (m.get() == g_pCompositor->m_pLastMonitor ? "yes" : "no"),
diff --git a/src/helpers/Monitor.cpp b/src/helpers/Monitor.cpp
index f626bb3d..c1ae3503 100644
--- a/src/helpers/Monitor.cpp
+++ b/src/helpers/Monitor.cpp
@@ -50,6 +50,10 @@ void CMonitor::onConnect(bool noRule) {
szName = output->name;
+ szDescription = output->description ? output->description : "";
+ // remove comma character from description. This allow monitor specific rules to work on monitor with comma on their description
+ szDescription.erase(std::remove(szDescription.begin(), szDescription.end(), ','), szDescription.end());
+
if (!wlr_backend_is_drm(output->backend))
createdByUser = true; // should be true. WL, X11 and Headless backends should be addable / removable
@@ -651,4 +655,4 @@ void CMonitor::updateMatrix() {
wlr_matrix_transform(projMatrix.data(), transform);
wlr_matrix_translate(projMatrix.data(), -vecTransformedSize.x / 2.0, -vecTransformedSize.y / 2.0);
}
-} \ No newline at end of file
+}
diff --git a/src/helpers/Monitor.hpp b/src/helpers/Monitor.hpp
index f354ca6d..7621ac17 100644
--- a/src/helpers/Monitor.hpp
+++ b/src/helpers/Monitor.hpp
@@ -43,6 +43,7 @@ class CMonitor {
float scale = 1;
std::string szName = "";
+ std::string szDescription = "";
Vector2D vecReservedTopLeft = Vector2D(0, 0);
Vector2D vecReservedBottomRight = Vector2D(0, 0);
diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp
index 986de55e..11e2fa02 100644
--- a/src/managers/KeybindManager.cpp
+++ b/src/managers/KeybindManager.cpp
@@ -1473,7 +1473,7 @@ void CKeybindManager::forceRendererReload(std::string args) {
if (!m->output)
continue;
- auto rule = g_pConfigManager->getMonitorRuleFor(m->szName, m->output->description ? m->output->description : "");
+ auto rule = g_pConfigManager->getMonitorRuleFor(m->szName, m->szDescription);
if (!g_pHyprRenderer->applyMonitorRule(m.get(), &rule, true)) {
overAgain = true;
break;