<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Guilherme L. Leite Marques</title>
    <description>The latest articles on DEV Community by Guilherme L. Leite Marques (@guinuxbr).</description>
    <link>https://dev.to/guinuxbr</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F230630%2F7e671aa6-536e-47f2-b0be-ac0026349704.jpg</url>
      <title>DEV Community: Guilherme L. Leite Marques</title>
      <link>https://dev.to/guinuxbr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/guinuxbr"/>
    <language>en</language>
    <item>
      <title>Vim Cheat Sheet</title>
      <dc:creator>Guilherme L. Leite Marques</dc:creator>
      <pubDate>Sun, 24 Jan 2021 19:01:15 +0000</pubDate>
      <link>https://dev.to/guinuxbr/vim-cheat-sheet-5b6b</link>
      <guid>https://dev.to/guinuxbr/vim-cheat-sheet-5b6b</guid>
      <description>&lt;p&gt;For a long time, I ran away from Vim because it seemed very tricky and because there is a lot of simpler editors out there to work with. However, as it comes installed in most Linux distributions, I made this cheat sheet to help me understand how things work. I have discovered that is possible to be very productive with Vim 😃.&lt;/p&gt;

&lt;p&gt;I'll try to go straight to the point. This cheat-sheet is not intended to be a complete guide but it helps to get started.&lt;/p&gt;

&lt;p&gt;Vim have different operation modes, and I will not cover all of them in this cheat sheet. I'll stick with the basic functionality needed to open, edit and save a file.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yZZcTg62--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/w5qnqe9o4o2foa0q8yl6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yZZcTg62--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/w5qnqe9o4o2foa0q8yl6.png" alt="vim-logo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's begin! To open a file with Vim just type &lt;code&gt;vim filename&lt;/code&gt;.&lt;br&gt;&lt;br&gt;
&lt;code&gt;ESC&lt;/code&gt; = enter "command mode"&lt;/p&gt;

&lt;h5&gt;
  
  
  Move the cursor
&lt;/h5&gt;

&lt;p&gt;You can use the arrow keys to move the cursor around. There is also special keys to do this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;h&lt;/code&gt; = move one character left
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;j&lt;/code&gt; = move one row down&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;k&lt;/code&gt; = move one row up&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;l&lt;/code&gt; = move one character right&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;
  
  
  Edition Mode
&lt;/h5&gt;

&lt;p&gt;The following keys have to be typed in "Command Mode".&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;i&lt;/code&gt; = insert text in the cursor position&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;I&lt;/code&gt; = insert text in the begin of the line&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;o&lt;/code&gt; = insert text in the next line&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;O&lt;/code&gt; = insert text in the previous line&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;a&lt;/code&gt; = insert a character after the current&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;A&lt;/code&gt; = insert text at the end of the line&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;r&lt;/code&gt; = replace the character at the current cursor position&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;R&lt;/code&gt; = enter replace mode to replace characters from the current cursor position&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;u&lt;/code&gt; = undo last action&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;CTRL + r&lt;/code&gt; = redo&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;
  
  
  Saving &amp;amp; Exiting
&lt;/h5&gt;

&lt;p&gt;The following keys have to be typed in "Command Mode".&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;:w&lt;/code&gt; = Save&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;:q&lt;/code&gt; = Exit&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;:q!&lt;/code&gt; = Force exit (exit without saving)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;:qa&lt;/code&gt; = Exit from all opened files&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;:wq&lt;/code&gt; = Save and exit&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;:x&lt;/code&gt; = Save and exit&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ZZ&lt;/code&gt; = Save and exit&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ZQ&lt;/code&gt; = Force exit (exit without saving)&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;
  
  
  Copy, paste &amp;amp; cut
&lt;/h5&gt;

