Back to all posts

My Development Environment on Windows with a Screen Reader

How I use Windows, NVDA, VS Code, WSL 2, and Ubuntu for software development.

This is the development setup I use on Windows with the NVDA screen reader. Windows runs NVDA and the VS Code interface. WSL 2 with Ubuntu runs most of my development tools and project commands.

I use this setup for Node.js, Python, Go, C++, PHP, TypeScript, HTML, and CSS. The exact tools change between projects, but the Windows and Linux split stays mostly the same.

High-level overview

  • Operating system: Windows with WSL 2 and Ubuntu
  • Editor: VS Code on Windows, connected to the project in WSL
  • Screen reader: NVDA
  • Terminal: Bash in the VS Code integrated terminal
  • Project files: Stored in my Ubuntu home directory

Keeping the project and development tools inside WSL gives me a Linux environment while I continue using the Windows applications and accessibility tools that work for me.

What you need

Before starting, install or have access to:

  1. Windows with WSL support
  2. An Ubuntu distribution for WSL
  3. Visual Studio Code
  4. Microsoft's WSL extension for VS Code
  5. The NVDA screen reader

Step 1: Install WSL and Ubuntu

Open PowerShell as administrator and run:

wsl --install

This installs WSL and the default Ubuntu distribution. After the download finishes, the same terminal may take you directly into Ubuntu. If Windows asks you to restart instead, restart it and then open Ubuntu. Create your Linux username and password when prompted. My full walkthrough, including what to do if WSL is already installed, is Install WSL and Ubuntu on Windows the Modern Way.

Step 2: Install VS Code and the WSL extension

Install Visual Studio Code on Windows. I walk through the installer with NVDA in Install VS Code on Windows with NVDA. In VS Code, open the Extensions view, search for "WSL," and install the extension published by Microsoft.

The editor interface continues to run on Windows. The extension connects VS Code to Ubuntu so the terminal, project files, and development tools run inside WSL.

Step 3: Install and configure NVDA

Install NVDA from the NV Access website. The settings I change first are symbol level, spoken indentation, and spoken capitalization. I explain the exact settings in NVDA Settings for Coding.

Step 4: Open a project from Ubuntu

In the Ubuntu terminal, create a folder for your projects:

mkdir -p ~/code
cd ~/code

Move into a project folder and run:

code .

VS Code opens on Windows and connects to that folder in Ubuntu. From there, I use the integrated Bash terminal for project commands.

Step 5: Install development tools

I install a few basic Linux packages first:

sudo apt update
sudo apt install -y git curl ca-certificates build-essential

After that, install the languages and tools required by the project. For Node.js, I use nvm so each project can use the Node version it needs without installing Node with sudo. Here is how I install nvm and Node.js on Ubuntu WSL.

VS Code may also ask to install language extensions inside WSL. Install only the extensions needed for the project you are working on.

Why this setup works for me

This setup keeps my editor and screen reader on Windows while the code and command-line tools run in Linux. I can use NVDA to navigate VS Code, open the integrated terminal, and work with the same Linux tools commonly used on development servers.

Analytics choices

May I use Google Analytics to understand which pages people read? If you accept, Google receives information about your visits and device, and stores analytics cookies in your browser. You can decline and still use the whole site.

If you close this dialog without choosing, analytics stays off and you will not be asked again on this device for 180 days. You can change your choice at any time using Analytics choices at the bottom of the page. Your choice is remembered for 180 days. Read the privacy policy.