Switching to Arch Linux
Tags: linux, opensource, productivity
Published: 2021-02-23 11:34:13

---
title: Switching to Arch Linux
description: As software developers, many of us heavily rely on Windows for our daily jobs. But a few months ago, I decided to give Linux another shot. In this article, I talk about how I manage to replace many of my daily tools to work on Linux.
tags: linux, opensource, productivity
cover_image: https://i.imgur.com/3a26Ixo.png
published: true
canonical_url: https://maurogarcia.dev/posts/switching-to-arch-linux/
---

> # Full disclaimer
> I don't hate Windows. It's a great operating system, and I've been using it for decades. And it's totally ok if you use it too. In fact, you may need to use Windows or Mac if your work depends on tools that are not available on Linux. 

Even though I tried Linux many years ago, I always returned to Windows for different reasons (mostly work and gaming). But my desire to leave Windows behind has grown on me recently, mainly because I've been learning more about the free software movement (free as in freedom).

Like many of you, I want to get things done, and the idea of having to spend weeks learning how to use a new operating system didn't sound appealing to me. That's why I decided to change my point of view and see it as an occasional hobby.
<br/>
💡 If you found this content valuable, you can follow me on [Twitter](https://twitter.com/mauro_codes) and [Instagram](https://www.instagram.com/mauro.codes/).
<br/>
# Early experiments

After dual-booting Windows 10 and Manjaro Linux, I started to spend a few hours a week doing small experiments within Manjaro. Three months later, and with a better understanding of both the operating system in general and the Linux terminal, I decided to try ArcoLinux and spend even more time on Linux.

# Finding the right tools
My main concern when switching to Linux was not being able to do my job. I use a few tools every day (like Figma or Notion) that I thought could not be used on Linux. But after some research and experimentation, I managed to get all of those tools working. 

So I decided to share a list of tools/projects/apps I found that enabled me to do my daily job with Linux. A few apps are not strictly required for my job, but they highly improved my experience and boosted my productivity.
<br/>

## i3 Window Manager
![i3 Window Manager](https://i.imgur.com/FvmHfhR.png)
After doing some research, I learn that there are unlimited customization options for your desktop environment on Linux. You can use a full desktop environment like GNOME, KDE, Mate, Cinnamon, or you can use Window Managers.

Window Managers are only one of the many components of a desktop environment, and its objective is to control where elements appear on the display. Because I wanted to fully customize my setup (and get a deeper understanding of Linux), I decided to start using i3.

There are dozens of options out there (xmonad, qtile, dwm, Awesome, Openbox, etc.), but I stick with i3 because it's easy to customize.

I really love Window Managers because it allows you to move through different windows without leaving the keyboard. Once you get used to them, there is no going back.

I managed to set up i3 to work with different workspaces on each monitor and open certain apps like VSCode on a specific workspace. In that way, I always have my browser on my left monitor and my code editor on the right one.

To learn more about i3, [follow this link](https://i3wm.org/)
<br/>
## Feh
Feh is a lightweight and versatile image viewer. I'm using it to set up my wallpapers on my i3 config file. You may not need this tool if you're using a full desktop environment instead of a window manager like i3. If you want to learn more about Feh, [follow this link](https://github.com/derf/feh)
<br/>
## Polybar
I wanted to have a custom status bar for my i3 window manager, so after some research, I found Polybar. Polybar is a powerful open-source tool that aims to help users build beautiful and highly customizable status bars for their desktop environment.⁣⁣

Even though I'm an absolute noob to Polybar, I spend some time customizing my bar to look like this:
![Polybar custom setup](https://i.imgur.com/TBwWHSn.png)
![Polybar status bar](https://i.imgur.com/TtNSUZc.png)

One of the things I love about Polybar is that it's modular. Meaning that there are tons of out-of-the-box modules you can add to your bar without prior scripting knowledge.⁣⁣ Besides, you can create your own module if you want, and the documentation for the out-of-the-box modules is fantastic.

To learn more about Polybar, [follow this link](https://github.com/polybar/polybar)
<br/>
## Flameshot
Flameshot is the best substitute for the Windows Snipping Tool. It's a powerful yet simple to use screenshot utility. Here you can see an example of how many things you can do with it.

![Flameshot screenshot software](https://flameshot.org/media/animatedUsage.gif)

If you want to learn more about Flameshot, [follow this link](https://github.com/flameshot-org/flameshot)
<br/>
## Vysor
I've been working a lot with React Native, and I needed reliable software that lets me cast my phone screen on my desktop environment to control my phone without having to deal with the touch keyboard. Besides, sometimes I need to show a demo of the apps I'm working on, so having the ability to run this tool on Linux was kind of a deal-breaker for me. 

After doing some research, I managed to compile the app following the instructions available on GitHub.

Here's Vysor, running on my ArcoLinux and casting the screen of my Android Phone:

![Vysor working on ArcoLinux](https://i.imgur.com/narDl1c.png)

To learn more about Vysor, [follow this link](https://github.com/koush/vysor.io)

<br/>
## Peek
There's a tool called [ScreenToGif](https://www.screentogif.com/) that I use a lot on Windows. It allows me to record animated gifs to share on social media quickly. Sadly, it's not available for Linux. Thankfully I found Peek. 
Peek is a super simple-to-use gif/video recorder. It's not a general-purpose screencast app with extended features but instead focuses on the single task of creating small screencasts of an area of the screen.

Here's an example of a GIF generated using Peek.
![Example of gif generated using Peek](https://i.imgur.com/BUDmNwg.gif)

To learn more about Peek, [follow this link](https://github.com/phw/peek#about)
<br/>
## OBS
Open Broadcaster Software (OBS) is a free and open-source, cross-platform streaming and recording program. If you're producing content for YouTube or streaming on Twitch, this program has pretty much everything you'll need to start. [Follow this link](https://obsproject.com/wiki/Home) to learn more about the project.
<br/>
## Alacritty (Terminal Emulator)
Alacritty is a modern terminal emulator that allows extensive configuration, and it's a GPU-Accelerated Terminal, so it is known for having a good performance. To learn more about Alacritty, [follow this link](https://github.com/alacritty/alacritty).

![Alacritty Terminal Emulator](https://i.imgur.com/9s1Bz5e.png)
<br/>
## Brave browser
I really love Brave. It's privacy-focused, it's open-source, and it pays you with crypto if you accept to see sponsored ads occasionally. Besides, it's based on Chromium, so the developer tools are excellent. You can learn more about Brave on its [official website](https://brave.com/)
<br/>
## Spotify
Even though you can't download Spotify for Linux from the official website, you can get Spotify using the Snap package management system. Just type `snap install spotify` on your terminal, and you're ready to go. Now you can listen to your favorite music on Linux.

### Spotify-TUI
If you are into Terminal user interfaces like me, you'll really enjoy [Spotify-TUI](https://github.com/Rigellute/spotify-tui)
![Spotify Terminal User Interface](https://user-images.githubusercontent.com/12150276/75177190-91d4ab00-572d-11ea-80bd-c5e28c7b17ad.gif)
<br/>
## Lotion (unofficial Notion app for Linux)
Lotion was an unexpected but cool surprise. I found this fantastic project [on GitHub](https://github.com/puneetsl/lotion). It's super easy to install, and it just works!

![Lotion - Notion unofficial client for Linux](https://i.imgur.com/2fucC16.png)
<br/>
## Figma-Linux
Figma-Linux is an unofficial electron-based Figma desktop app for Linux. You can easily install it using the snap package management tool.
![Figma-Linux: Unofficial Figma client for Linux](https://i.imgur.com/z33EH9a.png)

To learn more about the project, visit the [GitHub repo](https://github.com/Figma-Linux/figma-linux)
<br/>
## VSCode
There's no much to say here. VSCode is my favorite IDE, and it's multi-platform. So, if you're working with VSCode on Windows, just know that the Linux client has precisely the same features.
You can find more specific instruction for installation based on your Linux distribution here [in the official VSCode documentation](https://code.visualstudio.com/docs/setup/linux)
<br/>
## Docker
Docker is my daily driver to work with things like MongoDB and SQL Server on Linux. Docker is multi-platform, and you can use it on Linux. If you heavily rely on Docker for your daily job, know that you won't find any limitations while using it on Linux.
<br/>
# Final thoughts
I wanted to share my experience in case you're thinking about trying Linux, but you're not sure if that time invested will pay off. 
At least for me, Linux has improved my work experience by letting me customize every single piece of the environment. And that's enough for me to keep learning and tweaking.

---
### Did you do your daily work on Linux? What's your favorite distro and why?

### I would love to hear about your experience with other Window Managers, so let me know if you tried anyone besides i3.