My Windows setup

806 words ยท 4 minute read
Last updated: Oct 18, 2021 ยท Published: Oct 4, 2021

This document serves as my personal documentation on how my Windows machine is configured & which application I use. This is especially useful when setting up a new Windows machine from scratch (currently, I use Windows at work & macOS at home).

Prerequisites

Package manager - for Linux, there exists apt, for macOS, there exists Homebrew. Though there have been various package managers for Windows like Chocolateley & Scoop, none was “really” successful (in my optinion). Now, Microsoft is working on their own (Open Source!) command-line Windows package manager: https://docs.microsoft.com/en-us/windows/package-manager/ aka winget. It was pre-installed on my machine & try to use it as much as possible to install & update my applications ๐Ÿ˜Ž The package repository is Open Source on GitHub - see https://github.com/microsoft/winget-pkgs . Btw, https://winget.run is a very nice search engine for packages available via winget ๐Ÿ”Ž.

Applications

  • Firefox
  • Visual Studio Code
    • winget install --query "VS Code"
    • also: Remote Developer Tools (both WSL and SSH extensions)
  • Slack
  • Toggl (winget install -q "Toggl" --source winget)
  • IntelliJ PHPStorm & GoLand
    • winget install --query "PHPStorm" --source winget
    • winget install --query "GoLand" --source winget
    • Increase memory size to 4096MB for each
    • Install Bitbucket Linky Plugin for opening the relevant commits & PRs on Bitbucket directly via the IDE
    • Settings => Keymap => Assign “Git Annotate” command to “Ctrl+Shift+G” shortcut.
    • Settings => Version Control => Confirmation: Disable everything related to automatically adding changes to staging.
    • Settings => Code Style => Line separator: Unix and macOS (\n)
  • Windows Terminal
    • winget install --query "Windows Terminal" --source winget
    • Settings (Ctrl + ,)
      • After WSL2 is installed, set Windows Terminal standard profile to “Ubuntu” (or whatever the Linux distribution you have installed)
      • Set WSL2 starting directory to your Linux home folder, e.g. \\wsl$\Ubuntu\home\markus (by default, it will be the Windows home folder… ๐Ÿ™)
  • AutoHotKey
  • GreenShot
  • VirtualBox
  • Postman
  • KeePassXC
  • 1Password
    • winget install -e --id AgileBits.1Password
  • Cisco AnyConnect Secure Mobility Client
  • Git & adjust the .gitconfig via: git config --edit --global
  • WhatsApp & Telegram programs
  • https://github.com/Code52/carnac => to show the keys pressed (useful for remote video conferences or screencasts)
  • Install Docker (with WSL2 backend!)

Portable Apps

  • CamStudio: For screen recordings
  • GIMP: For occasional image editing
  • HandBrake: For converting videos into a smaller file
  • HeidiSQL: Nice GUI to manage SQL databases (including SQLite!)
  • IrfanView: Image viewer - occasionally useful, when working with many images & doing some batch image-resizing
  • pdfsam: For merging & splitting PDFs
  • VLC: For watching videos (supports more formats than the built-in video viewer)
  • WinDirStat: For viewing folder & file sizes and finding the largest ones.

Windows Config

  • Enable Bitlocker hard drive encryption (if not enabled already)
  • Enable authentication via fingerprint
  • Enable “View file endings” & “Show hidden elements”
  • Security: Enable “Sleep when closing the lid” & enable “lock on sleep”
  • Add AutoHotKey shortcut helpers (shortcut_helpers.ahk file in this folder) for “Map CapsLock to Escape” & “Make Ctrl+Shift+V work everywhere” & add to autostart (see https://www.markusdosch.com/2021/08/windows-adding-programs-to-autostart/)

WSL2

Assets

shortcut_helpers.ahk

; Maps CapsLock to Escape
CapsLock::Esc

; Makes Ctrl+Shift+V for "Paste without formatting" work everywhere (via https://www.howtogeek.com/186723/ask-htg-how-can-i-paste-text-without-the-formatting/)
#If !WinActive("ahk_exe Hyper.exe")
$^+v:: ; CTRL+SHIFT+V
ClipSaved := ClipboardAll ;save original clipboard contents
clipboard = %clipboard% ;remove formatting
Send ^v ;send the Ctrl+V command
Clipboard := ClipSaved ;restore the original clipboard contents
ClipSaved = ;clear the variable
Return