OBS Studio cannot select on Screen Capture (Pipewire)

Hi, I cannot select screen on OBS. Steps to reproduce:

  1. Add source, select Screen Capture (PipeWire).
  2. Select +Add a new Screen Capture (PipeWire).
  3. Click Open Selector.

The button shows click animation, but nothing happens. In the terminal, the message appears:

info: PipeWire initialized
info: [pipewire] Screencast session created
warning: [pipewire] Failed to select source, denied or cancelled by user

I realised that other screenrecord apps, such as kooha and openscreen, were also unable to select a screen, thus I looked at xdg-desktop-portal-wlr:

● xdg-desktop-portal-wlr.service - Portal service (wlroots implementation)
     Loaded: loaded (/etc/systemd/user/xdg-desktop-portal-wlr.service; linked-runtime; preset: ignored)
    Drop-In: /nix/store/6spbba5jk6kvzwlzk7pgsi8x9fcx0g4v-user-units/xdg-desktop-portal-wlr.service.d
             └─overrides.conf
     Active: active (running) since Tue 2026-11-10 00:16:20 +08; 23min ago
 Invocation: b588d92a46894c7fab0ee0eb2415a2ef
   Main PID: 1186 (.xdg-desktop-po)
      Tasks: 2 (limit: 18752)
     Memory: 2.4M (peak: 4.1M)
        CPU: 132ms
     CGroup: /user.slice/user-1000.slice/user@1000.service/app.slice/xdg-desktop-portal-wlr.service
             └─1186 /nix/store/xi2s5lzp554c4sl0cn2ckp9j6hh3xbia-xdg-desktop-portal-wlr-0.8.5/libexec/xdg-desktop-portal-wlr --config=/nix/store/ifpmm3k7n1qq0lf0rhyc1i84m5km562z-xdg-desktop-p>

Nov 10 00:37:41 pyramid xdg-desktop-portal-wlr[5588]: /bin/sh: line 1: mew: command not found
Nov 10 00:37:41 pyramid xdg-desktop-portal-wlr[5589]: /bin/sh: line 1: fuzzel: command not found
Nov 10 00:37:41 pyramid xdg-desktop-portal-wlr[1186]: 2026/11/10 00:37:41 [ERROR] - wlroots: no output found
Nov 10 00:37:51 pyramid xdg-desktop-portal-wlr[5590]: /bin/sh: line 1: wmenu: command not found
Nov 10 00:37:51 pyramid xdg-desktop-portal-wlr[5594]: /bin/sh: line 1: mew: command not found
Nov 10 00:37:51 pyramid xdg-desktop-portal-wlr[5595]: /bin/sh: line 1: fuzzel: command not found
Nov 10 00:37:51 pyramid xdg-desktop-portal-wlr[1186]: 2026/11/10 00:37:51 [ERROR] - wlroots: no output found
Nov 10 00:38:56 pyramid xdg-desktop-portal-wlr[5605]: /bin/sh: line 1: wmenu: command not found
Nov 10 00:38:56 pyramid xdg-desktop-portal-wlr[1186]: 2026/11/10 00:38:56 [ERROR] - wlroots: no output found
Nov 10 00:38:57 pyramid xdg-desktop-portal-wlr[1186]: 2026/11/10 00:38:57 [ERROR] - wlroots: no output found

if I installed fuzzel or wmenu, their respective error messages would go away, leaving only mew, so it must have sensed the installed programs, but nothing changed. xdg-desktop-portal gives:

● xdg-desktop-portal.service - Portal service
     Loaded: loaded (/etc/systemd/user/xdg-desktop-portal.service; linked-runtime; preset: ignored)
     Active: active (running) since Tue 2026-11-10 00:16:20 +08; 29min ago
 Invocation: 199745592d7d40e4a4f8e592bc598a75
   Main PID: 1140 (.xdg-desktop-po)
      Tasks: 6 (limit: 18752)
     Memory: 10.1M (peak: 10.6M)
        CPU: 85ms
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/xdg-desktop-portal.service
             └─1140 /nix/store/52ihln918zclkrrwxsmpyzq3rps05168-xdg-desktop-portal-1.22.1/libexec/xdg-desktop-portal

Nov 10 00:16:20 pyramid systemd[886]: Starting Portal service...
Nov 10 00:16:20 pyramid systemd[886]: Started Portal service.
Nov 10 00:16:21 pyramid /nix/store/52ihln918zclkrrwxsmpyzq3rps05168-xdg-desktop-portal-1.22.1/libexec/xdg-desktop-portal[1140]: ../gobject/gtype.c:4158: type id '2' is invalid
Nov 10 00:16:21 pyramid /nix/store/52ihln918zclkrrwxsmpyzq3rps05168-xdg-desktop-portal-1.22.1/libexec/xdg-desktop-portal[1140]: can't peek value table for type '<unknown>' which is not currently referenced
Nov 10 00:16:21 pyramid /nix/store/52ihln918zclkrrwxsmpyzq3rps05168-xdg-desktop-portal-1.22.1/libexec/xdg-desktop-portal[1140]: g_value_unset: assertion 'value_table' failed

The strangest part of all this is that I can record fine using my browser, firefox. An example is that Online Screen Recorder, https://screenrecorderonline.net/, works completely fine.

My window manager is programs.mango.enable. I have tried both nix-shell -p obs-studio and programs.obs-studio.enable, with the same result. I suspected that it could be graphical-session.target not being set following XDG Desktop Portal - ArchWiki, but according to NixOS module does not activate graphical-session.target · Issue #1046 · mangowm/mango · GitHub it seems to have been set.

Your portal log has the answer: xdg-desktop-portal-wlr is trying to launch an output chooser (mew, fuzzel, wmenu…), none of them are installed, so there’s no way to pick a screen and the request comes back as “denied or cancelled”.

You can point it at a chooser you do have. With slurp it looks like this:

xdg.portal.wlr = {
  enable = true;
  settings.screencast = {
    chooser_type = "simple";
    chooser_cmd = "${pkgs.slurp}/bin/slurp -f %o -or";
  };
};

After a rebuild, restart the portal (systemctl --user restart xdg-desktop-portal-wlr), or just log out and back in. When you click “Open Selector” in OBS, you should get a slurp crosshair and can click the monitor you want.

If you only have one monitor, you can skip the chooser and set output_name = "eDP-1"; (or whatever wlr-randr shows) together with chooser_type = "none";.