&lt;p&gt;The following keys have to be typed in "Command Mode".&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;yy&lt;/code&gt; = copy line&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;p&lt;/code&gt; = paste content to the below line&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;P&lt;/code&gt; = paste content to the above line&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;yNy&lt;/code&gt; = copy N lines&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cw&lt;/code&gt; = cut the word starting from the current cursor position&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;dd&lt;/code&gt; = cut or delete a line&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;D&lt;/code&gt; = delete the line starting from the current cursor position&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;dG&lt;/code&gt; = delete the lines starting from the current cursor position to the end of the file&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;dGG&lt;/code&gt; = delete the lines starting from the current cursor position to the begin of the file&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;dw&lt;/code&gt; = delete the word starting from the current cursor position&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;dNd&lt;/code&gt; = cut or delete N lines&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;x&lt;/code&gt; = delete a character at the current cursor position (similar to "delete" key behaviour)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;X&lt;/code&gt; = delete a character before the current cursor position (similar to "backspace" key behaviour)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;yw&lt;/code&gt; = copy the word starting from the current cursor position&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;
  
  
  Visual Mode
&lt;/h5&gt;

&lt;p&gt;The following keys have to be typed in "Command Mode".&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;v&lt;/code&gt; = visual mode that allows to select a text fragment&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;V&lt;/code&gt; = visual mode that allows to select an entire line&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;CTRL+v&lt;/code&gt; = visual block that allows select a block of text&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;
  
  
  Navigation
&lt;/h5&gt;

&lt;p&gt;The following keys have to be typed in "Command Mode".&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/pattern&lt;/code&gt; = search forward for a patter&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;?pattern&lt;/code&gt; = search backward for a pattern&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;n&lt;/code&gt; = pattern forward search&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;N&lt;/code&gt; = pattern backward search&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;gg&lt;/code&gt; = goes to the first line of the file&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;G&lt;/code&gt; = goes to the last line of the file&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;H&lt;/code&gt; = goes to the top of the current screen&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;M&lt;/code&gt; = goes to the middle of the current screen&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;L&lt;/code&gt; = goes to the end of the current screen&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;
  
  
  Commands
&lt;/h5&gt;

&lt;p&gt;The following keys have to be typed in "Command Mode".&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;:set hlsearch&lt;/code&gt; = enable search highlight&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;:set number&lt;/code&gt; = show line numbers&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;:set tabstop=N&lt;/code&gt; = set the size of TAB to N&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;:set expandtab&lt;/code&gt; = convert TAB in spaces&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;:set bg=dark/light&lt;/code&gt; = change the color scheme&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;:set ignorecase&lt;/code&gt; = makes the search case insensitive&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;:syntax on/off&lt;/code&gt; = enable/disable syntax highlighting&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;:LNs/tobereplaced/replacer/g&lt;/code&gt; = replaces(s) all(g) &lt;em&gt;tobereplaced&lt;/em&gt; with &lt;em&gt;replacer&lt;/em&gt; in the line LN&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;:%s/tobereplaced/replacer/g&lt;/code&gt; = replaces(s) all(g) &lt;em&gt;tobereplaced&lt;/em&gt; with &lt;em&gt;replacer&lt;/em&gt; in the entire file&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;:e filename&lt;/code&gt; = opens "filename"&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;:r filename&lt;/code&gt; = copy the contents of the "filename" to the current file&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;:split filename&lt;/code&gt; = split screen horizontally to show the current file and "filename"&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;:vsplit filename&lt;/code&gt; = split screen vertically to show the current file and "filename"&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;:! command&lt;/code&gt; = runs "command" in shell and show the STDOUT&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;!! command&lt;/code&gt; = runs "command" in shell and paste the STDOUT in the file&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>vim</category>
      <category>linux</category>
      <category>editor</category>
    </item>
    <item>
      <title>Run Debian in Windows 10 with WSL 2</title>
      <dc:creator>Guilherme L. Leite Marques</dc:creator>
      <pubDate>Mon, 10 Aug 2020 00:44:27 +0000</pubDate>
      <link>https://dev.to/guinuxbr/run-debian-in-windows-10-with-wsl-2-3dkf</link>
      <guid>https://dev.to/guinuxbr/run-debian-in-windows-10-with-wsl-2-3dkf</guid>
      <description>&lt;p&gt;We use Windows in our workstations at my current job (it was not my choice 🙊), but there is a lot of tasks that are easier to do in a Linux environment. Some days ago I needed to manipulate a huge CSV and just thought: "This would be a lot simple with cat, grep, sort, etc.".&lt;/p&gt;

&lt;p&gt;So, I remember that I have read something about running Linux inside Windows using WSL and, well, why not give a try?&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting up the environment
&lt;/h2&gt;

