1. Use Chocolatey (winget is still new). You can setup everything via it, and I mean everything - node, postgre, docker, vscode, all browsers, selenium and drivers etc.
2. Learn Powershell, but learn it really good. Adopt PowerShell build system Invoke-Build
3. Install better terminal - ConEmu or Windows terminal
4. Enrich Windows using FOSS and cross platform tools: choco install copyq, flameshot, less, fzf, paint.net, git, tortoisegit, winscp, kitty, screentogif, sysinternals, wiztree, gsudo, lockhunter, signal, viber, slack
5. Disable Windows Defender and use some debloater (controversial, but I do it, and system is at least x2-x5 faster). I use https://github.com/W4RH4WK/Debloat-Windows-10 along with ShutUp10 tool.
6. Install the best search engine in the world: cinst everything
Enjoy, its awesome.
Also set it as default in terminal/conemu.
And use what instead? Defender is pretty good at keeping you safe, so you definitely need a replacement.
Having said that I've had so many sleep/power management problems with Windows with my new ThinkPad that I nearly just switched back to Fedora before finding a configuration that more or less seems to work.
Services (NGINX, MariaDB, PHP/PHP-FPM, etc.) are within Arch.
Project files are in Windows, mounted as an NFS share within Arch.
Editing and committing files mostly from Windows, Atom and git configured for LF.
Executing tasks, Bash scripts and such, from Arch via SSH.
I tend to duplicate tasks in Batch or Powershell for cross-compatibility.
And use the same structure for Electron builds on the Windows side with WIX.
Only complaint is VM performance.
I'll probably swap to a bare-metal Linux machine, using the same approach, soon.
Avoid bad advices.
Windows itself has reached a dead end. It is such a mishmash of incompatible tech that Microsoft themselves have stopped trying to fix their admin GUI interface. Between registry, Com and Dcom and even a few leftover text files, there is no way to configure a windows system consistently.
Powershell is an over complicated band-aid to cover it up, ignoring that the wound underneath has become septic.
I get that they had to do something to drag it together, but even good powershell scripts end up as 4 different coding styles crammed together, depending on what component CLI output or interface you are trying to use.
WSL2 is a great thing if you need to do anything with python, node and even .NET. All the online tutorials work and since everything is a CLI these days, why not use a decent shell that doesn't have windows legacy character escape bogosity, broken file names and has sane argument handling?
Scoop is way inferior by number of packages and stability. Mainstream chocolatey packages are embedded which means you don't need network to install them so you can cache them (artifactory, nexus...).
Even for networked packages Chocolatey has its own CDN that keeps them even when vendor removes it (its commercial though).
With scoop, as with brew and winget typically only latest packages work, packages are flaky, and 404 will be your constant friend. Since those package managers do not allow adding binary files they are for causal use, not professional.
I would like to use scoop, but as long as it functions like that, you can't rely on any package working in near future.
I have used Chocolatey in the past. I would often run into problems where the commands would leave an application in an inconsistent state - could no longer upgrade, uninstall, or install without some manual intervention. I also ended up having to manually install packages and frameworks because the chocolatey version was way behind the latest version. Basically I always felt like I was fighting against chocolatey rather than it being a tool of convenience.
Maybe it has gotten better in the past few years, but I have completely soured on it by those experiences.
Just make sure that your actual code/project files are also inside of your WSL (https://dev.to/ajeet/so-you-have-installed-windows-subsystem...)
There's a thing called WSL Bridge that VS Code hooks into, or uses somehow in order to run VS Code in Windows, but it is accessing and running code that's inside the WSL.
I used various terminal programs but the most recent one I used was Windows Terminal: https://www.microsoft.com/en-us/p/windows-terminal/9n0dx20hk...
This alleviated many issues I had and I ended up getting my whole team onboard with the same setup.
We were running Angular apps, and also vanilla JS stuff with Bootstrap, Gulp, Webpack, Live Server.
wsl2 gives you linux vm running in hyper-v alongside windows.. the vm pretty much has direct hardware access and is fast. From here, you can install linux based git, rsync, etc ... and the vm has full access to the windows filesystem.
vscode has a nice wsl extension which runs in client/server mode with server living in the linux vm and client on windows.
wsltty is closest feeling simple terminal, with translucency, etc.
... with this setup, i got rid of cygwin, vagrant, virtualbox, etc.
latest PowerShell, Windows Terminal, WinMerge, Notepad++, ToirtoiseGit/SVN, Paint.NET.
Office, FF, Chrome, EdgeChrome.
Everything else is project specific.
But my biggest gripe is not having tmux. There are some window/tab/pane management shortcuts in Windows Terminal but they're not as good as tmux (yet).
Import-Module PSReadLine
Set-PSReadLineOption -EditMode Emacs
Set-PSReadLineOption -HistorySearchCursorMovesToEnd
Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward
Set-PSReadLineKeyHandler -Key Tab -Function Complete
Import-Module posh-git
Import-Module oh-my-posh
Set-PoshPrompt -Theme material
function e { emacs -nw $args }
function gs { git status $args }
del alias:gc -Force
function gc { git commit $args }
del alias:gp -Force
function gp { git push -u origin $(git branch --show-current) }
function python { python3 $args }https://devblogs.microsoft.com/powershell/announcing-psreadl...