summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorvaxerski <vaxry@vaxry.net>2023-05-31 21:11:20 +0200
committervaxerski <vaxry@vaxry.net>2023-05-31 21:11:20 +0200
commite76bd43f53197af2c64608ba6b0792326e79db07 (patch)
tree4bbf46a61a36fea9b89a2083be67b90d70f3a410 /src
parentbaf81cdc5d595b97ea9d1561315f7982720124a1 (diff)
rules: add nodim
Diffstat (limited to 'src')
-rw-r--r--src/Compositor.cpp2
-rw-r--r--src/Window.cpp3
-rw-r--r--src/Window.hpp4
-rw-r--r--src/config/ConfigManager.cpp8
-rw-r--r--src/debug/HyprCtl.cpp2
-rw-r--r--src/events/Windows.cpp2
6 files changed, 13 insertions, 8 deletions
diff --git a/src/Compositor.cpp b/src/Compositor.cpp
index e6a3d993..cfbc11b5 100644
--- a/src/Compositor.cpp
+++ b/src/Compositor.cpp
@@ -1665,7 +1665,7 @@ void CCompositor::updateWindowAnimatedDecorationValues(CWindow* pWindow) {
}
// dim
- if (pWindow == m_pLastWindow) {
+ if (pWindow == m_pLastWindow || pWindow->m_sAdditionalConfigData.forceNoDim) {
pWindow->m_fDimPercent = 0;
} else {
pWindow->m_fDimPercent = *PDIMSTRENGTH;
diff --git a/src/Window.cpp b/src/Window.cpp
index 01d337e8..a9598615 100644
--- a/src/Window.cpp
+++ b/src/Window.cpp
@@ -435,6 +435,8 @@ void CWindow::applyDynamicRule(const SWindowRule& r) {
m_sAdditionalConfigData.forceNoBorder = true;
} else if (r.szRule == "noshadow") {
m_sAdditionalConfigData.forceNoShadow = true;
+ } else if (r.szRule == "nodim") {
+ m_sAdditionalConfigData.forceNoDim = true;
} else if (r.szRule == "forcergbx") {
m_sAdditionalConfigData.forceRGBX = true;
} else if (r.szRule == "opaque") {
@@ -495,6 +497,7 @@ void CWindow::updateDynamicRules() {
m_sAdditionalConfigData.forceNoBlur = false;
m_sAdditionalConfigData.forceNoBorder = false;
m_sAdditionalConfigData.forceNoShadow = false;
+ m_sAdditionalConfigData.forceNoDim = false;
if (!m_sAdditionalConfigData.forceOpaqueOverridden)
m_sAdditionalConfigData.forceOpaque = false;
m_sAdditionalConfigData.forceNoAnims = false;
diff --git a/src/Window.hpp b/src/Window.hpp
index 164c5ee2..660abb61 100644
--- a/src/Window.hpp
+++ b/src/Window.hpp
@@ -10,8 +10,7 @@
#include "helpers/Vector2D.hpp"
#include "helpers/WLSurface.hpp"
-enum eIdleInhibitMode
-{
+enum eIdleInhibitMode {
IDLEINHIBIT_NONE = 0,
IDLEINHIBIT_ALWAYS,
IDLEINHIBIT_FULLSCREEN,
@@ -117,6 +116,7 @@ struct SWindowAdditionalConfigData {
CWindowOverridableVar<bool> forceNoAnims = false;
CWindowOverridableVar<bool> forceNoBorder = false;
CWindowOverridableVar<bool> forceNoShadow = false;
+ CWindowOverridableVar<bool> forceNoDim = false;
CWindowOverridableVar<bool> windowDanceCompat = false;
CWindowOverridableVar<bool> noMaxSize = false;
CWindowOverridableVar<bool> dimAround = false;
diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp
index 481edf18..99e7d99b 100644
--- a/src/config/ConfigManager.cpp
+++ b/src/config/ConfigManager.cpp
@@ -856,10 +856,10 @@ void CConfigManager::handleUnbind(const std::string& command, const std::string&
bool windowRuleValid(const std::string& RULE) {
return !(RULE != "float" && RULE != "tile" && RULE.find("opacity") != 0 && RULE.find("move") != 0 && RULE.find("size") != 0 && RULE.find("minsize") != 0 &&
RULE.find("maxsize") != 0 && RULE.find("pseudo") != 0 && RULE.find("monitor") != 0 && RULE.find("idleinhibit") != 0 && RULE != "nofocus" && RULE != "noblur" &&
- RULE != "noshadow" && RULE != "noborder" && RULE != "center" && RULE != "opaque" && RULE != "forceinput" && RULE != "fullscreen" && RULE != "nofullscreenrequest" &&
- RULE != "fakefullscreen" && RULE != "nomaxsize" && RULE != "pin" && RULE != "noanim" && RULE != "dimaround" && RULE != "windowdance" && RULE != "maximize" &&
- RULE.find("animation") != 0 && RULE.find("rounding") != 0 && RULE.find("workspace") != 0 && RULE.find("bordercolor") != 0 && RULE != "forcergbx" &&
- RULE != "noinitialfocus");
+ RULE != "noshadow" && RULE != "nodim" && RULE != "noborder" && RULE != "center" && RULE != "opaque" && RULE != "forceinput" && RULE != "fullscreen" &&
+ RULE != "nofullscreenrequest" && RULE != "fakefullscreen" && RULE != "nomaxsize" && RULE != "pin" && RULE != "noanim" && RULE != "dimaround" &&
+ RULE != "windowdance" && RULE != "maximize" && RULE.find("animation") != 0 && RULE.find("rounding") != 0 && RULE.find("workspace") != 0 &&
+ RULE.find("bordercolor") != 0 && RULE != "forcergbx" && RULE != "noinitialfocus");
}
bool layerRuleValid(const std::string& RULE) {
diff --git a/src/debug/HyprCtl.cpp b/src/debug/HyprCtl.cpp
index d824cfad..0b2a0d48 100644
--- a/src/debug/HyprCtl.cpp
+++ b/src/debug/HyprCtl.cpp
@@ -952,6 +952,8 @@ std::string dispatchSetProp(std::string request) {
PWINDOW->m_sAdditionalConfigData.forceNoBorder.forceSetIgnoreLocked(configStringToInt(VAL), lock);
} else if (PROP == "forcenoshadow") {
PWINDOW->m_sAdditionalConfigData.forceNoShadow.forceSetIgnoreLocked(configStringToInt(VAL), lock);
+ } else if (PROP == "forcenodim") {
+ PWINDOW->m_sAdditionalConfigData.forceNoDim.forceSetIgnoreLocked(configStringToInt(VAL), lock);
} else if (PROP == "windowdancecompat") {
PWINDOW->m_sAdditionalConfigData.windowDanceCompat.forceSetIgnoreLocked(configStringToInt(VAL), lock);
} else if (PROP == "nomaxsize") {
diff --git a/src/events/Windows.cpp b/src/events/Windows.cpp
index d1cb72f0..b64bb193 100644
--- a/src/events/Windows.cpp
+++ b/src/events/Windows.cpp
@@ -438,7 +438,7 @@ void Events::listener_mapWindow(void* owner, void* data) {
(PWINDOW->m_iX11Type != 2 || (PWINDOW->m_bIsX11 && wlr_xwayland_or_surface_wants_focus(PWINDOW->m_uSurface.xwayland))) && !workspaceSilent) {
g_pCompositor->focusWindow(PWINDOW);
PWINDOW->m_fActiveInactiveAlpha.setValueAndWarp(*PACTIVEALPHA);
- PWINDOW->m_fDimPercent.setValueAndWarp(*PDIMSTRENGTH);
+ PWINDOW->m_fDimPercent.setValueAndWarp(PWINDOW->m_sAdditionalConfigData.forceNoDim ? 0.f : *PDIMSTRENGTH);
} else {
PWINDOW->m_fActiveInactiveAlpha.setValueAndWarp(*PINACTIVEALPHA);
PWINDOW->m_fDimPercent.setValueAndWarp(0);