&lt;p&gt;Some considerations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;WSL 2 is only available in Windows 10, Version 2004, Build 19041 or higher. Check your Windows version by selecting the Windows logo key + R, type &lt;code&gt;winver&lt;/code&gt;, select OK.&lt;/li&gt;
&lt;li&gt;All Windows commands should be typed in a PowerShell session with administrative privileges unless otherwise specified (right-click in the PowerShell icon and choose "Run as administrator").&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here we go! Since I'm a command-line lover and do not have a Microsoft account to access Microsoft Store, I'll do this from there as much as possible. First, let's install a decent terminal emulator and Microsoft is doing a good job with &lt;a href="https://github.com/microsoft/terminal"&gt;Windows Terminal&lt;/a&gt;. I have downloaded v1.1.2021.0 and renamed it to &lt;strong&gt;WindowsTerminal.msixbundle&lt;/strong&gt;. This is the latest version at the time of writing. The installation is pretty straight forward, just open a PowerShell instance, navigate to the directory where the executable was downloaded and type:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;.\WindowsTerminal.msixbundle&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now, click in Instal and wait a few seconds to the windows of Windows Terminal show up. Close this window for now, we need to open it as Administrator soon.&lt;/p&gt;

&lt;p&gt;The next step is to enable WSL. Use the same method stated at the top of the article to launch an instance of Windows Terminal with administrative privileges (damn, I wish that there was a "&lt;code&gt;sudo&lt;/code&gt;" for this. Maybe Microsoft can launch an "&lt;code&gt;addo&lt;/code&gt;" 🙃). Observe that should have a "PS" before your prompt, this indicates that you are in a PowerShell session. Now type:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The 'Virtual Machine Platform' is needed to run WSL 2. To enable it, just type:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You should see "&lt;em&gt;The operation completed successfully.&lt;/em&gt;" to both commands. Now reboot your computer.&lt;/p&gt;

&lt;p&gt;Once rebooted, open Windows Terminal again and set WSL2 as default:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;wsl --set-default-version&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you already have a distribution installed and like to convert it to use WSL2, this is possible. First, check the current status.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;wsl --list --verbose&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The above command will show a list of installed distributions separated by NAME, STATE, and VERSION. For instance, if you have an Ubuntu installation that is running at version 1 you can type:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;wsl --set-version Ubuntu 2&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You also can revert it to WSL 1 if you are not satisfied with the result, just change the version number.&lt;/p&gt;

&lt;h2&gt;
  
  
  Download and installation
&lt;/h2&gt;

&lt;p&gt;Now it is time to download the distribution that you wish to install. I chose Debian because it is very light and stable. Since Windows 10 Spring 2018 Update, &lt;code&gt;curl.exe&lt;/code&gt; is present, so let's use it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;curl.exe -L -o debian.appx &lt;a href="https://aka.ms/wsl-debian-gnulinux"&gt;https://aka.ms/wsl-debian-gnulinux&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The installation step is also quite simple.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Add-AppxPackage .\debian.appx&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A strange progress bar will be displayed. Once it disappears, it is done. Now Debian should be available in your applications menu, but don't click there, use the Windows Terminal do open a Debian session. On the right side of the tab, there is an arrow that hides all the possible sessions.&lt;br&gt;
Clicking on Debian will lead you to the user configuration screen. Choose your username and password and you are done.&lt;/p&gt;
&lt;h2&gt;
  
  
  Configuration
&lt;/h2&gt;

&lt;p&gt;Now, I recommend that you update installation:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;sudo apt update &amp;amp;&amp;amp; sudo apt upgrade&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Verify the version of Debian that was installed.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;cat /etc/os-release&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For an unknown reason by me, the downloaded image was still the Stretch version of Debian. No problem, let's update it to Debian Buster. First, make a backup of your &lt;em&gt;sources.list&lt;/em&gt; file.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now, replace every "stretch" entry with "buster". You can do this with &lt;code&gt;nano&lt;/code&gt; or &lt;code&gt;vi&lt;/code&gt; or directly with &lt;code&gt;sed&lt;/code&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;sudo sed -i 's/stretch/buster/g' /etc/apt/sources.list&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then update the system again.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;sudo apt update &amp;amp;&amp;amp; sudo apt upgrade &amp;amp;&amp;amp; sudo apt full-upgrade&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now get rid of obsolete packages in your system.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;sudo apt autoremove&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Close the Debian tab and open another one to check if you have installed Debian Buster with success.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;cat /etc/os-release&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You should see something like the below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h2&gt;
  
  
  Final considerations
