Skip Navigation

Scott Spence

Windsurf Setup for WSL

6 min read
Hey! Thanks for stopping by! Looks like this post was updated 1 month ago. Just bear in mind it was originally posted 4 months ago. If there's anything in here which doesn't make sense, please get in touch.

I used Windsurf for the whole day yesterday, I’m impressed! I’ve been using Cursor as part of my development workflow full time since September last year. There’s many a post on here from me on integrating other tools into my workflow for using “AI” tools, mainly around Anthropic’s Model Context Protocol (MCP). I’m also a Windows Subsystem for Linux (WSL) user, so this means there’s limitations when not having Node installed natively for MCP tool usage, see my Getting MCP Server Working with Claude Desktop in WSL post for more details.

Aight! Tl;Dr links:

I’ve known about Codium, well, (VSCodium) for a while actually, I mean, before Windsurf was a thing, I used to use it when I was full on with Linux as a daily driver (not just WSL). Windsurf was released November last year. I did take a look back then but there was no WSL support, so I left it there!

Just another VS Code, right?

So, if you didn’t know already both Cursor and Windsurf are based on the same codebase as Microsoft’s VS Code. This means I was able to go from VS Code to Cursor to Windsurf with relative ease. My keybindings and shortcuts either remained the same or I copy pasted what I needed from my settings repo.

Without going into too much detail, the process was, download the latest Windsurf, I use winget so winget install Codeium.Windsurf then open it. I get the expected “Would you like to import your settings and extensions from Cursor or VS Code?” prompt, from past experience with Cursor (i.e. just making a general mess) I now opt for the start from scratch option. I did check the option to add Windsurf to my PATH and allow access to public AND private networks.

So at this point, Windsurf is throwing errors saying it can’t find git installed, go install it, and I’m like “we got git at home!”, home being WSL! I’ll come onto this in the next section, for now I’m just getting the settings sorted.

Ctrl+, to open the Windsurf Settings tab, scroll to the bottom of the page and select the Other Settings, View Settings option, this opens the settings.json file. Copy paste in my settings, then the first thing I notice is that the marketplace is different, (more on that in the Extension Marketplace Difference section).

Launch Windsurf from the terminal

Let’s talk about getting that sweet action of opening up a project folder from the terminal, like code . or cursor ., well, you can windsurf . but it doesn’t connect to WSL.

This was a bit of a clunky experience to open a project in WSL in Windsurf, it’s detailed on the Windsurf site, you have to launch the WSL remote connection by clicking the very bottom left button to connect to WSL (or Remote-WSL: Connect to WSL from the command palette) and then you’re picking out the folder you want to open in WSL, it opens up again in WSL.

Anyways! Bit of searching around and found this post on Reddit.

What I did, create a windsurf-launcher.sh file:

# in my home folder ~
nano windsurf-launcher.sh

Add in the script from the Reddit post:

#!/bin/bash
CURRENT_PATH=$(readlink -f "$1")
windsurf --folder-uri "vscode-remote://wsl+Ubuntu$CURRENT_PATH"

ℹ️ Note: That "vscode-remote://wsl+Ubuntu$CURRENT_PATH" the Ubuntu part is my default WSL instance! To check what your default WSL instance is, in Powershell use the wsl -l to list your installed distros! So, if Ubuntu-24.04 was my default then the it would be "vscode-remote://wsl+Ubuntu-24.04$CURRENT_PATH".

Make the script executable:

chmod +x windsurf-launcher.sh

Then in my aliases file, add in the alias!

alias -g wf="~/windsurf-launcher.sh ."

If you don’t have an aliases file, do this:

echo 'alias wf="~/bin/windsurf-launcher.sh ."' >> ~/.zshrc
source ~/.zshrc

If your using bash then replace ~/.zshrc with ~/.bashrc.

With this setup, I can type wf . to open Windsurf connected to my current WSL directory from the terminal. It’s a bit of extra setup, but once done, it makes the workflow much smoother.

MCP tools in WSL

I’ll be honest, I have been absolutely fine working with MCP tools in Claude Desktop or in Cline, there’s been some occasions where I’ve really been wanting an MCP tool in my editor, historically I’d reach for Cline and swallow the cost! Now I can use MCP tools directly in Windsurf!

If you’ve read my other posts about Getting MCP Server Working with Claude Desktop in WSL or Using MCP Tools with Claude and Cline, you’ll know that I’ve spent considerable time integrating AI tooling into my development environment.

Cursor, just wouldn’t work with MCP tools in WSL. There’s a load of workaround from the Cursor forum none of which ever worked for me.

Windsurf, on the other hand, handled MCP tools like a champ! I literally took my Claude Desktop config and dropped it into Windsurf and it worked right away.

Keyboard shortcuts work!

In Cursor, I consistently ran into an annoying limitation: when using the composer, keyboard shortcuts would become “trapped” within that context. If I wanted to, for example, check the file explorer using a keyboard shortcut while working with the composer, I’d have to manually click outside the composer first, breaking my flow.

In Windsurf keyboard shortcuts work! I can switch into the file explorer or anything else after working in the composer with any valid keyboard shortcut.

Extension marketplace difference

Right, so, the default marketplace wasn’t what I was used to! While Cursor uses the Microsoft extension marketplace, Windsurf opts for its own extension marketplace.

To configure the extension marketplace in Windsurf, I can modify the settings.json file. By default, Windsurf uses its own marketplace, but if I want to switch to the Microsoft marketplace, I can use this configuration:

{
	"windsurf.marketplaceExtensionGalleryServiceURL": "https://marketplace.visualstudio.com/_apis/public/gallery",
	"windsurf.marketplaceGalleryItemURL": "https://marketplace.visualstudio.com/item"
}

I can also use the Open VSX Registry if I prefer:

{
	"windsurf.marketplaceExtensionGalleryServiceURL": "https://open-vsx.org/vscode/gallery",
	"windsurf.marketplaceGalleryItemURL": "https://open-vsx.org/vscode/item"
}

Being able to configure which marketplace to use means I can access different extension ecosystems, which is a flexibility that Cursor doesn’t currently offer.

Try Windsurf with free credits

I should mention that Windsurf offers a referral program that’s pretty generous. If you’re interested in trying out Windsurf sign up using my referral link, both you and I get 500 credits - that’s essentially a free month of premium credits!

The verdict (for now)

The thing is, because they are all so similar there’s not much to separate them on, so it’s very small differences that make a big impact in my workflow.

So, with the open editor from the terminal issue sorted for me and Windsurf not getting in the way and hijacking my keyboard shortcuts I’m feeling Windsurf!

The command palette is new, opens as a floating window instead of being attached to the top of the editor. For me this is big, but not in isolation!

After a full day with Windsurf replacing Cursor, I’m inclined to continue using it as my primary editor. The MCP tools compatibility with WSL alone makes it worth the switch for my workflow, not that it’s that big a leap!

There's a reactions leaderboard you can check out too.

Copyright © 2017 - 2025 - All rights reserved Scott Spence