WSL icon indicating copy to clipboard operation
WSL copied to clipboard

WSL2 + Ubuntu 22.04.1: xdg-open: no method available for opening "https://www...."

Open ramonduraes opened this issue 3 years ago • 24 comments

Version

Microsoft Windows [´veersion 10.0.19042.1706]

WSL Version

  • [X] WSL 2
  • [ ] WSL 1

Kernel Version

5.10.102.1

Distro Version

Ubuntu 22.04.1

Other Software

Try xdg-open https://microsoft.com

result /usr/bin/xdg-open: 882: www-browser: not found /usr/bin/xdg-open: 882: links2: not found /usr/bin/xdg-open: 882: elinks: not found /usr/bin/xdg-open: 882: links: not found /usr/bin/xdg-open: 882: lynx: not found /usr/bin/xdg-open: 882: w3m: not found xdg-open: no method available for opening 'https://microsoft.com'

Repro Steps

Try xdg-open https://microsoft.com

Expected Behavior

Open windows browser

Actual Behavior

/usr/bin/xdg-open: 882: www-browser: not found /usr/bin/xdg-open: 882: links2: not found /usr/bin/xdg-open: 882: elinks: not found /usr/bin/xdg-open: 882: links: not found /usr/bin/xdg-open: 882: lynx: not found /usr/bin/xdg-open: 882: w3m: not found xdg-open: no method available for opening 'https://microsoft.com'

Diagnostic Logs

/usr/bin/xdg-open: 882: www-browser: not found /usr/bin/xdg-open: 882: links2: not found /usr/bin/xdg-open: 882: elinks: not found /usr/bin/xdg-open: 882: links: not found /usr/bin/xdg-open: 882: lynx: not found /usr/bin/xdg-open: 882: w3m: not found xdg-open: no method available for opening 'https://microsoft.com'

ramonduraes avatar Sep 26 '22 16:09 ramonduraes

I think you may have to configure xdg-open to do this, we don't do this by default.

benhillis avatar Sep 26 '22 16:09 benhillis

az login was working for me before, but now I'm facing this issue.

sabbour avatar Oct 13 '22 18:10 sabbour

I have the same issue, just installed a fresh Ubuntu 22.04 with service and GUI enabled, and the interop with browser is not working anymore on this version, there is something wired going on when using systemd with new WSL and GUI

fghamsary avatar Oct 30 '22 15:10 fghamsary

Came accros this one: https://github.com/microsoft/WSL/issues/8795 It seems like on eariler versions there was a package installed by default wslu which is not available by default on 22.04. It had a wslview shell command which did the work, so by installing it, you can have the functionality back, but not sure of the drawbacks.

fghamsary avatar Oct 30 '22 15:10 fghamsary

wslu works. This really feels like a problem WSL should own -- installing the component, ensuring that the user knows the component could be installed, or forcing it to be installed due to some dependency.

it's not even mentioned here: https://learn.microsoft.com/en-us/windows/wsl/install.

(AdamGlassMS too)

AdamGlass avatar Jan 24 '23 06:01 AdamGlass

Same issue here. the WSL 22.04 was working fine this morning. I did a apt-upgrade and then, the console is now broken when trying to do "az login"

I did "sudo apt install wslu" like mentioned and it seems to fix it. pretty weird what broke it

lgmorand avatar Feb 13 '23 14:02 lgmorand

I had a similar issue, considering if installing one of the "not found" packages would help. Haven't found a solution yet.

belainehi avatar Feb 27 '23 10:02 belainehi

Try to add an web browser path with BROWSER environment variable before launching xdg-open. For example, let assume Firefox is installed in Windows as C:\Firefox\firefox.exe. Then set the environment variable as export BROWSER=/mnt/c/Firefox/firefox.exe and run xdg-open as usual.

wslpath can also help to covert the path style.

Source: https://cgit.freedesktop.org/xdg/xdg-utils/tree/scripts/xdg-open.in

Biswa96 avatar Feb 27 '23 15:02 Biswa96

@Biswa96 Thanks for the workaround! 👍

I had to create a symlink with ln -s /mnt/c/path/to/browser.exe and then set export BROWSER=~/path/to/symlink as my browser is installed in a directory with spaces (Program Files (86)), which xdg-open can't handle. https://unix.stackexchange.com/a/715404/571729

