Git Product home page Git Product logo

xdg-desktop-portal-hyprland's Introduction

xdg-desktop-portal-hyprland

An XDG Desktop Portal backend for Hyprland.

Installing

First, make sure to install the required dependencies:

gbm
hyprland-protocols
hyprlang
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

Running, FAQs, etc.

See the Hyprland wiki

xdg-desktop-portal-hyprland's People

Contributors

agx avatar alebastr avatar algram avatar andresilva avatar aqa-ib avatar b1rger avatar brodeuralexis avatar columbarius avatar commrade-goad avatar danshick avatar david96 avatar emersion avatar fufexan avatar germainz avatar ifreund avatar jbeich avatar junglerobba avatar kode54 avatar leftas avatar lennoxlotl avatar maribu avatar mikewalrus avatar quantum5 avatar rudolchr avatar rurigk avatar solopasha avatar spikespaz avatar st3r4g avatar tobiasjakobi avatar vaxerski avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xdg-desktop-portal-hyprland's Issues

Screenshare not working on a RDNA3 card

OBS does show up a qt menu for selecting monitors, but after selecting the monitor it's still a black screen. I also have an intel laptop with hyprland, but screensharing works fine given wlrobs-hg plugin installed.
Also, could this relate to 10-bit?

OS: Arch Linux
Kernel: 6.2.2
GPU: RX 7900 XT
Mesa version: 23.0.0
Monitor Setup: Single 3840x2160 monitor at 144hz, 10-bit enabled, scaling set to 1.5

Laptop specs:
OS: Arch Linux
Kernel: 6.2.1
CPU: i5-1135G7
GPU: Iris Xe LP
intel-media-driver version: 23.1.0
Monitor Setup: Builtin 2256x1504 monitor at 60hz, scaling set to 1.5

Log from OBS:

info: ------------------------------------------------
info: Loaded scenes:
info: - scene 'Scene':
info:     - source: 'Screen Capture (PipeWire)' (pipewire-desktop-capture-source)
info: ------------------------------------------------
info: [pipewire] Screencast session created
info: adding 21 milliseconds of audio buffering, total audio buffering is now 21 milliseconds (source: Desktop Audio)

info: [pipewire] Asking for desktop
info: [pipewire] desktop selected, setting up screencast
info: [pipewire] Server version: 0.3.66
info: [pipewire] Library version: 0.3.66
info: [pipewire] Header version: 0.3.64
info: [pipewire] Created stream 0x555b4392d890
info: [pipewire] Stream 0x555b4392d890 state: "connecting" (error: none)
info: [pipewire] Playing stream 0x555b4392d890
info: [pipewire] Stream 0x555b4392d890 state: "paused" (error: none)

Edit: It seems unrelated to 10-bit. I switched to 8 bit and it still doesn't work.
Edit: Not sure why it works given KDE and xdg-desktop-portal-kde.

Error while building

Hi, I've encountered an error during install through yay.

protocols/meson.build:26.1: ERROR : File //usr/share/protocols/hyprland-global-shortcuts-v1.xml do3s not exist.

Screensharing not working when monitor has bitdepth 10

When using 10 bitdepth screenshare fails using OBS and Firefox (probably in more software)

I have 2 monitors, works if the monitor i want to screenshare is not in 10 bit mode

/usr/lib/xdg-desktop-portal-hyprland -l DEBUG does not show any error

System info
CPU: Ryzen 2700X
GPU: RX 6700 XT (RADV)
Distro: Arch
AUR: hyprland-git
AUR: xdg-desktop-portal-hyprland-git

Everything is up to date
xdg-desktop-portal-kde, xdg-desktop-portal-gnome, xdg-desktop-portal-wlr are not installed

journalctl log

feb 08 03:30:34 rurigk wireplumber[5338]: <WpPortalPermissionStorePlugin:0x558fb7314f50> Failed to call Lookup: GDBus.Error:org.freedesktop.portal.Error.NotFound: No entry for camera
feb 08 03:30:34 rurigk pipewire[5326]: pw.context: params Spa:Enum:ParamId:EnumFormat: 0:0 Invalid argument (input format (no more input formats))
feb 08 03:30:34 rurigk pipewire[5326]: pw.context: Object: size 296, type Spa:Pod:Object:Param:Format (262147), id Spa:Enum:ParamId:EnumFormat (3)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaType (1), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Id 2        (Spa:Enum:MediaType:video)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaSubtype (2), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Id 1        (Spa:Enum:MediaSubtype:raw)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:format (131073), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Id 12       (Spa:Enum:VideoFormat:BGRA)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:modifier (131074), flags 00000018
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Choice: type Spa:Enum:Choice:Enum, flags 00000000 88 8
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188488387331
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188488387331
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188488370947
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188488174339
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188486904579
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188084250882
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188075858177
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 0
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 72057594037927935
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:size (131075), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Rectangle 320x240
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Rectangle 1x1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Rectangle 8192x4320
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:framerate (131076), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Fraction 30/1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Fraction 0/1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Fraction 360/1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context: Object: size 296, type Spa:Pod:Object:Param:Format (262147), id Spa:Enum:ParamId:EnumFormat (3)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaType (1), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Id 2        (Spa:Enum:MediaType:video)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaSubtype (2), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Id 1        (Spa:Enum:MediaSubtype:raw)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:format (131073), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Id 11       (Spa:Enum:VideoFormat:RGBA)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:modifier (131074), flags 00000018
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Choice: type Spa:Enum:Choice:Enum, flags 00000000 88 8
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188488387331
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188488387331
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188488370947
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188488174339
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188486904579
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188084250882
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188075858177
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 0
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 72057594037927935
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:size (131075), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Rectangle 320x240
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Rectangle 1x1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Rectangle 8192x4320
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:framerate (131076), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Fraction 30/1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Fraction 0/1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Fraction 360/1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context: Object: size 296, type Spa:Pod:Object:Param:Format (262147), id Spa:Enum:ParamId:EnumFormat (3)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaType (1), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Id 2        (Spa:Enum:MediaType:video)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaSubtype (2), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Id 1        (Spa:Enum:MediaSubtype:raw)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:format (131073), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Id 8        (Spa:Enum:VideoFormat:BGRx)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:modifier (131074), flags 00000018
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Choice: type Spa:Enum:Choice:Enum, flags 00000000 88 8
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188488387331
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188488387331
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188488370947
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188488174339
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188486904579
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188084250882
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188075858177
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 0
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 72057594037927935
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:size (131075), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Rectangle 320x240
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Rectangle 1x1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Rectangle 8192x4320
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:framerate (131076), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Fraction 30/1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Fraction 0/1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Fraction 360/1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context: Object: size 296, type Spa:Pod:Object:Param:Format (262147), id Spa:Enum:ParamId:EnumFormat (3)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaType (1), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Id 2        (Spa:Enum:MediaType:video)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaSubtype (2), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Id 1        (Spa:Enum:MediaSubtype:raw)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:format (131073), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Id 7        (Spa:Enum:VideoFormat:RGBx)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:modifier (131074), flags 00000018
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Choice: type Spa:Enum:Choice:Enum, flags 00000000 88 8
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188488387331
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188488387331
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188488370947
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188488174339
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188486904579
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188084250882
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188075858177
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 0
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 72057594037927935
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:size (131075), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Rectangle 320x240
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Rectangle 1x1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Rectangle 8192x4320
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:framerate (131076), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Fraction 30/1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Fraction 0/1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Fraction 360/1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context: Object: size 192, type Spa:Pod:Object:Param:Format (262147), id Spa:Enum:ParamId:EnumFormat (3)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaType (1), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Id 2        (Spa:Enum:MediaType:video)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaSubtype (2), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Id 1        (Spa:Enum:MediaSubtype:raw)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:format (131073), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Id 12       (Spa:Enum:VideoFormat:BGRA)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:size (131075), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Rectangle 320x240
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Rectangle 1x1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Rectangle 8192x4320
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:framerate (131076), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Fraction 30/1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Fraction 0/1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Fraction 360/1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context: Object: size 192, type Spa:Pod:Object:Param:Format (262147), id Spa:Enum:ParamId:EnumFormat (3)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaType (1), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Id 2        (Spa:Enum:MediaType:video)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaSubtype (2), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Id 1        (Spa:Enum:MediaSubtype:raw)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:format (131073), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Id 11       (Spa:Enum:VideoFormat:RGBA)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:size (131075), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Rectangle 320x240
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Rectangle 1x1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Rectangle 8192x4320
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:framerate (131076), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Fraction 30/1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Fraction 0/1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Fraction 360/1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context: Object: size 192, type Spa:Pod:Object:Param:Format (262147), id Spa:Enum:ParamId:EnumFormat (3)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaType (1), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Id 2        (Spa:Enum:MediaType:video)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaSubtype (2), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Id 1        (Spa:Enum:MediaSubtype:raw)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:format (131073), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Id 8        (Spa:Enum:VideoFormat:BGRx)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:size (131075), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Rectangle 320x240
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Rectangle 1x1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Rectangle 8192x4320
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:framerate (131076), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Fraction 30/1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Fraction 0/1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Fraction 360/1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context: Object: size 192, type Spa:Pod:Object:Param:Format (262147), id Spa:Enum:ParamId:EnumFormat (3)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaType (1), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Id 2        (Spa:Enum:MediaType:video)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaSubtype (2), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Id 1        (Spa:Enum:MediaSubtype:raw)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:format (131073), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Id 7        (Spa:Enum:VideoFormat:RGBx)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:size (131075), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Rectangle 320x240
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Rectangle 1x1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Rectangle 8192x4320
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:framerate (131076), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Fraction 30/1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Fraction 0/1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Fraction 360/1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context: params Spa:Enum:ParamId:EnumFormat: 1:0 Invalid argument (output format (no more input formats))
feb 08 03:30:34 rurigk pipewire[5326]: pw.context: Object: size 288, type Spa:Pod:Object:Param:Format (262147), id Spa:Enum:ParamId:EnumFormat (3)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaType (1), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Id 2        (Spa:Enum:MediaType:video)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaSubtype (2), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Id 1        (Spa:Enum:MediaSubtype:raw)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:format (131073), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Id 80       (Spa:Enum:VideoFormat:xRGB_210LE)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:modifier (131074), flags 00000018
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Choice: type Spa:Enum:Choice:Enum, flags 00000000 88 8
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188488387331
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188488387331
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188488370947
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188488174339
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188486904579
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188084250882
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 144115188075858177
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 0
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Long 72057594037927935
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:size (131075), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Rectangle 3840x2160
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:framerate (131076), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Fraction 0/1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:maxFramerate (131077), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Fraction 60/1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Fraction 1/1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Fraction 60/1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context: Object: size 184, type Spa:Pod:Object:Param:Format (262147), id Spa:Enum:ParamId:EnumFormat (3)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaType (1), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Id 2        (Spa:Enum:MediaType:video)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaSubtype (2), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Id 1        (Spa:Enum:MediaSubtype:raw)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:format (131073), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Id 81       (Spa:Enum:VideoFormat:xBGR_210LE)
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:size (131075), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Rectangle 3840x2160
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:framerate (131076), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Fraction 0/1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:maxFramerate (131077), flags 00000000
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Fraction 60/1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Fraction 1/1
feb 08 03:30:34 rurigk pipewire[5326]: pw.context:       Fraction 60/1
feb 08 03:30:34 rurigk pipewire[5326]: pw.link: (108.0 -> 111.0) negotiating -> error (no more input formats)

Crash

Installing xdg desktop portal hyprland as described on the website results in following crash when obs studio is opened.
grim isn't working either (screenshot is black).

Apr 04 21:29:03 jojiiPC xdg-desktop-por[735]: Failed to close session implementation: Timeout was reached
Apr 04 21:29:05 jojiiPC xdg-desktop-portal-hyprland[1259]: 2023/04/04 21:29:05 [ERROR] - xdg-desktop-portal-hyprland: unsupported wl_shm format 0x34324742
Apr 04 21:29:06 jojiiPC systemd-coredump[1862]: [🡕] Process 1259 (xdg-desktop-por) of user 1000 dumped core.
                                                
                                                Stack trace of thread 1259:
                                                #0  0x00007f88073058ec n/a (libc.so.6 + 0x878ec)
                                                #1  0x00007f88072b6ea8 raise (libc.so.6 + 0x38ea8)
                                                #2  0x00007f88072a053d abort (libc.so.6 + 0x2253d)
                                                #3  0x00005573614c81f4 xdpw_format_drm_fourcc_from_wl_shm (xdg-desktop-portal-hyprland + 0xb1f4)
                                                #4  0x00005573614c9437 wlr_frame_buffer (xdg-desktop-portal-hyprland + 0xc437)
                                                #5  0x00007f880727a4f6 n/a (libffi.so.8 + 0x74f6)
                                                #6  0x00007f8807276f5e n/a (libffi.so.8 + 0x3f5e)
                                                #7  0x00007f8807279b73 ffi_call (libffi.so.8 + 0x6b73)
                                                #8  0x00007f8807657645 n/a (libwayland-client.so.0 + 0x7645)
                                                #9  0x00007f8807657e03 n/a (libwayland-client.so.0 + 0x7e03)
                                                #10 0x00007f8807657ffc wl_display_dispatch_queue_pending (libwayland-client.so.0 + 0x7ffc)
                                                #11 0x00005573614c5f9b start_screencast (xdg-desktop-portal-hyprland + 0x8f9b)
                                                #12 0x00005573614c6c87 method_screencast_start (xdg-desktop-portal-hyprland + 0x9c87)
                                                #13 0x00007f880759fe2d n/a (libsystemd.so.0 + 0x32e2d)
                                                #14 0x00007f88075b62be n/a (libsystemd.so.0 + 0x492be)
                                                #15 0x00005573614c31a2 main (xdg-desktop-portal-hyprland + 0x61a2)
                                                #16 0x00007f88072a1790 n/a (libc.so.6 + 0x23790)
                                                #17 0x00007f88072a184a __libc_start_main (libc.so.6 + 0x2384a)
                                                #18 0x00005573614c2905 _start (xdg-desktop-portal-hyprland + 0x5905)
                                                
                                                Stack trace of thread 1260:
                                                #0  0x00007f88073861b6 epoll_wait (libc.so.6 + 0x1081b6)
                                                #1  0x00007f880768b759 n/a (libspa-support.so + 0x16759)
                                                #2  0x00007f880767b9fb n/a (libspa-support.so + 0x69fb)
                                                #3  0x00007f88074d8227 n/a (libpipewire-0.3.so.0 + 0x45227)
                                                #4  0x00007f8807303bb5 n/a (libc.so.6 + 0x85bb5)
                                                #5  0x00007f8807385d90 n/a (libc.so.6 + 0x107d90)
                                                ELF object binary architecture: AMD x86-64
