aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorvaxerski <[email protected]>2024-08-21 14:37:50 +0200
committervaxerski <[email protected]>2024-08-21 14:38:07 +0200
commit883463f9dd7f1cdc68c3e32017c0a71ccbe39b26 (patch)
tree8f1d430512b73309841146830c2d31d99d108ad7
parent3e7325af57c4670ebea65d2669f49526819c2260 (diff)
downloadHyprland-883463f9dd7f1cdc68c3e32017c0a71ccbe39b26.tar.gz
Hyprland-883463f9dd7f1cdc68c3e32017c0a71ccbe39b26.zip
animations: add workspace in/out configs
-rw-r--r--src/config/ConfigManager.cpp10
-rw-r--r--src/desktop/Workspace.cpp12
-rw-r--r--src/managers/AnimationManager.cpp2
3 files changed, 20 insertions, 4 deletions
diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp
index 155b75d3..e2ae2c47 100644
--- a/src/config/ConfigManager.cpp
+++ b/src/config/ConfigManager.cpp
@@ -724,7 +724,6 @@ void CConfigManager::setDefaultAnimationVars() {
INITANIMCFG("fade");
INITANIMCFG("border");
INITANIMCFG("borderangle");
- INITANIMCFG("workspaces");
// windows
INITANIMCFG("windowsIn");
@@ -745,7 +744,12 @@ void CConfigManager::setDefaultAnimationVars() {
// border
// workspaces
+ INITANIMCFG("workspaces");
+ INITANIMCFG("workspacesIn");
+ INITANIMCFG("workspacesOut");
INITANIMCFG("specialWorkspace");
+ INITANIMCFG("specialWorkspaceIn");
+ INITANIMCFG("specialWorkspaceOut");
}
// init the values
@@ -774,7 +778,11 @@ void CConfigManager::setDefaultAnimationVars() {
CREATEANIMCFG("fadeLayersIn", "fadeLayers");
CREATEANIMCFG("fadeLayersOut", "fadeLayers");
+ CREATEANIMCFG("workspacesIn", "workspaces");
+ CREATEANIMCFG("workspacesOut", "workspaces");
CREATEANIMCFG("specialWorkspace", "workspaces");
+ CREATEANIMCFG("specialWorkspaceIn", "specialWorkspace");
+ CREATEANIMCFG("specialWorkspaceOut", "specialWorkspace");
}
std::optional<std::string> CConfigManager::resetHLConfig() {
diff --git a/src/desktop/Workspace.cpp b/src/desktop/Workspace.cpp
index d9ac7927..a9412e6d 100644
--- a/src/desktop/Workspace.cpp
+++ b/src/desktop/Workspace.cpp
@@ -22,10 +22,11 @@ CWorkspace::CWorkspace(WORKSPACEID id, MONITORID monitorID, std::string name, bo
void CWorkspace::init(PHLWORKSPACE self) {
m_pSelf = self;
- m_vRenderOffset.create(m_bIsSpecialWorkspace ? g_pConfigManager->getAnimationPropertyConfig("specialWorkspace") : g_pConfigManager->getAnimationPropertyConfig("workspaces"),
+ m_vRenderOffset.create(m_bIsSpecialWorkspace ? g_pConfigManager->getAnimationPropertyConfig("specialWorkspaceIn") :
+ g_pConfigManager->getAnimationPropertyConfig("workspacesIn"),
self, AVARDAMAGE_ENTIRE);
m_fAlpha.create(AVARTYPE_FLOAT,
- m_bIsSpecialWorkspace ? g_pConfigManager->getAnimationPropertyConfig("specialWorkspace") : g_pConfigManager->getAnimationPropertyConfig("workspaces"), self,
+ m_bIsSpecialWorkspace ? g_pConfigManager->getAnimationPropertyConfig("specialWorkspaceIn") : g_pConfigManager->getAnimationPropertyConfig("workspacesIn"), self,
AVARDAMAGE_ENTIRE);
m_fAlpha.setValueAndWarp(1.f);
@@ -81,6 +82,13 @@ CWorkspace::~CWorkspace() {
}
void CWorkspace::startAnim(bool in, bool left, bool instant) {
+ if (!instant) {
+ const std::string ANIMNAME = std::format("{}{}", m_bIsSpecialWorkspace ? "specialWorkspace" : "workspaces", in ? "In" : "Out");
+
+ m_fAlpha.m_pConfig = g_pConfigManager->getAnimationPropertyConfig(ANIMNAME);
+ m_vRenderOffset.m_pConfig = g_pConfigManager->getAnimationPropertyConfig(ANIMNAME);
+ }
+
const auto ANIMSTYLE = m_fAlpha.m_pConfig->pValues->internalStyle;
static auto PWORKSPACEGAP = CConfigValue<Hyprlang::INT>("general:gaps_workspaces");
diff --git a/src/managers/AnimationManager.cpp b/src/managers/AnimationManager.cpp
index dcc7a45f..beb880be 100644
--- a/src/managers/AnimationManager.cpp
+++ b/src/managers/AnimationManager.cpp
@@ -471,7 +471,7 @@ std::string CAnimationManager::styleValidInConfigVar(const std::string& config,
}
return "unknown style";
- } else if (config == "workspaces" || config == "specialWorkspace") {
+ } else if (config.starts_with("workspaces") || config.starts_with("specialWorkspace")) {
if (style == "slide" || style == "slidevert" || style == "fade")
return "";
else if (style.starts_with("slidefade")) {