/windows

Windows 10 Configuration & Tweaks

Primary LanguagePowerShell

Windows

Installation and configuration instructions for Windows 10 (Version 1903).

Preparations

Download the latest Windows 10 image and create the installation media using Rufus.

Create the file \sources\ei.cfg on the installation media.

[EditionID]
Professional
[Channel]
Retail
[VL]
0

Create the file \sources\pid.txt on the installation media.

[PID]
Value={windows key}

Copy this repo and the latest graphics drivers installer to the installation media.

Set the BIOS date and time to the current local time.

Keep the system disconnected from the network.

Installation

Boot the installation media.

Language to install: English (United States)
Time and currency format: {Current Time Zone Country}
Keyboard or input method: {Current Hardware Keyboard}

Choose a single word username starting with a capital letter to keep the %UserProfile% path consistent and free from spaces.

Setup

Modify the setup/system.ps1 script and execute it using the "Run with PowerShell" context menu.

Universal Apps

List remaining apps.

Get-AppxPackage | Select Name,PackageFullName | Sort Name

Uninstall unwanted apps.

Get-AppxPackage "Microsoft.3DBuilder" | Remove-AppxPackage

Uninstall unwanted optional features.

Settings > Apps > Manage optional features
- Microsoft Quick Assist
- Windows Hello Face

Clean up the Start Menu.

Group Policies

Configure group policies.

gpedit.msc > Computer Configuration > Administrative Templates > Windows Components

Speech
+ Allow Automatic Update of Speech Data: Disabled

Windows Defender Antivirus
+ Turn off Windows Defender Antivirus: Enabled

Windows Defender Antivirus > MAPS
+ Join Microsoft MAPS: Disabled

Windows Defender Antivirus > Network Inspection System
+ Turn on definition retirement: Disabled
+ Turn on protocol recognition: Disabled

Windows Defender Antivirus > Real-time Protection
+ Turn off real-time protection: Enabled

Drivers & Updates

Disable automatic driver application installation.

Start > "Change device installation settings"
◉ No (your device might not work as expected)
  1. Reboot the system.
  2. Connect to the Internet.
  3. Install Windows updates.

Settings

Settings that have yet to be incorporated into the setup/system.ps1 script.

System

Notifications & actions
+ Edit your quick actions
  ☑ All settings
  ☑ Network
  ☑ Night light
  ☑ Screen snip
+ Get notifications from these senders
  ☐ Focus assist (via Search)

Devices

Typing
+ Spelling
  ☐ Autocorrect misspelled words
+ Typing
  ☐ Add a period after I double-tap the Spacebar

Pen & Windows Ink
+ Windows Ink Workspace
  ☐ Show recommended app suggestions

AutoPlay
+ Choose AutoPlay defaults
  Removable drive: Open folder to view files (File Explorer)
  Memory card: Open folder to view files (File Explorer)

Network & Internet

Proxy
+ Automatic proxy setup
  ☐ Automatically detect settings

Personalization

Colors
+ Choose your color
  Windows colors: Navy blue
Start
+ Start
  ☐ Show app list in Start menu

Time & Language

Region > Additional date, time, & regional settings > Change date, time, or number formats
+ Formats > Additional settings...
  + Numbers
    Decimal symbol: .
    Digit grouping symbol: ␣
    Measurement system: Metric
  + Currency
    Decimal symbol: .
    Digit grouping symbol: ␣
  + Time
    Short time: HH:mm
    Long time: HH:mm:ss
  + Date
    Short date: yyyy-MM-dd
    Long date: ddd, d MMMM yyyy
    First day of week: Monday
+ Administrative > Copy settings...
  ☑ Welcome screen and system accounts
  ☑ New user accounts

Ease of Access

Narrator
+ Use Narrator
  ☐ Turn on narrator
  ☐ Allow the shortcut key to start Narrator
Keyboard
+ Use your device without a physical keyboard
  ☐ Use the On-Screen Keyboard
+ Use Sticky Keys
  ☐ Allow the shortcut key to start Sticky Keys
+ Use Toggle Keys
  ☐ Allow the shortcut key to start Toggle Keys
+ Use Filter Keys
  ☐ Allow the shortcut key to start Filter Keys

Privacy

General
+ Change privacy options
  ☐ Let apps use advertising ID to make ads more interesting …
  ☑ Let websites provide locally relevant content by accessing my language list
  ☐ Let Windows track app launches to improve Start and search results
  ☐ Show me suggested content in the Settings app

Windows Libraries

Move unwanted Windows libraries.

  1. Right click on %UserProfile%\Pictures\Camera Roll and select Properties.
    Select the Location tab and change the path to %AppData%\Pictures\Camera Roll.
  2. Right click on %UserProfile%\Pictures\Saved Pictures and select Properties.
    Select the Location tab and change the path to %AppData%\Pictures\Saved Pictures.

Indexing Options

Configure Indexing Options to only track the "Start Menu" and rebuild the index.

Firewall

Disable all rules in Windows Firewall except the following entries.

wf.msc
+ Inbound Rules
  Connect
  Core Networking - …
  Delivery Optimization (…)
  Hyper-V …
  Network Discovery (…)
+ Outbound Rules
  Connect
  Core Networking - …
  Hyper-V …
  Network Discovery (…)

Enable inbound rules for File and Printer Sharing (Echo Request …). Modify Private,Public rules for inbound and outbound IPv4 and IPv6 Echo Requests and select "Any IP address" under Remote IP address in the Scope tab.

