xdg-desktop-portal backend for Hyprland
  • C++ 92.1%
  • Nix 2.7%
  • CMake 2.7%
  • Meson 2.4%
Find a file
2026-10-21 18:27:48 +02:00
.builds
.github ci: init vouch 2026-08-01 12:25:46 +02:00
contrib
hyprland-share-picker screencopy: add workspace sharing support (#441) 2026-10-21 18:27:48 +02:00
nix core: reimplement the picker in hyprtoolkit (#432) 2026-09-22 14:33:27 +02:00
protocols screencopy: add workspace sharing support (#441) 2026-10-21 18:27:48 +02:00
src screencopy: add workspace sharing support (#441) 2026-10-21 18:27:48 +02:00
subprojects screencopy: verify choices are valid for building modifier gbms (#447) 2026-10-20 19:37:48 +02:00
.clang-format
.editorconfig
.gitignore
.gitmodules
AGENTS.md
CMakeLists.txt screencopy: add workspace sharing support (#441) 2026-10-21 18:27:48 +02:00
CONTRIBUTING.md
flake.lock screencopy: add workspace sharing support (#441) 2026-10-21 18:27:48 +02:00
flake.nix core: reimplement the picker in hyprtoolkit (#432) 2026-09-22 14:33:27 +02:00
hyprland.portal input-capture: add portal implementation (#268) 2026-07-14 11:40:48 +02:00
LICENSE
meson.build input-capture: add portal implementation (#268) 2026-07-14 11:40:48 +02:00
meson_options.txt core: reimplement the picker in hyprtoolkit (#432) 2026-09-22 14:33:27 +02:00
org.freedesktop.impl.portal.desktop.hyprland.service.in
README.md
VERSION version: bump to 1.4.0 2026-07-29 23:05:35 +02:00

xdg-desktop-portal-hyprland

An XDG Desktop Portal backend for Hyprland.

Installing

First, make sure to install the required dependencies:

gbm
hyprland-protocols
hyprlang
hyprutils
hyprwayland-scanner
libdrm
libpipewire-0.3
libspa-0.2
sdbus-cpp
wayland-client
wayland-protocols

Then run the build and install command:

git clone --recursive https://github.com/hyprwm/xdg-desktop-portal-hyprland
cd xdg-desktop-portal-hyprland/
cmake -DCMAKE_INSTALL_LIBEXECDIR=/usr/lib -DCMAKE_INSTALL_PREFIX=/usr -B build
cmake --build build
sudo cmake --install build

Nix

Caution

XDPH should not be used from this flake directly!

Instead, use it from the Hyprland flake.

There are two reasons for the above:

  1. Hyprland depends on XDPH, but XDPH also depends on Hyprland. This results in a cyclic dependency, which is a nightmare. To counter this, we use the Nixpkgs Hyprland package in this flake, so that it can be later consumed by the Hyprland flake while overriding the Hyprland package.
  2. Even if you manually do all the overriding, you may still get it wrong and lose out on the Cachix cache (which has XDPH as exposed by the Hyprland flake).

Running, FAQs, etc.

See the Hyprland wiki