aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorVaxry <[email protected]>2023-08-26 17:12:21 +0200
committerGitHub <[email protected]>2023-08-26 17:12:21 +0200
commit4a41d013a27c9919ed41a50c43c4224d8443a415 (patch)
treef404e8d5d70d48dac21dcca836cfd8310f873335
parent299d201e562c0d0d1530d1559ff33802a1470815 (diff)
downloadHyprland-4a41d013a27c9919ed41a50c43c4224d8443a415.tar.gz
Hyprland-4a41d013a27c9919ed41a50c43c4224d8443a415.zip
internal: Fix XDP multi-portal issues (#3077)
* add a hyprland portals conf * remove portal checks * typo * Nix: remove portal patch --------- Co-authored-by: Mihai Fufezan <[email protected]>
-rw-r--r--Makefile1
-rw-r--r--assets/hyprland-portals.conf2
-rw-r--r--assets/meson.build2
-rw-r--r--nix/default.nix2
-rw-r--r--nix/patches/portals.patch28
-rw-r--r--src/Compositor.cpp17
-rw-r--r--src/config/ConfigManager.cpp1
7 files changed, 6 insertions, 47 deletions
diff --git a/Makefile b/Makefile
index 1262e234..3c8811ad 100644
--- a/Makefile
+++ b/Makefile
@@ -59,6 +59,7 @@ install:
cd subprojects/wlroots/build/include && find . -name '*.h*' -print0 | cpio --quiet -0dump ${PREFIX}/include/hyprland/wlroots && cd ../../../..
cp ./protocols/*-protocol.h ${PREFIX}/include/hyprland/protocols
cp ./build/hyprland.pc ${PREFIX}/share/pkgconfig
+ cp ./assets/hyprland-portals.conf ${PREFIX}/share/xdg-desktop-portal/
if [ -d /usr/share/pkgconfig ]; then cp ./build/hyprland.pc /usr/share/pkgconfig 2>/dev/null || true; fi
cleaninstall:
diff --git a/assets/hyprland-portals.conf b/assets/hyprland-portals.conf
new file mode 100644
index 00000000..2ec1f0de
--- /dev/null
+++ b/assets/hyprland-portals.conf
@@ -0,0 +1,2 @@
+[preferred]
+default=hyprland \ No newline at end of file
diff --git a/assets/meson.build b/assets/meson.build
index ba2c77bd..cdfafabb 100644
--- a/assets/meson.build
+++ b/assets/meson.build
@@ -5,3 +5,5 @@ foreach type : wallpaper_types
install_data(f'wall_@type@@[email protected]', install_dir: join_paths(get_option('datadir'), 'hyprland'), install_tag: 'runtime')
endforeach
endforeach
+
+install_data('hyprland-portals.conf', install_dir: join_paths(get_option('datadir'), 'xdg-desktop-portal'), install_tag: 'runtime')
diff --git a/nix/default.nix b/nix/default.nix
index 663d5429..96fa12d7 100644
--- a/nix/default.nix
+++ b/nix/default.nix
@@ -100,8 +100,6 @@ assert lib.assertMsg (!hidpiXWayland) "The option `hidpiXWayland` has been remov
patches = [
# make meson use the provided wlroots instead of the git submodule
./patches/meson-build.patch
- # fixes portals search path to be picked up from $XDG_DESKTOP_PORTAL_DIR
- ./patches/portals.patch
];
postPatch = ''
diff --git a/nix/patches/portals.patch b/nix/patches/portals.patch
deleted file mode 100644
index cb3d97c3..00000000
--- a/nix/patches/portals.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-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);
-- }
- }
- }
-
diff --git a/src/Compositor.cpp b/src/Compositor.cpp
index ef611d8d..c74eb681 100644
--- a/src/Compositor.cpp
+++ b/src/Compositor.cpp
@@ -2427,22 +2427,7 @@ int CCompositor::getNewSpecialID() {
}
void CCompositor::performUserChecks() {
- static constexpr auto BAD_PORTALS = {"kde", "gnome"};
-
- 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"); })) {
- // 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);
- }
- }
+ // empty
}
void CCompositor::moveWindowToWorkspaceSafe(CWindow* pWindow, CWorkspace* pWorkspace) {
diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp
index defa1a11..831e3b17 100644
--- a/src/config/ConfigManager.cpp
+++ b/src/config/ConfigManager.cpp
@@ -103,7 +103,6 @@ void CConfigManager::setDefaultVars() {
configValues["misc:moveintogroup_lock_check"].intValue = 0;
configValues["misc:hide_cursor_on_touch"].intValue = 1;
configValues["misc:mouse_move_focuses_monitor"].intValue = 1;
- configValues["misc:suppress_portal_warnings"].intValue = 0;
configValues["misc:render_ahead_of_time"].intValue = 0;
configValues["misc:render_ahead_safezone"].intValue = 1;
configValues["misc:cursor_zoom_factor"].floatValue = 1.f;