aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorvaxerski <[email protected]>2023-12-21 22:27:12 +0100
committervaxerski <[email protected]>2023-12-21 22:27:12 +0100
commitbd952dcef2ead3b0b7e2d730930a3fc528813ee0 (patch)
tree231401dbdb3567649e24f389aad9aa5bf5392583
parentbc51a91043a6405834854d8a13e8e8ac45ea5737 (diff)
downloadHyprland-bd952dcef2ead3b0b7e2d730930a3fc528813ee0.tar.gz
Hyprland-bd952dcef2ead3b0b7e2d730930a3fc528813ee0.zip
systemd: add HYPRLAND_NO_SD_NOTIFY
fixes #4217
-rw-r--r--src/Compositor.cpp18
-rw-r--r--src/helpers/MiscFunctions.cpp7
-rw-r--r--src/helpers/MiscFunctions.hpp1
-rw-r--r--src/main.cpp2
-rw-r--r--src/render/Renderer.cpp4
5 files changed, 18 insertions, 14 deletions
diff --git a/src/Compositor.cpp b/src/Compositor.cpp
index c7be0662..e4243a4e 100644
--- a/src/Compositor.cpp
+++ b/src/Compositor.cpp
@@ -125,13 +125,12 @@ void CCompositor::initServer() {
initManagers(STAGE_PRIORITY);
- if (const auto ENV = getenv("HYPRLAND_TRACE"); ENV && std::string(ENV) == "1")
+ if (envEnabled("HYPRLAND_TRACE"))
Debug::trace = true;
wlr_log_init(WLR_INFO, NULL);
- const auto LOGWLR = getenv("HYPRLAND_LOG_WLR");
- if (LOGWLR && std::string(LOGWLR) == "1")
+ if (envEnabled("HYPRLAND_LOG_WLR"))
wlr_log_init(WLR_DEBUG, Debug::wlrLog);
else
wlr_log_init(WLR_ERROR, Debug::wlrLog);
@@ -343,7 +342,7 @@ void CCompositor::cleanup() {
Debug::shuttingDown = true;
#ifdef USES_SYSTEMD
- if (sd_booted() > 0)
+ if (sd_booted() > 0 && !envEnabled("HYPRLAND_NO_SD_NOTIFY"))
sd_notify(0, "STOPPING=1");
#endif
@@ -540,10 +539,11 @@ void CCompositor::startCompositor() {
g_pHyprRenderer->setCursorFromName("left_ptr");
#ifdef USES_SYSTEMD
- if (sd_booted() > 0)
+ if (sd_booted() > 0) {
// tell systemd that we are ready so it can start other bond, following, related units
- sd_notify(0, "READY=1");
- else
+ if (!envEnabled("HYPRLAND_NO_SD_NOTIFY"))
+ sd_notify(0, "READY=1");
+ } else
Debug::log(LOG, "systemd integration is baked in but system itself is not booted à la systemd!");
#endif
@@ -2598,9 +2598,7 @@ int CCompositor::getNewSpecialID() {
}
void CCompositor::performUserChecks() {
- const auto atomicEnv = getenv("WLR_DRM_NO_ATOMIC");
- const auto atomicEnvStr = std::string(atomicEnv ? atomicEnv : "");
- if (g_pConfigManager->getInt("general:allow_tearing") == 1 && atomicEnvStr != "1") {
+ if (g_pConfigManager->getInt("general:allow_tearing") == 1 && !envEnabled("WLR_DRM_NO_ATOMIC")) {
g_pHyprNotificationOverlay->addNotification("You have enabled tearing, but immediate presentations are not available on your configuration. Try adding "
"env = WLR_DRM_NO_ATOMIC,1 to your config.",
CColor(0), 15000, ICON_WARNING);
diff --git a/src/helpers/MiscFunctions.cpp b/src/helpers/MiscFunctions.cpp
index 6eab7e2b..5eb99bfd 100644
--- a/src/helpers/MiscFunctions.cpp
+++ b/src/helpers/MiscFunctions.cpp
@@ -791,4 +791,11 @@ uint32_t glFormatToType(uint32_t gl) {
GL_UNSIGNED_INT_2_10_10_10_REV :
#endif
GL_UNSIGNED_BYTE;
+}
+
+bool envEnabled(const std::string& env) {
+ const auto ENV = getenv(env.c_str());
+ if (!ENV)
+ return false;
+ return std::string(ENV) == "1";
} \ No newline at end of file
diff --git a/src/helpers/MiscFunctions.hpp b/src/helpers/MiscFunctions.hpp
index d8070c76..1ccbdc0e 100644
--- a/src/helpers/MiscFunctions.hpp
+++ b/src/helpers/MiscFunctions.hpp
@@ -35,6 +35,7 @@ std::vector<SCallstackFrameInfo> getBacktrace();
void throwError(const std::string& err);
uint32_t drmFormatToGL(uint32_t drm);
uint32_t glFormatToType(uint32_t gl);
+bool envEnabled(const std::string& env);
template <typename... Args>
[[deprecated("use std::format instead")]] std::string getFormat(std::format_string<Args...> fmt, Args&&... args) {
diff --git a/src/main.cpp b/src/main.cpp
index 86c44857..2edf3601 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -102,7 +102,7 @@ int main(int argc, char** argv) {
g_pCompositor->initServer();
- if (!getenv("HYPRLAND_NO_RT") || configStringToInt(std::string(getenv("HYPRLAND_NO_RT"))) == 0)
+ if (!envEnabled("HYPRLAND_NO_RT"))
Init::gainRealTime();
Debug::log(LOG, "Hyprland init finished.");
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index 49bc84bd..2397849a 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -9,9 +9,7 @@ extern "C" {
}
CHyprRenderer::CHyprRenderer() {
- const auto ENV = getenv("WLR_DRM_NO_ATOMIC");
-
- if (ENV && std::string(ENV) == "1")
+ if (envEnabled("WLR_DRM_NO_ATOMIC"))
m_bTearingEnvSatisfied = true;
if (g_pCompositor->m_sWLRSession) {