18 Nov 2023 • 2023 Windows post-install checklist

This is a guide on how to set up Windows to not be annoying. You should set aside a few hours to go through everything. Most steps, but not all, are detailed enough that you can autopilot your way through it.

Initial setup and disabling security features

  1. Install the correct version. You want Windows 10 IoT Enterprise LTSC 21h1, which is pretty stripped down out of the box and doesn't get feature updates. 21h1 is more or less a strict downgrade from 1909 because you can't disable Windows Defender which tanks perf hard. You can't install Visual Studio on LTSC 1909 anymore and none of the solutions for installing on older versions of Windows actually work, so 21h1 it is.
  2. In the installer, do domain join instead of creating a web account. Say no to all the location/telemetry garbage.
  3. Click the start button, Settings, Update & Security, Windows Update, Check for updates. Don't reboot yet.
  4. Start, Edge, download another browser, e.g. Vivaldi.
  5. Install Search Everything. Sort by descending run count, and close window on execute. Right click on things and set run count to seed them to appear at the top.
  6. Install AutoHotKey. Put a shortcut to your AHK script in %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup. See below for an example.
  7. Install video drivers. If you have an NVIDIA GPU, use NVCleanstall because it's easier and lets you skip GeForce Experience, unlike the official installer. If you used the official installer you can just uninstall it afterwards anyway.
  8. Open Control Panel (search for it in the start menu or Control Panel.lnk/control.exe in Everything):
  9. Open settings, Update and Security, Windows Security, Virus & threat protection, Virus & threat protection settings, Manage settings, disable everything, including tamper protection.
  10. gpedit.msc, Computer Configuration, Administrative Templates, System, Power Management, Sleep settings, Require a Password when the computer wakes, Disabled.
  11. secpol.msc, Local Policies, Security Options, UAC: Run all administrators in Admin Approval Mode, Disabled.
  12. devmgmt.msc, Mice and other pointing devices, [your mouse], Power Management, uncheck Allow this device to wake the computer. This stops moving the mouse from waking your PC from hibernate.
  13. Ctrl+alt+del, More details, Startup, disable Windows Security notification icon and Microsoft Edge.
  14. Download the Sysinternals Suite to use in a moment.
  15. Reboot into safe mode: Ctrl+Escape to open the start menu, power, shift click reboot, in the startup menu go Troubleshoot, Advanced Options, Startup Settings, Restart. Then select safe mode when it comes up again. If that doesn't work, Start your PC in safe mode in Windows.
  16. Run autoruns from the Sysinternals Suite you just downloaded. Uncheck the Hide Microsoft/Windows entries "checkboxes" in the top bar, then disable the following:
  17. Reboot back to normal mode.

Disable everything else

  1. Make a documents folder somewhere that isn't My Documents. Too much software uses it as a dumping grounds so it's not really usable for its intended purpose nowadays. I used C:\Users\mike\Mike and psubst that to X:\, some people use stuff like C:\Docs.
  2. Win+E, View, Options, View. Check Show hidden files, folders and drives. Uncheck Hide empty drives. Uncheck Hide extensions for known file types. Uncheck Hide protected operating system files. Go down to Naviation pane, check Expand to open folder.
  3. Right click the desktop, Personalize, go through all of it including all the links. In particular:
  4. Right click the taskbar, Search, Hidden. Uncheck Show Task View button.
  5. Control Panel (control.exe):
  6. Install the MarkC mouse acceleration fix.
  7. Open Settings:
  8. Open PowerShell and set some registry keys:

WSL

  1. Install WSLtty. It is the only reasonable terminal emulator on Windows. I have tried them all, everything else suffers from at least one of:If you pin it to the taskbar, right click the icon > right click WSL Terminal > Properties, set the icon to C:\Windows\System32\cmd.exe.
  2. Install AlpineWSL. It has pretty comprehensive repos and comes with the least garbage (5MB!). Actually NixOS is the only Linux distro that won't irreparably self destruct under normal use and you should use that, but I haven't figured it out on WSL yet.
  3. Run apk update; apk add openssh; ssh-keygen -t ed25519; ssh-keygen -f /etc/ssh/ssh_host_ed25519_key -t ed25519. Disable PasswordAuthentication in /etc/ssh/sshd_config. Set up authorized_keys. Create sshd.vbs somewhere:
    WScript.CreateObject( "shell.application" ).ShellExecute "WSL", "/usr/sbin/sshd", "", "open", 0
    
    and copy a shortcut to %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup.
  4. apk add bind-tools coreutils ctags curl fish fzf git grep htop less man man-pages mdocml-apropos p7zip the_silver_searcher tig tmux tree vim whois

Software I like

  1. 7-Zip. Go into settings and associate it with everything that isn't zip. Disable all the junk context menu items.
  2. Create halt.bat somewhere containing shutdown /s /t 0. Create reboot.bat containing shutdown /r /t 0. Create hibernate.bat containing shutdown /h. Use Everything to run these.
  3. Search Everything. Sort by descending run count, and close window on execute. Right click on things and set run count to seed them to appear at the top. halt.bat, reboot.bat, Control Panel.lnk, Snipping Tool.lnk, vivaldi.exe, etc.
  4. Start Killer. Use Everything as a launcher instead.
  5. AltBacktick.
  6. Windows Auto Dark Mode.
  7. Clink.
  8. Dina font.
  9. Download psubst. psubst X: C:\Users\mike\Mike /P.
  10. Sumatra PDF.
  11. Syncthing.
  12. Obsidian.
  13. Shairport4w. Airplay to your PC.
  14. Apple Music for Windows 10. You need to modify setup.bat a bit to not kill any processes or install any dependencies and just install Apple Music. Maybe also install it to Program Files and not Documents.
  15. mpv. Put yt-dlp.exe in the same folder. Put sponsorblock_minimal.lua in mpv/scripts. Periodically run yt-dlp -U.
  16. ShareX. 21h1 LTSC nukes Win+Shift+S, you can point AutoHotKey at ShareX to do the same thing (see below).

Dev tools

  1. Visual Studio 2022. Install C++ build tools, Windows 11 SDK, and HLSL tools. JIT debugging is quite broken in VS22 so just use RemedyBG.
  2. RemedyBG. See this Github issue to register it as a JIT debugger.
  3. Install Microsoft Store. Install WinDBG preview.
  4. Git.
  5. CMake, sadly.
  6. NSIS.
  7. Intel Architecture Code Analyzer.
  8. Vulkan SDK.
  9. Renderdoc.
  10. Nsight Graphics.
  11. Blender.
  12. Zeal. Make a hotkey in your text editor to open dash://[selected text].
  13. Path Editor. Add VS compiler stuff (cl.exe, MSBuild.exe, rc.exe, use Everything to find where they are), IACA, and NSIS to path.
  14. Control Panel, System and Security, System, Advanced system settings, Environment Variables. Point INCLUDE and LIB at VS and the Windows SDK. I have:
    INCLUDE:LIB:This and the previous step are what vcvarsall.bat is supposed to do for you, except vcvarsall is extremely slow for no reason and this isn't.

startup.ahk

This script maps capslock to escape, adds some hotkeys for launching/closing programs, and doesn't open the start menu when you press the windows key.

InstallKeybdHook
#SingleInstance Force

SetCapsLockState( "Off" )
SetCapsLockState( "AlwaysOff" )
CapsLock::Escape

#e::Run( "X:\" )
#p::Run( "C:\Program Files\Everything\Everything.exe" )
#Enter::Run( "wt.exe" )
#x::WinClose( "A" )
#space::return

~LWin::Send( "{Blind}{vkE8}" )

#+s::Send( "^{PrintScreen}" ) ; then bind Ctrl+PrintScreen to "Capture region" in ShareX

#m:: { ; run "mpv.exe {clipboard}"
    Run( Format( '"C:\Program Files\mpv\mpv.exe" "{1}" "--window-maximized"', A_Clipboard ) )
    Tooltip( "mpv " . A_Clipboard )
    SetTimer( ToolTip, -1000 )
}