{"id":18257817,"url":"https://github.com/pickleboxer/windows-dev-environment-setup","last_synced_at":"2025-08-01T18:09:30.824Z","repository":{"id":182993077,"uuid":"669423094","full_name":"PickleBoxer/windows-dev-environment-setup","owner":"PickleBoxer","description":"🖥️💻🚀 A step-by-step guide to set up development environment on Windows, including WSL, Terminal, Git, Docker, Visual Studio Code Insider...","archived":false,"fork":false,"pushed_at":"2025-01-28T09:09:34.000Z","size":5041,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-14T17:57:28.217Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PickleBoxer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-07-22T08:21:00.000Z","updated_at":"2025-01-28T09:09:37.000Z","dependencies_parsed_at":"2024-10-17T01:10:30.620Z","dependency_job_id":"f24a30a1-a291-4330-ba1e-a4634ac8de29","html_url":"https://github.com/PickleBoxer/windows-dev-environment-setup","commit_stats":null,"previous_names":["pickleboxer/windows-dev-environment-setup"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PickleBoxer%2Fwindows-dev-environment-setup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PickleBoxer%2Fwindows-dev-environment-setup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PickleBoxer%2Fwindows-dev-environment-setup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PickleBoxer%2Fwindows-dev-environment-setup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PickleBoxer","download_url":"https://codeload.github.com/PickleBoxer/windows-dev-environment-setup/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247941720,"owners_count":21022037,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-05T10:27:48.418Z","updated_at":"2025-04-08T22:46:35.845Z","avatar_url":"https://github.com/PickleBoxer.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"wsl-icon\" src=\"https://github.com/PickleBoxer/windows-dev-environment-setup/assets/78869247/78610f7d-11d0-415d-a991-7346fc1c1723\"\u003e\n\u003c/p\u003e\n\n# Windows dev environment setup\n\n## 🚀 Overview\n\nSetting up a development environment on Windows can be a challenging task, but with the right tools and guidance, it can be made easier. This guide will provide step-by-step instructions for setting up a development environment on Windows, including installing WSL, Terminal, Git, and Visual Studio Code Insider.\n\n## Prerequisites:\n\nBefore beginning the setup process, ensure that your system meets the following requirements:\n\n- Windows 10 version 1903 or higher\n- Administrator access to your machine\n- An internet connection\n\n---\n\n# 🐧 WSL: The Heart of Your Windows Dev Environment\n\nTo set up your Windows development environment, the first and most vital step is installing the Windows Subsystem for Linux (WSL). 🚀\n## 💻 Installing WSL 2: A Breeze\n\nWSL 2 is the latest version, featuring a full Linux kernel and complete system call compatibility. No longer requiring multiple steps, all you need to do is execute this single command in PowerShell or Command Prompt:\n\n```sh\nwsl --install\n```\n\nThis command accomplishes the following:\n\n- Enables the optional WSL and Virtual Machine Platform components\n- Downloads and installs the latest Linux kernel\n- Sets WSL 2 as the default\n- Downloads and installs the Ubuntu Linux distribution (a reboot may be required)\n\nShould you wish to change your default Linux distribution, follow the provided [documentation](https://docs.microsoft.com/en-us/windows/wsl/install#change-the-default-Linux-distribution-installed). 📚\n\nWith WSL at your disposal, the Windows development landscape becomes yours to conquer! 💪🌟\n\n**Installing WSL through the store will allow you to get the latest WSL updates and features faster, and without needing to modify your Windows version.**\n\n[![WSL](img/getitfrom.png)](https://www.microsoft.com/store/productId/9P9TQF7MRM4R)\n\n## 🔧 **Setting Up Linux User \u0026 Password:**\n\n🔒 After installing your Linux distribution with WSL, launch it from the Start menu. You'll create a unique User Name and Password during the initial run.\n\n💡 These credentials are specific to each Linux distribution and don't relate to your Windows user.\n\n⚠️ Password entry is blind typing, normal behavior, nothing will show on the screen.\n\n👤 Your account becomes the default user and auto-signs in on launch.\n\n📝 Each WSL distribution has its own set of user accounts. Configuring a new account is necessary when adding, reinstalling, or resetting.\n\n\u003e [!TIP]\n\u003e You can configure WSL to not require a password for sudo.\n\u003e Replace `MY_USERNAME` below with your actual username:\n\u003e ```sh\n\u003e sudo nano /etc/sudoers.d/MY_USERNAME\n\u003e ```\n\u003e Add the following line:\n\u003e ```sh\n\u003e MY_USERNAME ALL=(ALL) NOPASSWD:ALL\n\u003e ```\n\n## 📦 **Update \u0026 Upgrade Packages:**\n\nTo keep your system shipshape, regularly update and upgrade packages with your distribution's preferred package manager. For Ubuntu or Debian, execute:\n\n```bash\nsudo apt update \u0026\u0026 sudo apt upgrade\n```\n\n⚙️ Windows won't auto-update or upgrade your Linux distribution(s). Linux users typically prefer controlling this task themselves.\n\n## Restarting WSL\n\nIf WSL stops working, you can restart it with these two commands from PowerShell/Command Prompt:\n\n```sh\nwsl.exe --shutdown\nwsl.exe\n```\n\n## 🐘 Installing PHP \u0026 Composer\n\nTo build and manage your PHP projects efficiently, you'll need to install PHP and Composer on your WSL environment.\n\n### 📥 **Installing PHP:**\n\n1. **Install PHP:**\n\n    ```bash\n    # Install the php latest stable\n    sudo apt install php -y\n\n    # Check if success with\n    php -v\n    ```\n\n    🎉 Now, you have PHP installed! Verify the installation with:\n\n    ```bash\n     # Check if success with\n    php -v\n    ```\n\n### 📦 **Installing Composer:**\n\nComposer is a dependency manager for PHP, which makes managing your project dependencies a breeze.\nYou can also follow this [link](https://getcomposer.org/download/) for actual installation.\n\n1. **Command-line installation:**\n\n    ```bash\n    php -r \"copy('https://getcomposer.org/installer', 'composer-setup.php');\"\n    php -r \"if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;\"\n    php composer-setup.php\n    php -r \"unlink('composer-setup.php');\"\n    ```\n\n2. **Move Composer to a global location:**\n\n    ```bash\n    sudo mv composer.phar /usr/local/bin/composer\n    ```\n\n    🎉 Composer is now installed! Verify the installation with:\n\n    ```bash\n    composer --version\n    ```\n\n\u003e [!TIP]\n\u003e You do not need to install PHP or Composer locally. You can use Docker as an example:\n\u003e ```sh\n\u003e docker run -it --rm --name my-running-script \\\n\u003e     -v \"$PWD\":/usr/src/myapp \\\n\u003e     -w /usr/src/myapp \\\n\u003e     php:8.2-cli php your-script.php\n\u003e\n\u003e docker run --rm php:8.2-cli sh -c 'php -r \"echo \\\"Hello, World!\\n\\\";\"'\n\u003e \n\u003e docker run --rm --interactive --tty \\\n\u003e     --volume $PWD:/app \\\n\u003e     composer \u003ccommand\u003e\n\u003e ```\n\nBy following these steps, you've equipped your WSL environment with PHP and Composer, ready for robust PHP development. Happy coding! 🖥️✨\n\n## 🖥️ **Run Linux GUI Apps**\n\n\u003cimg src=\"img/wsl-gui.png\" alt=\"WSL GUI\" /\u003e\n\nFrom your Linux terminal, use these commands to download and install popular Linux applications. Remember, if your distribution isn't Ubuntu, the package manager may vary from apt. Once installed, access the app through the Start menu under your distribution name. For instance, Ubuntu -\u003e Microsoft Edge.\n\nFor more info check [Linux GUI Apps](https://learn.microsoft.com/en-us/windows/wsl/tutorials/gui-apps?source=recommendations).\n\n### 🖋️ **Install Gnome Text Editor**\n\nGnome Text Editor, the default text editor of the GNOME desktop environment, can be installed with a simple command:\n\n```bash\nsudo apt install gnome-text-editor -y\n\n# To launch your bashrc file in the editor, enter:\ngnome-text-editor ~/.bashrc\n```\n\n\u003e 📝 Note: GNOME Text Editor takes over as GNOME/Ubuntu's default text editor in Ubuntu 22.10, replacing gedit. If you're using an older version of Ubuntu and prefer gedit, the previous default text editor, use this command:\n\n### 🖌️ Install GIMP\n\nGIMP, the free and open-source raster graphics editor, empowers you with image manipulation, free-form drawing, transcoding between various image formats, and more. To install GIMP, execute:\n\n```bash\nsudo apt install gimp -y\n\n# To launch GIMP, simply type:\ngimp\n```\n\n### 🗂️ Install Nautilus\n\nNautilus, also known as GNOME Files, serves as the file manager for the GNOME desktop environment (akin to Windows File Explorer). To install Nautilus, use:\n\n```bash\nsudo apt install nautilus -y\n\n# Launch Nautilus by entering:\nnautilus\n```\n\n### 📺 Install VLC\n\nVLC, the free and open-source multimedia player and framework, handles most multimedia files with ease. To get VLC, run:\n\n```bash\nsudo apt install vlc -y\n\n# Launch VLC by typing:\nvlc\n```\n\n### 💻 Install X11 Apps\n\nThe Linux windowing system, X11, comes with a collection of miscellaneous apps and tools like xclock, xcalc calculator, xclipboard for cut and paste, xev for event testing, and more. For installation:\n\n```bash\nsudo apt install x11-apps -y\n\n# To launch a specific tool, simply enter its name, for example:\nxcalc\nxclock\nxeyes\n```\n\n---\n\n# 🔐 **Remote Development using SSH**\n\nThe [VS Code Remote - SSH extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh) lets you open a remote folder on any machine with a running SSH server and use all of VS Code's features. After connecting to a server, you can work with files and folders anywhere on the remote filesystem.\n\nTo get started, you need to install an [OpenSSH compatible SSH client](https://code.visualstudio.com/docs/remote/troubleshooting#_installing-a-supported-ssh-client) if one is not already present.\n\n## 🚀 **Install OpenSSH for Windows**\n\nTo install OpenSSH using PowerShell, run PowerShell as an Administrator. To make sure that OpenSSH is available, run the following cmdlet:\n\n```powershell\nGet-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'\n```\n\nThen, install the server or client components as needed:\n\n```powershell\n# Install the OpenSSH Client\nAdd-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0\n\n# Install the OpenSSH Server\nAdd-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0\n```\n\nTo start and configure OpenSSH Server for initial use, open an elevated PowerShell prompt (right click, Run as an administrator), then run the following commands to start the `sshd service`:\n\n```powershell\n# Start the sshd service\nStart-Service sshd\n\n# OPTIONAL but recommended:\nSet-Service -Name sshd -StartupType 'Automatic'\n\n# Confirm the Firewall rule is configured. It should be created automatically by setup. Run the following to verify\nif (!(Get-NetFirewallRule -Name \"OpenSSH-Server-In-TCP\" -ErrorAction SilentlyContinue | Select-Object Name, Enabled)) {\n    Write-Output \"Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, creating it...\"\n    New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22\n} else {\n    Write-Output \"Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists.\"\n}\n```\n\n# 📄 **Set Up Version Management with Git**\n\nDiscover the power of 🔗 [Git version control system](https://example.com/git-setup-guide) on WSL! 🚀\n\n\u003cimg src=\"img/git.gif\" alt=\"Git\" /\u003e\n\n## 💻🚀 **Installing Git**\n\nGit often comes pre-installed with most Windows Subsystem for Linux distributions. However, to ensure you have the latest version, consider updating it. Don't forget to set up your git config file.\n\n📥 To install Git, visit the Git Download for Linux site. Each Linux distribution has its unique package manager and install command.\n\n👉 For the latest stable Git version on Ubuntu/Debian, run:\n\n```bash\nsudo apt-get install git\n```\n\n\u003e 📝 Note: If you haven't already, you may want to [install Git for Windows](https://git-scm.com/download/win) too. 🎉\n\n## 📝 Git Config (windows and in wsl)\n\n### Name\n\nTo set up your Git config file, open a WSL command line and set your name with this command (replacing \"Your Name\" with your preferred username):\n\n```sh\ngit config --global user.name \"Your Name\"\n```\n\n### Email\n\nSet your email with this command (replacing \"youremail@domain.com\" with the email you prefer):\n\n```sh\ngit config --global user.email \"youremail@domain.com\"\n```\n\n### Username\n\nFinally, add your GitHub username to link it to git (case sensitive!):\n\n```sh\ngit config --global user.username \"GitHub username\"\n```\n\n\u003e ⚠️ You can double-check any of your settings by typing `git config --list`. To make any changes, just type the necessary command again as in the examples above.\n\n## 😺 GitHub Credentials\n\n\u003cimg src=\"img/gcm.jpg\" alt=\"Git\" /\u003e\n\n### 🔑💻 **Sharing Credentials \u0026 Settings with Git for Windows**\n\nTo seamlessly share credentials and settings between WSL and the Windows host, it's best to install the [latest Git for Windows](https://github.com/git-for-windows/git/releases/latest). The installation includes Git Credential Manager (GCM), with each new release containing the latest version. During installation, GCM is set as the default credential helper.\n\n⚠️ If you have reasons to avoid installing Git for Windows, you can directly install GCM as a Linux application within your WSL distribution. However, keep in mind that this setup means GCM will run as a Linux application and won't utilize the authentication or credential storage features of the host Windows operating system. For instructions on [configuring WSL without Git for Windows](https://github.com/GitCredentialManager/git-credential-manager/blob/main/docs/wsl.md#configuring-wsl-without-git-for-windows), refer to the GCM repository.\n\nTo set up GCM for use with a WSL distribution, open your distribution and enter this command:\n\n```bash\ngit config --global credential.helper \"/mnt/c/Program\\ Files/Git/mingw64/bin/git-credential-manager.exe\"\n```\n\n### 🔏 **Signing Commits with GPG Key**\n\nLocal Git configuration allows us to sign commits using a GPG key. Once signed, GitHub marks those commits as verified, giving others confidence that the changes originate from a trusted source.\n\n### 🚀 **Installing Required Programs**\n\nTo get started, we need to [install Gpg4Win. 📥](https://gnupg.org/download/#binary)\n\n### 🔑🚀 **Generate a GPG Key**\n\n\u003e If you installed gnupg using Winget or Chocolatey from the command line, remember to restart the console or refresh the environment variables.\n\n🖥️ Open a Windows PowerShell command window.\n\nRun this command to generate the GPG key:\n\n```bash\ngpg --full-generate-key\n```\n\nIt will prompt for specific details, use the following:\n\n- Kind: RSA \u0026 RSA.\n- Key Size: 4096 bits.\n- Expiration: 0 (Never expires).\n- Real Name: Use your GitHub Username.\n- Email: Use your GitHub email; this will be the alias of the GPG key.\n- Comment: You can leave this empty.\n\n### 🛠️ **Configure Git for Windows**\n\n🖥️ Open a Windows PowerShell command window.\n\n```bash\n# 1.First locate where gnupg is installed and save it into a variable:\n$gnupgPath = where.exe gpg\n\n# 2.Configure Git to use gnupg as GPG program:\ngit config --global gpg.program $gnupgPath\n\n# 3.Configure Git to sign all commits by default:\ngit config --global commit.gpgsign true\n\n# 4.Configure Git to use your GPG key as signing key\ngit config --global user.signingkey \"Use the alias of the GPG key here\"\n\n# 5.Optional: Configure Git to sign all tags by default:\ngit config --global tag.gpgsign true\n```\n\n### 💻🐧 **Configure Git for WSL (Windows Subsystem for Linux)**\n\n🖥️ Open a Windows PowerShell command window.\n\n```bash\n# 1.First locate where gnupg is installed and save it into a variable:\n$gnupgPath = where.exe gpg\n\n# 2.Translate the path to WSL:\n$gnupgWslPath = wsl wslpath $gnupgPath\n\n# 3.Configure Git to use gnupg as GPG program:\nwsl git config --global gpg.program $gnupgWslPath\n\n# 4.Configure Git to sign all commits by default:\nwsl git config --global commit.gpgsign true\n\n# 5.Configure Git to use your GPG key as signing key\nwsl git config --global user.signingkey \"Use the alias of the GPG key here\"\n\n# 6.Optional: Configure Git to sign all tags by default:\nwsl git config --global tag.gpgsign true\n```\n\n### 🔑🔧 **Configure the GPG Key in GitHub**\n\n1. **Export the Key**\n\nTo export the GPG key, use the following command:\n\n```bash\ngpg --armor --export \"Use the alias of the GPG key here\"\n```\n\n2. **Add GPG Key on GitHub**\n\nNow, open the GitHub page to add the GPG key:\n\n🌐 [GitHub Add GPG Key](https://github.com/settings/gpg/new)\n\n---\n\n# ⌨️ **Set Up Windows Terminal: Power Up Your Command Line**\n\n\u003cimg src=\"img/terminal.png\" alt=\"Microsoft Terminal\" /\u003e\n\nWindows Terminal unleashes the potential of any application with a command line interface.\n\n🐧 Whenever a new WSL Linux distribution is installed, Windows Terminal conjures a dedicated instance that you can fine-tune to your liking.\n\n💡Head to the Windows Terminal docs for setup and personalization assistance. Customize:\n\n1. Installation: Get it from the Microsoft Store - [Windows Terminal or Windows Terminal (Preview)](https://learn.microsoft.com/en-us/windows/terminal/get-started).\n2. Custom Actions: [Set up keyboard shortcuts that suit your natural workflow](https://learn.microsoft.com/en-us/windows/terminal/#custom-actions).\n3. Default Startup Profile: Configure your preferred starting setup.\n   1. Select the `˅` icon from Windows Terminal and go to the Settings menu\n   2. Startup section find the Default profile dropdown, select Ubuntu and Windows Terminal as the Default terminal\n4. Starting Directory\n   1. Under the Profiles section in the settings menu click on Ubuntu\n   2. At the General tab, you will find a Starting directory input\n   3. Enter the following replacing \"username\" with your Ubuntu user name: `\\\\wsl$\\Ubuntu\\home\\username`\n   4. You can leave the `Use parent process directory` box unchecked\n   5. If it is still opening into your `/` directory, change the `Command line` setting located right above the `Starting directory` input box to the following: `wsl.exe -d Ubuntu`\n5. Appearance: Tailor [themes](https://learn.microsoft.com/en-us/windows/terminal/customize-settings/appearance#theme), [color schemes](https://learn.microsoft.com/en-us/windows/terminal/customize-settings/color-schemes), [names, starting directories](https://learn.microsoft.com/en-us/windows/terminal/customize-settings/profile-general), [background images](https://learn.microsoft.com/en-us/windows/terminal/customize-settings/profile-appearance#background-image), and more...\n6. Set up a custom prompt for [PowerShell or WSL with Oh My Posh](https://learn.microsoft.com/en-us/windows/terminal/tutorials/custom-prompt-setup).\n\n   [![ohmyposh](img/getitfrom.png)](https://apps.microsoft.com/store/detail/XP8K0HKJFRXGCK)\n\n---\n\n# 💤 Zsh - Embrace the Power!\n\nZ shell, also known as Zsh, works almost identically to the standard BASH shell found on default Linux installs. But what makes it stand out are its incredible support for plugins and themes, along with cool features like spelling correction and recursive path expansion. It's time to leave BASH behind and unlock the full potential of Zsh! 💪😎\n\n## 🚀 Installing Zsh\n\nTo install Zsh, execute this command:\n\n```bash\nsudo apt install zsh\n```\n\nOnce installed, type `zsh` in the terminal. Zsh will prompt you to choose some configurations. Don't worry; we'll handle this later while installing oh-my-zsh. For now, select option `0` to create the config file and prevent this message from showing again. 🛠️👉 0️⃣\n\n## 🔥 OhMyZsh - The Ultimate Zsh Experience!\n\nThe most popular plugin framework by far is [OhMyZsh](https://ohmyz.sh/). It comes preloaded with a plethora of plugins, themes, helpers, and more. Not only does it enhance productivity, but it also adds a touch of coolness to your terminal. 😍🔌💻\n\n## 🌐 cURL - Essential for Downloads\n\nBefore we proceed, ensure you have [cURL](https://curl.se/) installed. It's a fantastic way to transfer data from the command line, and that's how we'll download OhMyZsh.\n\n```bash\nsudo apt install curl\n```\n\n## ⚙️ Installing OhMyZsh - Your Personal Assistant\n\nEnter the following command into your terminal to install OhMyZsh:\n\n```bash\nsh -c \"$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)\"\n```\n\nGreat! Now you should see a `.oh-my-zsh` directory inside your home directory. To customize plugins and themes, edit your `.zshrc` file, also found in your home directory.\n\nHere is a list of all the [themes](https://github.com/ohmyzsh/ohmyzsh/wiki/Themes) and [plugins](https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins) bundled with OhMyZsh. 💼🎨🔌\n\n## 🔌 More Plugins - Enhance Your Zsh Experience\n\nWhile there are countless plugins available, here are two highly recommended ones:\n\n### 🚀 [zsh-autosuggestions](https://github.com/zsh-users/zsh-autosuggestions)\n\nThis plugin provides autosuggestions for zsh, suggesting commands as you type based on history and completions.\n\n1. Clone this repository into `$ZSH_CUSTOM/plugins` (by default `~/.oh-my-zsh/custom/plugins`):\n\n```bash\ngit clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions\n```\n\n2. Add the plugin to the list of plugins for Oh My Zsh to load (inside `~/.zshrc`):\n\n```bash\nplugins=(git zsh-autosuggestions)\n```\n\n3. Start a new terminal session. 🚀🎛️\n\n### 🌈 [zsh-syntax-highlighting](https://github.com/zsh-users/zsh-syntax-highlighting)\n\nThis package provides syntax highlighting for the zsh shell, highlighting commands as they are typed in an interactive terminal. It helps in reviewing commands before running them, particularly in catching syntax errors.\n\n1. Clone this repository into oh-my-zsh's plugins directory:\n\n```bash\ngit clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting\n```\n\n2. Activate the plugin in `~/.zshrc`:\n\n```bash\nplugins=(git zsh-autosuggestions zsh-syntax-highlighting)\n```\n\n3. Start a new terminal session. 🌈🌟\n\nFor a vast list of plugins, check out the [awesome zsh plugins repository](https://github.com/unixorn/awesome-zsh-plugins). 🛠️🔌🌟\n\n## 🎨 Oh My Posh - Supercharge Your Linux Terminal Prompt\n\n![ohmyposh](https://github.com/PickleBoxer/windows-dev-environment-setup/assets/78869247/12360da5-5ddd-4771-8db2-8a91bdb308dd)\n\nOh My Posh is a delightful framework that enhances your Linux terminal prompt and makes it not only more informative but also visually appealing. Customize and transform your prompt into something that matches your style and productivity needs. 🌟🚀\n\n## 🚀 Installing Oh My Posh\n\n1. Install\n\n```bash\n# Using Homebrew\nbrew install jandedobbeleer/oh-my-posh/oh-my-posh\n\n# Manual\ncurl -s https://ohmyposh.dev/install.sh | bash -s\n```\n\n2. Activate the plugin in `~/.zshrc`:\n\n```bash\n# Oh My Posh init Theme\neval \"$(oh-my-posh init zsh --config $(brew --prefix oh-my-posh)/themes/jandedobbeleer.omp.json)\"\n```\n\n3. Start a new terminal session. 🌈🌟\n\nNext, you'll need to [install and set up a suitable font](https://ohmyposh.dev/docs/installation/fonts) to display the special characters used by Oh My Posh.\n\nThat's it! Your Linux terminal prompt should now be enhanced with the beautiful and informative Oh My Posh theme. Customize further by exploring the various options available in the theme settings. ✨🎨\n\nFor more information and advanced customization, check out the official [Oh My Posh documentation](https://ohmyposh.dev/docs) and unleash the full potential of your Linux terminal prompt! 💻🔥\n\n---\n\n# 🍺 Homebrew - The Missing Package Manager for Linux\n\nHomebrew is a popular package manager for macOS, and now it's available for Linux too! With Homebrew, you can easily install, update, and manage various packages and applications on your Linux system.\n\n## 🚀 Installing Homebrew\n\nTo install Homebrew on Linux, follow these steps:\n\n1. Open a terminal window.\n\n2. Install Homebrew using the following command:\n\n```bash\n/bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"\n```\n\nThat's it! Enjoy using Homebrew to simplify package management on your Linux system. 🍺🚀\n\n---\n\n# 💡 Microsoft PowerToys - Enhance Windows Experience\n\n![image](https://github.com/PickleBoxer/windows-dev-environment-setup/assets/78869247/447639ca-3e38-4f47-bb99-098d76dd6449)\n\nMicrosoft PowerToys is a set of handy utilities for Windows, boosting productivity and improving multitasking. It includes features like window management, keyboard shortcuts, color picker, image resizer, and more.\n\n## 🚀 Installing Microsoft PowerToys\n\nYou can install Microsoft PowerToys using multiple methods:\n\n- **Winget**: Open a terminal and run:\n\n```sh\nwinget install Microsoft.PowerToys --source winget\n```\n\n- **Microsoft Store**: Search for [\"Microsoft PowerToys\"](https://aka.ms/getPowertoys) in the Microsoft Store and install it from there.\n\n- **GitHub**: Visit the official [PowerToys GitHub](https://github.com/microsoft/PowerToys) page, download the latest release installer, and follow the installation wizard.\n\n## 🛠️ Using Microsoft PowerToys\n\nAccess PowerToys Settings from the Start menu or system tray to enable, disable, and customize utilities.\n\n## 🎯 Notable PowerToys Utilities\n\n- **FancyZones**: Organize windows into custom layouts for better multitasking.\n\n- **Shortcut Guide**: Display helpful keyboard shortcuts overlay.\n\n- **PowerRename**: Batch rename files with advanced search and replace.\n\n- **Color Picker**: Easily pick colors from your screen.\n\n- **Image Resizer**: Resize images from File Explorer.\n\n- **File Explorer Preview Pane**: Preview files directly in File Explorer.\n\n---\n\n# 📝💻 **Set Up Your Favorite Code Editor**\n\n👉 Recommended Visual Studio Code Insiders for seamless remote development and debugging with WSL.\n\n🚀 **Use Visual Studio Code Insiders:**\n\nFollow these steps to get started:\n\n1. Install [Visual Studio Code insiders](https://code.visualstudio.com/insiders/).\n2. Get the [Remote Development extension pack for WSL](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack).\n3. [Follow this step-by-step guide to Get started using Visual Studio Code with WSL](https://learn.microsoft.com/en-us/windows/wsl/tutorials/wsl-vscode).\n\n\u003cimg src=\"img/vscode-remote-wsl-extensions.png\" alt=\"Microsoft VS Code\" /\u003e\n\nOnce set up, open your WSL project with a VS Code remote server:\n\n```bash\ncode-insiders .\n```\n\nDon't forget the period at the end to open the current directory. 💫💡\n\n💡 **Note:**\n\n\u003e When using Remote - WSL, you must install any VS Code extensions you need separately. Extensions that are already installed locally on VS Code won't be automatically available in the WSL environment. To [Learn more](https://code.visualstudio.com/docs/remote/wsl#_managing-extensions), refer to the documentation.\n\n## Changing the Default Shell\n\nThe WSL2 shell can be chosen as the default VS Code terminal by pressing `Ctrl` + `Shift` + `P` and typing/choosing Terminal: Select Default Profile, then selecting zsh:\n   \n![command-palette](https://github.com/PickleBoxer/windows-dev-environment-setup/assets/78869247/e169863f-1c27-4414-aa5f-bd29c70e9887)\n   \n![zsh-profile](https://github.com/PickleBoxer/windows-dev-environment-setup/assets/78869247/71693026-af03-455c-af4a-a6e1e822d873)\n\n## 🚀 Remote Tutorials\n\nThe tutorials below will walk you through running Visual Studio Code with the Remote Development extensions.\n\n| Tutorial | Description |\n| --- | --- |\n| 💻 [Remote via SSH](https://code.visualstudio.com/docs/remote/ssh-tutorial) | Connect to remote and virtual machines with Visual Studio Code via SSH. |\n| 🐧 [Work in WSL](https://code.visualstudio.com/docs/remote/wsl-tutorial) | Run Visual Studio Code in Windows Subsystem for Linux. |\n| 🐳 [Develop in Containers](https://code.visualstudio.com/docs/devcontainers/tutorial) | Run Visual Studio Code in a Docker Container. |\n| 🔗 [GitHub Codespaces](https://docs.github.com/github/developing-online-with-codespaces/using-codespaces-in-visual-studio-code) | Connect to a codespace with Visual Studio Code. |\n\n---\n\n# 🐳 Set up Remote Development Containers with Docker\n\nDocker enables you to set up remote development containers effortlessly. Follow this [step-by-step guide to get started with Docker remote containers on WSL 2](https://learn.microsoft.com/en-us/windows/wsl/tutorials/wsl-containers) and connect your project to a remote development container using Docker Desktop for Windows.\n\n## 🚀 Get Started with Docker Remote Containers on WSL 2\n\n1. **Install Docker Desktop for Windows**: Download and install [Docker Desktop from the official Docker website.](https://docs.docker.com/docker-for-windows/wsl/#download)\n\n2. **Configure Docker for WSL 2**: Open Docker Desktop settings and enable the \"Use the WSL 2 based engine\" option under the \"General\" section.\n\n   ![docker-starting](https://github.com/PickleBoxer/windows-dev-environment-setup/assets/78869247/0730981c-2cd8-4def-9af8-96f46bd6d3df)\n\n   ![docker-running](https://github.com/PickleBoxer/windows-dev-environment-setup/assets/78869247/e26c5497-d3ad-42f4-8bbb-4f6b00ea838b)\n\n   ![docker-dashboard](https://github.com/PickleBoxer/windows-dev-environment-setup/assets/78869247/9f0d9ae4-6f68-4715-ad2b-af11b96bba87)\n\n4. **Connect to WSL 2**: Open a terminal in your Linux distribution running on WSL 2 and ensure you can run Docker commands without any issues.\n  \n  ```bash\n  # Display the version and build number by entering:\n  docker --version\n  # Test that your installation works correctly by running a simple built-in Docker image using:\n  docker run hello-world\n  ```\n\n## 🔄 Use Docker Desktop to Manage Remote Containers\n\nWith Docker Desktop for Windows, you can conveniently manage and switch between different remote development containers directly from the Docker interface.\n\nNow you're all set to enjoy the power of remote development with Docker containers! Happy coding! 🚀💻\n\n## ⚙️ Develop in Remote Containers with VS Code\n\nDevelop apps using Docker with ease and efficiency using VS Code and essential extensions: WSL, Dev Containers, and Docker. 👩‍💻🐳\n\n1. [**Install VS Code WSL Extension**:](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl) Seamlessly open Linux projects running on WSL in VS Code, eliminating pathing issues and cross-OS challenges.\n\n2. [**Install VS Code Dev Containers Extension**:](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) Work inside a container for your project folder or repository, utilizing VS Code's full power.\n\n3. [**Install VS Code Docker Extension**:](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-docker) Manage containerized applications directly from VS Code. Pair with Dev Containers for a smooth development environment. 🏗️\n\n## 🚀 Working with Git?\n\nConsider these essential tips:\n\n1. **Consistent Line Endings**: When working with the same repository locally in Windows and inside a container, ensure consistent line endings for smooth collaboration. Check out our [tips and tricks](https://code.visualstudio.com/docs/remote/troubleshooting#_resolving-git-line-ending-issues-in-wsl-resulting-in-many-modified-files) for details.\n\n   Adding the following to .gitattributes file to the root of your repository:\n\n```bash\n  * text=auto eol=lf\n  *.{cmd,[cC][mM][dD]} text eol=crlf\n  *.{bat,[bB][aA][tT]} text eol=crlf\n  ```\n\n3. **Seamless Git Credentials**: If you clone using a Git credential manager, your container will have access to your credentials automatically! For SSH keys, you can also opt-in to [sharing them](https://code.visualstudio.com/remote/advancedcontainers/sharing-git-credentials). Find more about Sharing Git credentials with your container.\n\n### 🔐 **Sharing GPG Keys** (Optional)\nIf you want to GPG sign your commits, you can share your local keys with your container as well. You can find out about signing using a GPG key in [GitHub's documentation.](https://docs.github.com/authentication/managing-commit-signature-verification)\n\nIf you do not have GPG set up, you can configure it for your platform:\n\n- On WSL:\n  - Install [Gpg4win](https://www.gpg4win.org/) on the Windows side.\n  - Install `gpg` in your WSL distro. `sudo apt install gpg`\n  - Register a `pinentry` GUI in your WSL distro. `echo pinentry-program /mnt/c/Program\\ Files\\ \\(x86\\)/Gpg4win/bin/pinentry.exe \u003e ~/.gnupg/gpg-agent.conf`\n  - Reload the gpg agent in WSL. `gpg-connect-agent reloadagent /bye`\n \n\u003e 📝 Note: For Windows user, the gpg signing key must be configured using the Windows GUI or CLI (powershell/cmd) and not in Git Bash. A Dev Container can't access the gpg keys set in Git Bash even though it is in your ~/.gnupg/ folder, accessible in the Windows Explorer.\n \nNext, install gnupg2 in your container by updating your `Dockerfile`.\n\n```dockerfile\nRUN apt-get update \u0026\u0026 apt-get install gnupg2 -y\n```\n\nOr if running as a non-root user:\n\n```dockerfile\nRUN sudo apt-get update \u0026\u0026 sudo apt-get install gnupg2 -y\n```\n\n\u003csub\u003eMake sure you have Docker Desktop installed and properly configured on your Windows machine to follow this guide successfully. Remote development containers provide a convenient and consistent development environment across different machines and platforms, enhancing productivity and collaboration.\u003c/sub\u003e\n\n# 🛠️ Windows Apps\n\n- [Postman](https://www.postman.com/) - A collaboration platform for API development with features like automated testing, mock servers, and documentation generation.\n- [HeidiSQL](https://www.heidisql.com/) - \"Heidi\" lets you see and edit data and structures from computers running one of the database systems MariaDB, MySQL, Microsoft SQL, PostgreSQL and SQLite.\n- [FileZilla](https://filezilla-project.org/) - A fast and reliable FTP, FTPS, and SFTP client for file transfer.\n- [PuTTY](https://www.putty.org/) - A free and open-source terminal emulator, serial console, and network file transfer application.\n- [MySQL Workbench](https://www.mysql.com/products/workbench/) - A visual database design tool that integrates SQL development, administration, database design, creation, and maintenance into a single, seamless environment.\n- [WizTree](https://wiztreefree.com/) - A disk space analyzer for quickly scanning your entire hard drive and then shows you which files and folders are using the most disk space.\n- [Notion](https://www.notion.so/) - A note-taking and collaboration application with markdown support.\n- [WinMerge](https://winmerge.org/) - A free and open-source differencing and merging tool for Windows.\n- [DBngin](https://dbngin.com/) - All-in-One Database Version Management Tool - The easiest way to get started with PostgreSQL, MySQL, Redis \u0026 more\n- [Laravel Herd](https://herd.laravel.com/windows) - Laravel development perfected - One click PHP development environment. Zero dependencies. Zero headaches.\n- [TablePlus](https://tableplus.com/) - Modern, native, and friendly GUI tool for relational databases: MySQL, PostgreSQL, SQLite \u0026 more\n\n#  🆚 VS Code Extensions\n\n- ....\n\n\n# 📝 References\n\n- [Set up your development environment on Windows](https://learn.microsoft.com/en-us/windows/dev-environment/)\n- [Windows Subsystem for Linux](https://learn.microsoft.com/en-us/windows/wsl/)\n- ...\n  \n---\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"cin cin\" src=\"https://github.com/PickleBoxer/windows-dev-environment-setup/assets/78869247/d9d9c2fd-bb9c-4cd7-9a91-3f28155b411f\"\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpickleboxer%2Fwindows-dev-environment-setup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpickleboxer%2Fwindows-dev-environment-setup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpickleboxer%2Fwindows-dev-environment-setup/lists"}