AndreasNasman avatar May 09 '23 13:05 AndreasNasman

@Biswa96 Thanks for the workaround! 👍

I had to create a symlink with ln -s /mnt/c/path/to/browser.exe and then set export BROWSER=~/path/to/symlink as my browser is installed in a directory with spaces (Program Files (86)), which xdg-open can't handle. https://unix.stackexchange.com/a/715404/571729

Thanks both of you, it worked having 401 error.

LucianoCrocco avatar May 16 '23 22:05 LucianoCrocco

I am the developer of Azure CLI authentication.

Because of this change, Python's built-in module webbrowser stops working on Ubuntu 22.04 in WSL:

$ python -c "import webbrowser; print(webbrowser.open('https://login.microsoftonline.com/'))"
True
(py310) user2@DESKTOP-A79F1:~$ /usr/bin/xdg-open: 882: x-www-browser: not found
/usr/bin/xdg-open: 882: firefox: not found
/usr/bin/xdg-open: 882: iceweasel: not found
/usr/bin/xdg-open: 882: seamonkey: not found
/usr/bin/xdg-open: 882: mozilla: not found
/usr/bin/xdg-open: 882: epiphany: not found
/usr/bin/xdg-open: 882: konqueror: not found
/usr/bin/xdg-open: 882: chromium: not found
/usr/bin/xdg-open: 882: chromium-browser: not found
/usr/bin/xdg-open: 882: google-chrome: not found
/usr/bin/xdg-open: 882: www-browser: not found
/usr/bin/xdg-open: 882: links2: not found
/usr/bin/xdg-open: 882: elinks: not found
/usr/bin/xdg-open: 882: links: not found
/usr/bin/xdg-open: 882: lynx: not found
/usr/bin/xdg-open: 882: w3m: not found
xdg-open: no method available for opening 'https://login.microsoftonline.com/'

This affects MSAL's PublicClientApplication.acquire_token_interactive: https://github.com/AzureAD/microsoft-authentication-library-for-python/blob/64141cacdb4ea3a02a2b3cb45bc8fb3be4f93f36/msal/oauth2cli/authcode.py#L58

Then affects Azure CLI's az login: https://github.com/Azure/azure-cli/blob/f0c87ca820e0bd3f9dd403ef96c21ed49b734d16/src/azure-cli-core/azure/cli/core/auth/identity.py#L153

jiasli avatar Jul 31 '23 12:07 jiasli

@jiasli what does that mean ? that we should consider az cli not working properly anymore on WSL 22.04 ?

lgmorand avatar Jul 31 '23 18:07 lgmorand

@lgmorand If you are using powershell on WSL then set the BROWSER ENV variable like so....

$Env:BROWSER = '/mnt/c/Program Files/Google/Chrome/Application/chrome.exe'

For bash on wsl to open with your default browser use:

export BROWSER 'explorer.exe' and set this line in your bash profile to make it permanent: nano ~/.profile

kierzorz avatar Aug 07 '23 16:08 kierzorz

@kierzorz thanks but that's not the point. WSL is configured and install by MS, az CLI is packaged by MS. Can't we expect either a fix upstream or a built-in workaround. For instance, WSL is installed on Windows where edge is here by default (even if not default browser), so for me, the env could be setup to point to edge install path. it would be sufficient to open a web page for auth

lgmorand avatar Aug 07 '23 19:08 lgmorand

I just installed Ubuntu 22.04. I had to do 2 things:

  1. install xdg utilities (sudo apt install xdg-utils) and
  2. install wslu following the instructions here: https://wslutiliti.es/wslu/install.html (Scroll down to **Ubuntu Warning**. Follow the steps for PPA version: sudo add-apt-repository ppa:wslutilities/wslu sudo apt update sudo apt install wslu

leslie-corbalt avatar Oct 20 '23 15:10 leslie-corbalt

@leslie-corbalt I had a lot of issues because of xdg-open not really working. Thanks to you and to the other people who mentioned about WSLU. It worked for me. I followed the steps you mentioned above.

cianetech avatar Oct 25 '23 18:10 cianetech

Without xdg-utils installed, webbrowser from Python 3.11 now reports a different error:

$ sudo apt remove xdg-utils
$ sudo apt install python3.11
$ python3.11 -c "import webbrowser; print(webbrowser.open('https://login.microsoftonline.com/'))"
True
gio: https://login.microsoftonline.com/: Operation not supported

