Dispatch exec with workspace rule not working for browsers

Hyprland version
Hyprland 0.53.1 built from branch v0.53.1 at commit ab1d80f3d6aebd57a0971b53a1993b1c1dfe0b09 clean (version: bump to 0.53.1).
Date: Fri Jan 2 21:20:57 2026
Tag: v0.53.1, commits: 6766

Libraries:
Hyprgraphics: built against 0.5.0, system has 0.5.0
Hyprutils: built against 0.11.0, system has 0.11.0
Hyprcursor: built against 0.1.13, system has 0.1.13
Hyprlang: built against 0.6.7, system has 0.6.8
Aquamarine: built against 0.10.0, system has 0.10.0

Version ABI string: ab1d80f3d6aebd57a0971b53a1993b1c1dfe0b09_aq_0.10_hu_0.11_hg_0.5_hc_0.1_hlg_0.6
no flags were set

Hi. Running hyprctl dispatch exec '[workspace 2 silent] zen-browser' or hyprctl dispatch exec '[workspace special silent] zen-browser' is not working as expected (open a new browser window on the desired workspace) if there’s already a browser window open.

The problem might be that, with browsers, the existing process creates a new window, which could be breaking the static effect.

Fails with --new-window flag like hyprctl dispatch exec -- ‘[workspace 2 silent] zen-browser --new-window ``https://www.google.com``’, but kind of work with --new-instance flag (can’t be used because it needs a new profile).

Steps to reproduce:

  1. Open a browser window on workspace 1;
  2. Open a terminal window and execute hyprctl dispatch exec '[workspace 2 silent] zen-browser'→ browser window will open on the current workspace 1 instead of workspace 2;
  3. To validate the expected behavior, run hyprctl dispatch exec '[workspace 2 silent] alacritty';

Zen is built on firefox and they have their own session manager and daemon thing.
So no, this will never work.
Either complain to them to make them set initial_title so you can match windowrules against it or use PWAs if you have some specific website you want to run.

It’s the same with Chrome-based browsers, like Helium.

So, it’s definitely something the hyprland can’t handle?

Yes, chromium also has a session manager daemon thing.
It handles it fine and does exactly what it’s told to do.
But when zen/firefox/chrome w/e eats up the rule sent with exec nothing the composter can do about it.