hyprland-wiki/pages/Useful Utilities/Hyprland-desktop-portal.md

65 lines
2 KiB
Markdown
Raw Normal View History

2022-12-03 23:52:10 +01:00
An XDG Desktop Portal (later called XDP) is a program that lets other
applications communicate swiftly with the compositor through D-Bus.
It's used for stuff like e.g. opening file pickers, screen sharing.
On Wayland, it also requires an implementation. For Hyprland,
you'd usually use `xdg-desktop-portal-wlr` (later called XDPW)
Unfortunately, due to various reasons the -wlr portal is inferior
to the KDE or Gnome ones.
In order to bridge the gap, Hyprland has its own fork of XDPW that
has more features, called [xdg-desktop-portal-hyprland](https://github.com/hyprwm/xdg-desktop-portal-hyprland).
(later called XDPH)
{{< hint type=important >}}
You don't **need** XDPH. Hyprland will work with XDPW, but XDPH has more features, like e.g.
2022-12-05 02:02:43 +01:00
window sharing.
2022-12-05 02:07:34 +01:00
XDPH will work on other wlroots-based compositors, although limited to the XDPW features (other
will be disabled)
2022-12-03 23:52:10 +01:00
{{< /hint >}}
## Installing
2022-12-05 02:01:55 +01:00
#### AUR
```sh
yay -S xdg-desktop-portal-hyprland-git
```
#### Manual
2022-12-03 23:52:10 +01:00
See [The Github repo's readme](https://github.com/hyprwm/xdg-desktop-portal-hyprland).
2022-12-10 18:06:29 +01:00
{{< hint type=important >}}
It's recommended to uninstall any other portal implementations to avoid conflicts with the `-hyprland` or `-wlr` ones.
`-kde` and `-gnome` are known to cause issues.
{{< /hint >}}
2022-12-05 02:01:55 +01:00
## Usage
Should start automatically.
The most basic way of telling everything is OK is by trying to screenshare anything, or
open OBS and select pipewire source. If XDPH is running, a qt menu will pop up asking you
what to share.
If it doesn't, and you get e.g. slurp, then XDPW is launching. In that case, try removing XDPW.
XDPH will work on other wlroots compositors, but features available only on Hyprland will not work
(e.g. window sharing)
2022-12-03 23:52:10 +01:00
For a nuclear option, you can use this script and `exec-once` it:
```sh
#!/bin/bash
sleep 1
killall xdg-desktop-portal-hyprland
killall xdg-desktop-portal-wlr
killall xdg-desktop-portal
2022-12-05 02:01:55 +01:00
/usr/libexec/xdg-desktop-portal-hyprland &
2022-12-03 23:52:10 +01:00
sleep 2
/usr/lib/xdg-desktop-portal &
```
2022-12-05 02:01:55 +01:00
adjust the paths if incorrect.