Keymap

  1. Install res/keymap.zip to input German characters on a U.S. keyboard.
  2. Configure Windows language preferences.
  3. Reboot the system.

Microsoft Software

Configure Microsoft Edge.

Settings
+ General
  Open Microsoft Edge with: A specific page or pages
    about:blank
  Open new tabs with: A blank page
  Show the favorites bar: Off
  Show the home button: Off
  Show sites I frequently visit in "Top sites": Off
  Show definitions inline for: Off
  Ask me what to do with each download: Off
+ Privacy & security
  Show search and site suggestions as I type: Off
  Show search history: Off
  Use page prediction: Off
+ Passwords & autofill
  Save form data: Off

Configure Internet Explorer.

Internet options
+ General
  Home page: about:blank
  Startup: Start with tabs from the last session
+ General > Tabs
  When a new tab is opened, open: A blank page

Fonts

Install useful fonts.

Applications

Install third party software.

Install Git with specific settings.

Select Destination Location
  C:\Program Files\Git

Select Components
  ☐ Windows Explorer integration
  ☑ Git LFS (Large File Support)
  ☐ Associate .git* configuration files with the default text editor
  ☐ Associate .sh files to be run with Bash

Select Start Menu Folder
  ☑ Don't create a Start Menu folder

Choosing the default editor used by Git
  [Select other editor as Git's default editor]
  Location of editor: C:\Program Files (x86)\Vim\vim81\gvim.exe
  [Test Custom Editor]

Adjusting your PATH environment
  ◉ Use Git from Git Bash only

Choosing the SSH executable
  ◉ Use OpenSSH

Choosing HTTPS transport backend
  ◉ Use the OpenSSL library

Configuring the line ending conversions
  ◉ Checkout as-is, commit as-is

Configuring the terminal emulator to use with Git Bash
  ◉ Use Windows' default console window

Configuring file system caching
  ☑ Enable file system caching
  ☑ Enable Git Credential Manager
  ☑ Enable symbolic links

Add %ProgramFiles%\Git\cmd to Path.

Install gVim and create a config directory.

git clone https://github.com/qis/vim %UserProfile%\vimfiles

Windows Subsystem for Linux

Install a WSL distro from https://aka.ms/wslstore, launch it and download config files.

curl -L https://raw.githubusercontent.com/qis/windows/master/wsl/.bashrc -o .bashrc
curl -L https://raw.githubusercontent.com/qis/windows/master/wsl/.profile -o .profile
curl -L https://raw.githubusercontent.com/qis/windows/master/wsl/.tmux.conf -o .tmux.conf
rm -f .bash_history .bash_logout
touch .viminfo

Configure sudo(8) with sudo EDITOR=vim visudo.

# Locale settings.
Defaults env_keep += "LANG LANGUAGE LINGUAS LC_* _XKB_CHARSET"

# Profile settings.
Defaults env_keep += "MM_CHARSET EDITOR PAGER CLICOLOR LSCOLORS TMUX SESSION"

# User privilege specification.
root  ALL=(ALL) ALL
%sudo ALL=(ALL) NOPASSWD: ALL

# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d

Create /etc/wsl.conf.

[automount]
enabled=true
options=case=off,metadata,uid=1000,gid=1000,umask=022

Add the following line to /etc/mdadm/mdadm.conf (fixes some apt warnings).

# definitions of existing MD arrays
ARRAY <ignore> devices=/dev/sda

Modify the following lines in /etc/pam.d/login and /etc/pam.d/sshd (disables message of the day).

#session    optional    pam_motd.so motd=/run/motd.dynamic
#session    optional    pam_motd.so noupdate

Execute chmod -x /etc/update-motd.d/*{-help-text,-motd-news} to reduce spam.

IMPORTANT: Completely restart bash.exe to apply /etc/wsl.conf settings.

Create Windows symlinks.

mkdir -p ~/.config
ln -s /mnt/c/Users/Qis/.gitconfig ~/.gitconfig
ln -s /mnt/c/Users/Qis/vimfiles ~/.config/nvim
ln -s /mnt/c/Users/Qis/vimfiles ~/.vim
ln -s /mnt/c/Users/Qis/Documents ~/documents
ln -s /mnt/c/Users/Qis/Downloads ~/downloads
ln -s /mnt/c/Workspace ~/workspace
mkdir -p ~/.ssh; chmod 0700 ~/.ssh
for i in config id_rsa id_rsa.pub known_hosts; do
  ln -s /mnt/c/Users/Qis/.ssh/$i ~/.ssh/$i
done
chmod 0600 /mnt/c/Users/Qis/.ssh/* ~/.ssh/*
sudo mkdir -p /root/.config
sudo ln -s /mnt/c/Users/Qis/vimfiles /root/.config/nvim
sudo ln -s /mnt/c/Users/Qis/vimfiles /root/.vim

Install packages.

sudo apt update
sudo apt upgrade
sudo apt dist-upgrade
sudo apt autoremove
sudo apt install p7zip p7zip-rar zip unzip tree pwgen python-minimal pv
sudo apt install imagemagick pngcrush webp
sudo apt install apache2-utils

Install youtube-dl.

sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl
sudo chmod 0755 /usr/local/bin/youtube-dl

Install WSLtty for better terminal support.

Install an international locale.

sudo curl -L https://raw.githubusercontent.com/qis/windows/master/wsl/en_XX -o /usr/share/i18n/locales/en_XX
sudo tee -a /etc/locale.gen <<EOF
en_XX.UTF-8 UTF-8
EOF
sudo locale-gen

Development

Follow the development guide to set up a developer workstation.

Start Menu

Start Menu