My OS setup

1127 words · 6 minute read
Last updated: Jan 29, 2023 · Published: Oct 4, 2021

macOS

  • Alfred (Spotlight alternative. Has some cool features like triggering “Lock” & “Restart” directly from the tool)
  • Magnet (https://magnet.crowdcafe.com) for Window snapping (both with shortcuts as well as moving windows to the edges)
  • homebrew (for installing tools. Both CLI tools as well as GUI tools. Use https://brew.sh for searching the tools)
  • Contexts (for switching windows via Command+Tab. Advice: I would disable the sidebar that comes with the tool)
  • iTerm2 (better Terminal)
  • KeepassXC
  • fish shell (see my blog post on how I customized it)
  • VS Code
  • Sublime Text 4
  • Safari & Firefox & Chrome
  • Toggl
  • WhatsApp & Telegram programs
  • KeepingYouAwake (to disable sleep for some periods of time)
    • You can also use the built-in command line tool caffeinate, e.g. with caffeinate -u to declare that the user is active as long as the command is running. Read man caffeinate for detailed settings. KeepingYouAwake is actually just a small wrapper around this built-in tool :D
  • Postman (for testing API requests)

Apps I want to try out

  • Soulver, a mixture of an text editor & calculator. Costs $34.95 (single purchase, non-recurring)
  • ImageOptim to optimize image file sizes
  • rcmd (6.99€, single purchase, non-recurring) offers an interesting concept for switching apps: Just press the right command button & a letter, and you switch instantly to an app that starts with said letter. Contexts has a similar feature - “Fast Search” - that can also be bound to the right command. I am currently trying it out, but to be honest, I forget about the shortcut too often, so I’m not really using it yet…

Tools I used to use

  • Cisco AnyConnect Secure Mobility Client
  • Rancher Desktop (for Docker)
  • Sequel Ace (for browsing databases)
  • Tunnelblick (for connecting to OpenVPN VPNs)
  • Slack

2022-11-25 ARCHIVED (I don’t use Windows on a day-to-day basis anymore)

Windows

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 (I use Windows in my current role 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