Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
1 of 2 tasks
ramonduraes opened this issue Sep 26, 2022 · 18 comments
Open
1 of 2 tasks

Comments

@ramonduraes
Copy link

Version

Microsoft Windows [´veersion 10.0.19042.1706]

WSL Version

  • 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'

@benhillis
Copy link
Member

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

@sabbour
Copy link
Member

sabbour commented Oct 13, 2022

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

@fghamsary
Copy link

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
Copy link

Came accros this one: #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.

@AdamGlass
Copy link

AdamGlass commented Jan 24, 2023

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)

@lgmorand
Copy link

lgmorand commented Feb 13, 2023

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

@belainehi
Copy link

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

@Biswa96
Copy link

Biswa96 commented Feb 27, 2023

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

@AndreasNasman
Copy link

@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

@LucianoCrocco
Copy link

@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.

kachick added a commit to kachick/nixpkgs-url that referenced this issue Jul 28, 2023
kachick added a commit to kachick/nixpkgs-url that referenced this issue Jul 28, 2023
kachick added a commit to kachick/nixpkgs-url that referenced this issue Jul 28, 2023
@jiasli
Copy link
Member

jiasli commented Jul 31, 2023

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

@lgmorand
Copy link

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

@kierzorz
Copy link

kierzorz commented Aug 7, 2023

@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

@lgmorand
Copy link

lgmorand commented Aug 7, 2023

@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

@leslie-corbalt
Copy link

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

@cianetech
Copy link

@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.

@jiasli
Copy link
Member

jiasli commented Dec 1, 2023

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

@ackalker
Copy link

ackalker commented Feb 26, 2024

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests