From 355ebe41fa0d2fe121a6b47308e3199d743d3d65 Mon Sep 17 00:00:00 2001 From: Mihai Fufezan Date: Sat, 5 Aug 2023 12:51:19 +0300 Subject: [PATCH] hyprland: don't warn against xdpw and xdph being present It seems that having both the Hyprland and the wlr desktop portals does not result in unexpected behaviour. xdph will be started and wlr ignored. --- .../hyprwm/hyprland/default.nix | 4 ++- .../hyprwm/hyprland/portals.patch | 28 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 pkgs/applications/window-managers/hyprwm/hyprland/portals.patch 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); +- } + } + } +