Apr 04 21:29:06 jojiiPC systemd[626]: xdg-desktop-portal-hyprland.service: Main process exited, code=dumped, status=6/ABRT

Screensharing fails on NixOS

When launching the screen sharing on my NixOS setups, I encounter what seems a permission issue (here with OBS)

info: PipeWire initialized
info: Switched to scene 'Full desktop'
info: ------------------------------------------------
info: Loaded scenes:
info: - scene 'Alone':
info:     - source: 'Image' (image_source)
info:     - source: 'Video Capture Device (V4L2)' (v4l2_input)
info: - scene 'Full desktop':
info:     - source: 'Screen Capture (PipeWire)' (pipewire-desktop-capture-source)
info:     - source: 'Video Capture Device (V4L2)' (v4l2_input)
info: ------------------------------------------------
info: [pipewire] Screencast session created
Attempted path: share/obs/obs-studio/images/overflow.png
Attempted path: /nix/store/v5dd3g0kgk8pzjdkypky19qynwil100z-obs-studio-28.1.2/share/obs/obs-studio/images/overflow.png
info: adding 21 milliseconds of audio buffering, total audio buffering is now 21 milliseconds (source: Desktop Audio)

info: [pipewire] Asking for desktop
warning: [pipewire] Failed to start screencast, denied or cancelled by user

I installed hyprland using flakes and NixOS, I check the module and it seems this portal is added automatically to extra portals so my guess is the setup is pretty standard and foolproof and should work out of the box, but it is not the case.

I use nixpkgs on nixpkgs.url = github:NixOS/nixpkgs; (unstable).

Did I miss something or is there a bug ?
I can provide more logs if you need, let me know.

Are Global Shortcuts functioning?

I'll preface this by saying I am a newb to dbus in general, and honestly don't know what I'm doing. lol. So this is may be more a question than a real 'bug report'.

So the problem I'm having is that while CreateSession seems to work no problem, BindShortcuts and ListShortcuts does not appear to. The Response signal I get is only 2 {} when trying to use either.

This is the error in journalctl that I see most of the time when trying to BindShortcuts:
xdg-desktop-por[48879]: A backend call failed: No such device or address
And when trying to ListShortcuts:
xdg-desktop-por[51137]: A backend call failed: Unknown method ListShortcuts or interface org.freedesktop.impl.portal.GlobalShortcuts.

And here's the log of xdg-desktop-portal-hyprland during a session:

2023/05/03 13:03:33 [INFO] - dbus: create session method invoked
2023/05/03 13:03:33 [INFO] - dbus: request_handle: /org/freedesktop/portal/desktop/request/1_647/pyscreenshot
2023/05/03 13:03:33 [INFO] - dbus: session_handle: /org/freedesktop/portal/desktop/session/1_647/pyscreenshot
2023/05/03 13:03:33 [INFO] - dbus: app_id: 
2023/05/03 13:03:33 [WARN] - dbus: unknown option: handle_token
2023/05/03 13:03:33 [INFO] - dbus: option token: pyscreenshot
2023/05/03 13:03:33 [INFO] - dbus: list shortcuts invoked
2023/05/03 13:03:33 [INFO] - dbus: request_handle: /org/freedesktop/portal/desktop/request/1_647/pyscreenshot
2023/05/03 13:03:33 [INFO] - dbus: session_handle: /org/freedesktop/portal/desktop/session/1_647/pyscreenshot
2023/05/03 13:03:35 [INFO] - dbus: session closed
2023/05/03 13:03:35 [DEBUG] - dbus: destroying session 0x55b0d232c980

Occasionally, a ListShortcuts will 'slip through' and work. It will show the new shortcut bound, despite the No such device or address error. However, it does not show up in hyprctl globalshortcuts at all.

Very much would believe there's some user-error on my part. So this very much could be less a bug report, more an I'm an idiot report.

Upright screens are handled wrong

There are a couple of discrepancies when attempting to cast upright screens with XDPH (and possibly 180 / flipped as well).

On KDE, OBS (PipeWire) on a screen with transform: 1 gives an upright image that's already rotated, with dimensions correct for upright presentation. I would think this is the correct behavior, since screen sharing is one of the primary use-cases for this, where the user can't easily rotate or flip their screen.

On Hyprland with XDPH, OBS (PW) shows an image that's lying flat (not rotated) with parts of the image being black, and other parts missing, seemingly due to a wrong offset. The dimensions are the native dimensions of the screen without any adjustment. Image Link.

Behavior is the same with both memfd and dmabuf capture.

Comparing to wlr_export_dmabuf (wlrobs), with that we get the native image unrotated, but there's no offset issue and the image is perfectly usable after manually rotating inside OBS.

Screenshare freezes after a few seconds

I don't know where the issue is exactly, but when I screenshare, it works for a few seconds, then will freeze until I restart the screenshare. Running xdph with -lTRACE, it doesn't appear to log any errors when the screenshare freezes.

Screen share breaks with ultrawide

The broken resolution is 3440x1440 and the good resolution is 1920x1080(Still on the same monitor). It only breaks when screen sharing. App sharing works fine either way.

20221218_17h12m46s_grim
20221218_17h17m49s_grim

