Skip to content

Instantly share code, notes, and snippets.

@JesterMachine
Forked from mjarkk/windows_dev_station.md
Created August 21, 2024 08:23
Show Gist options
  • Save JesterMachine/4066338d4fb212e4df4a152f2869bb9a to your computer and use it in GitHub Desktop.
Save JesterMachine/4066338d4fb212e4df4a152f2869bb9a to your computer and use it in GitHub Desktop.
How i use windows for development

screenshot
Background: crowned > need for speed, Fluent terminal with Bright Lights theme

How i do development on windows

Get the latest build of windows

For some dumb reason windows always installes an old version so i use the insider program to get the latest windows version

  1. Settings > Updates & Security > Windows Insider Program > do your things here
  2. Settings > Updates & Security > Update Windows > Check for updates (This will take a shitload of time)

Programs i always install

Turn on hyper-v

some programs require this or work better so i usually turn this on
Control Panel > Programs > Turn Windows features on or off > hyper-v

Linux Subsystem

As administrator run: (to allow the windows subsystem)

Enable-WindowsOptionalFeature -Online -FeatureName $("VirtualMachinePlatform", "Microsoft-Windows-Subsystem-Linux")
wsl --set-default-version 2

Install Ubuntu 18.04 LTS

After installing you might have to convert the subsystem to windows subsystem version 2 using:

wsl -l -v
wsl --set-version Ubuntu 2

To view localhost only exposed servers create .wslconfig in the user root dir with the following contents:

[wsl2]
localhostForwarding=true

Docker

Download Docker desktop
After install:

  1. go to Docker desktop settings
  2. Under command line enable: Enable experimental features
  3. Under general enable: Enable the experimental WSL 2 based engine (if the docker desktop craches install this kernel update)
  4. Install docker in the ubuntu subsystem there is no need to start the docker service
  5. In the docker desktop settings > Resources > WSL intergration > Enable ubuntu or whatever you have

Fish, omf & nvm in the subsystem

I use fish as my main shell on linux so i also install it on my subsystem

# install fish v3
sudo add-apt-repository ppa:fish-shell/release-3
sudo apt install fish

# set fish as main shell
chsh -s `which fish`

# install oh my fish
curl -L https://get.oh-my.fish | fish

# install nvm (node version manager)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
omf install nvm
nvm install 13
nvm use 13
nvm alias default 13

# Get a nice fish theme if you want:
omf install nai

I usually edit the .config/omf/init.fish to add a few handy shotcuts:

alias h='cd ~'
# ...

Theming & Custom settings

Fish & vscode

See my dotfiles

Wox

  1. Download: https://github.com/dracula/wox
  2. Place Dracula.xaml in %LOCALAPPDATA%\Wox\app-X.X.XXX\Themes, in wox type restart wox > settings > Theme > Dracula

Fluent terminal

Download the z-Bright-Lights.itermcolors theme underhere and import it into the fluent terminal
For more themes: https://iterm2colorschemes.com (dowanlod the zip and extract the schemes folder)

Steam

  1. download Steam customizer tool
  2. download the dracula skin

Windows UI

I do most things via the wox so i don't need the taskbar anymore, it's just a waste of space screenshot