&lt;/h2&gt;

&lt;p&gt;For a better file system performance, make sure to store your Linux project files in the Linux file system (not the Windows file system).&lt;br&gt;
It is probable that when you open a Debian session your prompt show something like: &lt;strong&gt;&lt;em&gt;username@hostname:/mnt/c/Users/username$&lt;/em&gt;&lt;/strong&gt; This is why WSL exposes the Windows file system through mount points placed in &lt;strong&gt;&lt;em&gt;/mnt&lt;/em&gt;&lt;/strong&gt; like &lt;strong&gt;&lt;em&gt;/mnt/c&lt;/em&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;em&gt;/mnt/d&lt;/em&gt;&lt;/strong&gt; just type &lt;code&gt;cd ~&lt;/code&gt; to go to your real home.&lt;/p&gt;

&lt;p&gt;Not only the file system of Windows is exposed by WSL, but you can use Windows applications too, try to type &lt;code&gt;explorer.exe .&lt;/code&gt; As you can see, Windows Explorer will open with the files of your current directory loaded.&lt;/p&gt;

&lt;p&gt;That is it, everything is set up and ready to use.&lt;/p&gt;

</description>
      <category>wsl</category>
      <category>linux</category>
    </item>
    <item>
      <title>Increase productivity in terminal with Zsh, Oh-My-Zsh and Starship</title>
      <dc:creator>Guilherme L. Leite Marques</dc:creator>
      <pubDate>Mon, 10 Aug 2020 00:32:48 +0000</pubDate>
      <link>https://dev.to/guinuxbr/increase-productivity-in-terminal-with-zsh-oh-my-zsh-and-starship-8ap</link>
      <guid>https://dev.to/guinuxbr/increase-productivity-in-terminal-with-zsh-oh-my-zsh-and-starship-8ap</guid>
      <description>&lt;p&gt;The objective of this article is to share my shell setup with you.&lt;br&gt;
I think that my job and day to day tasks became easier and more productive than using the "normal" &lt;em&gt;bash&lt;/em&gt;. I hope that it helps you.  &lt;/p&gt;

&lt;p&gt;You will need the following tools:  &lt;/p&gt;

&lt;p&gt;&lt;a href="http://zsh.sourceforge.net/"&gt;Zsh&lt;/a&gt; - The Z shell.&lt;br&gt;&lt;br&gt;
&lt;a href="https://ohmyz.sh/"&gt;Oh-My-Zsh&lt;/a&gt; - A framework for managing your Zsh configuration.&lt;br&gt;&lt;br&gt;
&lt;a href="https://starship.rs/"&gt;Starship&lt;/a&gt; - A fast and customizable prompt for any shell!  &lt;/p&gt;

&lt;p&gt;I assume that you already have &lt;em&gt;git&lt;/em&gt; installed and have a little knowledge of using it to clone repositories.&lt;/p&gt;
&lt;h2&gt;
  
  
  Installing Zsh
&lt;/h2&gt;

&lt;p&gt;First, you need to install Zsh. You can use your distribution package manager to install it easily.&lt;/p&gt;

&lt;p&gt;For openSUSE:  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;sudo zypper install zsh  &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For Ubuntu:  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;sudo apt install zsh  &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For Fedora:  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;sudo dnf install zsh&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;After this you should set Zsh as your default shell:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;chsh -s $(which zsh)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now reboot your machine.&lt;/p&gt;
&lt;h2&gt;
  
  
  Installing Oh-My-Zsh
&lt;/h2&gt;

&lt;p&gt;After rebooting, open your terminal and you should now be prompted by a Zsh configuration wizard. At this time you can just type &lt;strong&gt;q&lt;/strong&gt; and &lt;strong&gt;ENTER&lt;/strong&gt; because you will install and configure Oh-My-Zsh and it will install a &lt;em&gt;.zshrc&lt;/em&gt; template for us:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;curl or wget should be installed.
&lt;/li&gt;
&lt;li&gt;git should be installed.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;sh -c "$(wget -O- &lt;a href="https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh"&gt;https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh&lt;/a&gt;)"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If Oh-My-Zsh was successfully installed, you should see that your prompt changes to a green one. The template configuration file is &lt;em&gt;~/.zshrc&lt;/em&gt; and it gives you tons of possibilities to configure your shell behaviour, like prompt themes and plugins.&lt;/p&gt;
&lt;h2&gt;
  
  
  Loading some plugins
&lt;/h2&gt;

&lt;p&gt;There is a lot of configurations that can be made in Zsh + Oh-My-Zsh, here I'll just talk about a list of cool plugins that I use, but you can dive deeper to discover more possibilities.&lt;br&gt;
Plugins should be placed in plugins=(...) session of the configuration file. I use the following:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;plugin name&lt;/th&gt;
&lt;th&gt;brief description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;colored-man-pages&lt;/td&gt;
&lt;td&gt;adds colors to man pages&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;command-not-found&lt;/td&gt;
&lt;td&gt;uses the command-not-found package for Zsh to provide suggested packages&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;docker&lt;/td&gt;
&lt;td&gt;adds auto-completion for docker&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;git&lt;/td&gt;
&lt;td&gt;provides many aliases and a few useful functions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;npm&lt;/td&gt;
&lt;td&gt;provides completion as well as adding many useful aliases&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pep8&lt;/td&gt;
&lt;td&gt;adds completion for pep8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pip&lt;/td&gt;
&lt;td&gt;adds completion for pip&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pyenv&lt;/td&gt;
&lt;td&gt;loads pyenv and pyenv-virtualenv&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;python&lt;/td&gt;
&lt;td&gt;adds several aliases for useful python commands&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sudo&lt;/td&gt;
&lt;td&gt;prefix your current or previous commands with sudo by pressing esc twice&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;systemd&lt;/td&gt;
&lt;td&gt;provides many useful aliases for systemd&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ubuntu&lt;/td&gt;
&lt;td&gt;This plugin adds completions and aliases for Ubuntu&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;zsh_reload&lt;/td&gt;
&lt;td&gt;type &lt;em&gt;src&lt;/em&gt; to reload Zsh session&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;zsh-autosuggestions&lt;/td&gt;
&lt;td&gt;suggests commands as you type based on history and completions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;zsh-syntax-highlighting&lt;/td&gt;
&lt;td&gt;package provides syntax highlighting&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;You can always go to &lt;a href="https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins"&gt;https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins&lt;/a&gt; to see a complete list of plugins and their respective documentation.&lt;/p&gt;

&lt;p&gt;The last two plugins of my list aren't part of the default Oh-My-Zsh installation and should be installed separately. Maybe you can install it with your distribution package manager, but I do prefer to install via Github to take advantage of possible new features.&lt;/p&gt;

&lt;p&gt;As you are using Oh-My-Zsh as a plugin manager, and the plugins are already enabled in our &lt;em&gt;.zshrc&lt;/em&gt; file, all you have to do is clone the project repository to our &lt;em&gt;$ZSH_CUSTOM&lt;/em&gt; directory.&lt;br&gt;
Just type the following commands.&lt;br&gt;
For &lt;em&gt;zsh-autosuggestions&lt;/em&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;git clone &lt;a href="https://github.com/zsh-users/zsh-autosuggestions"&gt;https://github.com/zsh-users/zsh-autosuggestions&lt;/a&gt; ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And for zsh-syntax-highlighting:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;git clone &lt;a href="https://github.com/zsh-users/zsh-syntax-highlighting.git"&gt;https://github.com/zsh-users/zsh-syntax-highlighting.git&lt;/a&gt; ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  Installing a better font
&lt;/h2&gt;

&lt;p&gt;For better support icons and symbols, you have to install a modern font like Nerd Fonts. I use the Meslo, but you can choose your own and test it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/ryanoasis/nerd-fonts/releases/download/v2.1.0/Meslo.zip"&gt;Meslo Nerd Fonts&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now you have to configure your terminal emulator to use Meslo Nerd Fonts.&lt;/p&gt;
&lt;h2&gt;
  
  
  Theming the prompt with Starship
&lt;/h2&gt;

