summaryrefslogtreecommitdiff
path: root/nix/portals.patch
blob: 4d426dd54dce1045622cc0e835c9d979f5a8eef8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
diff --git a/src/Compositor.cpp b/src/Compositor.cpp
index a9d95f39..069a03ca 100644
--- a/src/Compositor.cpp
+++ b/src/Compositor.cpp
@@ -2340,14 +2340,18 @@ void CCompositor::performUserChecks() {
 
     static auto* const    PSUPPRESSPORTAL = &g_pConfigManager->getConfigValuePtr("misc:suppress_portal_warnings")->intValue;
 
-    if (!*PSUPPRESSPORTAL) {
-        if (std::ranges::any_of(BAD_PORTALS, [&](const std::string& portal) { return std::filesystem::exists("/usr/share/xdg-desktop-portal/portals/" + portal + ".portal"); })) {
+    static auto* const    PORTALDIRENV = getenv("XDG_DESKTOP_PORTAL_DIR");
+
+    static auto const     PORTALDIR = PORTALDIRENV != NULL ? std::string(PORTALDIRENV) : "";
+
+    if (!*PSUPPRESSPORTAL && PORTALDIR != "") {
+        if (std::ranges::any_of(BAD_PORTALS, [&](const std::string& portal) { return std::filesystem::exists(PORTALDIR + "/" + portal + ".portal"); })) {
             // bad portal detected
             g_pHyprNotificationOverlay->addNotification("You have one or more incompatible xdg-desktop-portal impls installed. Please remove incompatible ones to avoid issues.",
                                                         CColor(0), 15000, ICON_ERROR);
         }
 
-        if (std::filesystem::exists("/usr/share/xdg-desktop-portal/portals/hyprland.portal") && std::filesystem::exists("/usr/share/xdg-desktop-portal/portals/wlr.portal")) {
+        if (std::filesystem::exists(PORTALDIR + "/hyprland.portal") && std::filesystem::exists(PORTALDIR + "/wlr.portal")) {
             g_pHyprNotificationOverlay->addNotification("You have xdg-desktop-portal-hyprland and -wlr installed simultaneously. Please uninstall one to avoid issues.", CColor(0),
                                                         15000, ICON_ERROR);
         }