Problems

  • This setup eats noticable more memory than working on my linux machine, around 3-5gb more ram usage.
  • Sometimes after login the localhost forwarding in wsl doesn't work and the only solution to fix it seems to be restarting my pc
  • Restarting wsl (wsl --shutdown > open a terminal) breaks the docker access from within wsl, the docker command still work but starting a webserver and trying access it doesn't work. Usually i restart my pc if i still need to use docker after this, but i suspect you can also figgle around with the docker desktop settings to get it working again.
  • Sometimes the subsystem or the fish shell seems to crach but kinda still works???, it's supper wired but in the end i always restart my pc to solve it (note: Always when this happends there is also an update that can be installed when rebooting).
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Ansi 0 Color</key>
<dict>
<key>Blue Component</key>
<real>0.098039215686274508</real>
<key>Green Component</key>
<real>0.098039215686274508</real>
<key>Red Component</key>
<real>0.098039215686274508</real>
</dict>
<key>Ansi 1 Color</key>
<dict>
<key>Blue Component</key>
<real>0.35686274509803922</real>
<key>Green Component</key>
<real>0.20784313725490197</real>
<key>Red Component</key>
<real>1</real>
</dict>
<key>Ansi 10 Color</key>
<dict>
<key>Blue Component</key>
<real>0.46274509803921571</real>
<key>Green Component</key>
<real>0.90980392156862744</real>
<key>Red Component</key>
<real>0.71764705882352942</real>
</dict>
<key>Ansi 11 Color</key>
<dict>
<key>Blue Component</key>
<real>0.31764705882352939</real>
<key>Green Component</key>
<real>0.76078431372549016</real>
<key>Red Component</key>
<real>1</real>
</dict>
<key>Ansi 12 Color</key>
<dict>
<key>Blue Component</key>
<real>1</real>
<key>Green Component</key>
<real>0.83529411764705885</real>
<key>Red Component</key>
<real>0.46274509803921571</real>
</dict>
<key>Ansi 13 Color</key>
<dict>
<key>Blue Component</key>
<real>0.90588235294117647</real>
<key>Green Component</key>
<real>0.46274509803921571</real>
<key>Red Component</key>
<real>0.72941176470588232</real>
</dict>
<key>Ansi 14 Color</key>
<dict>
<key>Blue Component</key>
<real>0.70980392156862748</real>
<key>Green Component</key>
<real>0.74901960784313726</real>
<key>Red Component</key>
<real>0.42352941176470588</real>
</dict>
<key>Ansi 15 Color</key>
<dict>
<key>Blue Component</key>
<real>0.84313725490196079</real>
<key>Green Component</key>
<real>0.78431372549019607</real>
<key>Red Component</key>
<real>0.76078431372549016</real>
</dict>
<key>Ansi 2 Color</key>
<dict>
<key>Blue Component</key>
<real>0.46274509803921571</real>
<key>Green Component</key>
<real>0.90980392156862744</real>
<key>Red Component</key>
<real>0.71764705882352942</real>
</dict>
<key>Ansi 3 Color</key>
<dict>
<key>Blue Component</key>
<real>0.31764705882352939</real>
<key>Green Component</key>
<real>0.76078431372549016</real>
<key>Red Component</key>
<real>1</real>
</dict>
<key>Ansi 4 Color</key>
<dict>
<key>Blue Component</key>
<real>1</real>
<key>Green Component</key>
<real>0.83137254901960789</real>
<key>Red Component</key>
<real>0.46274509803921571</real>
</dict>
<key>Ansi 5 Color</key>
<dict>
<key>Blue Component</key>
<real>0.90588235294117647</real>
<key>Green Component</key>
<real>0.46274509803921571</real>
<key>Red Component</key>
<real>0.72941176470588232</real>
</dict>
<key>Ansi 6 Color</key>
<dict>
<key>Blue Component</key>
<real>0.70980392156862748</real>
<key>Green Component</key>
<real>0.74901960784313726</real>
<key>Red Component</key>
<real>0.42352941176470588</real>
</dict>
<key>Ansi 7 Color</key>
<dict>
<key>Blue Component</key>
<real>0.84313725490196079</real>
<key>Green Component</key>
<real>0.78431372549019607</real>
<key>Red Component</key>
<real>0.76078431372549016</real>
</dict>
<key>Ansi 8 Color</key>
<dict>
<key>Blue Component</key>
<real>0.098039215686274508</real>
<key>Green Component</key>
<real>0.098039215686274508</real>
<key>Red Component</key>
<real>0.098039215686274508</real>
</dict>
<key>Ansi 9 Color</key>
<dict>
<key>Blue Component</key>
<real>0.35686274509803922</real>
<key>Green Component</key>
<real>0.20784313725490197</real>
<key>Red Component</key>
<real>1</real>
</dict>
<key>Background Color</key>
<dict>
<key>Blue Component</key>
<real>0.098039215686274508</real>
<key>Green Component</key>
<real>0.098039215686274508</real>
<key>Red Component</key>
<real>0.098039215686274508</real>
</dict>
<key>Bold Color</key>
<dict>
<key>Blue Component</key>
<real>0.75576734293193715</real>
<key>Green Component</key>
<real>0.70378700769969904</real>
<key>Red Component</key>
<real>0.62377825081598537</real>
</dict>
<key>Cursor Color</key>
<dict>
<key>Blue Component</key>
<real>0.0</real>
<key>Green Component</key>
<real>0.29334646463394165</real>
<key>Red Component</key>
<real>0.95475113391876221</real>
</dict>
<key>Cursor Text Color</key>
<dict>
<key>Blue Component</key>
<real>0.19370138645172119</real>
<key>Green Component</key>
<real>0.15575926005840302</real>
<key>Red Component</key>
<real>0.0</real>
</dict>
<key>Foreground Color</key>
<dict>
<key>Blue Component</key>
<real>0.84313725490196079</real>
<key>Green Component</key>
<real>0.78823529411764703</real>
<key>Red Component</key>
<real>0.70196078431372544</real>
</dict>
<key>Selected Text Color</key>
<dict>
<key>Blue Component</key>
<real>0.098039215686274508</real>
<key>Green Component</key>
<real>0.098039215686274508</real>
<key>Red Component</key>
<real>0.098039215686274508</real>
</dict>
<key>Selection Color</key>
<dict>
<key>Blue Component</key>
<real>0.84313725490196079</real>
<key>Green Component</key>
<real>0.78823529411764703</real>
<key>Red Component</key>
<real>0.70196078431372544</real>
</dict>
</dict>
</plist>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment