Hi,
I'm trying to use the Chrome Remote Desktop URL Forwarder feature on a Debian 13 Linux host (GCE VM, me2me mode). The host package (version 146.0.7680.5) ships `remote-open-url`, `configure-url-forwarder`, and `crd-url-forwarder.desktop`. The forwarder is properly set up:
```
$ /opt/google/chrome-remote-desktop/configure-url-forwarder --check-setup
Chrome Remote Desktop URL forwarder is properly set up.
```
However, running `xdg-open
https://example.com` always results in:
```
[greg@greg-pvm:~$ xdg-open
https://example.com[0307/230342.566809:INFO:remoting/base/crash/crashpad_linux.cc:68] Crashpad handler started.
[0307/230342.568588:WARNING:ui/base/resource/resource_bundle.cc:526] locale_file_path.empty() for locale
[0307/230342.568713:INFO:remoting/base/file_host_settings.cc:49] Host settings loaded.
[0307/230342.605430:WARNING:remoting/host/remote_open_url/remote_open_url_client.cc:159] IPC disconnected.
[0307/230342.605460:WARNING:remoting/host/remote_open_url/remote_open_url_client_delegate_linux.cc:127] Unknown desktop environment: , X-Generic will be used.
[0307/230342.605467:WARNING:remoting/host/remote_open_url/remote_open_url_client_delegate_linux.cc:134] Fallback browser is invalid. Showing the browser chooser...
[0307/230342.605483:WARNING:ui/base/resource/resource_bundle.cc:1266] locale resources are not loaded
(remote-open-url:351499): Gtk-WARNING **: 23:04:12.492: gtk_widget_size_allocate(): attempt to allocate widget with width -6 and height 48
```
The `remote-open-url` client connects to the Mojo IPC socket at `/tmp/chromoting.<user>.host_services_mojo_ipc`, but the host immediately drops the session services binding. A CRD viewer is actively connected at the time.
After tracing through the Chromium source, I believe the issue is on the client side:
1. In `remote_open_url_util.cc`, `IsRemoteOpenUrlSupported()` unconditionally returns `true` on Linux. The `allow_uri_forwarding` policy defaults to `true`. So the host correctly advertises `kRemoteOpenUrlCapability`.
2. In `client_session.cc`, the host registers the `RemoteOpenUrlMessageHandler` data channel **only** when the connected client also advertises `kRemoteOpenUrlCapability` during capability negotiation:
```cpp
if (HasCapability(capabilities_, protocol::kRemoteOpenUrlCapability)) {
data_channel_manager_.RegisterCreateHandlerCallback(
kRemoteOpenUrlDataChannelName, ...);
}
```
3. If the client doesn't advertise this capability, the handler is never registered, and the host rejects the `remote-open-url` Mojo IPC binding — producing the "IPC disconnected" behavior.
I'm connecting from the public web client at
remotedesktop.google.com (via ChromeOS). The session options panel has no "Open links on the client" toggle or URL forwarding setting. The code review discussion at [ab_m9yyEAvc](
https://groups.google.com/a/chromium.org/g/chromoting-reviews/c/ab_m9yyEAvc) mentions the host checking "if the user is a Googler" to gate the feature, and that "the client can be later modified to always enable the feature."
My questions:
1. Is the `remoteOpenUrl` capability currently advertised by the public CRD web client at
remotedesktop.google.com? Or is it only enabled for internal users?
2. If it's not yet public, is there a timeline for enabling it? The host-side infrastructure has been shipping in the Linux package for several years.
3. Is there a workaround or client-side flag to enable this capability?
Thanks for any guidance.