&lt;p&gt;To finish the task, the last step is to install Starship that will bring a lot of goodies to our Zsh shell.&lt;br&gt;
The installation is very simple, just type:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;curl should be installed.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;curl -fsSL &lt;a href="https://starship.rs/install.sh"&gt;https://starship.rs/install.sh&lt;/a&gt; | zsh&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Once installed, you have to enable it. Just place the following line at the end &lt;em&gt;~/.zshrc&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;eval "$(starship init zsh)"  &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It is a good idea to comment out the &lt;em&gt;ZSH_THEME&lt;/em&gt; entry in &lt;em&gt;~/.zshrc&lt;/em&gt;  &lt;/p&gt;
&lt;h2&gt;
  
  
  Configuring Starship
&lt;/h2&gt;

&lt;p&gt;The configuration of Starship is easy to understand. First, you need to create de &lt;em&gt;starship.toml&lt;/em&gt; file. It should be placed inside &lt;em&gt;~/.config&lt;/em&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;mkdir -p ~/.config &amp;amp;&amp;amp; touch ~/.config/starship.toml&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;After this, you have to fill the file with the options that you wish to change the default setup. By the way, the default setup is quite cool! As the configuration is a &lt;em&gt;.toml&lt;/em&gt; file, all the options are of the type &lt;em&gt;key : value&lt;/em&gt;, pretty intuitive.&lt;/p&gt;

&lt;p&gt;The detailed information about every option is well described at the &lt;a href="https://starship.rs/config/"&gt;official documentation&lt;/a&gt;. However, I paste the one that I'm using to serve as a reference for you.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="py"&gt;add_newline&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;

&lt;span class="py"&gt;prompt_order&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="s"&gt;"username"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"memory_usage"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"hostname"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"kubernetes"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"directory"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"git_branch"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"git_commit"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"git_state"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"git_status"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"hg_branch"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"package"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"dotnet"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"elixir"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"elm"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"golang"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"haskell"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"java"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"nodejs"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"python"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"ruby"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"rust"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"terraform"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"nix_shell"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"conda"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"aws"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"env_var"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"crystal"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"line_break"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"battery"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"cmd_duration"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"jobs"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"time"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"character"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="nn"&gt;[battery]&lt;/span&gt;
&lt;span class="py"&gt;full_symbol&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"🔋"&lt;/span&gt;
&lt;span class="py"&gt;charging_symbol&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"⚡️"&lt;/span&gt;
&lt;span class="py"&gt;discharging_symbol&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"💀"&lt;/span&gt;

&lt;span class="nn"&gt;[[battery.display]]&lt;/span&gt;
&lt;span class="py"&gt;threshold&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;span class="py"&gt;style&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"bold red"&lt;/span&gt;

&lt;span class="nn"&gt;[[battery.display]]&lt;/span&gt;
&lt;span class="py"&gt;threshold&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt;
&lt;span class="py"&gt;style&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"bold yellow"&lt;/span&gt;

&lt;span class="nn"&gt;[[battery.display]]&lt;/span&gt;
&lt;span class="py"&gt;threshold&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;
&lt;span class="py"&gt;style&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"bold green"&lt;/span&gt;

&lt;span class="nn"&gt;[character]&lt;/span&gt;
&lt;span class="c"&gt;# symbol = "➜"&lt;/span&gt;
&lt;span class="py"&gt;error_symbol&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"✗"&lt;/span&gt;
&lt;span class="py"&gt;use_symbol_for_status&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;

&lt;span class="nn"&gt;[cmd_duration]&lt;/span&gt;
&lt;span class="py"&gt;min_time&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;
&lt;span class="py"&gt;prefix&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"tooks "&lt;/span&gt;

&lt;span class="nn"&gt;[directory]&lt;/span&gt;
&lt;span class="py"&gt;truncation_length&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;
&lt;span class="py"&gt;truncate_to_repo&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="py"&gt;prefix&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"in "&lt;/span&gt;
&lt;span class="py"&gt;style&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"bold cyan"&lt;/span&gt;
&lt;span class="py"&gt;disabled&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;

&lt;span class="c"&gt;# [env_var]&lt;/span&gt;
&lt;span class="c"&gt;# variable = "SHELL"&lt;/span&gt;
&lt;span class="c"&gt;# default = "Zsh"&lt;/span&gt;
&lt;span class="c"&gt;# prefix = "&amp;lt;"&lt;/span&gt;
&lt;span class="c"&gt;# suffix = "&amp;gt;"&lt;/span&gt;

