diff --git a/pkgs/applications/window-managers/hyprwm/hyprland/default.nix b/pkgs/applications/window-managers/hyprwm/hyprland/default.nix index f2b430c5bc11..7d611d1f0d50 100644 --- a/pkgs/applications/window-managers/hyprwm/hyprland/default.nix +++ b/pkgs/applications/window-managers/hyprwm/hyprland/default.nix @@ -52,7 +52,9 @@ stdenv.mkDerivation (finalAttrs: { # make meson use the provided dependencies instead of the git submodules "${finalAttrs.src}/nix/patches/meson-build.patch" # look into $XDG_DESKTOP_PORTAL_DIR instead of /usr; runtime checks for conflicting portals - "${finalAttrs.src}/nix/patches/portals.patch" + # NOTE: revert back to the patch inside SRC on the next version bump + # "${finalAttrs.src}/nix/patches/portals.patch" + ./portals.patch ]; postPatch = '' diff --git a/pkgs/applications/window-managers/hyprwm/hyprland/portals.patch b/pkgs/applications/window-managers/hyprwm/hyprland/portals.patch new file mode 100644 index 000000000000..cb3d97c371ca --- /dev/null +++ b/pkgs/applications/window-managers/hyprwm/hyprland/portals.patch @@ -0,0 +1,28 @@ +diff --git a/src/Compositor.cpp b/src/Compositor.cpp +index 1d978aed..56665389 100644 +--- a/src/Compositor.cpp ++++ b/src/Compositor.cpp +@@ -2365,17 +2365,16 @@ 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")) { +- g_pHyprNotificationOverlay->addNotification("You have xdg-desktop-portal-hyprland and -wlr installed simultaneously. Please uninstall one to avoid issues.", CColor(0), +- 15000, ICON_ERROR); +- } + } + } +