Step by step process of my windows setup
Step 1
Before you start the guide, make sure to download a copy of Windows 11 ISO. I would suggest downloading the ISO of last year, usually they are more polished from my personal experience. So for example, as of today the latest version of Windows 11 is 25H2, I would suggest downloading 24H2. In some rare cases the newer version might be more polished and have less bugs on release, in that case download the latest one. Do your research to find the most stable version.
After downloading the ISO, download my autounattend.xml. You can import this file in https://schneegans.de/windows/unattend-generator/ and inspect it to add or remove settings. I would always suggest creating an autounattend file because it will install an almost clean Windows without you having to manually uninstall bloatware and change settings.
Once you have both of these files, burn the ISO in a USB stick using Rufus. After the iso is installed in the USB stick, copy the autounattend.xml file and paste it in the root directory of the USB.
Restart your PC and boot into the USB to go through the windows setup. The process should be almost hands-free because of the unattend file.
Step 2
Initialization
Display
- Download GPU Display Drivers
- For NVIDIA GPU users:
- Download version 572.83 (most stable version for me)
- Debloat via NVCleanstall
- For NVIDIA GPU users:
- Set Display resolution and refresh rates
- Set color depth in NVIDIA Control Panel or AMD Radeon Software
Even after installing windows with the unattend file, the default settings of windows are a privacy nightmare.
Settings
- System
- Display
- Apply Color Profile
- Disable Automatically manage color for apps
- Disable HDR
- Sound
- Change Default sound devices
- Headphones
- Change Default format to highest quality
- Enable Audio Enhancements
- Disable Spatial Sound
- Microphone
- Disable Listen to device
- Default playback device
- Notifications
- Disable notifications
- Enable Do not Disturb
- Power
- Never turn off display
- Storage
- Disable storage sense
- Nearby Sharing: OFF
- Advanced
- Long Paths: ON
- Remote Desktop: OFF
- Terminal: Windows Terminal
- Developer Mode: ON
- Device Discovery: OFF
- Optional Features
- OpenSSH Client
- OpenSSH Server
- More Windows Features
- SMB Direct
- Virtual Machine Platform (Optional)
- Windows Sandbox (Optional)
- Display
- Network & Ethernet
- Private Network
- Apps
- Uninstall bloatware if there is any
- Accounts
- Make sure to use a local account
- Gaming
- Game Bar
- Allow controller to open Game bar: OFF
- Captures
- Disable captures
- Game mode: OFF
- Game Bar
- Privacy & Security
- Disable almost everything unless you need it
For some reasons, my PC used to drop connection at random times after I switched to gigabit internet. It usually happened when I am playing games or when I am in a voice call. Weird issue, never found the exact reason for it, however I fixed them by changing these settings after doing some research.
Device Manager
Go to Ethernet > Properties > Advanced and change the following settings
- Advanced EEE: Disabled
- ARP Offload: Enabled
- Auto Disable Gigabit: Disabled
- Energy-Efficient Ethernet: Disabled
- Flow Control: Rx & Tx Enabled
- Gigabit Lite: Enabled
- Green Ethernet: Enabled
- Interrupt Moderation: Enabled
- IPv4 Checksum Offload: Rx & Tx Enabled
- Power Saving Mode: Disabled
Downloads
-
Browsers
- Brave Browser (Make sure to debloat it, instructions below)
- Firefox (Make sure to debloat it)
-
Gaming
-
Connectivity
- Tailscale
- KDE Connect
-
Utilities
- 7zip
- DisplayCal
- VS Code
- MSI Afterburner
- Notepad++
- OnlyOffice
- OpenRGB
- qBittorrent
- Malwarebytes
- VLC Player
- Sysinternals Suite
- TreeSize
- Defender UI
- Revo Uninstaller OR Bulk Crap Uninstaller (BCU)
- NVCleanstall
-
Customization
- Nilesoft Shell
- Transclucent Taskbar
- Explorer Patcher
- Windhawk
- Rainmeter
- Oh My Posh
- Clink
- Fonts
- JetBrainsMono Nerd Font
- Iosevka
Network and Firewall
Device IP Address should be managed by PiHole, however in the case it is not set appropriately:
- Go to Control Panel > Network and Internet > Network and Sharing Center > Ethernet > Properties > IPv4
- set the device ip to
192.168.1.2xxNote For a list of IP and Ports in case of a network rest, refer to the handbook
Step 3
Setting up Utilities
- Use MSI Afterburner to undervolt GPU and make sure to launch in startup
- Change NVIDIA Control Panel settings according to updated guide
- Turn off game optimization in NVIDIA App
DisplayCal
The reason we will be using DisplayCal is because the default Windows Color Management program is not known to be reliable for handling color profiles. It glitches out especially when you switch to and from full screen mode, sometimes after a reboot it fails to load the color profile immediately. This is where DisplayCal comes in clutch, it makes sure the profile is always automatically loaded.
After installing and setting up DisplayCal, download the calibrated .icc or .icm profiles for your monitor. YouTubers like Techless and Monitor Unboxed usually provide calibrated profiles for popular monitors. Once you download the color profiles, right click on them and select Install Profile from the context menu.
Once you have everything ready, search for Color Management in windows search. On the top of the settings screen, it should show your monitors. Make sure to select the correct monitor. Once you select your monitor, click on the tickbox that says Use my settings for this device.
On the bottom left of the settings screen, you should see an Add... button, click on it and you should see a lot of color profiles, from here select the one you installed earlier. Once you add the profile, it should already be set as default. However, just to be safe, click on the profile again and click Set as Default Profile just to be safe.
After setting up the color profile in Windows Color Management, go to your system tray and right click the DisplayCal icon and click on Profile Associations. The icon should be there if you installed DisplayCal, Do not launch DisplayCal App unless you are using hardware to calibrate your monitor. DisplayCal should automatically select the profile for you, but double check if it is the correct profile. On the bottom left, click on Automatically fix profile associations
Shared Folders
Share the Following drives to the network
D:\GamesD:\MediaD:\ProgrammingD:\BACKUPS\Phone Backup\Samsung S25 ULTRAPATH Variables
Add the following directories to User Variables > PATHS
D:\Programming\PATH ScriptsD:\Programming\PATH Scripts\ViVeTool v0.3.4D:\Programming\Python\ThemeSwitcher\%USERPROFILE%\Downloads\OpenRGB Windows 64-bitCreate Tasks
Import the all the tasks from the tasks folder
Step 4
Debloat
Chris Titus Tool
Copy and paste this in PowerShell:
irm "https://christitus.com/win" | iex
From the TWEAKS tab
-
Remove Widgets
-
Set services to manual
-
Adobe Network Block
-
Brave Debloat
-
Disable Microsoft Copilot
-
Set Classic Right-Click Menu
-
Bing Search in Start Menu: OFF
-
Center Taskbar Items: OFF
-
Cross-Device Resume: OFF
-
Detailed BSoD: OFF
-
Disable Multiplane Overlay: ON
-
Modern Standby Fix: ON
-
Mouse Acceleration: OFF
-
Recommendations in Start Menu: OFF
-
Show File Extensions: ON
-
Show Hidden Files: ON
For PC, you may want to Add and Activate Ultimate Performance Profile
From the UPDATES tab, select Security Settings. This should delay feature updates by 1 year, and security updates by 1 week.
SysInternals: Autoruns
Go through all the tabs and make sure there are no hidden tasks or services running. Even though we set all services to manual from Chris Titus Tool, some services may be overlooked by it. You can double check the services, and tasks created by various apps.
Use this tool to help you with the next app, Task Scheduler
Task Scheduler
Many apps love to hide their automated scripts over here (Auto update, auto install etc). I personally turn off all auto update tasks created by Microsoft and other Browsers. Most of the services are generally safe to turn off, however it is best to do your own research.
Step 5
Customize Apps
Oh My Posh & Clink
Oh My Posh is needed to theme the terminal ui, Clink is used for suggestions and more advanced but helpful features.
Download Oh My Posh using the following command:
winget install JanDeDobbeleer.OhMyPosh --source winget
Download Clink using the following command:
winget install chrisant996.Clink
To locally download the themes for Oh My Posh, go to the release page, and download the themes.zip file.
Extract the themes.zip file in ~/Documents/OhMyPosh themes/
To change your theme for PowerShell, open PowerShell and type:
notepad $PROFILE
This will create a Profile for PowerShell in one of these locations
$HOME\Documents\Powershell\Microsoft.PowerShell_profile.ps1(For PowerShell 7)$HOME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1(For PowerShell 5.1)
Download your favorite theme for Oh My Posh and save it in Documents, and to apply it, enter the following in the PowerShell profile:
oh-my-posh init pwsh --config '$HOME/Documents/OhMyPosh themes/catppuccin_mocha.omp.json' | Invoke-Expression
Once altered, reload your profile for the changes to take effect:
. $PROFILE
For Command Prompt, enter the following in your terminal:
clink config prompt use oh-my-posh
clink set ohmyposh.theme "%USERPROFILE%\Documents\OhMyPosh themes\catppuccin_mocha.omp.json"
Restart your Command Prompt to see the difference.
Windows Terminal
You can either import the config from here, or have a fresh start. Here are some settings which I recommend to change:
- Launch Size: 120 x 30
- Center on launch
- Appearance
- JetBrainsMono Nerd Font Mono
- Font Size: 11
- Line height: 1.2
- Cell width: 0.6
- Background Opacity: 80%
- Window Padding: 30
- Profiles
- PowerShell
- Command line:
powershell.exe -nologo
- Command line:
- PowerShell
CMD.exe
Right click the title bar and then change the settings for the following
Default
- Font
- Size: 18
- Font: JetBrainsMono Nerd Font Mono
- Layout
- Screen Buffer Size
- Width: 127
- Height: 9001
- Wrap text output on resize
- Window Size
- Width: 127
- Height: 32
- Window Position
- Left: 696
- Top: 357
- Screen Buffer Size
Properties
- Font
- Size: 18
- Font: JetBrainsMono Nerd Font Mono
- Layout
- Screen Buffer Size
- Width: 127
- Height: 9001
- Wrap text output on resize
- Window Size
- Width: 127
- Height: 32
- Window Position
- Left: 696
- Top: 357
- Screen Buffer Size
- Colors
- Opacity: 97%
Nilesoft Shell
Just copy paste the config files
Transclucent Taskbar
Everything should be at default settings except Desktop > Acrylic Maximized window > Acrylic
Explorer Patcher
Import the config file, OR apply these main settings:
Taskbar
- Taskbar Style: Windows 11
- Search: Hidden
- Show Task View Button: OFF
File Explorer
- Disable the windows 11 context menu: OFF
- Use classic drive groupings in this PC: OFF
- Control Interface: Windows 10 Ribbon
Other
- Disable Rounded Corners: ON
Windhawk
Download the following extensions for windhawk
- Slick window arrangement
- Windows 11 notification center styler
- Windows 11 start menu slider
Go to Settings > Advanced Settings > More Advanced Settings
In the Process inclusion list enter dwm.exe
Save and Restart Windhawk
Slick window arrangement
- Slick windows distance: 25
Windows 11 notification center styler
- Theme: Matter
Windows 11 start menu styler
- Theme: Windows11_Metro10Minimal
- Disable the new start menu layout: ON
- Control styles
- Target:
Border#AcrylicBorderStyles:Background:=<AcrylicBrush TintOpacity="0" TintColor="Black" TintLuminosityOpacity="0.6" Opacity="1" FallbackColor="#101010"/> - Target:
Border#AppBorderStyles:Background:=<AcrylicBrush TintOpacity="0" TintColor="Black" TintLuminosityOpacity="0.6" Opacity="1" FallbackColor="#101010"/>
- Target:
VS Code
Download the following extensions before setting the configs
- Python Preview (Discontinued, Download from shared folder)
- AREPL for Python
- C/C++
- C/C++ Extension Pack
- Catppuccin for VSCode
- clangd
- CMake Tools
- Code Runner
- Debug Visualizer
- Doxygen Documentation Generator
- Gemini Code Assist
- Github Copilot Chat
- Gruvbox Theme
- Hex Editor
- json
- Jupyter
- Jupyter Cell Tags
- Jupyter Keymap
- Jupyter Notebook Renderers
- Jupyter Slide Show
- Language Support for Java(TM) by Red Hat
- Live Sass Compiler
- Live Server
- Markdown Preview Enhanced
- Markdownlint
- Material Icon Theme
- Open in Github, Bitbucket, Gitlab
- Project Tree
- Pylance
- Python
- Python debugger
- Python Environments
- Remote - SSH
- Remote - SSH: Editing Configuration Files
- Ruff
- vscode-pdf
- YAML
Configuration for VS Code
Text Editor
- Bracket Pairs Horizontal: true
- Line Height: 1.6
- Semantic Highlighting Enabled: true
- Smooth Scrolling: ON
- Word Wrap: ON
- Cursor Blinking: Smooth
- Cursor Smooth Caret Animation: ON
- Font Family: JetBrains Mono Nerd Font
- Font Size: 14
- Auto Save: After Delay
Workbench
- Smooth Scrolling: ON
- Workbench Color theme: Catppuccin Mocha
- Icon Theme: Material Icon Theme
- Empty Hint: hidden
Features
- Explorer Kind: Integrated
- Integrated > Font Ligatures Enabled: ON
- Integrated Mouse wheel zoom: ON
- Integrated Smooth Scrolling: ON
C/C++
- C_Cpp Intelli Sense Engine: Disabled
Clangd
- Clangd Arguments:
--inlay-hints=true
- Clangd PATH:
ENTER PATH OF CLANGD.exe
Git
- Open Repository in Parent Folders: Never
Live Server
- Do not verify tags: ON
Python
- Python > Analysis > Inlay hints: Call Argument Names: ON
- Python > Analysis > Inlay hints: Variable Types: ON
- Python > Analysis: Type Checking Mode: OFF
- Language Server: Pylance
- Python-envs > Terminal: Auto Activation Type: shellStartup