&lt;span class="nn"&gt;[git_branch]&lt;/span&gt;
&lt;span class="c"&gt;# symbol = "🌱 "&lt;/span&gt;
&lt;span class="py"&gt;truncation_length&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;
&lt;span class="py"&gt;truncation_symbol&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"..."&lt;/span&gt;
&lt;span class="py"&gt;style&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"bold purple"&lt;/span&gt;
&lt;span class="py"&gt;disabled&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;

&lt;span class="nn"&gt;[git_state]&lt;/span&gt;
&lt;span class="py"&gt;cherry_pick&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"CHERRY PICKING"&lt;/span&gt;
&lt;span class="py"&gt;rebase&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"REBASING"&lt;/span&gt;
&lt;span class="py"&gt;merge&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"MERGING"&lt;/span&gt;
&lt;span class="py"&gt;revert&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"REVERTING"&lt;/span&gt;
&lt;span class="py"&gt;bisect&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"BISECTING"&lt;/span&gt;
&lt;span class="py"&gt;am&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"AM"&lt;/span&gt;
&lt;span class="py"&gt;am_or_rebase&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"AM/REBASE"&lt;/span&gt;
&lt;span class="py"&gt;progress_divider&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;" of "&lt;/span&gt;
&lt;span class="py"&gt;style&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"bold yellow"&lt;/span&gt;
&lt;span class="py"&gt;disabled&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;

&lt;span class="c"&gt;# [git_status]&lt;/span&gt;
&lt;span class="c"&gt;# conflicted = "🏳"&lt;/span&gt;
&lt;span class="c"&gt;# ahead = "🏎💨"&lt;/span&gt;
&lt;span class="c"&gt;# behind = "😰"&lt;/span&gt;
&lt;span class="c"&gt;# diverged = "😵"&lt;/span&gt;
&lt;span class="c"&gt;# untracked = "🤷‍"&lt;/span&gt;
&lt;span class="c"&gt;# stashed = "📦"&lt;/span&gt;
&lt;span class="c"&gt;# modified = "📝"&lt;/span&gt;
&lt;span class="c"&gt;# staged.value = "++"&lt;/span&gt;
&lt;span class="c"&gt;# staged.style = "green"&lt;/span&gt;
&lt;span class="c"&gt;# staged_count.enabled = true&lt;/span&gt;
&lt;span class="c"&gt;# staged_count.style = "green"&lt;/span&gt;
&lt;span class="c"&gt;# renamed = "👅"&lt;/span&gt;
&lt;span class="c"&gt;# deleted = "🗑"&lt;/span&gt;

&lt;span class="c"&gt;# [[git_status.count]]&lt;/span&gt;
&lt;span class="c"&gt;# enabled = true&lt;/span&gt;

&lt;span class="nn"&gt;[hostname]&lt;/span&gt;
&lt;span class="py"&gt;ssh_only&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;span class="py"&gt;prefix&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"🤖"&lt;/span&gt;
&lt;span class="c"&gt;# suffix = "⟫"&lt;/span&gt;
&lt;span class="py"&gt;trim_at&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"."&lt;/span&gt;
&lt;span class="py"&gt;disabled&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;

&lt;span class="c"&gt;# [jobs]&lt;/span&gt;
&lt;span class="c"&gt;# symbol = "+ "&lt;/span&gt;
&lt;span class="c"&gt;# threshold = 1&lt;/span&gt;

&lt;span class="nn"&gt;[line_break]&lt;/span&gt;
&lt;span class="py"&gt;disabled&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;

&lt;span class="c"&gt;# [memory_usage]&lt;/span&gt;
&lt;span class="c"&gt;# disabled = false&lt;/span&gt;
&lt;span class="c"&gt;# show_percentage = true&lt;/span&gt;
&lt;span class="c"&gt;# show_swap = false&lt;/span&gt;
&lt;span class="c"&gt;# threshold = -1&lt;/span&gt;
&lt;span class="c"&gt;# symbol = " "&lt;/span&gt;
&lt;span class="c"&gt;# separator = "/"&lt;/span&gt;
&lt;span class="c"&gt;# style = "bold dimmed white"&lt;/span&gt;