[won't be fixed, see comment] hyprland-share-picker is shown multiple times

Steps to reproduce

Try to share an entire screen or a window (video).

Expected behavior:

hyprland-share-picker is shown once

Actual behavior:

hyprland-share-picker is shown multiple times (video)

Logs

hyprland.log
xdph.log

Soft

hyprland-bin: (https://github.com/hyprwm/Hyprland/releases/tag/v0.19.1beta)
xdg-desktop-portal-hyprland-git r240.7567892-1

System

OS             Arch Linux x86_64 
Kernel         6.0.11-zen1-1-zen 
Packages       1016 (pacman) 
DE             Hyprland 
Resolution     3440x1440 
Shell          zsh 5.9.0.1-dev 
Terminal       foot 
CPU            AMD Ryzen 7 3800X (16) @ 3.9GHz
GPU            AMD ATI Radeon 6900 XT 
GPU Driver     amdgpu 

Redirect from hyprwm/Hyprland#1223

Cursor erratically jumps around when running Final Fantasy 14

Summary of the Bug:

When playing FInal Fantasy using Hyprland with XDG-Desktop-Portal-Hyprland cursor will erratically and randomly move around (frequently happens in combination with Right Click, but I have observed the behavior without pushing right click). This issue is not present in KDE'S Implementation of Wayland (KWin), nor is it present when using Hyprland with the XDG-Desktop-Portal-Wlr

Steps to Reproduce the Bug:

Play Final Fantasy like normal. Try to move the camera and obverse erratic behavior / observe the position of the cursor when idle. I am not sure if this happens in other games. This bug is also present when using Gamescope which uses the Dekstop Portal present (but only depends on WLRoots). I have tested this with several mice and several implementations of the XDG-Desktop-Portal, and this issue only occurs with the Hyprland fork.

Expected Behavior:

Cursor moves where directed by mouse input.

Relevant System Information:

Arch Linux, 3440x1440 Monitor, AMD Ryzen R9 5950X, AMD 7900XTX GPU (can provide other specs as needed). Tested with: Logitech, Corsiar, and Steelseries mice to isolate mouse problem but all produced the same behavior.

Workaround:

Use XDG-Desktop-Portal-Wlr

Priority to fix:
Low. I don't know how or why this is attached to this, but here we are. XDG-Dekstop-Portal-Wlr works if you don't need Global Hotkeys.

Build hyprland on Guix: undefined reference to drmGetDeviceFromDevId

hey i'm trying to build hyprland in Guix (i'm using the flake.nix files as examples) I'm running into the following errors when linking xdg-desktop-portal-hyprland

ld: xdg-desktop-portal-hyprland.p/src_screencast_wlr_screencast.c.o: in function `linux_dmabuf_feedback_handle_main_device':
/tmp/guix-build-xdg-desktop-portal-hyprland-0.3.1.drv-0/build/../xdg-desktop-portal-hyprland-0.3.1/src/screencast/wlr_screencast.c:847: undefined reference to `drmGetDeviceFromDevId'
ld: xdg-desktop-portal-hyprland.p/src_screencast_wlr_screencast.c.o: in function `linux_dmabuf_feedback_tranche_target_devices':
/tmp/guix-build-xdg-desktop-portal-hyprland-0.3.1.drv-0/build/../xdg-desktop-portal-hyprland-0.3.1/src/screencast/wlr_screencast.c:895: undefined reference to `drmGetDeviceFromDevId'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
error: in phase 'build': uncaught exception:
%exception #<&invoke-error program: "ninja" arguments: ("-j" "32") exit-status: 1 term-signal: #f stop-signal: #f> 

here's my build log:

https://pastebin.com/2qM304u0

and the packages I defined:

https://pastebin.com/HBvMjDKn

The pastebins are dated for about a week, so i added the build log as an attachment. I can pull stuff out of the pastebins and add them to the issue if necessary. I tried asking on the discord and elsewhere about the question, but didn't get much of a response. i think the issue here surrounds the drmGetDeviceFromDevId reference not being found.

i'm building my own hyprland-protocols and i dont think the build is doing anything with the submodule in this repository.

build.log

[ERROR] - dbus: failed to connect to user bus: No such file or directory

Telegram, Waybar, Firefox taking too much time to open, they works fine when I remove xdg-desktop-portal. I'm on Artix runit, so systemd isn't involved anywhere.

➜  ~ /usr/lib/xdg-desktop-portal-hyprland
2023/02/24 16:41:23 [ERROR] - dbus: failed to connect to user bus: No such file or directory
## ~/.config/hypr/hyprland.conf
...
exec-once = ~/.config/hypr/scripts/xdg-desktop-portal
exec-once = dbus-update-activation-environment --all
exec-once = ~/.config/hypr/scripts/gtktheme
...
## ~/.bash_profile
...
if [[ -z $WAYLAND_DISPLAY && $(tty) = "/dev/tty1" ]]; then
        eval $(gnome-keyring-daemon --start --components=pkcs11,secrets,ssh)
        export SSH_AUTH_SOCK
        exec dbus-launch Hyprland >/dev/null 2>&1
fi
...

hyprland-share-picker fails to build with Clang

Regressed by 27118ee

$ export CC=clang CXX=clang++
$ cmake -G Ninja -S hyprland-share-picker -B /tmp/hyprland-share-picker_build
$ cmake --build /tmp/hyprland-share-picker_build
[...]
hyprland-share-picker/main.cpp:64:51: error: non-constant-expression cannot be narrowed from type 'long long' to 'unsigned long' in initializer list [-Wc++11-narrowing]
            result.push_back({TITLESTR, CLASSSTR, std::stoll(IDSTR)});
                                                  ^~~~~~~~~~~~~~~~~
hyprland-share-picker/main.cpp:64:51: note: insert an explicit cast to silence this issue
            result.push_back({TITLESTR, CLASSSTR, std::stoll(IDSTR)});
                                                  ^~~~~~~~~~~~~~~~~
                                                  static_cast<unsigned long>( )
1 error generated.

screensharing works, but no windows available in the window selector

On latest commit: b03b1c2
Hyprland itself is build from git today as well.

Not sure how to debug this one, but sharing entire screens works flawlessly. However on a clean start on the window sharing tab it is empty:

image

When I play arround with restarting xdg-desktop-portal-hyprland.service and xdg-desktop-portal.service after a long raindance it starts working. And keeps working, for multiple sessions. But then on reboot, it's broken again.

Log from xdg-desktop-portal-hyprland.service:
Jan 19 15:57:41 haplo xdg-desktop-portal-hyprland[79468]: 2023/01/19 15:57:41 [ERROR] - wlroots: no output / window found

Log from xdg-desktop-portal.service
Jan 19 15:57:27 haplo xdg-desktop-por[81748]: No skeleton to export

Pipewire Streaming Issue

Hey,

Excuse the piss poor title, I wasnt sure how else to label this as I'm piecing together some stuff-- I moved over to XDPH recently and have not had any luck getting the screensharing function to work on my multi-monitor setup. At all. For example, if I add a pipewire capture via OBS I get the picker tool, and I select a monitor:

via xdg-desktop-portal-hyprland -l DEBUG:

2023/01/19 19:07:17 [INFO] - xdpw: screencast instance 0x55cf0ce85de0 has 1 references
2023/01/19 19:07:17 [INFO] - xdpw: 1 active screencast instances
2023/01/19 19:07:17 [INFO] - hyprland: window handle 215068032
2023/01/19 19:07:17 [INFO] - dbus: start method invoked
2023/01/19 19:07:17 [INFO] - dbus: request_handle: /org/freedesktop/portal/desktop/request/1_71/obs9
2023/01/19 19:07:17 [INFO] - dbus: session_handle: /org/freedesktop/portal/desktop/session/1_71/obs3
2023/01/19 19:07:17 [INFO] - dbus: app_id:
2023/01/19 19:07:17 [INFO] - dbus: parent_window:
2023/01/19 19:07:17 [DEBUG] - dbus: start: found matching session /org/freedesktop/portal/desktop/session/1_71/obs3
2023/01/19 19:07:17 [INFO] - wlroots: no modifiers available for format 0
2023/01/19 19:07:17 [INFO] - pipewire: stream state changed to "connecting"
2023/01/19 19:07:17 [INFO] - pipewire: node id is -1
2023/01/19 19:07:17 [INFO] - pipewire: stream state changed to "paused"
2023/01/19 19:07:17 [INFO] - pipewire: node id is 73
2023/01/19 19:07:17 [DEBUG] - dbus: start: returning node 73

Removing it:

2023/01/19 19:07:55 [INFO] - dbus: session closed
2023/01/19 19:07:55 [DEBUG] - dbus: destroying session 0x55cf0ce89bf0
2023/01/19 19:07:55 [DEBUG] - xdpw: screencast instance 0x55cf0ce85de0 now has 0 references
2023/01/19 19:07:55 [DEBUG] - xdpw: destroying cast instance
2023/01/19 19:07:55 [DEBUG] - pipewire: destroying stream
2023/01/19 19:07:55 [INFO] - pipewire: stream state changed to "unconnected"
2023/01/19 19:07:55 [INFO] - pipewire: node id is -1

From Wireplumber journal:

Jan 19 19:07:17 skynet wireplumber[1516]: <WpPortalPermissionStorePlugin:0x55933e42b080> Failed to call Lookup: GDBus.Error:org.freedesktop.portal.Error.NotFound: No entry for camera

From Pipewire (tailed) journal:

ct:Param:Format:mediaType (1), flags 00000000
Jan 19 19:07:17 skynet pipewire[1515]: pw.context:     Id 2        (Spa:Enum:MediaType:video)
Jan 19 19:07:17 skynet pipewire[1515]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaSubtype (2), flags 00000000
Jan 19 19:07:17 skynet pipewire[1515]: pw.context:     Id 1        (Spa:Enum:MediaSubtype:raw)
Jan 19 19:07:17 skynet pipewire[1515]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:format (131073), flags 00000000
Jan 19 19:07:17 skynet pipewire[1515]: pw.context:     Id 81       (Spa:Enum:VideoFormat:xBGR_210LE)
Jan 19 19:07:17 skynet pipewire[1515]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:size (131075), flags 00000000
Jan 19 19:07:17 skynet pipewire[1515]: pw.context:     Rectangle 1263x687
Jan 19 19:07:17 skynet pipewire[1515]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:framerate (131076), flags 00000000
Jan 19 19:07:17 skynet pipewire[1515]: pw.context:     Fraction 0/1
Jan 19 19:07:17 skynet pipewire[1515]: pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:maxFramerate (131077), flags 00000000
Jan 19 19:07:17 skynet pipewire[1515]: pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
Jan 19 19:07:17 skynet pipewire[1515]: pw.context:       Fraction 60/1
Jan 19 19:07:17 skynet pipewire[1515]: pw.context:       Fraction 1/1
Jan 19 19:07:17 skynet pipewire[1515]: pw.context:       Fraction 60/1
Jan 19 19:07:17 skynet pipewire[1515]: pw.link: (73.0 -> 83.0) negotiating -> error (no more input formats)

Whilst searching around I stumbled across this issue from Wireplumber repo, which references pretty much the same things I've outlined above:

https://gitlab.freedesktop.org/pipewire/wireplumber/-/issues/87

And that, in turn, ended back with XDPW here:

emersion/xdg-desktop-portal-wlr#168

There is seemingly a reference to another similar problem in XDPW here (where the OP reverted to pipewire-media-session):

emersion/xdg-desktop-portal-wlr#97


I cannot, for the life of me, what is causing this to not function correctly. For whatever reason Pipewire never hits "streaming" state in the XDPH debug log. Feel free to tell me if you think this is an issue with my setup (that may well be the case tbh), I figured it was worth logging either way. I also feel its worth stating I've been over the wiki to ensure I'm not shooting myself in the foot; I'm not running other XDP implementations etc. Happy to supply full logs if you think it'll help.

Thank you for your work on this.

Session restore does not remember regions

If you choose region, after restarting obs it will display entire screen, not the region selected.
Also it doesn't remember selected windows at all.

Selected regions
image

Regions after restart
image

AUR: need to update pkgrel

When updating packages from yay, i get xdg-desktop-portal-hyprland-git update every time.

Package (1)                      Old Version     New Version     Net Change

xdg-desktop-portal-hyprland-git  r261.e1f145d-1  r261.e1f145d-1    0.00 MiB

Total Installed Size:  0.36 MiB
Net Upgrade Size:      0.00 MiB

You need to inc pkgrel to break this loop. Thanks.

xdg-desktop-portal-hyprland dependency problem

Both xdg-desktop-portal-hyprland and xdg-desktop-portal-hyprland-git depend on xdg-desktop-portal. So when installing the XDG desktop implementation the AUR helper or Pacman package manager asks for one XDG desktop portal implementation which can conflict with the XDG desktop portal Hyprland implementation.

No such interface "org.freedesktop.portal.FileChooser"

Hi !

I'm trying to use the ImHex editor https://github.com/WerWolv/ImHex in hyprland.
As I need the screen sharing feature in discord, I also installed XDPH and it works really nicely, thanks !

But now I'm having a problem when trying to open a file in ImHex, I get this message :

There was an error while opening the file browser:
No such interface "org.freedesktop.portal.FileChooser" on object at path /org/freedesktop/portal/desktop.
This might be caused by your system not having a xdg-desktop-portal backend installed correctly.

I understand that this project is primarily aimed to implement advanced screen sharing on hyperland so the file picker might be out of it's scope, is there a way to configure an external file picker like Nautilus ?

Idrk if this is the right place to ask or if I should go ask an alternative on the ImHex repository ?

Service can't find hyprland-share-picker

Service can't find hyprland-share-picker, but it is installed. If I launch portal using nuclear option from hyprland wiki, everything works as expected

● xdg-desktop-portal-hyprland.service - Portal service (Hyprland implementation)
     Loaded: loaded (/usr/lib/systemd/user/xdg-desktop-portal-hyprland.service; static)
     Active: active (running) since Fri 2023-02-03 19:02:54 EET; 33s ago
   Main PID: 1315 (xdg-desktop-por)
      Tasks: 9 (limit: 18871)
     Memory: 20.4M
        CPU: 132ms
     CGroup: /user.slice/user-1000.slice/[email protected]/app.slice/xdg-desktop-portal-hyprland.service
             └─1315 /usr/libexec/xdg-desktop-portal-hyprland

лют 03 19:03:18 AlexNotebookL xdg-desktop-portal-hyprland[1315]: 2023/02/03 19:03:18 [ERROR] - wlroots: no output / window found
лют 03 19:03:18 AlexNotebookL xdg-desktop-portal-hyprland[1315]: 2023/02/03 19:03:18 [ERROR] - wlroots: no output / window found
лют 03 19:03:18 AlexNotebookL xdg-desktop-portal-hyprland[3359]: sh: line 1: hyprland-share-picker: command not found
лют 03 19:03:18 AlexNotebookL xdg-desktop-portal-hyprland[1315]: 2023/02/03 19:03:18 [ERROR] - wlroots: no output / window found
лют 03 19:03:18 AlexNotebookL xdg-desktop-portal-hyprland[3365]: sh: line 1: hyprland-share-picker: command not found
лют 03 19:03:18 AlexNotebookL xdg-desktop-portal-hyprland[1315]: 2023/02/03 19:03:18 [ERROR] - wlroots: no output / window found
лют 03 19:03:18 AlexNotebookL xdg-desktop-portal-hyprland[3366]: sh: line 1: hyprland-share-picker: command not found
лют 03 19:03:18 AlexNotebookL xdg-desktop-portal-hyprland[1315]: 2023/02/03 19:03:18 [ERROR] - wlroots: no output / window found
лют 03 19:03:18 AlexNotebookL xdg-desktop-portal-hyprland[3377]: sh: line 1: hyprland-share-picker: command not found
лют 03 19:03:18 AlexNotebookL xdg-desktop-portal-hyprland[1315]: 2023/02/03 19:03:18 [ERROR] - wlroots: no output / window found

Collaboration with xdpw

Hi, I'm one of the xdpw developers and started implementing the parts required for session restore and different capture targets. My next goals would be to push those into the chooser part such that users could interact with them.

Would there be interest to collaborate on this task?

Note: tried to join your discord server, but it requires phone validation.

Trouble getting screen sharing to work

Thank you for Hyprland, I've migrated over from bspwm and everything has been really simple to setup and use!

The only issue I'm having is that I can't get Firefox to share my screen. I have followed the instructions on the wiki as well as this guide and I still only get the "Use operating system settings" option. Clicking it does nothing.

image

I think the portal is working as when I try and upload files I get the file picker pop up which if I understand correctly is handled by the portal?

Things I have checked:

  • Made sure both grim and slurp are installed
  • Confirmed both pipewire and wireplumber are running with systemctl --user status pipewire wireplumber
  • I only have the hyprland xdg-desktop-portal implemetation installed
$ pacman -Q | rg xdg-desktop
xdg-desktop-portal 1.16.0-1
xdg-desktop-portal-hyprland-git r250.b03b1c2-1
  • The desktop portal is running
$ ps aux | rg xdg-desktop
iain        1352  0.0  0.1 536848 17624 ?        Ssl  09:20   0:00 /usr/lib/xdg-desktop-portal
iain        1375  0.0  0.2 509096 44496 ?        Ssl  09:20   0:00 /usr/libexec/xdg-desktop-portal-hyprland
  • Running the hyprland-share-picker manually from the terminal works and I can select a screen
    image
  • I'm on the latest version of the portal: xdg-desktop-portal-hyprland-git r224.3d3c5a4-2 [+6 ~3.65] [Installed: r250.b03b1c2-1]
  • Firefox is running in wayland mode
    image
  • Firefox has the media.peerconnection.enabled setting enabled
    image
  • I have the following line in my hyprland.conf
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP

I have also tested in chrome and the same thing happens. I can share a tab fine but not a window or screen.

OBS screenshare fails

OS is NixOS Unstable, using Hyprland via the flake.

Any time I open OBS, the screen is black, and the same error is consistently printed to journalctl.
What journalctl --user spits out:

Dec 12 19:33:25 heffos-obsidian xdg-desktop-portal-hyprland[15566]: qt.qpa.xcb: could not connect to display
Dec 12 19:33:25 heffos-obsidian xdg-desktop-portal-hyprland[15566]: qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
Dec 12 19:33:25 heffos-obsidian xdg-desktop-portal-hyprland[15566]: This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Dec 12 19:33:25 heffos-obsidian xdg-desktop-portal-hyprland[15566]: Available platform plugins are: wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.
Dec 12 19:33:25 heffos-obsidian systemd-coredump[15569]: [🡕] Process 15566 (.hyprland-share) of user 1000 dumped core.
                                                         
                                                         Module libcap.so.2 without build-id.
                                                         Module libsystemd.so.0 without build-id.
                                                         Module libxcb-util.so.1 without build-id.
                                                         Module libdbus-1.so.3 without build-id.
                                                         Module libexpat.so.1 without build-id.
                                                         Module libxkbcommon.so.0 without build-id.
                                                         Module libxkbcommon-x11.so.0 without build-id.
                                                         Module libICE.so.6 without build-id.
                                                         Module libSM.so.6 without build-id.
                                                         Module libxcb-xinput.so.0 without build-id.
                                                         Module libxcb-xkb.so.1 without build-id.
                                                         Module libxcb-xinerama.so.0 without build-id.
                                                         Module libxcb-xfixes.so.0 without build-id.
                                                         Module libxcb-sync.so.1 without build-id.
                                                         Module libxcb-shape.so.0 without build-id.
                                                         Module libxcb-render.so.0 without build-id.
                                                         Module libxcb-render-util.so.0 without build-id.
                                                         Module libxcb-randr.so.0 without build-id.
                                                         Module libxcb-keysyms.so.1 without build-id.
                                                         Module libxcb-shm.so.0 without build-id.
                                                         Module libxcb-image.so.0 without build-id.
                                                         Module libxcb-icccm.so.4 without build-id.
                                                         Module libX11-xcb.so.1 without build-id.
                                                         Module libQt5DBus.so.5 without build-id.
                                                         Module libfontconfig.so.1 without build-id.
                                                         Module libQt5XcbQpa.so.5 without build-id.
                                                         Module libqxcb.so without build-id.
                                                         Module libXdmcp.so.6 without build-id.
                                                         Module libXau.so.6 without build-id.
                                                         Module libbz2.so.1 without build-id.
                                                         Module libxcb.so.1 without build-id.
                                                         Module libpcre2-8.so.0 without build-id.
                                                         Module libgraphite2.so.3 without build-id.
                                                         Module libfreetype.so.6 without build-id.
                                                         Module libGLdispatch.so.0 without build-id.
                                                         Module libXext.so.6 without build-id.
                                                         Module libX11.so.6 without build-id.
                                                         Module libGLX.so.0 without build-id.
                                                         Module libzstd.so.1 without build-id.
                                                         Module libpcre2-16.so.0 without build-id.
                                                         Module libicudata.so.72 without build-id.
                                                         Module libicuuc.so.72 without build-id.
                                                         Module libicui18n.so.72 without build-id.
                                                         Module libharfbuzz.so.0 without build-id.
                                                         Module libz.so.1 without build-id.
                                                         Module libpng16.so.16 without build-id.
                                                         Module libGL.so.1 without build-id.
                                                         Module libgcc_s.so.1 without build-id.
                                                         Module libstdc++.so.6 without build-id.
                                                         Module libQt5Core.so.5 without build-id.
                                                         Module libQt5Gui.so.5 without build-id.
                                                         Module libQt5Widgets.so.5 without build-id.
                                                         Module .hyprland-share-picker-wrapped without build-id.
                                                         Stack trace of thread 15566:
                                                         #0  0x00007f9d0228abc7 __pthread_kill_implementation (libc.so.6 + 0x8abc7)
                                                         #1  0x00007f9d0223db46 raise (libc.so.6 + 0x3db46)
                                                         #2  0x00007f9d022284b5 abort (libc.so.6 + 0x284b5)
                                                         #3  0x00007f9d02a99bab _ZNK14QMessageLogger5fatalEPKcz (libQt5Core.so.5 + 0x99bab)
                                                         #4  0x00007f9d03125e73 _ZN22QGuiApplicationPrivate25createPlatformIntegrationEv (libQt5Gui.so.5 + 0x125e73)
                                                         #5  0x00007f9d03126380 _ZN22QGuiApplicationPrivate21createEventDispatcherEv (libQt5Gui.so.5 + 0x126380)
                                                         #6  0x00007f9d02cd13e5 _ZN23QCoreApplicationPrivate4initEv (libQt5Core.so.5 + 0x2d13e5)
                                                         #7  0x00007f9d031292dc _ZN22QGuiApplicationPrivate4initEv (libQt5Gui.so.5 + 0x1292dc)
                                                         #8  0x00007f9d03976c99 _ZN19QApplicationPrivate4initEv (libQt5Widgets.so.5 + 0x176c99)
                                                         #9  0x0000000000405e32 main (.hyprland-share-picker-wrapped + 0x5e32)
                                                         #10 0x00007f9d0222924e __libc_start_call_main (libc.so.6 + 0x2924e)
                                                         #11 0x00007f9d02229309 __libc_start_main@@GLIBC_2.34 (libc.so.6 + 0x29309)
                                                         #12 0x0000000000407e75 _start (.hyprland-share-picker-wrapped + 0x7e75)
                                                         
                                                         Stack trace of thread 15567:
                                                         #0  0x00007f9cf220ff96 _dbus_message_loader_queue_messages (libdbus-1.so.3 + 0x27f96)
                                                         #1  0x00007f9cf2218af0 _dbus_transport_get_dispatch_status (libdbus-1.so.3 + 0x30af0)
                                                         #2  0x00007f9cf2218c46 _dbus_transport_queue_messages (libdbus-1.so.3 + 0x30c46)
                                                         #3  0x00007f9cf22197ef do_reading.part.0 (libdbus-1.so.3 + 0x317ef)
                                                         #4  0x00007f9cf221a1a4 socket_handle_watch (libdbus-1.so.3 + 0x321a4)
                                                         #5  0x00007f9cf221889c _dbus_transport_handle_watch (libdbus-1.so.3 + 0x3089c)
                                                         #6  0x00007f9cf220002e _dbus_connection_handle_watch (libdbus-1.so.3 + 0x1802e)
                                                         #7  0x00007f9d01c5bc9e n/a (libQt5DBus.so.5 + 0x2ac9e)
                                                         #8  0x00007f9d02d017f4 n/a (libQt5Core.so.5 + 0x3017f4)
                                                         #9  0x00007f9d02d04bef _ZN15QSocketNotifier9activatedE17QSocketDescriptorNS_4TypeENS_14QPrivateSignalE (libQt5Core.so.5 + 0x304bef)
                                                         #10 0x00007f9d02d053eb _ZN15QSocketNotifier5eventEP6QEvent (libQt5Core.so.5 + 0x3053eb)
                                                         #11 0x00007f9d02cca56f _ZN16QCoreApplication15notifyInternal2EP7QObjectP6QEvent (libQt5Core.so.5 + 0x2ca56f)
                                                         #12 0x00007f9d02d23347 n/a (libQt5Core.so.5 + 0x323347)
                                                         #13 0x00007f9d01d1b9db g_main_context_dispatch (libglib-2.0.so.0 + 0x589db)
                                                         #14 0x00007f9d01d1bc88 g_main_context_iterate.constprop.0 (libglib-2.0.so.0 + 0x58c88)
                                                         #15 0x00007f9d01d1bd3f g_main_context_iteration (libglib-2.0.so.0 + 0x58d3f)
                                                         #16 0x00007f9d02d22764 _ZN20QEventDispatcherGlib13processEventsE6QFlagsIN10QEventLoop17ProcessEventsFlagEE (libQt5Core.so.5 + 0x322764)
                                                         #17 0x00007f9d02cc8f1b _ZN10QEventLoop4execE6QFlagsINS_17ProcessEventsFlagEE (libQt5Core.so.5 + 0x2c8f1b)
                                                         #18 0x00007f9d02ad4b2b _ZN7QThread4execEv (libQt5Core.so.5 + 0xd4b2b)
                                                         #19 0x00007f9d01c4a4f7 n/a (libQt5DBus.so.5 + 0x194f7)
                                                         #20 0x00007f9d02ad5e41 n/a (libQt5Core.so.5 + 0xd5e41)
                                                         #21 0x00007f9d02288e86 start_thread (libc.so.6 + 0x88e86)
                                                         #22 0x00007f9d0230fc60 __clone3 (libc.so.6 + 0x10fc60)
                                                         ELF object binary architecture: AMD x86-64
Dec 12 19:33:25 heffos-obsidian xdg-desktop-portal-hyprland[1960]: 2022/12/12 19:33:25 [ERROR] - wlroots: no output / window found

I can provide any other info as necessary.

Huge cursor size in share picker

image
image

xdg-desktop-portal 1.16.0-1
xdg-desktop-portal-hyprland-git r250.b03b1c2-1
xdg-desktop-portal-wlr 0.6.0-1
hyprland-git r2312.4ec034a-1

Screenshare not working on a RDNA3 card

OBS does show up a qt menu for selecting monitors, but after selecting the monitor it's still a black screen. I also have an intel laptop with hyprland, but screensharing works fine given wlrobs-hg plugin installed.
Also, could this relate to 10-bit?
OS: Arch Linux
Kernel: 6.2.2
GPU: RX 7900 XT
Mesa version: 23.0.0
Monitor Setup: Single 3840x2160 monitor at 144hz, 10-bit enabled, scaling set to 1.5

Laptop specs:
OS: Arch Linux
Kernel: 6.2.1
CPU: i5-1135G7
GPU: Iris Xe LP
intel-media-driver version: 23.1.0
Monitor Setup: Builtin 2256x1504 monitor at 60hz, scaling set to 1.5

Log from OBS:
`
info: ------------------------------------------------
info: Loaded scenes:
info: - scene 'Scene':
info: - source: 'Screen Capture (PipeWire)' (pipewire-desktop-capture-source)
info: ------------------------------------------------
info: [pipewire] Screencast session created
info: adding 21 milliseconds of audio buffering, total audio buffering is now 21 milliseconds (source: Desktop Audio)

info: [pipewire] Asking for desktop
info: [pipewire] desktop selected, setting up screencast
info: [pipewire] Server version: 0.3.66
info: [pipewire] Library version: 0.3.66
info: [pipewire] Header version: 0.3.64
info: [pipewire] Created stream 0x555b4392d890
info: [pipewire] Stream 0x555b4392d890 state: "connecting" (error: none)
info: [pipewire] Playing stream 0x555b4392d890
info: [pipewire] Stream 0x555b4392d890 state: "paused" (error: none)
`

Picker crashes immediately

The picker crashes instantly upon opening. This doesn't happen when xdg-desktop-portal-hyprland is run manually from a terminal, it only happens if it's run as a service.

The log from systemctl --user status:

Feb 04 00:09:49 dottodot systemd-coredump[11411]: [🡕] Process 11409 (hyprland-share-) of user 1000 dumped core.
                                                  
                                                  Stack trace of thread 11409:
                                                  #0  0x00007fe7614a164c n/a (libc.so.6 + 0x8864c)
                                                  #1  0x00007fe761451938 raise (libc.so.6 + 0x38938)
                                                  #2  0x00007fe76143b53d abort (libc.so.6 + 0x2253d)
                                                  #3  0x00007fe76169a833 _ZN9__gnu_cxx27__verbose_terminate_handlerEv (libstdc++.so.6 + 0x9a833)
                                                  #4  0x00007fe7616a6ccc _ZN10__cxxabiv111__terminateEPFvvE (libstdc++.so.6 + 0xa6ccc)
                                                  #5  0x00007fe7616a6d39 _ZSt9terminatev (libstdc++.so.6 + 0xa6d39)
                                                  #6  0x00007fe7616a6f9d __cxa_throw (libstdc++.so.6 + 0xa6f9d)
                                                  #7  0x00007fe76169d55b _ZSt24__throw_out_of_range_fmtPKcz (libstdc++.so.6 + 0x9d55b)
                                                  #8  0x00005605e0e21c20 _Z10getWindowsPKc (hyprland-share-picker + 0x9c20)
                                                  #9  0x00005605e0e1ce6a main (hyprland-share-picker + 0x4e6a)
                                                  #10 0x00007fe76143c290 n/a (libc.so.6 + 0x23290)
                                                  #11 0x00007fe76143c34a __libc_start_main (libc.so.6 + 0x2334a)
                                                  #12 0x00005605e0e1f555 _start (hyprland-share-picker + 0x7555)
                                                  ELF object binary architecture: AMD x86-64
Feb 04 00:09:49 dottodot xdg-desktop-portal-hyprland[10665]: 2023/02/04 00:09:49 [ERROR] - wlroots: no output / window found

OBS window sharing not working

First of all thank you for Hyprland!

I have an issue sharing windows in OBS.
When I try to share window in OBS I get only black screen.
The program logs error:

'loop->recurse > 0' failed at ../pipewire/src/pipewire/thread-loop.c:417 pw_thread_loop_wait()
info: [pipewire] Stream 0x564e0a695e10 state: "unconnected" (error: none)
info: PipeWire initialized
info: [pipewire] Screencast session created
info: [pipewire] Asking for desktop
info: [pipewire] desktop selected, setting up screencast
info: [pipewire] Server version: 0.3.70
info: [pipewire] Library version: 0.3.70
info: [pipewire] Header version: 0.3.70
info: [pipewire] Created stream 0x564e0a695e10
info: [pipewire] Stream 0x564e0a695e10 state: "connecting" (error: none)
info: [pipewire] Playing stream 0x564e0a695e10
info: [pipewire] Stream 0x564e0a695e10 state: "paused" (error: none)
info: [pipewire] Stream 0x564e0a695e10 state: "error" (error: no more input formats)
error: [pipewire] Error id:2 seq:8 res:-32 (Unknown error -32): no more input formats

I killed killall xdg-desktop-portal xdg-desktop-portal-hyprland and started /usr/lib/xdg-desktop-portal-hyprland -l DEBUG
I checked /usr/lib/xdg-desktop-portal-hyprland -l DEBUG:

2023/05/14 14:08:08 [DEBUG] - hyprland: toplevel handle created 55aab89a0000
2023/05/14 14:08:08 [DEBUG] - hyprland: toplevel app_id com.obsproject.Studio
2023/05/14 14:08:09 [INFO] - dbus: create session method invoked
2023/05/14 14:08:09 [INFO] - dbus: request_handle: /org/freedesktop/portal/desktop/request/1_90/obs13
2023/05/14 14:08:09 [INFO] - dbus: session_handle: /org/freedesktop/portal/desktop/session/1_90/obs5
2023/05/14 14:08:09 [INFO] - dbus: app_id: 
2023/05/14 14:08:09 [INFO] - dbus: select sources method invoked
2023/05/14 14:08:09 [INFO] - dbus: request_handle: /org/freedesktop/portal/desktop/request/1_90/obs14
2023/05/14 14:08:09 [INFO] - dbus: session_handle: /org/freedesktop/portal/desktop/session/1_90/obs5
2023/05/14 14:08:09 [INFO] - dbus: app_id: 
2023/05/14 14:08:09 [INFO] - dbus: option types:1
2023/05/14 14:08:09 [INFO] - dbus: option multiple: 0
2023/05/14 14:08:09 [INFO] - dbus: option cursor_mode:2
2023/05/14 14:08:09 [INFO] - dbus: persist 2
2023/05/14 14:08:09 [DEBUG] - dbus: select sources: found matching session /org/freedesktop/portal/desktop/session/1_90/obs5
2023/05/14 14:08:09 [INFO] - wlroots: capturable output: DZX model: Z1: id: 50 name: HDMI-A-1
2023/05/14 14:08:09 [DEBUG] - Screencast: Picker: Running command "WAYLAND_DISPLAY=wayland-1 QT_QPA_PLATFORM="wayland" XCURSOR_SIZE=24 HYPRLAND_INSTANCE_SIGNATURE=f27873a6f06dc2f87600edb890f3c38298bfb55f_1684083312 XDPH_WINDOW_SHARING_LIST="3097100288[HC>]com.obsproject.Studio[HT>]Properties for  Screen Capture (PipeWire) [HE>]3095601824[HC>]LibreWolf[HT>]New Issue · hyprwm/xdg-desktop-portal-hyprland — LibreWolf[HE>]3095601392[HC>]foot[HT>]obs[HE>]3095601040[HC>]com.obsproject.Studio[HT>]OBS 29.1.1-1 - Profile: Untitled - Scenes: Untitled[HE>]3095600688[HC>]foot[HT>]/usr/lib/xdg-desktop-portal[HE>]3095600336[HC>]foot[HT>]/usr/lib/xdg-desktop-portal-hyprland[HE>]" hyprland-share-picker"
2023/05/14 14:08:15 [DEBUG] - Screencast: Attempting to find window for window:-1199365472

2023/05/14 14:08:15 [INFO] - xdpw: screencast instance 0x55aab89a2180 has 1 references
2023/05/14 14:08:15 [INFO] - xdpw: 2 active screencast instances
2023/05/14 14:08:15 [INFO] - hyprland: window handle -1199365472
2023/05/14 14:08:15 [INFO] - dbus: session closed
2023/05/14 14:08:15 [DEBUG] - dbus: destroying session 0x55aab8998500
2023/05/14 14:08:15 [DEBUG] - xdpw: screencast instance 0x55aab899b0f0 now has 0 references
2023/05/14 14:08:15 [DEBUG] - xdpw: destroying cast instance
2023/05/14 14:08:15 [DEBUG] - pipewire: destroying stream
2023/05/14 14:08:15 [INFO] - pipewire: stream state changed to "unconnected"
2023/05/14 14:08:15 [INFO] - pipewire: node id is -1
2023/05/14 14:08:15 [DEBUG] - hyprland: toplevel handle created 55aab8999d50
2023/05/14 14:08:15 [DEBUG] - hyprland: toplevel app_id hyprland-share-picker
2023/05/14 14:08:15 [DEBUG] - hyprland: toplevel closed hyprland-share-picker
2023/05/14 14:08:15 [INFO] - dbus: start method invoked
2023/05/14 14:08:15 [INFO] - dbus: request_handle: /org/freedesktop/portal/desktop/request/1_90/obs15
2023/05/14 14:08:15 [INFO] - dbus: session_handle: /org/freedesktop/portal/desktop/session/1_90/obs5
2023/05/14 14:08:15 [INFO] - dbus: app_id: 
2023/05/14 14:08:15 [INFO] - dbus: parent_window: 
2023/05/14 14:08:15 [DEBUG] - dbus: start: found matching session /org/freedesktop/portal/desktop/session/1_90/obs5
2023/05/14 14:08:15 [INFO] - wlroots: no modifiers available for format 0
2023/05/14 14:08:15 [INFO] - pipewire: stream state changed to "connecting"
2023/05/14 14:08:15 [INFO] - pipewire: node id is -1
2023/05/14 14:08:15 [INFO] - pipewire: stream state changed to "paused"
2023/05/14 14:08:15 [INFO] - pipewire: node id is 66
2023/05/14 14:08:15 [INFO] - xdph: registered restoreToken with token E2CA1774-21B3-4663-B49E-6E1BF34ADDC1
2023/05/14 14:08:15 [DEBUG] - dbus: start: returning node 66
2023/05/14 14:08:15 [INFO] - pipewire: stream state changed to "error"
2023/05/14 14:08:15 [INFO] - pipewire: node id is 66
2023/05/14 14:08:16 [DEBUG] - hyprland: toplevel closed com.obsproject.Studio

systemctl --user status xdg-desktop-portal-hyprland logs:

● xdg-desktop-portal-hyprland.service - Portal service (Hyprland implementation)
     Loaded: loaded (/usr/lib/systemd/user/xdg-desktop-portal-hyprland.service; static)
     Active: active (running) since Sun 2023-05-14 14:11:24 CST; 1min 3s ago
   Main PID: 19905 (xdg-desktop-por)
      Tasks: 6 (limit: 76108)
     Memory: 12.7M
        CPU: 374ms
     CGroup: /user.slice/user-1000.slice/[email protected]/session.slice/xdg-desktop-portal-hyprland.service
             └─19905 /usr/lib/xdg-desktop-portal-hyprland

May 14 14:11:24 archlinuxtower systemd[838]: Starting Portal service (Hyprland implementation)...
May 14 14:11:24 archlinuxtower systemd[838]: Started Portal service (Hyprland implementation).

systemctl --user status wireplumber logs:

● wireplumber.service - Multimedia Service Session Manager
     Loaded: loaded (/usr/lib/systemd/user/wireplumber.service; enabled; preset: enabled)
     Active: active (running) since Sun 2023-05-14 10:55:12 CST; 3h 15min ago
   Main PID: 1296 (wireplumber)
      Tasks: 6 (limit: 76108)
     Memory: 38.7M
        CPU: 281ms
     CGroup: /user.slice/user-1000.slice/[email protected]/session.slice/wireplumber.service
             └─1296 /usr/bin/wireplumber

May 14 13:50:06 archlinuxtower wireplumber[1296]: <WpPortalPermissionStorePlugin:0x5645dfb8c7d0> Failed to call Lookup: GDBus.Error:org.freedesktop.portal.Error.NotFound: No entry for camera
May 14 13:50:12 archlinuxtower wireplumber[1296]: <WpPortalPermissionStorePlugin:0x5645dfb8c7d0> Failed to call Lookup: GDBus.Error:org.freedesktop.portal.Error.NotFound: No entry for camera
May 14 13:50:20 archlinuxtower wireplumber[1296]: <WpPortalPermissionStorePlugin:0x5645dfb8c7d0> Failed to call Lookup: GDBus.Error:org.freedesktop.portal.Error.NotFound: No entry for camera
May 14 13:50:24 archlinuxtower wireplumber[1296]: <WpPortalPermissionStorePlugin:0x5645dfb8c7d0> Failed to call Lookup: GDBus.Error:org.freedesktop.portal.Error.NotFound: No entry for camera
May 14 13:50:35 archlinuxtower wireplumber[1296]: <WpPortalPermissionStorePlugin:0x5645dfb8c7d0> Failed to call Lookup: GDBus.Error:org.freedesktop.portal.Error.NotFound: No entry for camera
May 14 13:50:47 archlinuxtower wireplumber[1296]: <WpPortalPermissionStorePlugin:0x5645dfb8c7d0> Failed to call Lookup: GDBus.Error:org.freedesktop.portal.Error.NotFound: No entry for camera
May 14 13:51:48 archlinuxtower wireplumber[1296]: <WpPortalPermissionStorePlugin:0x5645dfb8c7d0> Failed to call Lookup: GDBus.Error:org.freedesktop.portal.Error.NotFound: No entry for camera
May 14 13:52:12 archlinuxtower wireplumber[1296]: <WpPortalPermissionStorePlugin:0x5645dfb8c7d0> Failed to call Lookup: GDBus.Error:org.freedesktop.portal.Error.NotFound: No entry for camera
May 14 14:02:26 archlinuxtower wireplumber[1296]: <WpPortalPermissionStorePlugin:0x5645dfb8c7d0> Failed to call Lookup: GDBus.Error:org.freedesktop.portal.Error.NotFound: No entry for camera
May 14 14:08:15 archlinuxtower wireplumber[1296]: <WpPortalPermissionStorePlugin:0x5645dfb8c7d0> Failed to call Lookup: GDBus.Error:org.freedesktop.portal.Error.NotFound: No entry for camera

Firefox screensharing fails

Hey,

tried this with firefox and google meet just now and it doesn't seem to work.

I get a popup for screen/window/location selection but the screensharing just sort of "blocks" and nothing happens. Ran the small script in the Usage section to get some actual output and saw this error:

2022/12/13 19:38:33 [ERROR] - wlroots: no output / window found

that's the only output I managed to get, if you have any idea how to get something more useful I'd be happy to try!

the service does not start

Debian 12 minimal install not DE nvidia 1050Ti

● pipewire.service - PipeWire Multimedia Service
     Loaded: loaded (/usr/lib/systemd/user/pipewire.service; enabled; preset: enabled)
     Active: active (running) since Sun 2023-03-12 09:34:52 +05; 17min ago
TriggeredBy: ● pipewire.socket
   Main PID: 609 (pipewire)
      Tasks: 2 (limit: 14040)
     Memory: 5.9M
        CPU: 63ms
     CGroup: /user.slice/user-1000.slice/[email protected]/session.slice/pipewire.service
             └─609 /usr/bin/pipewire

мар 12 09:34:52 dart systemd[602]: Started pipewire.service - PipeWire Multimedia Service.
мар 12 09:34:53 dart pipewire[609]: mod.rt: Can't find org.freedesktop.portal.Desktop. Is xdg-desktop-portal running?
мар 12 09:34:53 dart pipewire[609]: mod.rt: found session bus but no portal

● wireplumber.service - Multimedia Service Session Manager
     Loaded: loaded (/usr/lib/systemd/user/wireplumber.service; enabled; preset: enabled)
     Active: active (running) since Sun 2023-03-12 09:34:52 +05; 17min ago
   Main PID: 610 (wireplumber)
      Tasks: 4 (limit: 14040)
     Memory: 37.3M
        CPU: 338ms
     CGroup: /user.slice/user-1000.slice/[email protected]/session.slice/wireplumber.service
             └─610 /usr/bin/wireplumber

мар 12 09:34:52 dart systemd[602]: Started wireplumber.service - Multimedia Service Session Manager.
мар 12 09:34:53 dart wireplumber[610]: Can't find org.freedesktop.portal.Desktop. Is xdg-desktop-portal running?
мар 12 09:34:53 dart wireplumber[610]: found session bus but no portal
мар 12 09:34:56 dart wireplumber[610]: Failed to set scheduler settings: Операция не позволена
мар 12 09:34:56 dart wireplumber[610]: SPA handle 'api.libcamera.enum.manager' could not be loaded; is it installed?
мар 12 09:34:56 dart wireplumber[610]: PipeWire's libcamera SPA missing or broken. libcamera not supported.
мар 12 09:34:56 dart wireplumber[610]: SPA handle 'api.bluez5.enum.dbus' could not be loaded; is it installed?
мар 12 09:34:56 dart wireplumber[610]: PipeWire's BlueZ SPA missing or broken. Bluetooth not supported.
systemctl --user status xdg-desktop-portal-hyprland
○ xdg-desktop-portal-hyprland.service - Portal service (Hyprland implementation)
     Loaded: loaded (/usr/lib/systemd/user/xdg-desktop-portal-hyprland.service; static)
     Active: inactive (dead)

in the directory /usr/lib/systemd/user/ two files xdg-desktop-autostart.target xdg-desktop-portal-hyprland.service and in the directory /usr/libexec xdg-desktop-portal-hyprland*

my .bashrc

#Hyprland
export XDG_CURRENT_DESKTOP=Hyprland
export XDG_SESSION_DESKTOP=Hyprland
export XCURSOR_THEME=Bibata-Modern-Classic
export XCURSOR_SIZE=24
# Nvidia
export LIBVA_DRIVER_NAME=nvidia
export XDG_SESSION_TYPE=wayland
export GBM_BACKEND=nvidia-drm
export __GLX_VENDOR_LIBRARY_NAME=nvidia
export WLR_NO_HARDWARE_CURSORS=1
# Qt
export QT_AUTO_SCREEN_FACTOR=1
export QT_QPA_PLATFORM="wayland;xcb"
export QT_WAYLAND_DISABLE_WINDOWDECORATION=1
export QT_QPA_PLATFORMTHEME=qt5ct

[ "$(tty)" = "/dev/tty1" ] && exec Hyprland

config hyprland

# See https://wiki.hyprland.org/Configuring/Monitors/
monitor = HDMI-A-1, 1920x1080@60, 0x0, 1

# See https://wiki.hyprland.org/Configuring/Keywords/ for more

# Execute your favorite apps at launch
exec-once = hyprpaper

# Some default env vars.
env = XCURSOR_SIZE,24

# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
input {
    kb_layout = us,ru
    kb_variant =
    kb_model =
    kb_options = grp:alt_shift_toggle
    kb_rules =

    follow_mouse = 1

    touchpad {
        natural_scroll = no
    }

    sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
}

general {
    # See https://wiki.hyprland.org/Configuring/Variables/ for more

    gaps_in = 5
    gaps_out = 10
    border_size = 2
    col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
    col.inactive_border = rgba(595959aa)

    layout = dwindle
}

decoration {
    # See https://wiki.hyprland.org/Configuring/Variables/ for more

    rounding = 10
    blur = yes
    blur_size = 3
    blur_passes = 1
    blur_new_optimizations = on

    drop_shadow = yes
    shadow_range = 4
    shadow_render_power = 3
    col.shadow = rgba(1a1a1aee)
}

animations {
    enabled = yes

    # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more

    bezier = myBezier, 0.05, 0.9, 0.1, 1.05

    animation = windows, 1, 7, myBezier
    animation = windowsOut, 1, 7, default, popin 80%
    animation = border, 1, 10, default
    animation = borderangle, 1, 8, default
    animation = fade, 1, 7, default
    animation = workspaces, 1, 6, default
}

dwindle {
    # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
    pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
    preserve_split = yes # you probably want this
}

master {
    # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
    new_is_master = true
}

gestures {
    # See https://wiki.hyprland.org/Configuring/Variables/ for more
    workspace_swipe = off
}

# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
device:epic mouse V1 {
    sensitivity = -0.5
}

# Example windowrule v1
# windowrule = float, ^(kitty)$
# Example windowrule v2
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more


# See https://wiki.hyprland.org/Configuring/Keywords/ for more
$mainMod = SUPER

# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod, Q, exec, foot
bind = $mainMod, C, killactive, 
bind = $mainMod, M, exit, 
bind = $mainMod, E, exec, nautilus
bind = $mainMod, V, togglefloating, 
bind = $mainMod, R, exec, rofi -show drun -theme ~/.config/rofi/global/rofi.rasi
bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod, J, togglesplit, # dwindle

# Move focus with mainMod + arrow keys
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d

# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4

# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4

# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1

# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow

Region sharing results in xdg-desktop-portal crashing

When selecting the region sharing option, slurp opens, i select a region, and then xdg-desktop-portal errors with A backend call failed: Operation not permitted. I use nixos, and haven't tried building and testing locally.

Update xdpw

As mentioned in #29 screensharing does not work on RDNA3 cards, due to a bug in xdpw. This was fixed in the latest xdpw and I would ask you to update xdph to resolve this issue here as well.

Screen capture doesn't work in Chromium (negotiation errors from Pipewire)

Screen capture works perfectly in OBS and Firefox, but when I try to screen capture in Chrome, Chromium or Vivaldi (so apparently any Chromium based application) then I just get a loading spinner that never resolves.

Meanwhile, Pipewire prints this error:

pw.context: params Spa:Enum:ParamId:EnumFormat: 0:0 Invalid argument (input format (no more input formats))
pw.context: Object: size 352, type Spa:Pod:Object:Param:Format (262147), id Spa:Enum:ParamId:EnumFormat (3)
pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaType (1), flags 00000000
pw.context:     Id 2        (Spa:Enum:MediaType:video)
pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaSubtype (2), flags 00000000
pw.context:     Id 1        (Spa:Enum:MediaSubtype:raw)
pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:format (131073), flags 00000000
pw.context:     Id 12       (Spa:Enum:VideoFormat:BGRA)
pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:modifier (131074), flags 00000018
pw.context:     Choice: type Spa:Enum:Choice:Enum, flags 00000000 88 8
pw.context:       Long 144115188622605059
pw.context:       Long 144115188622605059
pw.context:       Long 144115188622588675
pw.context:       Long 144115188622392067
pw.context:       Long 144115188621122307
pw.context:       Long 144115188084250882
pw.context:       Long 144115188075858177
pw.context:       Long 0
pw.context:       Long 72057594037927935
pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:size (131075), flags 00000000
pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
pw.context:       Rectangle 1x1
pw.context:       Rectangle 1x1
pw.context:       Rectangle -1x-1
pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:framerate (131076), flags 00000000
pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
pw.context:       Fraction 60/1
pw.context:       Fraction 0/1
pw.context:       Fraction 60/1
pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:maxFramerate (131077), flags 00000000
pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
pw.context:       Fraction 60/1
pw.context:       Fraction 0/1
pw.context:       Fraction 60/1
pw.context: Object: size 248, type Spa:Pod:Object:Param:Format (262147), id Spa:Enum:ParamId:EnumFormat (3)
pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaType (1), flags 00000000
pw.context:     Id 2        (Spa:Enum:MediaType:video)
pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaSubtype (2), flags 00000000
pw.context:     Id 1        (Spa:Enum:MediaSubtype:raw)
pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:format (131073), flags 00000000
pw.context:     Id 12       (Spa:Enum:VideoFormat:BGRA)
pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:size (131075), flags 00000000
pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
pw.context:       Rectangle 1x1
pw.context:       Rectangle 1x1
pw.context:       Rectangle -1x-1
pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:framerate (131076), flags 00000000
pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
pw.context:       Fraction 60/1
pw.context:       Fraction 0/1
pw.context:       Fraction 60/1
pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:maxFramerate (131077), flags 00000000
pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
pw.context:       Fraction 60/1
pw.context:       Fraction 0/1
pw.context:       Fraction 60/1
pw.context: Object: size 352, type Spa:Pod:Object:Param:Format (262147), id Spa:Enum:ParamId:EnumFormat (3)
pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaType (1), flags 00000000
pw.context:     Id 2        (Spa:Enum:MediaType:video)
pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaSubtype (2), flags 00000000
pw.context:     Id 1        (Spa:Enum:MediaSubtype:raw)
pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:format (131073), flags 00000000
pw.context:     Id 11       (Spa:Enum:VideoFormat:RGBA)
pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:modifier (131074), flags 00000018
pw.context:     Choice: type Spa:Enum:Choice:Enum, flags 00000000 88 8
pw.context:       Long 144115188622605059
pw.context:       Long 144115188622605059
pw.context:       Long 144115188622588675
pw.context:       Long 144115188622392067
pw.context:       Long 144115188621122307
pw.context:       Long 144115188084250882
pw.context:       Long 144115188075858177
pw.context:       Long 0
pw.context:       Long 72057594037927935
pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:size (131075), flags 00000000
pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
pw.context:       Rectangle 1x1
pw.context:       Rectangle 1x1
pw.context:       Rectangle -1x-1
pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:framerate (131076), flags 00000000
pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
pw.context:       Fraction 60/1
pw.context:       Fraction 0/1
pw.context:       Fraction 60/1
pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:maxFramerate (131077), flags 00000000
pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
pw.context:       Fraction 60/1
pw.context:       Fraction 0/1
pw.context:       Fraction 60/1
pw.context: Object: size 248, type Spa:Pod:Object:Param:Format (262147), id Spa:Enum:ParamId:EnumFormat (3)
pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaType (1), flags 00000000
pw.context:     Id 2        (Spa:Enum:MediaType:video)
pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaSubtype (2), flags 00000000
pw.context:     Id 1        (Spa:Enum:MediaSubtype:raw)
pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:format (131073), flags 00000000
pw.context:     Id 11       (Spa:Enum:VideoFormat:RGBA)
pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:size (131075), flags 00000000
pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
pw.context:       Rectangle 1x1
pw.context:       Rectangle 1x1
pw.context:       Rectangle -1x-1
pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:framerate (131076), flags 00000000
pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
pw.context:       Fraction 60/1
pw.context:       Fraction 0/1
pw.context:       Fraction 60/1
pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:maxFramerate (131077), flags 00000000
pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
pw.context:       Fraction 60/1
pw.context:       Fraction 0/1
pw.context:       Fraction 60/1
pw.context: Object: size 352, type Spa:Pod:Object:Param:Format (262147), id Spa:Enum:ParamId:EnumFormat (3)
pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaType (1), flags 00000000
pw.context:     Id 2        (Spa:Enum:MediaType:video)
pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaSubtype (2), flags 00000000
pw.context:     Id 1        (Spa:Enum:MediaSubtype:raw)
pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:format (131073), flags 00000000
pw.context:     Id 8        (Spa:Enum:VideoFormat:BGRx)
pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:modifier (131074), flags 00000018
pw.context:     Choice: type Spa:Enum:Choice:Enum, flags 00000000 88 8
pw.context:       Long 144115188622605059
pw.context:       Long 144115188622605059
pw.context:       Long 144115188622588675
pw.context:       Long 144115188622392067
pw.context:       Long 144115188621122307
pw.context:       Long 144115188084250882
pw.context:       Long 144115188075858177
pw.context:       Long 0
pw.context:       Long 72057594037927935
pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:size (131075), flags 00000000
pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
pw.context:       Rectangle 1x1
pw.context:       Rectangle 1x1
pw.context:       Rectangle -1x-1
pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:framerate (131076), flags 00000000
pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
pw.context:       Fraction 60/1
pw.context:       Fraction 0/1
pw.context:       Fraction 60/1
pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:maxFramerate (131077), flags 00000000
pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
pw.context:       Fraction 60/1
pw.context:       Fraction 0/1
pw.context:       Fraction 60/1
pw.context: Object: size 248, type Spa:Pod:Object:Param:Format (262147), id Spa:Enum:ParamId:EnumFormat (3)
pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaType (1), flags 00000000
pw.context:     Id 2        (Spa:Enum:MediaType:video)
pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaSubtype (2), flags 00000000
pw.context:     Id 1        (Spa:Enum:MediaSubtype:raw)
pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:format (131073), flags 00000000
pw.context:     Id 8        (Spa:Enum:VideoFormat:BGRx)
pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:size (131075), flags 00000000
pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
pw.context:       Rectangle 1x1
pw.context:       Rectangle 1x1
pw.context:       Rectangle -1x-1
pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:framerate (131076), flags 00000000
pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
pw.context:       Fraction 60/1
pw.context:       Fraction 0/1
pw.context:       Fraction 60/1
pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:maxFramerate (131077), flags 00000000
pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
pw.context:       Fraction 60/1
pw.context:       Fraction 0/1
pw.context:       Fraction 60/1
pw.context: params Spa:Enum:ParamId:EnumFormat: 1:0 Invalid argument (output format (no more input formats))
pw.context: Object: size 184, type Spa:Pod:Object:Param:Format (262147), id Spa:Enum:ParamId:EnumFormat (3)
pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaType (1), flags 00000000
pw.context:     Id 2        (Spa:Enum:MediaType:video)
pw.context:   Prop: key Spa:Pod:Object:Param:Format:mediaSubtype (2), flags 00000000
pw.context:     Id 1        (Spa:Enum:MediaSubtype:raw)
pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:format (131073), flags 00000000
pw.context:     Id 7        (Spa:Enum:VideoFormat:RGBx)
pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:size (131075), flags 00000000
pw.context:     Rectangle 2526x1368
pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:framerate (131076), flags 00000000
pw.context:     Fraction 0/1
pw.context:   Prop: key Spa:Pod:Object:Param:Format:Video:maxFramerate (131077), flags 00000000
pw.context:     Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
pw.context:       Fraction 60/1
pw.context:       Fraction 1/1
pw.context:       Fraction 60/1
pw.link: (37.0 -> 40.0) negotiating -> error (no more input formats)

(Copied from journalctl --user --user-unit pipewire.service -f)

I spotted the words "framerate" and "maxFramerate" in the error message, so I thought perhaps my 240hz monitor was the culprit. I reduced my framerate to 60, restarted xdg-desktop-portal-hyprland, xdg-desktop-portal and pipewire, but I still got the exact same error.


  • chromium 112.0.5615.165-1
  • google-chrome 112.0.5615.165-1
  • vivaldi 6.0.2979.15-1
  • firefox 112.0.1-1
  • hyprland 0.24.1-1
  • xdg-desktop-portal 1.16.0-1
  • xdg-desktop-portal-hyprland 0.3.0-1
  • pipewire 1:0.3.69-2
  • wireplumber 0.4.14-1

Screenshare not working on a RDNA3 card

OBS does show up a qt menu for selecting monitors, but after selecting the monitor it's still a black screen. I also have an intel laptop with hyprland, but screensharing works fine given wlrobs-hg plugin installed.
Also, could this relate to 10-bit?
OS: Arch Linux
Kernel: 6.2.2
GPU: RX 7900 XT
Mesa version: 23.0.0
Monitor Setup: Single 3840x2160 monitor at 144hz, 10-bit enabled, scaling set to 1.5

Laptop specs:
OS: Arch Linux
Kernel: 6.2.1
CPU: i5-1135G7
GPU: Iris Xe LP
intel-media-driver version: 23.1.0
Monitor Setup: Builtin 2256x1504 monitor at 60hz, scaling set to 1.5

abcd

Log from OBS:
`info: ------------------------------------------------
info: Loaded scenes:
info: - scene 'Scene':
info: - source: 'Screen Capture (PipeWire)' (pipewire-desktop-capture-source)
info: ------------------------------------------------
info: [pipewire] Screencast session created
info: adding 21 milliseconds of audio buffering, total audio buffering is now 21 milliseconds (source: Desktop Audio)

info: [pipewire] Asking for desktop
info: [pipewire] desktop selected, setting up screencast
info: [pipewire] Server version: 0.3.66
info: [pipewire] Library version: 0.3.66
info: [pipewire] Header version: 0.3.64
info: [pipewire] Created stream 0x555b4392d890
info: [pipewire] Stream 0x555b4392d890 state: "connecting" (error: none)
info: [pipewire] Playing stream 0x555b4392d890
info: [pipewire] Stream 0x555b4392d890 state: "paused" (error: none)

Unable to build on Aarch64 VMware fusion VM

After adding the nixos and home manager modules, and enabling both, a nixos-rebuild results in this error:

building the system configuration...
warning: Git tree '/root/.nix-configs' is dirty
error: builder for '/nix/store/icz9gdxj6nqwjkrm5vhxwy0vwhbsddj6-xdg-desktop-portal-hyprland-0.pre+date=2022-12-13_9fb4fae.drv' failed with exit code 1;
       last 10 log lines:
       > FAILED: xdg-desktop-portal-hyprland.p/src_screencast_wlr_screencast.c.o
       > gcc -Ixdg-desktop-portal-hyprland.p -I. -I.. -I../include -Iprotocols -I/nix/store/m5vjh9vkwv860fgjf3lp318sq91fas41-wayland-1.21.0-dev/include -I/nix/store/5i9hp7vf8f7cgynks2dfazca0kpzcvg1-systemd-252.1-dev/include -I/nix/store/xqcb7z6gwzvfawm9q9y3ixshx1g40lkc-pipewire-0.3.63-dev/include/pipewire-0.3 -I/nix/store/xqcb7z6gwzvfawm9q9y3ixshx1g40lkc-pipewire-0.3.63-dev/include/spa-0.2 -I/nix/store/vdpgiildw7rdzm293lks13z343y1jkna-inih-56/include -I/nix/store/dc13rizw4r38a41r1i79xw455x2m6305-mesa-22.2.5-dev/include -I/nix/store/i9ay2q2bnwcknmid34dhn40izkqa308v-libdrm-2.4.114-dev/include -I/nix/store/i9ay2q2bnwcknmid34dhn40izkqa308v-libdrm-2.4.114-dev/include/libdrm -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=c11 -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -D_POSIX_C_SOURCE=200809L '-DSYSCONFDIR="/nix/store/fyc0hdwik5bp70msbxif40yqjpmvg5z6-xdg-desktop-portal-hyprland-0.pre+date=2022-12-13_9fb4fae/etc"' -DHAVE_LIBSYSTEMD=1 -D_REENTRANT -MD -MQ xdg-desktop-portal-hyprland.p/src_screencast_wlr_screencast.c.o -MF xdg-desktop-portal-hyprland.p/src_screencast_wlr_screencast.c.o.d -o xdg-desktop-portal-hyprland.p/src_screencast_wlr_screencast.c.o -c ../src/screencast/wlr_screencast.c
       > ../src/screencast/wlr_screencast.c: In function 'vasprintf':
       > ../src/screencast/wlr_screencast.c:645:49: error: missing binary operator before token "("
       >   645 | #if defined(_LIBCPP_CXX03_LANG) && __has_builtin(__builtin_va_copy)
       >       |                                                 ^
       > [25/29] Compiling C object xdg-desktop-portal-hyprland.p/src_screencast_screencast_common.c.o
       > [26/29] Compiling C object xdg-desktop-portal-hyprland.p/src_screencast_screencast.c.o
       > [27/29] Compiling C object xdg-desktop-portal-hyprland.p/src_screencast_pipewire_screencast.c.o
       > ninja: build stopped: subcommand failed.
       For full logs, run 'nix log /nix/store/icz9gdxj6nqwjkrm5vhxwy0vwhbsddj6-xdg-desktop-portal-hyprland-0.pre+date=2022-12-13_9fb4fae.drv'.
error: 1 dependencies of derivation '/nix/store/fmazzd7x223jivf9yv8r3apvm98ybh0g-dbus-1.drv' failed to build
error: 1 dependencies of derivation '/nix/store/l00bhp5jx590ia64a889zixzhss0i10v-xdg-portals.drv' failed to build
error: 1 dependencies of derivation '/nix/store/p3hds7kfdf61sn0cnwwwqvfgwianplby-etc.drv' failed to build
error: 1 dependencies of derivation '/nix/store/6nah1zll3pnnj8bmbj0222a6l8jimwlr-system-path.drv' failed to build
error: 1 dependencies of derivation '/nix/store/9mxp13grs7cf7q9n151gf6hdaf0lhq87-nixos-system-cicucci-devvm-23.05.20221222.7ba7b45.drv' failed to build

the nix log shows:

@nix { "action": "setPhase", "phase": "unpackPhase" }
unpacking sources
unpacking source archive /nix/store/w3bhan5scvsb0ksbzyf42g0r80vgpq5i-vj08gn8simj499vy5kz0qckvma01glg0-source
source root is vj08gn8simj499vy5kz0qckvma01glg0-source
@nix { "action": "setPhase", "phase": "patchPhase" }
patching sources
@nix { "action": "setPhase", "phase": "updateAutotoolsGnuConfigScriptsPhase" }
updateAutotoolsGnuConfigScriptsPhase
@nix { "action": "setPhase", "phase": "configurePhase" }
configuring
meson flags: --buildtype=plain         --libdir=/nix/store/fyc0hdwik5bp70msbxif40yqjpmvg5z6-xdg-desktop-portal-hyprland-0.pre+date=2022-12-13_9fb4fae/lib --libexecdir=/nix/store/fyc0hdwik5bp70msbxif40yqjpmvg5z6-xdg-desktop-portal-hyprland-0.pre>
The Meson build system
Version: 0.64.1
Source dir: /build/vj08gn8simj499vy5kz0qckvma01glg0-source
Build dir: /build/vj08gn8simj499vy5kz0qckvma01glg0-source/build
Build type: native build
Project name: xdg-desktop-portal-hyprland
Project version: 0.6.0
C compiler for the host machine: gcc (gcc 9.5.0 "gcc (GCC) 9.5.0")
C linker for the host machine: gcc ld.bfd 2.39
Host machine cpu family: aarch64
Host machine cpu: aarch64
Compiler for C supports arguments -Wno-missing-braces: YES
Compiler for C supports arguments -Wno-missing-field-initializers: YES
Compiler for C supports arguments -Wno-unused-parameter: YES
Compiler for C supports arguments -D_POSIX_C_SOURCE=200809L: YES
Library rt found: YES
Found pkg-config: /nix/store/xjpkpbs2mb4nqyqadbi44bwxa8gap8h9-pkg-config-wrapper-0.29.2/bin/pkg-config (0.29.2)
Run-time dependency libpipewire-0.3 found: YES 0.3.63
Run-time dependency wayland-client found: YES 1.21.0
Run-time dependency wayland-protocols found: YES 1.31
Run-time dependency inih found: YES 56
Run-time dependency gbm found: YES 22.2.5
Run-time dependency libdrm found: YES 2.4.114
Checking for function "timerfd_create" : YES
Checking for function "signalfd" : YES
Run-time dependency libsystemd found: YES 252
Found pkg-config: /nix/store/xjpkpbs2mb4nqyqadbi44bwxa8gap8h9-pkg-config-wrapper-0.29.2/bin/pkg-config (0.29.2)
Build-time dependency wayland-scanner found: YES 1.21.0
Program /nix/store/0029k730qv1fl3wcqifppdm3gk5gy51r-wayland-1.21.0-bin/bin/wayland-scanner found: YES (/nix/store/0029k730qv1fl3wcqifppdm3gk5gy51r-wayland-1.21.0-bin/bin/wayland-scanner)
Run-time dependency systemd found: YES 252
Configuring xdg-desktop-portal-hyprland.service using configuration
Configuring org.freedesktop.impl.portal.desktop.hyprland.service using configuration
Build targets in project: 11

xdg-desktop-portal-hyprland 0.6.0

  User defined options
    auto_features  : enabled
    bindir         : /nix/store/fyc0hdwik5bp70msbxif40yqjpmvg5z6-xdg-desktop-portal-hyprland-0.pre+date=2022-12-13_9fb4fae/bin
    buildtype      : plain
    includedir     : /nix/store/fyc0hdwik5bp70msbxif40yqjpmvg5z6-xdg-desktop-portal-hyprland-0.pre+date=2022-12-13_9fb4fae/include
    infodir        : /nix/store/fyc0hdwik5bp70msbxif40yqjpmvg5z6-xdg-desktop-portal-hyprland-0.pre+date=2022-12-13_9fb4fae/share/info
    libdir         : /nix/store/fyc0hdwik5bp70msbxif40yqjpmvg5z6-xdg-desktop-portal-hyprland-0.pre+date=2022-12-13_9fb4fae/lib
    libexecdir     : /nix/store/fyc0hdwik5bp70msbxif40yqjpmvg5z6-xdg-desktop-portal-hyprland-0.pre+date=2022-12-13_9fb4fae/libexec
    localedir      : /nix/store/fyc0hdwik5bp70msbxif40yqjpmvg5z6-xdg-desktop-portal-hyprland-0.pre+date=2022-12-13_9fb4fae/share/locale
    mandir         : /nix/store/fyc0hdwik5bp70msbxif40yqjpmvg5z6-xdg-desktop-portal-hyprland-0.pre+date=2022-12-13_9fb4fae/share/man
    prefix         : /nix/store/fyc0hdwik5bp70msbxif40yqjpmvg5z6-xdg-desktop-portal-hyprland-0.pre+date=2022-12-13_9fb4fae
    sbindir        : /nix/store/fyc0hdwik5bp70msbxif40yqjpmvg5z6-xdg-desktop-portal-hyprland-0.pre+date=2022-12-13_9fb4fae/sbin
    wrap_mode      : nodownload
    sd-bus-provider: libsystemd

Found ninja-1.11.1 at /nix/store/1313aamckdb8y5jixp0k4pc8s8qgyrj7-ninja-1.11.1/bin/ninja
meson: enabled parallel building
@nix { "action": "setPhase", "phase": "buildPhase" }
building
build flags: -j4
[1/29] Generating protocols/__nix_store_9czb3wcbls9ihflinb90bp2zkj50a2x8_wayland_protocols_1_31_share_wayland_protocols_unstable_linux_dmabuf_linux_dmabuf_unstable_v1_xml_c with a custom command
[2/29] Generating protocols/__nix_store_9czb3wcbls9ihflinb90bp2zkj50a2x8_wayland_protocols_1_31_share_wayland_protocols_unstable_xdg_output_xdg_output_unstable_v1_xml_c with a custom command
[3/29] Generating protocols/__nix_store_9czb3wcbls9ihflinb90bp2zkj50a2x8_wayland_protocols_1_31_share_wayland_protocols_unstable_linux_dmabuf_linux_dmabuf_unstable_v1_xml_client_h with a custom command
[4/29] Generating protocols/__nix_store_9czb3wcbls9ihflinb90bp2zkj50a2x8_wayland_protocols_1_31_share_wayland_protocols_unstable_xdg_output_xdg_output_unstable_v1_xml_client_h with a custom command
[5/29] Generating protocols/wlr_screencopy_unstable_v1_xml_c with a custom command
[6/29] Generating protocols/wlr_screencopy_unstable_v1_xml_client_h with a custom command
[7/29] Generating protocols/wlr_foreign_toplevel_management_unstable_v1_xml_c with a custom command
[8/29] Generating protocols/wlr_foreign_toplevel_management_unstable_v1_xml_client_h with a custom command
[9/29] Generating protocols/hyprland_protocols_protocols_hyprland_toplevel_export_v1_xml_c with a custom command
[10/29] Generating protocols/hyprland_protocols_protocols_hyprland_toplevel_export_v1_xml_client_h with a custom command
[11/29] Compiling C object xdg-desktop-portal-hyprland.p/meson-generated_.._protocols_xdg-output-unstable-v1-protocol.c.o
[12/29] Compiling C object xdg-desktop-portal-hyprland.p/meson-generated_.._protocols_linux-dmabuf-unstable-v1-protocol.c.o
[13/29] Compiling C object xdg-desktop-portal-hyprland.p/meson-generated_.._protocols_wlr-screencopy-unstable-v1-protocol.c.o
[14/29] Compiling C object xdg-desktop-portal-hyprland.p/meson-generated_.._protocols_wlr-foreign-toplevel-management-unstable-v1-protocol.c.o
[15/29] Compiling C object xdg-desktop-portal-hyprland.p/meson-generated_.._protocols_hyprland-toplevel-export-v1-protocol.c.o
[16/29] Compiling C object xdg-desktop-portal-hyprland.p/src_core_logger.c.o
[17/29] Compiling C object xdg-desktop-portal-hyprland.p/src_core_config.c.o
[18/29] Compiling C object xdg-desktop-portal-hyprland.p/src_core_request.c.o
[19/29] Compiling C object xdg-desktop-portal-hyprland.p/src_core_main.c.o
[20/29] Compiling C object xdg-desktop-portal-hyprland.p/src_core_session.c.o
[21/29] Compiling C object xdg-desktop-portal-hyprland.p/src_core_timespec_util.c.o
[22/29] Compiling C object xdg-desktop-portal-hyprland.p/src_core_timer.c.o
[23/29] Compiling C object xdg-desktop-portal-hyprland.p/src_screenshot_screenshot.c.o
[24/29] Compiling C object xdg-desktop-portal-hyprland.p/src_screencast_wlr_screencast.c.o
FAILED: xdg-desktop-portal-hyprland.p/src_screencast_wlr_screencast.c.o
gcc -Ixdg-desktop-portal-hyprland.p -I. -I.. -I../include -Iprotocols -I/nix/store/m5vjh9vkwv860fgjf3lp318sq91fas41-wayland-1.21.0-dev/include -I/nix/store/5i9hp7vf8f7cgynks2dfazca0kpzcvg1-systemd-252.1-dev/include -I/nix/store/xqcb7z6gwzvfawm9>
../src/screencast/wlr_screencast.c: In function 'vasprintf':
../src/screencast/wlr_screencast.c:645:49: error: missing binary operator before token "("
  645 | #if defined(_LIBCPP_CXX03_LANG) && __has_builtin(__builtin_va_copy)
      |                                                 ^
[25/29] Compiling C object xdg-desktop-portal-hyprland.p/src_screencast_screencast_common.c.o
[26/29] Compiling C object xdg-desktop-portal-hyprland.p/src_screencast_screencast.c.o
[27/29] Compiling C object xdg-desktop-portal-hyprland.p/src_screencast_pipewire_screencast.c.o
ninja: build stopped: subcommand failed.

free(): invalid pointer when trying to screencast with pipewire & wayland

Reproduction

In a terminal, run /usr/libexec/xdg-desktop-portal-hyprland -r -l TRACE, then open obs and add the pipewire screen cast source. As soon as the picker comes up and I choose entire screen the portal crashes with the following output.

2023/05/28 00:11:05 [INFO] - dbus: start method invoked
2023/05/28 00:11:05 [INFO] - dbus: request_handle: /org/freedesktop/portal/desktop/request/1_40/obs5
2023/05/28 00:11:05 [INFO] - dbus: session_handle: /org/freedesktop/portal/desktop/session/1_40/obs2
2023/05/28 00:11:05 [INFO] - dbus: app_id:
2023/05/28 00:11:05 [INFO] - dbus: parent_window:
2023/05/28 00:11:05 [DEBUG] - dbus: start: found matching session /org/freedesktop/portal/desktop/session/1_40/obs2
2023/05/28 00:11:05 [TRACE] - wlroots: callbacks registered
2023/05/28 00:11:05 [TRACE] - wlroots: buffer event handler
2023/05/28 00:11:05 [TRACE] - wlroots: linux_dmabuf event handler
2023/05/28 00:11:05 [TRACE] - wlroots: buffer_done event handler
2023/05/28 00:11:05 [TRACE] - wlroots: finish screencopy
2023/05/28 00:11:05 [TRACE] - wlroots: frame destroyed
2023/05/28 00:11:05 [INFO] - pipewire: stream state changed to "connecting"
2023/05/28 00:11:05 [INFO] - pipewire: node id is -1
2023/05/28 00:11:05 [INFO] - pipewire: stream state changed to "paused"
2023/05/28 00:11:05 [INFO] - pipewire: node id is 50
2023/05/28 00:11:05 [INFO] - xdph: registered restoreToken with token E0978C34-96D0-4717-B391-D70B94B18213
2023/05/28 00:11:05 [DEBUG] - dbus: start: returning node 50
2023/05/28 00:11:06 [TRACE] - event-loop: got pipewire event
2023/05/28 00:11:06 [TRACE] - event-loop: got pipewire event
2023/05/28 00:11:06 [TRACE] - event-loop: got pipewire event
2023/05/28 00:11:06 [TRACE] - event-loop: got pipewire event
2023/05/28 00:11:06 [TRACE] - pipewire: stream parameters changed
2023/05/28 00:11:06 [DEBUG] - pipewire: Format negotiated:
2023/05/28 00:11:06 [DEBUG] - pipewire: buffer_type: 0 (4)
2023/05/28 00:11:06 [DEBUG] - pipewire: format: 7free
2023/05/28 00:11:06 [DEBUG] - pipewire: modifier: 0
2023/05/28 00:11:06 [DEBUG] - pipewire: size: (2560, 1600)
2023/05/28 00:11:06 [DEBUG] - pipewire: max_framerate: (60 / 1)
free(): invalid pointer
[1]    3754 IOT instruction  /usr/libexec/xdg-desktop-portal-hyprland -r -l TRACE

I am currently running this on an arm64 machine (Macbook M1) with the following Hyprland/xdg versions:

  • xdg-desktop-portal-hyprland @ v0.3.1
  • xdg-desktop-portal @ 1.16
  • hyprland-protocols @ 0.2
  • hyprland @ 0.25.0
  • pipewire @ 0.3.70
  • wireplumber @ 0.4.14

I'm guess arm64 might have something to do with this, as I haven't seen any reports of this happening on AMD64 (in my searches).

Happy to aid in debugging this in any way possible, just not sure where to start right now.

hyprctl dpms off leads to hyprland crash when OBS open with pipewire screen capture

I was able to reproduce this issue 3 times and narrow the cause down to this:

In hyprland.conf, I have this line -

exec-once = swayidle timeout 240 'brightnessctl -s && brightnessctl set 5%' resume 'brightnessctl -r' timeout 300 'swaylock --screenshots --clock --indicator --indicator-radius 100 --indicator-thickness 7 --effect-blur 7x5 --effect-vignette 0.5:0.5 --key-hl-color 880033 --line-color 00000000 --inside-color 00000088 --separator-color 00000000 --grace 2 --fade-in 0.2' timeout 360 'hyprctl dispatch dpms off' resume 'hyprctl dispatch dpms on'

If I leave OBS open with a pipewire screen capture (not actively recording), and allow the laptop to dim/lock/turn display off, Hyprland crashed each time immediately after the display turns off.
This line seemed to occur all 3 times in the logs -
A backend call failed: Message recipient disconnected from message bus without replying,
so it looks like hyprctl dispatch dpms off turns off the portal somehow, which cascades into Hyprland crashing after xdg-desktop-portal-hyprland and OBS go down.

There are also a fair number of
xdg-desktop-portal-hyprland [ERROR] - wayland: failed to connect to display
lines in the logs. I noticed some inconsistency in OBS prompting for which monitor to capture. I found deleting the pipewire display capture and re-adding it sometimes made it ask which monitor to capture, other times I just opened the settings of the existing pipewire display capture and clicked select monitor a few times and it eventually popped up. I only had a laptop display throughout all of this. This is likely a separate issue, I can open later one if needed.


some fastfetch info:

OS: Gentoo 2.13 x86_64
Host: ROG Zephyrus G14 GA402RJ_GA402RJ (1.0)
Kernel: 6.1.28-gentoo-x86_64
Display: 2560x1600 @ 120Hz
Brightness (amdgpu_bl1): 31%
WM: Hyprland (Wayland)
CPU: AMD Ryzen 9 6900HS (16) @ 4.933886 GHz
GPU 1: AMD Radeon Graphics (RADV REMBRANDT)
GPU 2: AMD Radeon RX 6700S (RADV NAVI23) (7.98 GiB)
Vulkan: 1.3.246 - radv [Mesa 23.1.1]
OpenGL: 4.6 (Compatibility Profile) Mesa 23.1.1
OpenCL: 2.0


Hyprland: 0.25
xdg-desktop-portal-hyprland: 9999 (wayland-desktop overlay)
I have xdg-desktop-portal-gtk installed, no -kde or -gnome.


Here are the crash logs

heh, it was too long to paste directly -

hyprland-crash-log-obs-xdg-attachment.txt

Lmk if I can provide any other useful info, and thanks.

Once 0.26 lands in the Gentoo repo I'll see if it still occurs.

Chrome 112 shares a black screen

When sharing my screen on Chrome 112.0.5615.165, only a black screen is shown. The Chrome logs are flooded with

[4958:7102:0420/093242.251780:ERROR:egl_dmabuf.cc(569)] Failed to record frame: Error creating EGLImage - EGL_BAD_ALLOC
[4958:7102:0420/093242.251805:ERROR:shared_screencast_stream.cc(791)] Dropping DMA-BUF modifier: 144115188622392067 and trying to renegotiate stream parameters

This same issue was reported in xdg-desktop-portal-wlr, and it's fixed in 0.7 (I have tested myself).

screensharing not working on hyprland, but works on sway

Screen sharing isn't working on neither obs nor firefox, it just shows up as a blank region. However everything is fine on sway. I've tried to reproduce the workflow as much as possible on both the WMs.

hyprland: v0.24.1
xdg-desktop-portal-hyprland: v0.2.1

I'm on gentoo and both the packages are from ::guru repository. I've attached the corresponding logs for pipewire, obs and xdph on sway and hyprland below.

obs_hyprland.txt
obs_sway.txt

pipewire_hyprland.txt
pipewire_sway.txt

xdph_hyprland.txt
xdph_sway.txt

Screenshare not working on a RDNA3 card

OBS does show up a qt menu for selecting monitors, but after selecting the monitor it's still a black screen. I also have an intel laptop with hyprland, but screensharing works fine given wlrobs-hg plugin installed.
Also, could this relate to 10-bit?
OS: Arch Linux
Kernel: 6.2.2
GPU: RX 7900 XT
Mesa version: 23.0.0
Monitor Setup: Single 3840x2160 monitor at 144hz, 10-bit enabled, scaling set to 1.5

Laptop specs:
OS: Arch Linux
Kernel: 6.2.1
CPU: i5-1135G7
GPU: Iris Xe LP
intel-media-driver version: 23.1.0
Monitor Setup: Builtin 2256x1504 monitor at 60hz, scaling set to 1.5

Log from OBS:
`
info: ------------------------------------------------
info: Loaded scenes:
info: - scene 'Scene':
info: - source: 'Screen Capture (PipeWire)' (pipewire-desktop-capture-source)
info: ------------------------------------------------
info: [pipewire] Screencast session created
info: adding 21 milliseconds of audio buffering, total audio buffering is now 21 milliseconds (source: Desktop Audio)

info: [pipewire] Asking for desktop
info: [pipewire] desktop selected, setting up screencast
info: [pipewire] Server version: 0.3.66
info: [pipewire] Library version: 0.3.66
info: [pipewire] Header version: 0.3.64
info: [pipewire] Created stream 0x555b4392d890
info: [pipewire] Stream 0x555b4392d890 state: "connecting" (error: none)
info: [pipewire] Playing stream 0x555b4392d890
info: [pipewire] Stream 0x555b4392d890 state: "paused" (error: none)
`

Interesting Discord Screenshare Problem

Background:
1-) I have the latest git versions of xdg-desktop-portal, xdg-desktop-portal-hyprland, grim, slurp, pipewire, wireplumber and hyprland.
2-) I have made sure that I don't have other implementations installed.
3-) I start the script as recommended and checked with "pidof -s xdg-desktop-portal" and "pidof -s xdg-desktop-portal-hyprland"
4-) I can take screenshots with Grim and Slurp without a problem.
5-) I can record a video that has sounds with wf-recorder, ffmpeg without a problem.
6-) I use Chromium browser for Discord since I can't run the Discord app even with ozone flags. It segfaults. Other types of Discords (such as Webcord or GTKCord) are also same.

Problem:
1-) I can share a Chromium tab without a problem.
2-) I can also share any window from the window tab.
3-) I can't share the "screen". The output is black screen.
* I can share the screen by selecting the "Region" on the "Window" tab. But it doesn't work for the first time. It's always black at first. Then, I need to constantly try and somehow, I select the region (I basically select the whole screen with my mouse) and it works.

[ERROR] - dbus: unsupported cursor mode requested, ignoring

I'm getting the following error every time I try to do a screen share using brave-bin 1:1.50.114-1 (Or ungoogled-chromium 112.0.5615.49-1) and it is failing.

Output from systemctl --user status xdg-desktop-portal-hyprland

/04/13 20:29:53 [ERROR] - dbus: unsupported cursor mode requested, ignoring
xdg-desktop-portal-hyprland.service - Portal service (Hyprland implementation)
     Loaded: loaded (/usr/lib/systemd/user/xdg-desktop-portal-hyprland.service; static)
     Active: active (running) since Thu 2023-04-13 20:29:29 CET; 9min ago
   Main PID: 1057 (xdg-desktop-por)
      Tasks: 6 (limit: 37710)
     Memory: 30.3M
        CPU: 1.283s
     CGroup: /user.slice/user-1000.slice/[email protected]/session.slice/xdg-desktop-portal-hyprland.service
             └─1057 /usr/lib/xdg-desktop-portal-hyprland

Apr 13 20:29:29 archpad systemd[565]: Starting Portal service (Hyprland implementation)...
Apr 13 20:29:29 archpad systemd[565]: Started Portal service (Hyprland implementation).
Apr 13 20:29:53 archpad xdg-desktop-portal-hyprland[1057]: 2023/04/13 20:29:53 [ERROR] - dbus: unsupported cursor mode requested, ignoring
Apr 13 20:30:00 archpad xdg-desktop-portal-hyprland[1057]: 2023/04/13 20:30:00 [ERROR] - dbus: unsupported cursor mode requested, ignoring

Output from systemctl --user status xdg-desktop-portal

xdg-desktop-portal.service - Portal service
     Loaded: loaded (/usr/lib/systemd/user/xdg-desktop-portal.service; static)
     Active: active (running) since Thu 2023-04-13 20:29:29 CET; 13min ago
   Main PID: 1018 (xdg-desktop-por)
      Tasks: 5 (limit: 37710)
     Memory: 10.1M
        CPU: 192ms
     CGroup: /user.slice/user-1000.slice/[email protected]/session.slice/xdg-desktop-portal.service
             └─1018 /usr/lib/xdg-desktop-portal

Apr 13 20:29:29 archpad systemd[565]: Starting Portal service...
Apr 13 20:29:29 archpad xdg-desktop-por[1018]: No skeleton to export
Apr 13 20:29:29 archpad systemd[565]: Started Portal service.

Note that everything works correctly on Firefox.

Environment

System:
Kernel: 6.2.10-arch1-1 
arch: x86_64 bits: 64 
Desktop: Hyprland
Distro: Arch Linux

CPU:
Info: 8-core 
model: AMD Ryzen 7 4800H with Radeon Graphics 
bits: 64

Graphics:
  Device-1: AMD Renoir driver: amdgpu v: kernel
  Device-2: Chicony Integrated Camera type: USB driver: uvcvideo
  Display: wayland server: X.Org v: 23.1.1 with: Xwayland v: 23.1.1
    compositor: Hyprland driver: X: loaded: amdgpu unloaded: modesetting,vesa
    dri: radeonsi gpu: amdgpu resolution: 1536x864~120Hz
  API: OpenGL v: 4.6 Mesa 23.0.2 renderer: AMD Radeon Graphics (renoir LLVM
    15.0.7 DRM 3.49 6.2.10-arch1-1)
# ~./.config/brave-flags.conf

--ozone-platform-hint=auto
# ~/.config/hypr/Hyprland.conf

monitor = ,preferred,auto,1.25

env = TERMINAL,alacritty
env = VISUAL,nvim
env = EDITOR,nvim
env = BROWSER,firefox

env = SDL_VIDEODRIVER,wayland
env = GDK_BACKEND,wayland,x11
env = MOZ_ENABLE_WAYLAND,1
env = XCURSOR_SIZE,24
env = _JAVA_AWT_WM_NONREPARENTING,1
env = QT_QPA_PLATFORM,wayland;xcb
env = QT_AUTO_SCREEN_SCALE_FACTOR,1
env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
env = XDG_CURRENT_DESKTOP,Hyprland
env = XDG_SESSION_TYPE,wayland
env = XDG_SESSION_DESKTOP,Hyprland

...

# Autostart
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once = wlr-wallpaper 
exec-once = xsettingsd &
exec-once = waybar -c ~/.config/waybar/config.hyprland
exec-once = easyeffects --gapplication-service
exec-once = dunst
exec-once = wlr-night-light
exec-once = wl-paste --watch cliphist store
exec-once = nm-applet --indicator
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 &
exec-once = keyring # Gnome keyring

Things I have already checked

  • WebRTC PipeWire support is enabled in chrome://flags
  • The browser is running on wayland natively.
  • I have xdg-desktop-portal 1.16.0-1 and xdg-desktop-portal-hyprland-git 1:r261.e1f145d-4 installed with no other portal implementations.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.