![screenshot](https://i.imgur.com/lRu6DFN.jpg "screenshot") *Background: [crowned > need for speed](https://www.crownedstore.com/need-for-speed), Fluent terminal with Bright Lights theme* # My Windows dev setup / howto ### Rambelings Ya windows the worst os to program on or is it. For a long time i've been fully againced windows and i still kinda agree if you use it without "cheating". Windows it just too unstable and too un-standardized to work with on it's own, it's like using mac os with it's forever taking updates but combined with non-standardized tooling and a lot of unexpected bahavior what just results in a lot of frustration. For example why can i see ls taking time to display lines in powershell???, ya it's only ~50ms but still why does a simple command like ls has to take so long?? Or why sometimes do programs not stop running when i press ctrl+c and do i need to open task manager and scroll to the program because there is no search bar so i can find it quickly?? Well these are just a few things that make using windows not great and there are a lot more little things. Thankfully windows has evolved and now we can "cheat" around the biggest frustrations using the windows subsystem version 2, v1 still had a lot of windows problems but now with version 2 being in it's own vm it works amazing. I call it cheating because in the end it's comes down to really just a nice linux vm in windows that is integrated perfectly. I can now right click in a folder, click on open in fluent terminal and a linux like terminal pops up with a fully working linux shell with all the amazing linux tools. Thanks to docker and vscode their integration i can even open vscode from inside the linux terminal and use docker like i do on linux, **This is great!!**. Furthermore there are a lot of tools to fix to other annoying windows things like. Use wox instaid of the windows search for obviouse reasons, Use Shutup 10 and winaero tweaker to disable windows doing dumb garbage like installing shit without any reason. With all that together will a lot of other small tweaks i can finally say that using windows is oke now, i can now enjoy the good sides of windows without there beeing to meany down sides. Just like any Linux distro or Mac OS. Everything in the end has there downsides and upsides but as long as there are more upside than down i'm oke with using it. ### 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 - [Shutup 10](https://www.oo-software.com/en/shutup10) *disable windows garbage* - [git](https://git-scm.com/downloads) *ofc* - [chocolatey](https://chocolatey.org/) *a package manager for windows* - *Programming "languages"* - [nodejs](https://nodejs.org/en/) - [Go](https://golang.org/dl/) - [Rust](https://www.rust-lang.org/learn/get-started) - [vsCode](https://code.visualstudio.com/) *code editor* - [Windows Terminal](https://www.microsoft.com/en-us/p/windows-terminal-preview/9n0dx20hk701?activetab=pivot:overviewtab) or [Fluent Terminal *my favorite*](https://github.com/felixse/FluentTerminal) *a nice terminal* - [Wox & Everything](https://github.com/Wox-launcher/Wox/releases) *a quick launch tool & file indexer* - [Deskpins](https://efotinis.neocities.org/deskpins/) *Pin a window to the top* - [Winaero Tweaker](https://winaero.com/download.php?view.1796) *Tweak the windows experance* ### 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](https://www.microsoft.com/nl-nl/p/ubuntu-1804-lts/9n9tngvndl3q?rtc=1&activetab=pivot:overviewtab) *After installing you might have to convert the subsystem to windows subsystem version 2 using:* ```sh 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 ``` To quickly access the subsystem's filesystem add the following network drive under *"This PC"* `\\wsl$\Ubuntu` *note: this does not work on wsl1* ### Docker Download [Docker desktop](https://www.docker.com/products/docker-desktop) After install: 1. go to Docker desktop settings 3. Under command line enable: Enable experimental features 2. Under general enable: Enable the experimental WSL 2 based engine 3. [Install docker in the ubuntu subsystem](https://docs.docker.com/install/linux/docker-ce/ubuntu/) *there is no need to start the docker service* 4. 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 ```sh # 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: ```fish alias h='cd ~' # ... ``` ## Theming & Custom settings ### Fish & vscode See my [dotfiles](https://github.com/mjarkk/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)* Add Fluent terminal to context menu: [install.bat](https://github.com/felixse/FluentTerminal/blob/dec492e39a04bfb4f8bd4b8f4dfc513ec87bc796/Explorer%20Context%20Menu%20Integration/Install.bat) In the WSL profile set this as working directory: `\\wsl$\Ubuntu\home\mark` #### Steam 1. download [Steam customizer tool](http://steamcustomizer.com/download) 2. download [the dracula skin](http://editor.steamcustomizer.com/anqbr) ### Winaero Tweaked settings: - Disable timeline *context menu* - Take ownership *context menu* - Screen snip *context menu* - Screen snip *shortcuts* > place the shotcut in `%appdata%\Microsoft\Windows\Start Menu\Programs` - Disable cortana *windows apps* - Ads and unwanted software *behavior* - Compressed overlay icon *file explorer* - Shortcut arrow *shortcuts* > No ### AMD Radeon settings *The radeon software has a list of hotkeys that are also in use by some programs so i unbind them usually*, Settings arrow *right top* > Hotkeys > *unbind the keys you find annoying for me that's almost everything :)* ### 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](https://i.imgur.com/zOxSn4c.png "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)*. ## Honorable mentions - [alt tab terminator](https://www.ntwind.com/software/alttabter.html): seems like a nice pice of software but i don't think it's wourth the $20 - [fast window switcher](https://github.com/JochenBaier/fastwindowswitcher): i have the taskbar automaticly hidden and beacause of that i can't really use this software sadly, [made an issue](https://github.com/JochenBaier/fastwindowswitcher/issues/13) but seems like it's unmaintained