&lt;span class="nn"&gt;[nodejs]&lt;/span&gt;
&lt;span class="py"&gt;symbol&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"⬢ "&lt;/span&gt;
&lt;span class="py"&gt;style&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"bold green"&lt;/span&gt;
&lt;span class="py"&gt;disabled&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;

&lt;span class="c"&gt;# [package]&lt;/span&gt;
&lt;span class="c"&gt;# symbol = "📦 "&lt;/span&gt;
&lt;span class="c"&gt;# style = "bold red"&lt;/span&gt;
&lt;span class="c"&gt;# disabled = false&lt;/span&gt;

&lt;span class="nn"&gt;[python]&lt;/span&gt;
&lt;span class="py"&gt;symbol&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"🐍 "&lt;/span&gt;
&lt;span class="py"&gt;pyenv_version_name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;span class="py"&gt;pyenv_prefix&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"pyenv"&lt;/span&gt;
&lt;span class="py"&gt;style&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"bold yellow"&lt;/span&gt;
&lt;span class="py"&gt;disabled&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;

&lt;span class="c"&gt;# [time]&lt;/span&gt;
&lt;span class="c"&gt;# format = "🕙%T"&lt;/span&gt;
&lt;span class="c"&gt;# style_root = "bold red"&lt;/span&gt;
&lt;span class="c"&gt;# style_user = "bold yellow"&lt;/span&gt;
&lt;span class="c"&gt;# show_always = true&lt;/span&gt;
&lt;span class="c"&gt;# disabled = false&lt;/span&gt;

&lt;span class="nn"&gt;[username]&lt;/span&gt;
&lt;span class="py"&gt;style_root&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"bold red"&lt;/span&gt;
&lt;span class="py"&gt;style_user&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"bold yellow"&lt;/span&gt;
&lt;span class="py"&gt;show_always&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;span class="py"&gt;disabled&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Close and reopen your terminal to see the results. Cool! Isn't it?!&lt;/p&gt;

&lt;p&gt;That's it! I hope this article can be useful. Thanks for reading!&lt;/p&gt;

</description>
      <category>bash</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Convert OVA to QCOW2</title>
      <dc:creator>Guilherme L. Leite Marques</dc:creator>
      <pubDate>Mon, 10 Aug 2020 00:21:09 +0000</pubDate>
      <link>https://dev.to/guinuxbr/convert-ova-to-qcow2-48f2</link>
      <guid>https://dev.to/guinuxbr/convert-ova-to-qcow2-48f2</guid>
      <description>&lt;p&gt;Hello! In this quick tutorial, I will show you how to convert OVA file to a QCOW2.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fzszxmxzt44sks8q5y7b8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fzszxmxzt44sks8q5y7b8.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A few days ago I have to install Windows in a virtual environment to test some stuff. Then, I found that Microsoft provides some test images officially at &lt;a href="https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/" rel="noopener noreferrer"&gt;https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/&lt;/a&gt; but there are no images to use with KVM. So, what if it would be possible to convert some of the provided formats to a KVM compatible format?&lt;/p&gt;

&lt;p&gt;Well, this is possible and much easier than I thought it was. Follow me!&lt;/p&gt;

&lt;p&gt;First, we have to extract the files from the OVA file.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;tar -xvf MSEdge-Win10.ova&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;An OVA file is an Open Virtualization Appliance that contains a compressed version of a virtual machine. Now we have two files: the MSEdge - Win10-disk001.vmdk and the MSEdge - Win10.ovf. To convert the .vmdk file to a .qcow2 file to import into KVM we just have to use the qemu-img command as follows.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;qemu-img convert MSEdge-Win10-disk001.vmdk the_name_you_want.qcow2 -O qcow2&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Observe that I've renamed the file MSEdge - Win10-disk001.vmdk to remove the blank spaces. I always try to do this before work with files in the command line.&lt;/p&gt;

&lt;p&gt;That's it! Now we can just move our converted the_name_you_want.qcow2 to the images directory that is usually /var/lib/libvirt/images, but you can place it wherever you wish and import it.&lt;/p&gt;

</description>
      <category>hypervisor</category>
      <category>kvm</category>
      <category>virtualization</category>
    </item>
  </channel>
</rss>