jiasli avatar Dec 01 '23 09:12 jiasli

I'm using this on WSL2 Ubuntu with default Windows integrations (such as ability to run .exe from Linux) enabled:

$ sudo apt install xdg-utils
$ export BROWSER="cmd.exe /c start" # add to ~/.profile to make permanent
$ xdg-open https://www.microsoft.com/
'\\wsl.localhost\Ubuntu\home\<username_redacted>'
CMD.EXE was started with the above path as the current directory.
UNC paths are not supported.  Defaulting to Windows directory.

This opens https://www.microsoft.com/ in whatever happens to be my default Windows web browser. The 'UNC paths are not spported' message seems to be harmless.

ackalker avatar Feb 26 '24 14:02 ackalker

Same issue here. the WSL 22.04 was working fine this morning. I did a apt-upgrade and then, the console is now broken when trying to do "az login"

I did "sudo apt install wslu" like mentioned and it seems to fix it. pretty weird what broke it

This work for me. Thanks!

leandiazz avatar Aug 30 '24 17:08 leandiazz

I just installed Ubuntu 22.04. I had to do 2 things:

  1. install xdg utilities (sudo apt install xdg-utils) and
  2. install wslu following the instructions here: https://wslutiliti.es/wslu/install.html (Scroll down to **Ubuntu Warning**. Follow the steps for PPA version: sudo add-apt-repository ppa:wslutilities/wslu sudo apt update sudo apt install wslu

I'm using WSL2 on Windows using Ubuntu v22.04.5 LTS. --> I just execute $ sudo apt install xdg-utils and the call to a browser was solved and the "gio warning" dissapears

tgiacaman avatar Oct 08 '24 12:10 tgiacaman

@Biswa96 Thanks for the workaround! 👍

I had to create a symlink with ln -s /mnt/c/path/to/browser.exe and then set export BROWSER=~/path/to/symlink as my browser is installed in a directory with spaces (Program Files (86)), which xdg-open can't handle. https://unix.stackexchange.com/a/715404/571729

you can do it like this, with quotes around the part having spaces, but not the full path

export BROWSER=/mnt/c/'Program Files (x86)'/Microsoft/Edge/Application/msedge.exe

copdips avatar Oct 11 '24 13:10 copdips

For those who are lazy, just copy the displayed link in command line and open it in the browser, the command can still receive feedback after you finish working in the browser.

khacnha avatar Feb 07 '25 04:02 khacnha

same problem in WSL1 + Ubuntu 24.04. It would be nice if somehow WSL provided some help in this


What worked: export BROWSER=/mnt/c/Progra~1/Google/Chrome/Application/chrome.exe

In Ubuntu 24.04, somehow workarounds like export BROWSER=/mnt/c/'Program Files'/Google/Chrome/Application/chrome.exe stopped working - maybe because of some recent changes to the /usr/bin/xdg-open shell script

vadimkantorov avatar May 17 '25 11:05 vadimkantorov

xdg-utils maintianer here:

Thanks to @vadimkantorov for opening an upstream bug

TL;DR The xdg-utils aren't the only program that makes use of the BROWSER variable, so xdg-open tries to stay compatible resulting in what looks like ignoring the problem.

The official xdg-utils workaround is creating a shell script that opens your favorite browser and put that into the BROWSER variable. (Will be in the manpage on the next release too)

Example shell script:

#!/bin/sh

exec "/mnt/c/Program Files (x86)/my/favorite/browser.exe" "$@"

In case anyone from the WSL project is reading this: I'd be great to have someone I can ping to get WSL knowledge and who can test changes to avoid/prevent breakages like this in the future.

slatian avatar May 20 '25 06:05 slatian

Note that https://github.com/wslutilities/wslu has been discontinued.

And note that https://launchpad.net/ubuntu/+source/wslu is outdated and the latest version of wslu is only available in the aforementioned GitHub repo or as PPA https://launchpad.net/~wslutilities/+archive/ubuntu/wslu

trallnag avatar Jul 02 '25 21:07 trallnag

It worked after I downloaded wslu. sudo add-apt-repository ppa:wslutilities/wslu sudo apt update sudo apt install wslu

gabriellaXL avatar Aug 04 '25 10:08 gabriellaXL