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:
- Windows with WSL support
- An Ubuntu distribution for WSL
- Visual Studio Code
- Microsoft’s WSL extension for VS Code
- 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.
Step 2: Install VS Code and the WSL extension
Install Visual Studio Code on Windows. 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.
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.