Skip to content

Instantly share code, notes, and snippets.

@ugudango
Last active November 12, 2024 10:38
Show Gist options
  • Save ugudango/4f8154847de32d3eac413c51caa281c6 to your computer and use it in GitHub Desktop.
Save ugudango/4f8154847de32d3eac413c51caa281c6 to your computer and use it in GitHub Desktop.

Windows Development Setup

I love Linux. But the NVIDIA drivers are broken on Wayland (again), and I need to work to be able to pay my rent.

So let's dive deep into this, by configuring this nice operating system that's pinning TikTok and Candy Crush Saga to my start menu.

Commands are ran in PowerShell.

Let's winget some basic stuff

You can install packages with:

winget install

Example:

winget install Inkscape.Inkscape

Minimal requirements:

  • πŸ€– AutoHotkey.AutoHotkey
  • 🌳 Git.Git

Browsers:

  • 🦊 Mozilla.Firefox.DeveloperEdition
  • πŸ₯½ Google.Chrome.EXE
  • 🫦 Microsoft.Edge
    • 🌐 Microsoft.EdgeWebView2Runtime

Microsoft developer tools:

  • 🏠 Microsoft.DevHome
  • ⌨️ Microsoft.WindowsTerminal
  • πŸ§‘β€πŸ’» Microsoft.VisualStudioCode
  • πŸ™ GitHub.GitHubDesktop.Beta
    • πŸ™ GitHub.cli
  • πŸ”¨ JetBrains.Toolbox

NVIDIA:

  • πŸ‘οΈ Nvidia.GeForceExperience
  • 🎳 Nvidia.PhysX

Lenovo:

  • πŸ› οΈ BartoszCichecki.LenovoLegionToolkit
  • πŸ”ƒ Lenovo.SystemUpdate

Others:

  • βœ’οΈ Inkscape.Inkscape
  • 🐢 GIMP.GIMP
  • πŸ’¬ SlackTechnologies.Slack
  • 🎧 Discord.Discord
  • 🍊 Canonical.Ubuntu.2204
  • πŸ“ Notion.Notion

Getting a bit weird here:

  • 🐧 TuxGuitar.TuxGuitar

🍨 Scoop

Scoop contains some packages you might want, which are not yet on winget. It's also a bit more mature.

Warning

The scoop setup might change in time. I only copied the commands here for convenience.

Install scoop with:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression

βœ… Windows Features

πŸ“ File Explorer

Search for File Explorer Options in your start menu.

Once there, access the View panel. In the Advanced Settings list, enable the following:

  • β˜‘οΈ Show hidden files, folders and drives

And disable the following:

  • βœ–οΈ Hide extensions for known file types

These are the settings I always use. Explore the list further to configure things to your personal preferences.

πŸ«› Virtualization

Search for Turn Windows features on or off in your start menu.

Turn these options on:

  • β˜‘οΈ Virtual Machine Platform
  • β˜‘οΈ Windows Hypervisor Platform
  • β˜‘οΈ Windows Subsystem for Linux

Reboot.

πŸͺŸ Microsoft Store

Search and install the following:

For HDR displays:

If you've got a Lenovo device, you'll have to install their awful bloatware for updates.

Note

This might not be 100% correct. Both with NVIDIA and Lenovo, it's possible to install just the drivers, without the awful software that comes with it. This was just more convenient for me at the time.

🧩 Usable tiling window manager experience

Note

This guide previously refered to FancyWM. Coming from a more conservative background in tiling window managers, I did a lot of hacking to configure FancyWM to my liking.

I have since found out about Komorebi, which requires much less configuration, and also seems to work better with fullscreen applications.

Komorebi is really good, but it's even better when you disable some windows "features".

Disable conflicting Windows & PowerToys features

Since we're already tiling our windows with Komorebi, you can disable FancyZones.

From Windows Settings, turn System > Multitasking > Snap Windows off.

Disable virtual desktop animation

Warning

In past versions of Windows you could disable animations using ViVe Tools. Every update seems to change feature IDs, so it's best not to go this route, at least for this guide.

If you still want to tinker with ViVe Tools, you could install PeterStrick.ViVeTool-GUI with winget to better inspect these IDs.

Note

Alternatively, check out this repo, apparently they can disable the animation by using AutoHotKey.

Windows animations are very laggy, even on my high-end machine. I just disabled them altogether.

Set Accessibility > Visual Effects > Animation Effects to off.

πŸ“‹ Clipboard Manager

Go to System > Clipboard > Clipboard History and turn it on.

🐧 WSL

You might think that installing & using WSL is a good idea. After years of using it, I can only say that it brings pain and suffering.

The only reason I use it nowadays is to run podman, but even then I do not need to set it up for myself. The podman installer does that for me.

With this in mind, feel free to skip this section.

If you still want to proceed, it means that you desperately need those Linux syscalls. Or you're developing some server software. Either way, you probably know what you're doing.

I won't be going into details, but I usually install Arch. Here are the steps:

  • Install Arch from here
  • Install yay (once inside the Arch WSL) from here
  • Install polkit by typing yay polkit. This is necessary for systemctl to work on a user level.
  • Configure the SSH agent. Since you've gotten this far, I assume you can read the wiki.

πŸ‹ Docker (Podman)

Docker for Windows has gotten shady these past years. I've used the RedHat alternative, Podman, for some years now. It does everything I need it to do, and with less overhead.

winget install RedHat.Podman

They even have a Desktop UI.

winget install RedHat.Podman-Desktop

⭐ Proto

Proto is, as the website suggests:

A version manager for all your favorite languages and tools. A unified toolchain.

This is what I use to install compilers & toolchains, such as Rust, Python, Node, Deno, pnpm, dotnet, CMake etc.

It doesn't support everything, but it supports a lot of popular things.

You can use it to configure global versions, but it works really well when you have multiple versions in place. This section describes this feature best.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment