Overview
Welcome to the Windows section of the documentation.
Here, you'll find a curated list of applications, keyboard shortcuts, and workflows designed to enhance your productivity and streamline your experience on Windows.
Whether you are a developer, designer, or everyday user, these references cover common setup patterns for Windows, WSL, and virtualization.
For Git Bash-oriented GitHub SSH configuration and harness reliability guidance on Windows, see 0005. For a dedicated Alacritty + Git Bash terminal baseline on Windows, see 0006. For a prototype plan for a lightweight Alacritty sidebar wrapper on Windows, see 0007.
If you use a Corporate VPN, I recommend avoiding WSL due to potential network friction. A VirtualBox + Ubuntu Server workflow with port forwarding is often more reliable in that case.
Recommended Software
VS Code
https://code.visualstudio.com/
Disable AI Chat on startup
"terminal.integrated.commandsToSkipShell": [
"aichat.newchataction"
],
GitHub Desktop
https://desktop.github.com/download/
sqlite
https://github.com/sqlitebrowser/sqlitebrowser/releases/
PowerToys
https://learn.microsoft.com/en-us/windows/powertoys/install
Use your Company Portal if version is up to date.
Greenshot
https://getgreenshot.org/downloads/
Used to make animated screen captures (.GIF), and also includes LICEcap-like workflows.
View Mate
https://downloads.pentalogix.com/
LibreCAD 2D CAD Editor
LibreCAD is a cross-platform 2D CAD program written in C++17. It can read DXF/DWG files and write DXF/PDF/SVG files. It supports point/line/circle/ellipse/spline/parabola primitives. UI is highly customizable with many translations.
https://github.com/LibreCAD/LibreCAD/releases/
https://github.com/LibreCAD/LibreCAD/releases/download/v2.2.1.1/LibreCAD-v2.2.1.1-win64.exe
Zen Browser
https://zen-browser.app/download/
Keyboard and System Productivity
Keyboard Shortcuts
Shift+Del (Shift+Delete) in File Explorer deletes directly, avoiding Recycle Bin.
In terms of file system semantics, deleting to Recycle Bin is a metadata move.
Shift+Delremoves the file entry directly.Source: Stack Exchange
Startup Apps
- Open Run (
Windows + R), entershell:startup, and add startup items viaNew > Shortcut. - If missing in that list, use
shell:appsfolder, drag desired apps into Startup folder.
Command Line Interface
Tools I recommend you install on Windows (listed in the sections below).
Node Version Manager: Node, NPM, and Bun
nvm on
nvm install stable
nvm use stable
node --version
npm --version
npm # to see if there is a version to upgrade to
npm install -g bun
# npm install -g bun@1.2.4 # (to upgrade or use a specific version of `bun`)
npm install -g pnpm
# npm install -g pnpm@9.0.0 # (to upgrade or use a specific version of `pnpm`)
bun --version
pnpm --version
Rust
Rust on Windows requires MSVC tooling first.
rustup default stable-msvc
rustup update
Rust Tools
cargo install just
cargo install eza
Oh My Bash
Install and Configure
bash -c "$(curl -fsSL https://raw.githubusercontent.com/ohmybash/oh-my-bash/master/tools/install.sh)"
# Set your theme (see ~/.oh-my-bash/themes/)
OSH_THEME="powerline"
# Enable plugins
plugins=(git bashmarks progress)
# Enable completions
completions=(git composer ssh)
Dotfiles
I manage shell configuration with a dotfiles repo that syncs across
machines. On Windows, this covers .bashrc, .bash_profile, shared aliases, and AI agent configuration.
git clone git@github.com:iancleary/dotfiles.git ~/dotfiles
cd ~/dotfiles
./sync-dotfiles.sh push # Install configs from repo
./sync-dotfiles.sh pull # Backup current configs to repo
./sync-dotfiles.sh status # Check for differences
The utility installs OS-appropriate files: bash configs on Windows, zsh on macOS/Linux, plus shared utilities across platforms.
What Gets Synced (Windows)
.bashrc— Oh My Bash configuration.bash_profile— Bash profile.common/aliases.sh— Shell aliases (eza, git, docker, cargo, just).common/agents-git-trees.sh— Git worktree helpers (ga/gd).claude/— Claude Code settings, skills, principles.codex/— Codex CLI rules and MCP servers
AI Tools
OpenAI Codex CLI
npm i -g @openai/codex
Claude Code CLI
curl -fsSL https://claude.ai/install.sh | bash
Git for Windows
https://git-scm.com/downloads/win
Windows Terminal
This disables git for windows "white screen" flashing when tab completion is rendered in some paths.
Git for Windows includes /etc/inputrc with set bell-style visible in some setups.
cat /etc/inputrc > .inputrc
# before
set bell-style visible
# after
set bell-style none
Miscellaneous Tips
Turn Off Windows Search Web Suggestions
This controls whether Bing web results show when opening Start search.
- https://www.bing.com/videos/riverview/relatedvideo?q=windows+turn+off+search+the+web+start+menu
- https://www.youtube.com/watch?v=ZNRY7aUfIpo
Windows + R → regedit
Computer\HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\Explorer
Set DWORD DisableSearchBoxSuggestions to 1 (hexadecimal).
Disable Control Zoom on Mouse Wheel
Download and install AutoHotkey V2.0
#Requires AutoHotkey >=2.0- <2.1
A_MaxHotkeysPerInterval := 200
^WheelDown::Return
^WheelUp::Return
Remove Logitech Options+ Popup at Startup
Use REGEDIT to remove autostart DLL:
Windows+R → regedit →
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
Name = Logitech Download Assistant
Data = C:\Windows\system32\rundll32.exe C:\Windows\System32\LogiLDA.dll,LogiFetch
Source: Reddit Comment
WSL - Arch Linux
Install and initialize Arch in WSL
wsl --update
wsl --list --online
wsl --install -d archlinux
passwd
pacman -Syu
wsl.exe --terminate archlinux
Configure user and sudo
pacman -S sudo
useradd -m -G wheel iancleary
passwd iancleary
usermod -aG wheel iancleary
sudo pacman -S nano
EDITOR=nano visudo
# Uncomment near bottom:
# %wheel ALL=(ALL) ALL
wsl.exe --terminate archlinux
Configure wsl.conf and terminal profile
sudo nano /etc/wsl.conf
Add:
...
[user]
default=iancleary
wsl.exe --terminate archlinux
{
"colorScheme": "Tango Dark",
"font": {
"face": "MesloLGS NF"
},
"hidden": false,
"name": "Arch Linux",
"source": "Microsoft.WSL"
}
Locale and system configuration
sudo nano /etc/locale.conf
wsl.exe --terminate archlinux
locale-gen
wsl.exe --terminate archlinux
Set up Nix and shell toolchain
# Install git/curl/xz dependencies
sudo pacman -S git xz curl less
git clone https://github.com/iancleary/wsl-config.git
cd wsl-config
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install
nix-shell
nix-env -e nix
home-manager switch --flake .#windows-tower
home-manager switch --flake .#framework
exit
echo ~/.nix-profile/bin/zsh | sudo tee -a /etc/shells
sudo usermod -s ~/.nix-profile/bin/zsh $USER
sudo pacman -S gcc
rustup default stable
# Install python and make
sudo pacman -S python make
Install SSH tools and finish setup
sudo pacman -S openssh
Follow GitHub guidance:
wsl --set-default archlinux
wsl --list --verbose
VirtualBox on Windows
Why this path
- Stable path handling (no WSL filesystem surprises)
- Reliable port forwarding model for dev SSH
- Consistent DNS path that mirrors host tooling
Note: these are my operational notes from 2023 and may drift over time.
Hyper-V and Docker vs VirtualBox in practice
- Docker Desktop may be slower for local iteration due to restart/setup overhead.
- Hyper-V gave unstable re-IP behavior.
- WSL is convenient but can be brittle with corporate DNS/VPN.
VirtualBox baseline
- Keep host apps available while using a Linux guest.
- Use port forwarding for SSH access (example below).
- Use headless VM startup where practical.
SSH Port Forwarding
In VirtualBox, forward TCP host 3022 to guest 22.

| Name | Protocol | Host IP | Host Port | Guest IP | Guest Port |
|---|---|---|---|---|---|
| SSH | TCP | 3022 | 22 |
Host
0.0.0.0means any interface that can reach the host on that port can tunnel to guest SSH.
Test and standardize SSH
ssh -p 3022 iancleary@127.0.0.1
# ~/.ssh/config
Host development.local
HostName 127.0.0.1
Port 3022
User username
IdentityFile ~/.ssh/development_local_id_ed25519
ssh development.local
Guest-specific SSH includes
# ~/.ssh/config
Include config.d/*
# ~/.ssh/config.d/myvirtualboxguest
Host development.local
HostName 127.0.0.1
Port 3022
User iancleary
IdentityFile ~/.ssh/development.local.pub
ssh development.local
Fixed VDI for performance
/c/Program\ Files/Oracle/VirtualBox/VBoxManage.exe list hdds
/c/Program\ Files/Oracle/VirtualBox/VBoxManage.exe clonemedium disk DevelopmentDynamic.vdi Development.vdi -variant Fixed