{"id":24334,"date":"2023-09-22T05:00:00","date_gmt":"2023-09-22T03:00:00","guid":{"rendered":"https:\/\/sii.pl\/blog\/?p=24334"},"modified":"2024-07-22T14:34:05","modified_gmt":"2024-07-22T12:34:05","slug":"windows-subsystem-for-linux-wsl-2-part-2-dev-tools-configuration","status":"publish","type":"post","link":"https:\/\/sii.pl\/blog\/en\/windows-subsystem-for-linux-wsl-2-part-2-dev-tools-configuration\/","title":{"rendered":"Windows Subsystem for Linux (WSL 2) Part 2: Dev tools configuration"},"content":{"rendered":"\n<p><a href=\"https:\/\/sii.pl\/blog\/en\/windows-subsystem-for-linux-wsl-2-part-1-installation-and-configuration\/?category=hard-development&amp;tag=linux-2,tools,windows-2\" target=\"_blank\" aria-label=\"In the previous article (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">In the previous article<\/a>, I have described what WSL is, the main differences between the two versions, and how to install and configure the tool. Now, it is time to demonstrate how this feature can be leveraged from a development point of view. In this article, I will show you <strong>how to configure development tools like Visual Studio Code and IntelliJ IDEA to work with WSL.<\/strong><\/p>\n\n\n\n<p>Before setting up development tools, I need to explain the overall development process scenario with WSL. There are a few rules that should be followed in order to achieve the best file system performance and avoid problems in the future.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>General approach<\/strong><\/h2>\n\n\n\n<p>First, you need to understand how WSL can be incorporated into daily development work and what its role is. To begin with, source code (also repository configurations), Docker containers, databases, and application servers, among other things, will be stored or run under a WSL Linux distribution.<\/p>\n\n\n\n<p>On the other hand, on the Windows OS, development tools like IDEs, code editors, and web browsers are installed. The key point here is that these tools will connect with the WSL Linux distribution, enabling \u201cremote\u201d work on the code (edition and debugging).<\/p>\n\n\n\n<p>In order to maintain the best performance across file systems (since Windows and Linux use completely different ones), it is <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/wsl\/filesystems#file-storage-and-performance-across-file-systems\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >strongly advised<\/a> to store all the project files within one specific operating system.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Dev tools configuration<\/strong><\/h2>\n\n\n\n<p>Having explained the general approach to the development process and file storage, let\u2019s configure tools like <em>Visual Studio Code<\/em> and <em>IntelliJ IDEA<\/em>. As I mentioned earlier, those tools need to be installed on Windows OS first, so for the next steps, I will assume that this has already been done as it is a completely standard procedure.<\/p>\n\n\n\n<p>Remember to <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/wsl\/tutorials\/wsl-vscode#install-vs-code-and-the-wsl-extension\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >check<\/a> the <em>Add to PATH<\/em> option while installing <em>Visual Studio Code<\/em> to easily open a folder in WSL using the <em>code <\/em>command.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Visual Studio Code configuration<\/strong><\/h2>\n\n\n\n<p>Integration of Visual Studio Code with WSL is straightforward. After the installation process, the <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-vscode-remote.vscode-remote-extensionpack\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" ><em>Remote Development<\/em><\/a> plugin needs to be installed.<\/p>\n\n\n\n<p>For some Linux distributions, it may also be necessary to install <em>wget<\/em> and <em>ca-certificates<\/em>. This is not the case in Ubuntu, but if you chose a different distribution, in your WSL Linux OS, execute the following commands (assuming it is a Debian, or Debian-based distribution; if not, use the appropriate package manager):<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo apt update &amp;&amp; sudo apt install -y wget ca-certificates<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Opening a project<\/strong><\/h2>\n\n\n\n<p>To open a project stored in a WSL Linux distribution, you can use <em>Windows Terminal<\/em> to navigate to the project location and open the whole directory in <em>Visual Studio Code<\/em> by executing the following command:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">code .<\/pre>\n\n\n\n<p>Alternatively, you can open <em>Visual Studio Code<\/em> on your Windows OS first and use the command palette (ctrl+shift+p) to type <em>wsl<\/em> to open a directory in WSL. Once the directory is opened, you can work with it as you would with any usual files on Windows. Please note that in the lower-left corner, you will have an indicator showing that you are connected to WSL:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/vs_code_wsl.jpeg\"><img decoding=\"async\" width=\"1020\" height=\"560\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/vs_code_wsl.jpeg\" alt=\"An indicator in the lower-left corner\" class=\"wp-image-24337\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/vs_code_wsl.jpeg 1020w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/vs_code_wsl-300x165.jpeg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/vs_code_wsl-768x422.jpeg 768w\" sizes=\"(max-width: 1020px) 100vw, 1020px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 1 An indicator in the lower-left corner<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Troubleshooting \u2013 VS Code seems to be blurry<\/strong><\/h2>\n\n\n\n<p>I believe it is not a WSL issue itself, but for sure it is worth mentioning. Some users may encounter a strange problem with VS Code, where it appears as a blurry image. If this is<br>the case, check which graphics processor is being used for this program. If it is Nvidia, you may need to disable FXAA for this application. Check <a href=\"https:\/\/stackoverflow.com\/questions\/51943550\/visual-studio-code-looks-blurry\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >this thread<\/a> on Stack Overflow for more information.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Extensions<\/strong><\/h2>\n\n\n\n<p>Some extensions need to be installed only on the Windows OS, while others require installation both on Windows and in the WSL Linux distribution. You can easily identify the latter in Extensions explorer panel &nbsp;as they are marked with the comment <em>Install in WSL<\/em>, like the ones below:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/vs_code_wsl_extensions.jpg\"><img decoding=\"async\" width=\"1020\" height=\"558\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/vs_code_wsl_extensions.jpg\" alt=\"\u201cInstall in WSL\u201d\" class=\"wp-image-24339\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/vs_code_wsl_extensions.jpg 1020w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/vs_code_wsl_extensions-300x164.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/vs_code_wsl_extensions-768x420.jpg 768w\" sizes=\"(max-width: 1020px) 100vw, 1020px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 2 \u201cInstall in WSL\u201d<\/figcaption><\/figure>\n\n\n\n<p>Simply click the blue <em>Install in WSL<\/em> button for those extensions, and from that point on, the extension should also work for source code in WSL.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Documentation<\/strong><\/h2>\n\n\n\n<p>In general, <em>Visual Studio Code<\/em> is now configured, at least in a basic sense, and can be used with WSL. Traditionally, I would recommend to at least take a brief look at official documentation available <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/wsl\/tutorials\/wsl-vscode\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >here<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>IntelliJ IDEA configuration<\/strong><\/h2>\n\n\n\n<p>Unlike <em>Visual Studio Code<\/em>, no extensions are needed to work with WSL. Once IntelliJ is installed, you can create a new project in the WSL Linux distribution, and it is also possible to open an existing project from WSL.<\/p>\n\n\n\n<p>For the steps described below, I assume that Java SDK and Maven are already installed in the WSL Linux distribution. If not, I would recommend using a tool called SDKMAN! \u2013 you can visit the <a href=\"https:\/\/sdkman.io\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >project page<\/a> for installation and usage instructions.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Creating a new project in WSL<\/strong><\/h2>\n\n\n\n<p>To create a new project in the WSL, open IntelliJ and click on <em>New Project<\/em>. Let\u2019s create an empty Maven Java 17 project. To do so, you can check the following parameters:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/create_new_project_intelliJ_wsl.jpg\"><img decoding=\"async\" width=\"789\" height=\"772\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/create_new_project_intelliJ_wsl.jpg\" alt=\"Parameters for a new project\" class=\"wp-image-24341\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/create_new_project_intelliJ_wsl.jpg 789w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/create_new_project_intelliJ_wsl-300x294.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/create_new_project_intelliJ_wsl-768x751.jpg 768w\" sizes=\"(max-width: 789px) 100vw, 789px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 3 Parameters for a new project<\/figcaption><\/figure>\n\n\n\n<p>Take a look at <em>Location<\/em> and <em>JDK<\/em>. <em>Location<\/em> starts with:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\\\\wsl$\\Ubuntu-22.04\\<\/pre>\n\n\n\n<p>This path points to the WSL Linux file system.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\\home\\mwrobel\\test-project-2<\/pre>\n\n\n\n<p>This is a standard Linux path, where:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>home<\/strong> is a standard Linux directory (it can be even a separate partition) for Linux users,<\/li>\n\n\n\n<li><strong>mwrobel<\/strong> is a directory for Linux user (account) mwrobel,<\/li>\n\n\n\n<li><strong>test-project-2<\/strong> is a project directory name.<\/li>\n<\/ul>\n\n\n\n<p>The next thing to mention is the JDK. The one shown in the picture is not installed on Windows but was earlier installed on Linux. IntelliJ can automatically detect the JDK, and if there is no JDK installed on Windows, it selects the one installed in WSL Linux.<\/p>\n\n\n\n<p>The last step is to click the blue <em>Create<\/em> button and wait while all the libraries are indexed.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Opening an existing project in WSL<\/strong><\/h2>\n\n\n\n<p>Click the <em>Open<\/em> button on the Welcome screen. Similar to creating a new project, you need to point to the location in WSL Linux. For example:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\\\\wsl$\\Ubuntu-22.04\\home\\mwrobel\\test-project-2<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Update Maven home path in IntelliJ<\/strong><\/h2>\n\n\n\n<p>In order to set WSL Maven path, do as follows:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/maven_wsl_path_intellij.jpg\"><img decoding=\"async\" width=\"1024\" height=\"649\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/maven_wsl_path_intellij-1024x649.jpg\" alt=\"Choosing Maven home path\" class=\"wp-image-24344\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/maven_wsl_path_intellij-1024x649.jpg 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/maven_wsl_path_intellij-300x190.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/maven_wsl_path_intellij-768x487.jpg 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/maven_wsl_path_intellij.jpg 1194w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 4 Choosing Maven home path<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Running application from IntelliJ and debugging<\/strong><\/h2>\n\n\n\n<p>If you use build tools like <em>Maven<\/em> or <em>Gradle<\/em>, you can build and run applications from the terminal using appropriate commands or scripts. However, you may also want to be able to run applications directly from <em>IntelliJ<\/em> or debug them. To make this possible, <em>IntelliJ<\/em> needs to connect with the Linux virtual machine. This requires configurating Windows firewall to allow access for <em>IntelliJ<\/em> for certain types of connections. Unfortunately, if you are using a corporate PC, you may not be able to change these settings by yourself. In this scenario, &nbsp;you would need to contact system administrator.<\/p>\n\n\n\n<p>For the sake of this example, let\u2019s assume there is a very simple Spring Boot app with one single \u201chello world\u201d GET REST endpoint. The project has already been imported into <em>IntelliJ<\/em>.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/wsl_sb_demo_controller_and_project_structure.jpg\"><img decoding=\"async\" width=\"1024\" height=\"436\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/wsl_sb_demo_controller_and_project_structure-1024x436.jpg\" alt=\"GET REST endpoint\" class=\"wp-image-24346\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/wsl_sb_demo_controller_and_project_structure-1024x436.jpg 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/wsl_sb_demo_controller_and_project_structure-300x128.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/wsl_sb_demo_controller_and_project_structure-768x327.jpg 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/wsl_sb_demo_controller_and_project_structure-1536x654.jpg 1536w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/wsl_sb_demo_controller_and_project_structure.jpg 1920w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 5 GET REST endpoint<\/figcaption><\/figure>\n\n\n\n<p>When you try to run application from IntelliJ, you may encounter the following error:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/intellij_connection_timeout.jpg\"><img decoding=\"async\" width=\"1024\" height=\"291\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/intellij_connection_timeout-1024x291.jpg\" alt=\"Error in IntelliJ\" class=\"wp-image-24348\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/intellij_connection_timeout-1024x291.jpg 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/intellij_connection_timeout-300x85.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/intellij_connection_timeout-768x218.jpg 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/intellij_connection_timeout-1536x436.jpg 1536w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/intellij_connection_timeout.jpg 1920w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 6 Error in IntelliJ<\/figcaption><\/figure>\n\n\n\n<p>You need to configure the Windows firewall to enable communication between <em>IntelliJ<\/em> and the Linux VM. Please check your firewall settings.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/intellij_firewall_access_config.jpg\"><img decoding=\"async\" width=\"892\" height=\"332\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/intellij_firewall_access_config.jpg\" alt=\"Configuring Windows firewall\" class=\"wp-image-24351\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/intellij_firewall_access_config.jpg 892w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/intellij_firewall_access_config-300x112.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/intellij_firewall_access_config-768x286.jpg 768w\" sizes=\"(max-width: 892px) 100vw, 892px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 7 Configuring Windows firewall<\/figcaption><\/figure>\n\n\n\n<p>Check the checkboxes for the current network connection, especially for the public network. Once <em>IntelliJ<\/em> has access through the Windows firewall, it should be possible to run applications from this IDE and connect with a debugger.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Additional information<\/strong><\/h2>\n\n\n\n<p>I recommend checking the official JetBrains <a href=\"https:\/\/www.jetbrains.com\/help\/idea\/how-to-use-wsl-development-environment-in-product.html\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >documentation<\/a> on how to configure IntelliJ. They also mention some firewall rules configuration that may need to be prepared.<\/p>\n\n\n\n<p>GIT is installed by default in Ubuntu distribution. The only basic configuration part at the beginning is to set user and e-mail.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Using the executed application<\/strong><\/h2>\n\n\n\n<p>Last but not least, how can we check if the application is running and behaving properly (let\u2019s set&nbsp; aside the topic of all kinds of automated tests for now \ud83d\ude09)? We would like to execute and manually test the application.<\/p>\n\n\n\n<p>Assuming that application was executed on the Linux WSL machine, on port 8080, you can simply open a web browser on Windows and enter the following address:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">localhost:8080<\/pre>\n\n\n\n<p>That\u2019s all. Ports between Windows and Linux WSL are mapped, so the experience is as if you were using Windows machine only. For the Spring Boot application scenario described above, the result is as follows:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" width=\"755\" height=\"229\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/hello_sii_example.jpg\" alt=\"Result for the Spring Boot application scenario\" class=\"wp-image-24354\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/hello_sii_example.jpg 755w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/hello_sii_example-300x91.jpg 300w\" sizes=\"(max-width: 755px) 100vw, 755px\" \/><figcaption class=\"wp-element-caption\">Fig. 8 Result for the Spring Boot application scenario<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Conclusion<\/strong><\/h2>\n\n\n\n<p>In this article, I showed how to configure and use certain development tools with WSL, and I also explained the general approach for the development process. In the next article, I will present how to configure and use <em>Docker<\/em>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Sources<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/wsl\/filesystems#file-storage-and-performance-across-file-systems\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >Working across Windows and Linux file systems<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/wsl\/tutorials\/wsl-vscode#install-vs-code-and-the-wsl-extension\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >Install VS Code and the WSL extension<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-vscode-remote.vscode-remote-extensionpack\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >Visual Studio Code Remote Development Extension Pack<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/stackoverflow.com\/questions\/51943550\/visual-studio-code-looks-blurry\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >Visual studio code looks blurry<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/wsl\/tutorials\/wsl-vscode\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >Get started using Visual Studio Code with Windows Subsystem for Linux<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sdkman.io\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >The Software Development Kit Manager<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.jetbrains.com\/help\/idea\/how-to-use-wsl-development-environment-in-product.html\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >WSL<\/a><\/li>\n<\/ul>\n\n\n\n<p>***<\/p>\n\n\n\n<p>Other articles in the series can be found here:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/sii.pl\/blog\/en\/windows-subsystem-for-linux-wsl-2-part-1-installation-and-configuration\/?category=hard-development&amp;tag=linux-2,tools,windows-2\" target=\"_blank\" aria-label=\"Windows Subsystem for Linux (WSL 2). Part 1: Installation and configuration (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">Windows Subsystem for Linux (WSL 2). Part 1: Installation and configuration<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sii.pl\/blog\/en\/windows-subsystem-for-linux-wsl-2-part-3-docker-installation-and-configuration\/?category=hard-development&amp;tag=linux-2,tools,windows-2\" target=\"_blank\" rel=\"noreferrer noopener\">Windows Subsystem for Linux (WSL 2). Part 3: Docker installation and configuration<\/a><\/li>\n<\/ul>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-left kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;24334&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;7&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;5&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;11&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;5\\\/5 ( votes: 7)&quot;,&quot;size&quot;:&quot;18&quot;,&quot;title&quot;:&quot;Windows Subsystem for Linux (WSL 2) Part 2: Dev tools configuration&quot;,&quot;width&quot;:&quot;139.5&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} ( {votes}: {count})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 139.5px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 14.4px;\">\n            5\/5 ( votes: 7)    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>In the previous article, I have described what WSL is, the main differences between the two versions, and how to &hellip; <a class=\"continued-btn\" href=\"https:\/\/sii.pl\/blog\/en\/windows-subsystem-for-linux-wsl-2-part-2-dev-tools-configuration\/\">Continued<\/a><\/p>\n","protected":false},"author":538,"featured_media":24360,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","inline_featured_image":false,"footnotes":""},"categories":[1320],"tags":[2428,1746,1745,1590],"class_list":["post-24334","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-hard-development","tag-digital-2","tag-linux-2","tag-windows-2","tag-tools"],"acf":[],"aioseo_notices":[],"republish_history":[],"featured_media_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/Windows-Subsystem-for-Linux-WSL-2.-Part-1-Installation-and-configuration.jpg","category_names":["Hard development"],"_links":{"self":[{"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/posts\/24334"}],"collection":[{"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/users\/538"}],"replies":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/comments?post=24334"}],"version-history":[{"count":2,"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/posts\/24334\/revisions"}],"predecessor-version":[{"id":24950,"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/posts\/24334\/revisions\/24950"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/media\/24360"}],"wp:attachment":[{"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/media?parent=24334"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/categories?post=24334"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/tags?post=24334"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}