1

I want to customize my fish shell using the Web UI mode, but when running fish_config colors, the following error is shown.

surface@Surface ~> fish_config starting-colors
Web config started at file:///tmp/web_configoafehdco.html
Hit ENTER to stop.
Start : This command cannot be run due to the error: The system cannot find the file specified.
At line:1 char:1
+ Start "file:///tmp/web_configoafehdco.html"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Start-Process], InvalidOperationException
    + FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.StartProcessCommandd                                                                                                                                                                                                                                                                            

I am running Ubuntu in the Windows Subsystem for Linux

2 Answers 2

5

After going through some articles and not finding the correct answer, I found that when running 'help' it opens the browser and points to

file://wsl%24/Ubuntu-20.04/usr/share/doc/fish/index.html#variables-for-changing-highlighting-colors

and when we're trying to run fish_config, it points to

"file://wsl%24/Ubuntu/tmp/web_configpo_b9wan.html"

That means, we need to change our wsl%24/Ubuntu to wsl%24/Ubuntu-20.04.

To do so, first of all, open the webconfig directory.

cd /usr/share/fish/tools/web_config

Now, give write permission to the webconfig.py file.

sudo chmod 777 webconfig.py

Modify the following line from "file:///" + f.name" to "file://wsl%24/Ubuntu-20.04" + f.name in webconfig.py file.


Change the file's permission back to its original state by running chmod 644 webconfig.py

You're good to go.

1

It seems like this problem is happening because your WSL2 distro might not have the latest version of fish. The solution would be to fix the wsl detection for fish in /usr/share/fish/tools/web_config/webconfig.py.

Edit your /usr/share/fish/tools/web_config/webconfig.py and change the is_wsl() function to be the same as this:

 def is_wsl(): 
     """ Return whether we are running under the Windows Subsystem for Linux """ 
     if "linux" in platform.system().lower() and os.access("/proc/version", os.R_OK): 
         with open("/proc/version", "r") as f: 
             # Find 'Microsoft' for wsl1 and 'microsoft' for wsl2 
             if "microsoft" in f.read().lower(): 
                 return True 
     return False

In particular, change "Microsoft" to "microsoft" (Uppercase to lowercase "m")

For more info, read this issue opened at the fish shell's github repo.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .