My experience with linux
Tags: linux, systems, programming
Published: 2022-03-30 16:59:17

When I started programming the operating system I used was Windows, but I was interested in **learning linux**, I started with Ubuntu, this distribution is the first step for all users. Ubuntu is very easy to learn, because the graphical interface is similar to Windows. 

There I learned the basic commands, create files, edit files, create folders, assign permissions to users, create bash scripts, manage processes, etc. One of the main reasons I liked ubuntu is the customization, back then I was manipulating the main interface theme and the system icon pack, among other utilities. I used ubuntu for a period of 5 months, until I decided to try Arch Linux, here starts my adventure.


## Arch Linux the distro for experts


![Qtile](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2dqqeos7feq551hk363m.png)

One of the main reasons why I opted for Arch Linux, is the **absolute customization of the system,** the experience of installing everything from scratch was a challenge for me, but I learned a lot in the process, in Arch I use a tiled window manager, which greatly facilitates the work, since I have several workspaces and move between them is relatively simple, another advantage of arch is the **low consumption of resources**, this is because we manage all programs and services running. In short Arch is about setting up your own working environment from scratch. The window manager I use is **Qtile**, below I leave a link to my configuration files in Github. 

[Qtile Config](https://github.com/fernandopr11/dotfiles-fernando)



## The Package Manager

**Package managers are one of the best things that any linux distribution has**, since it makes it easy to install all kinds of software, this is something that developers love, since it is not necessary to go to the page of each software product and download the mythical .exe and click next for the installation, we only need the name and that's it.  Arch in particular uses the pacman manager and also has the possibility to install **yay**, which allows you to install software from the arch user repository. 

Another thing I like about Arch and all linux distributions is that by creating **scripts we can automate the whole process of installing our environment** in case of migrating computer. 

## Terminal

![Terminal](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u34qf05juyce8rjkq5uw.png)


**The command line is undoubtedly one of the most important tools for developers**, this is where everything happens, from the creation of our projects, for example react with npm, to the deployment of our application to a hosting service, in particular I use the terminal emulator Alacritty, which is optimized by GPU, **which allows greater speed when executing commands**, and the shell is Fish. 

The prompt that you see in the image is possible thanks to Starship, here I can set various settings such as showing the version of the programming language I use in a project, the packages, and **the most spectacular is the integration with Git**, as it tells me all the states, ie if there are files not added to the stage area, the files that have been deleted, modified, the current branch in which I am, if there is already the possibility of push, etc. Here is the link to the official Starship documentation. 

[Starship](https://starship.rs/)