This is not usual "setup" guide; this is more quick and efficient guide (and mostly reminder to myself 😀) how to setup blank machine with least amount of effort.
Also, this targets minimum applications (core) + specific ones for home usage/development (home). Given that this is higly dependent on what you actually use PC for, it is not universal list 😄
I believe that general principles (MS Store, WinGet + Cloud storage) can be applied to everyone:
- Any created artifact (= files) and configuration store on cloud storage/GitHub
- Make installation breeze, using automation (MS Store / WinGet) and minimalist approach what is actually needed
- Use existing mechanisms (VS Code Settings Sync, PyCharm Settings Sync, cloud for file based settings) to sync various details between workplaces
- Finally, I suggest that for testing and fine tuning you use Windows Sandbox, excellent low profile Win instance. You can install winget in Sandbox via Windows PowerShell, details here.
Do not forget to add
-Scope AllUsersgiven that bunch of applications are system ones. Here is that script, but "verbose" version:
Install-PackageProvider -Name NuGet -Force
Install-Module -Name Microsoft.WinGet.Client -Force -Repository PSGallery -Scope AllUsers
Repair-WinGetPackageManagerNotes about Microsoft.PowerShell.Management\Test-Connection : Access is denied.
In case above fails with Microsoft.PowerShell.Management\Test-Connection : Access is denied. try to repair with this:
winmgmt /resetrepository
Restart-Service Winmgmtand try again.
Notes about Sandbox
- Last command often fails for first time, so expect to repeat it.
- For some strange reason, if your Sandbox have "Region" (System / Time & language / Language & region ) set to World some installations (Windows Terminal, for example) will fail. Just set proper Region before running first WinGet installation.
Having that, I split installation into three phases:
- Essential - for OS and core (Cloud services)
- Core Applications - mandatory ones, no matter type of machine (Home/Work) is in question
- Rest - either for fun/hobbies or just addition to previous list
- Windows 11, fully patched (Windows 10 will do, but I do not see point of using EOL operating system)
- Cloud storage; any will do, but I prefer those which are mirrored on file system (Google Drive, OneDrive) - easier to work with
- YU Keyboard from vesic.org
- This is "local" solution for typing accent characters (ćčšđžĆČŠĐŽ) for Balkan nations (Serbian, Bosnian, Croatian, Slovenian...) on non-YU keyboards.
- To be fair to others, won't put it in CORE / HOME packages, but leave in optional section :-)
Why MS Store? One time install, tied to MS Account, easy to install on other machine, auto-update...Also, some of applications simply can't be installed over winget, at least for now.
UPDATE: got couple of comments that this installation is "Store heavy", offering less flexibility than "pure" winget installation. Having that in mind, this version of installation is moved toward that goal - only actual winget and Windows Notepad should be installed over MS store - everything else can be done over winget itself:
- App Installer (WinGet)
- Windows Notepad
- Windows Terminal - actual installation is over winget. Here are just details how can you keep your configuration on cloud storage.
- Currently, there is no option to change Setting folder of Windows Terminal. In order to correct that (and store it on cloud storage), here is Powershell script: WinTermSetSym.ps1 for removing "original" and re-mapping to cloud folder with settings (run elevated):
Remove-Item -Force -Recurse -Path "$Env:LocalAppData\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState"
New-Item -ItemType SymbolicLink -Path "$Env:LocalAppData\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState" -Target "$env:OneDriveConsumer\Utils\WindowsTerminal\LocalState"Once WinGet is installed, you are ready to install Core applications:
winget import -i .\winget\winget-core.json --accept-package-agreementsReference: Bulk export/import with WinGet
- Application list export:
winget export -o .\winget-export.json - Bulk import:
winget import -i .\winget-export.json --accept-package-agreements
My work relies on CMD/Windows terminal prompt; one great resource for that is FiraCode font, monospaced font for development.
Install it last, after all other software and then enable ligatures for Windows Terminal, VS Code and PyCharm. If you use Oh My Posh, instructions for installation are below.
-
Microsoft Visual C++ Redistributable - sooner or later (usually sooner), one of applications will require this. Note - this takes quite time to get installed.
-
Microsoft.OpenSSH.BetaNot needed anymore. Windows 11 has built in SSH. Here is PowerShell script to check / enable (elevation needed): SSHCheckAndInstall.ps1- You can use OpenSSL for key generation:
ssh-keygen.exe -t ecdsa -b 521 -f key.private - Keys should be stored in
"%USERPROFILE%\.ssh"
- You can use OpenSSL for key generation:
-
Microsoft.VisualStudioCode Visual Studio Code
-
Microsoft.Edit - Nostalgia :-) Very simple editor from MS-DOS times
- in Ubuntu, you could install it with:
sudo snap install msedit
- in Ubuntu, you could install it with:
-
Joplin.Joplin Open source, Markdown note taking application. Excellent sync options between multiple machines.
-
chmln.sd Efficient search & replace CLI tool.
-
7zip.7zip - Excellent archiver
-
Ghisler.TotalCommander. Settings for shortcut, to use cloud based ini files:
TOTALCMD64.EXE /i="G:\My Drive\Utils\totalcmd\wincmd.ini" /F="G:\My Drive\Utils\totalcmd\wcx_ftp.ini"
-
Espanso.Espanso Open Source text expander
-
BurntSushi.ripgrep.MSVC - rg - line-oriented search tool that recursively searches the current directory for a regex pattern.
-
gerardog.gsudo - sudo for Windows
-
ajeetdsouza.zoxide - zoxide is a smarter cd command, inspired by z and autojump. Installation details here; add this to your PowerShell profile:
Invoke-Expression (& { (zoxide init powershell | Out-String) })
-
JanDeDobbeleer.OhMyPosh - The most configurable prompt utility for any shell.
- Install fonts directly using Oh My Posh:
oh-my-posh font install meslo oh-my-posh font install FiraCode
For both tools, oh-my-posh and zoxide I recommend to keep PowerShell profile on cloud drive and use it to SymLink local profile to it. Script for that is PowerShellProfileSym.ps1 and minimal PowerShell profile is here: Microsoft.PowerShell_profile.ps1
- clsid2.mpc-hc - Excellent video player of all media.
- VideoLAN.VLC This is great alternative to MPC-HC (clsid2 fork)
- nomacs.nomacs - Open Source Image Viewer
- dotPDN.PaintDotNet - Great free image and photo editing software
- Opera.Opera
- Launching Opera w/o proxy:
C:\Users\dvesic\AppData\Local\Programs\Opera\launcher.exe --no-proxy-server="
- Launching Opera w/o proxy:
- Mozilla.Firefox.DeveloperEdition FireFox Developer Edition, as complement to Chromium based browsers.
- ShareX.ShareX - ShareX - Excellent open source screenshot software
- JernejSimoncic.Wget - GNU Wget
- PDFsam.PDFsam - PDFsam Basic: split, merge, extract pages, rotate and mix PDF files
- WinsiderSS.SystemInformer - A free, powerful, multi-purpose tool that helps you monitor system resources, debug software and detect malware.
winget import -i .\winget\winget-home.json --accept-package-agreements- Git.Git
git config --global user.name "dvesic"git config --global user.email "Dejan@Vesic.Org"- Check for update:
git update-git-for-windows
- GitHub.cli
- dbeaver.dbeaver - Universal database tool
- WinMerge.WinMerge - Open Source differencing and merging tool for Windows
- JetBrains.PyCharm.Professional All purpose editor and IDE for Python. There is community (free) edition as well.
- WinSCP.WinSCP
- Use
/inito point out to cloud settings file:winscp.exe /ini="G:\My Drive\Utils\WinSCP\WinSCP.ini"
- Use
- Microsoft.WSL MS Windows Subsystem for Linux
- (OneDrive comes with Windows)
- Google.GoogleDrive
- SumatraPDF.SumatraPDF - brilliant application for PDF, eBook (epub, mobi), comic book (cbz/cbr), DjVu, XPS, CHM and image viewer for Windows.
# Initial setup: ESC for exit and do not remember open files between sessions
sd 'EscToExit = false' 'EscToExit = true' $Env:LOCALAPPDATA\SumatraPDF\SumatraPDF-settings.txt
sd 'RememberOpenedFiles = true' 'RememberOpenedFiles = false' $Env:LOCALAPPDATA\SumatraPDF\SumatraPDF-settings.txt- voidtools.Everything - Locate files and folders by name instantly
- Valve.Steam
- FlorianHeidenreich.Mp3tag - Easy-to-use tool to edit metadata of audio files.
- Deezer.Deezer
# YU-US keyboard by Vesic.Org
winget install -e --id Vesic.Org.US-YU.keyboard --source winget
# Full 365 Office suite
winget install -e --id Microsoft.Office
winget install -e --id AnyDeskSoftwareGmbH.AnyDesk
winget install -e --id Microsoft.Sysinternals.RDCMan
winget install -e --id MKVToolNix.MKVToolNix
winget install -e --id GuinpinSoft.MakeMKV
winget install -e --id GlenSawyer.MP3Gain
winget install -e --id Garmin.GarminExpress
winget install -e --id LIGHTNINGUK.ImgBurn
winget install -e --id Dell.CommandUpdate.Universal
winget install -e --id Logitech.UnifyingSoftware
winget install -e --id Gyan.FFmpeg
winget install -e --id yt-dlp.yt-dlp
# Essencial for multi-os / OneDrive synced projects
winget install -e --id direnv.direnv
Given that WSL is native accompanuing environment for development, it deserves probably same set of instrutions / applications as for Windows above.
For start, I am just leaving script which installs zsh instead of default bash shell:
- Copy
setup_zsh.shto WSL environment - Make it executable:
chmod +x setup_zsh.sh - Run it:
./setup_zsh.sh
Finally, adjust/check if your Windows Terminal profile for Ubuntu:
- Uses
FiraCode Nerd Font Monoas font for profile - Make sure that
Additional setting / Apearance / Builtin Glyphsis turned on
Last updated: 2026-02-19