Arch Linux customization, a beginner’s guide (2024)

Customization guide for new people that want to customize their first Arch Linux environment

Arch Linux customization, a beginner’s guide (2)

This guide is made for people that want to customize Arch Linux for the first time and are a bit lost on what to do to make their distro look like the ones in the subreddit r/Unixp*rn. I’ll walk you though the things you need to know to make the choice yourself and customize your distro to your liking. I’ll also go through the installation process of my own customization as an example, that way it’ll be more clear on what to expect in the installation process when installing other programs. (This guide is also available in my dotfiles repository)

Arch Linux customization, a beginner’s guide (3)

Install Arch by following the installation steps in the Arch Linux official installation guide or use the ArchInstall package to automate the installation process. IMPORTANT: If you are installing Arch as a dual boot don’t follow this method. Follow one of these videos instead:

Also, if you can, I recommend you use a virtual machine first to get a feel on how Arch Linux works, that way you can mess up all you want without any fear.

Here are some virtual machines programs you can use:

  • VirtualBox is a free and open-source virtualization software that runs on Windows, macOS, and Linux. It is a popular choice for running Linux distros, as it is easy to use and supports a wide range of operating systems.
  • VMware Workstation is a paid virtualization software that runs on Windows and macOS. It is a more powerful option than VirtualBox, and it supports more features, such as nested virtualization and GPU passthrough.

To install Arch using the ArchInstall package and a VM, first load the image and start the VM, once it loads and you see a terminal you can check your internet connection by running:

ping -c 5 https://archlinux.org/

Then run this command:

python -m archinstall --script guided

You’ll see a promp giving you some options similar to this:

Arch Linux customization, a beginner’s guide (4)

Select the options that better work for you, but in my case and configuration these are the options:

  • language: English
  • keyboard layout: us
  • mirror region: Worldwide
  • harddrives: VM or partition hardrive here ext4, wipe all selected…
  • encryption pwd: encryption password None
  • bootloader: systemd-bootct1
  • swap: True
  • hostname: Name of the host machine
  • root pwd: rootpassword
  • user account: superuser name and password
  • profile: desktop -> i3 -> i3-gaps -> AMD/ATI (open-source)
  • audio: pipewire
  • kernel: linux
  • additional packages: firefox, vim, thunar
  • network: Copy ISO network conf…
  • timezone: your timezone
  • automatic time synch: true
  • Additional repos: multilib

After checking that the options are correct select ‘Install’. Go for a coffee ☕ and wait.

After finishing the installation process the script will ask you if you’d like to chroot into the newly created installation. Select no and reboot the machine by running:

reboot

Boot into Arch and you should be greeted by the login manager. Important: remember to remove the ISO file before booting into the machine again if you installed Arch in a VM.

Congrats, Arch is now installed 🎉

Arch Linux customization, a beginner’s guide (5)

If you are used to Windows, you know that until not long ago working with various programs was a pain due to the limited space in your screen. You had to manually resize the windows yourself and minimize the programs you were not using to make space for others. This is different in Unix based systems with the help of Tiling Windows Managers. These are programs that, as the name implies, manage your windows for you (size, spacing, keybinds, etc.). They are very efficient and do not consume a lot of resources. There are a lot of options to choose from, but the one I recommend for people that are starting is i3 since it’s very easy to customize and very well documented. From now on I’ll be using i3 as example but you can install the one you like the most.

In case you want to use other windows manager, here’s a list with other popular options:

  • Hyprland is a dynamic tiling window manager based on wlroots. It is highly customizable and offers a variety of features, such as smooth animations, rounded corners, and Dual-Kawase blur.
  • bspwm is another tiling window manager that is lightweight and fast. It is a good choice for users who want a powerful and customizable window manager.
  • Awesome is a dynamic tiling window manager that is highly customizable. It is a good choice for users who want a powerful and flexible window manager.

Due to the differences on installation for each one, I’ll not through the installation process. You can read their documentation on how to install each one. Take in account that the WMs that I list here are not the only ones that exists, there are a lot of options, but all do the same task.

Now, boot into session and you’ll see a black screen and a bar at the bottom of the screen, all in the incorrect resolution. i3 will then ask if you want a configuration to be created for you, select Yes and this will create a configuration file at .config/i3 named config where you can add your keybindings, exec commands, etc. If you want to familiarize yourself with the i3WM I'd recommend reading their user guide.

To fix the resolution open your terminal with Mod+enter and run this command (The Mod key is most likely your Windows key):

xrandr

This will give you a list with different screens and their resolutions, select the one that you wish to use and run this command:

xrandr --output *screen name here* --mode "resolution here"

Next, run this command to sync and upgrade all Arch packages:

sudo pacman -Syu

Also, if you wish to change your wallpaper run these commands:

sudo pacman -S feh
feh --bg-scale $HOME/Downloads/some-example-image.jpg

To make this changes permanent navigate to .config/i3 on your terminal and open in vim the config file that’s there. Then add these lines to the end of the file. (If you don’t know how to use vim use this cheat sheet)

exec --no-startup-id xrandr --output *screen-name* --mode "resolution here"
exec --no-startup-id feh --bg-scale $HOME/Downloads/some-example-image.jpg

Also, you might want to assign a keybind for opening a firefox window. To do so, paste this line into your configuration (the location does not matter but it’s a good idea to put all your keybindings after the kill focused window keybind, that way it's easier to spot them in the file).

bindsym $mod+Shift+b exec firefox --new-window

Now save the file and exit vim and test these changes by rebooting into Arch

reboot

We’ll need to install some packages to use the programs in this guide. Install the required packages by running:

sudo pacman -S ripgrep fzf xsel nodejs npm lazygit git python-pip thunar-archive-plugin zip stylua

In case you want to render Japanese characters install these fonts:

sudo pacman -S noto-fonts-cjk noto-fonts-emoji noto-fonts

In case you want to set a gif wallpaper, follow the instructions in this guide.

And add these two lines to your i3 configuration file (If you did not install the previous script, don’t add them, it will raise an error).

exec --no-startup-id killall back4.sh 
exec --no-startup-id sh back4.sh 0.025 ~/path/to/your-gif-file.gif
Arch Linux customization, a beginner’s guide (6)

AUR helpers automate usage of the Arch User Repository. These means that you can install packages maintained by the community or newer versions of a program that’s not updated in the official repository. But be careful as AUR helpers are not supported by Arch Linux.

There are various AUR helpers, but one popular choice is Yay (Yet another yogurt), a pacman wrapper to install AUR packages. You can visit the official github repository for the installation steps or run this command:

pacman -S --needed git base-devel && git clone https://aur.archlinux.org/yay.git && cd yay && makepkg -si

There are more AUR helpers here under the pacman wrappers section, you can install the one you like the most.

Arch Linux customization, a beginner’s guide (7)

To customize your terminal we will use a terminal emulator and a shell. A terminal emulator is a software program that allows you to interact with a computer’s command-line interface (CLI). It provides a text-based interface that you can use to run commands, navigate directories, and manage files.

There are various terminal emulators, but two of the most popular ones are:

  • Alacritty: a lightweight and fast terminal emulator that is focused on performance. It does not have as many features as some of the other terminal emulators on this list, but it is a good choice if you are looking for a terminal emulator that is fast and responsive.
  • Kitty: a fast, lightweight, and customizable terminal emulator. It supports a wide range of features, including tabs, panes, keyboard shortcuts, and a built-in file manager. Kitty is also highly customizable, and you can change its appearance and behavior to your liking.

I’ll be using Kitty as terminal emulator in this guide. Install it by running:

sudo pacman -S kitty

Then change the i3 configuration to open Kitty instead of the default terminal by adding this line to the i3 config file:

bindsym $mod+Return exec kitty

You can change Kitty's theme in .config/kitty/kitty.conf. In this repo there are some themes that might be of your interest.

After this we will need to install some Nerd fonts. Nerd fonts add glyphs and icons to your terminal, this will allow, for example, Neovim or Oh-my-zsh to render icons. Visit their page to learn more about them. To download a nerd font, go to this page and download the one you like the most. Once the download finishes, unpack the fonts and place them into ~/.fonts or ~/.local/share/fonts. Then run this command for your system to detect the new fonts:

fc-cache -fv

Now let’s choose a shell. Shells are command line interpreters, their primary purpose is to start other programs. I’ll use Zsh in this guide but Fish is also a very popular choice. Install Zsh by running:

sudo pacman -S zsh zsh-completions

Change your default shell by running

chsh -s /bin/zsh

And finally install Oh-my-zsh by running

sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

It will ask you if you want to make Zsh your default shell, select yes. Exit your terminal, launch it again and you will see the terminal in a different style.

To change the theme of Oh-my-zsh change this line in ~/.zshrc

ZSH_THEME="robbyrussel"

And load it using:

source .zshrc

You can find all available Oh-my-zsh themes here.

Note: There are other themes that are not in the aforementioned repository that can be installed and used. Their installation will not be explained in this guide.

Arch Linux customization, a beginner’s guide (8)

A window compositor is a software component that sits between the window manager and the X server. It is responsible for compositing the windows on the screen, which means that it combines the output of all of the windows into a single image. This allows for visual effects such as transparency, shadows, and animations.

Here is a list of some available window compositors:

  • Compiz is a powerful compositor that can be used to create a wide variety of visual effects, including transparency, shadows, and animations. It is a bit resource-intensive, but it can be a lot of fun to play around with.
  • KWin is the compositor that comes with the KDE desktop environment. It is a lightweight compositor that offers a good balance of features and performance.
  • Mutter is the compositor that comes with the GNOME desktop environment. It is a simple and elegant compositor that is well-suited for everyday use.
  • Xcompmgr is a lightweight compositor that is good for older systems. It doesn’t offer as many features as some of the other compositors, but it is very efficient.
  • Picom is a fork of Compton that is designed to be more efficient and customizable. It is a good choice for users who want a powerful compositor with a lot of features.

I’ll be using Picom as example. Install it by running:

sudo pacman -S picom

Start Picom by running picom in your terminal, you will see that the terminal is now transparent, but the same goes for all other windows that you have open. We need to fix this.

To modify Picom behavior create or edit the picom.conf file at .config folder, in this case the config file does not need to be in a folder. If you want transparency to be applied to a specific window open your terminal and type:

xprop

Click on the window that you want to apply the transparency and look for WM_CLASS(STRING). Then add this to your configuration. (I’ll use Kitty for this example)

opacity-rule = [
"85:class_g = 'kitty' && focused",
"85:class_g = 'kitty' && !focused",
];

This tells Picom to follow these opacity rules for the specific program that’s running. Now, the same rules can be applied if you don’t want the window to have any transparency, for example, I don’t want Firefox to have any opacity. To achieve this add this line to the opacity-rule in the conf file.

"100:class_g = 'firefox'",

As a side note, Picom uses backends for rendering, some of them handle features that others can’t. The default one is xrender, but you can try others at your own risk. Here is a manual explaining other options available for configuration. In case that changing the Picom backend freezes your computer, open a console by pressing Ctrl+Alt+F2, log in, change the backend line and reboot.

To run Picom on start up add this line to your i3 config file:

exec --no-startup-id picom

If you are having problems with your Picom configuration you can copy my conf file and from there edit what you want and what not.

Arch Linux customization, a beginner’s guide (9)

An application launcher is a software program that allows you to launch other applications on your Linux system. It’s a graphical user interface (GUI) that provides a convenient way to start applications without having to type their names in a terminal window.

Some popular Application launchers include:

  • Ulauncher: This is a popular third-party app launcher that is known for its speed and flexibility. It offers a wide range of customization options, including the ability to add plugins that extend its functionality.
  • Albert: This is another popular third-party app launcher that is known for its simple and intuitive interface. It also offers a number of customization options, including the ability to change the theme and add plugins.
  • Kupfer: This is a lightweight app launcher that is well-suited for older systems. It offers a basic set of features, but it is very efficient and easy to use.
  • Rofi: A versatile app launcher that can be used in a variety of ways. It can be used as a traditional app launcher, but it can also be used as a keyboard-driven interface for other tasks, such as launching websites or searching for files.

I’ll be using Rofi since it’s very easy to customize, greatly versatile and very well supported by the community. To install it run:

sudo pacman -S rofi

Then run it using rofi --show drun. Here you can read about other options to run rofi.

Create a rofi folder in your config and add the files from iamverysimp1e’s config, this will give you a start for you to customize your own Rofi theme.

There are other preconfigured and easy to customize Rofi themes in this repo.

To assign Rofi a keybinding add this to your i3 config file:

exec --no-startup-id sh rofi -show drun
Arch Linux customization, a beginner’s guide (10)

A status bar is a horizontal (or vertical) bar that displays information about the current state of a program or the system as a whole. It is typically located at the bottom of the screen, but it can also be placed in other locations.

There are many different status bars available for Linux, some of the most popular ones include:

  • i3bar: This is a simple and lightweight status bar that is commonly used with the i3 window manager.
  • Waybar: a highly customizable status bar that is designed for Wayland compositors. Waybar is very flexible and can be configured to display a wide variety of information, including the current time and date, the status of network connections, the battery level, the volume level, the current workspace, and more.
  • polybar: a popular status bar that is known for its flexibility and ease of use.

I’ll use polybar as example. Install it by running:

sudo pacman -S polybar

Then create a polybar folder in .config to hold your configuration. Polybar configuration deserves a guide on it's own but you can set a basic one following these steps. First copy my Polybar config files into your folder. In the same folder, grand permissions to these files:

chmod +x launch.sh
chmod u+x scripts/diskusage
chmod u+x scripts/memory
chmod u+x scripts/network

Then add this to your i3 config file:

exec --no-startup-id sh ~/.config/polybar/launch.sh

Another option to easily set a Polybar theme is by installing the themes at polybar-themes in your system. All the installation and configuration steps are in the repository.

Polybar is pretty well documented, you can read the documentation in their repository if you have any doubt about how to use it or how to customize it.

Arch Linux customization, a beginner’s guide (11)

It’s pretty common for a file manager and file reader to take a lot of resources. Luckily for Linux environments, there are lightweight options available. Ranger is a console file manager with VI key bindings and Zathura is a highly customizable and functional document viewer. One great benefit of using these two programs is how little memory they use.

To install both programs run:

sudo pacman -S zathura ranger

Some notes. If you want Ranger to preview the images in Kitty, then you’ll need to install Pillow by using this command:

pip install pillow

If there’s a warning telling you that “The script x is installed in ‘/home/myusername/.local/bin’ which is not on PATH” then add it. For Zsh add export PATH=$PATH:/home/username/.local/bin at the end of .zshrc.

Also if you want Zathura to show the pdf page with it’s original colors set recolor to false in the configuration file. set recolor "false"

You can assign Ranger a keybind similar to this

bindsym $mod+Shift+v exec kitty -e ranger
Arch Linux customization, a beginner’s guide (12)

First, let’s install Spotify using the package in the official Arch repo (Do not use the Snap package since Spicetify is not gonna work with it)

sudo pacman -S spotify-launcher

Open it and log in. Check your audio. Close it and install spicetify-cli, we will use it to customize Spotify and add extensions. Follow their guide for the installation process or install it by running:

curl -fsSL https://raw.githubusercontent.com/spicetify/spicetify-cli/master/install.sh | sh

Check that spicetify is installed by running spicetify --help.

Then run the spicetify command. This will create a config-xpui.ini file where you'll configure the Spicetify variables.

Navigate to the Spicetify folder in your .config folder and open config-xpui.ini. Here you will modify spotify_path and prefs_path. Their official guide tells you how to find both paths, but in my case they look like this:

spotify_path = /home/ngz91/.local/share/spotify-launcher/install/usr/share/spotify/
prefs_path = /home/ngz91/.config/spotify/prefs

After this, you can change your own theme using this command (I’d recommend doing this inside the spicetify Themes folder):

spicetify config current_theme "Path_to_your_configuration"

To add extensions, create an Extensions folder inside the Spicetify folder and use this command:

spicetify config extensions "Extension_name"

Run spicetify backup apply to create a backup and then run spicetify apply.

Visit the Unixp*rn forum to see some awesome spicetify themes.

You can use this kaybind to launch spotify:

bindsym $mod+Shift+m exec spotify-launcher
Arch Linux customization, a beginner’s guide (13)

Neovim is a terminal based text editor, it’s extremely powerful and customizable, and very hard to configure if you don’t know what you are doing. I recommend using a Neovim premade configuration before making your own, or you can configure one yourself by following Tatsuya Matsuyama video, that way you can get a starting minimal configuration and also get an understanding of how Neovim configurations work.

Some good premade configurations are:

These are all community maintained and very stable.

The main language used for configuring neovim is Lua. You can familiarize yourself with the language by watching this video, but by knowing the basics you can make your own configuration.

A Neovim configuration folder structure looks something like this:

├── init.lua
├── lua
│ └── user
│ ├── plugin1.lua
│ ├── plugin2.lua
│ ├── plugin3.lua
...
│ ├── lsp
│ │ ├── configs.lua
│ │ ├── handlers.lua
│ │ ├── init.lua
│ │ ├── null-ls.lua
│ │ └── settings
│ │ ├── lsp1Settings.lua
│ │ ├── lsp2Settings.lua
...
└── plugin
└── packer_compiled.lua

init.lua is the first file Neovim loads, here you can require other files with the plugins configurations or scripts that you wanna run. lua/user is where your Lua scripts and plugins configurations are, you can require them in init.lua by using the require function require("user.plugin1"). There's also a lsp (language server protocol) folder where all lsp configuration files lie, here you can configure your language servers and lsp based plugins like lsp-saga, illuminate, etc.

NOTE: This is not a standard, there are various ways this folder can be structured, but this one is very easy to understand.

To install plugins there are various plugins managers, but the two most popular are Packer.nvim and lazy.nvim. If you decide for Packer, there’s an AUR package available, this will take care of the configuration for you:

yay -S nvim-packer-git

Follow their guide on how to add plugins to your configuration. But before adding plugins you might want to disable some plugins that come with Neovim and are not used, these are:

"netrw",
"netrwPlugin",
"netrwSettings",
"netrwFileHandlers",
"gzip",
"zip",
"zipPlugin",
"tar",
"tarPlugin",
"getscript",
"getscriptPlugin",
"vimball",
"vimballPlugin",
"2html_plugin",
"logipat",
"rrhelper",
"spellfile_plugin",
"matchit",

This guide is one of the most complete guides for configuring Neovim, if you have any doubt about how to configure a plugin or any other type of configuration, the answer, most likely, can be found there. Also, visit the Neovim reddit forum if you have any doubt, it’s a very open and welcoming community.

I hope this guide helped you in your configuration process. If you have found anything that’s not clear or wrong, please let me know, I’ll be updating this guide every now and then.

Here are some resources that you might find useful for continuing your ricing journey.

Arch Linux customization, a beginner’s guide (2024)
Top Articles
Series and Sum Calculator with Steps
Calculus II - Series - The Basics
Gasbuddy Joliet
Msc Open House Fall 2023
Coverwood Terriers For Sale
7076605599
Redbox Locations Walmart
Hailie Deegan News, Rumors, & NASCAR Updates
Relic Gate Nms
888-490-1703
Red Dead Redemption 2 Legendary Fish Locations Guide (“A Fisher of Fish”)
Sam's Club Key Event Dates 2023 Q1
Martimelons
Inside the Rise and Fall of Toys ‘R’ Us | HISTORY
Walking through the Fire: Why nothing stops Jesus’ love for you - Ann Voskamp
Craigslist Manhattan Ks Personals
Kroger Liquor Hours
Fandango Movies And Shows
New from Simply So Good - Cherry Apricot Slab Pie
Lucio Surf Code
Rockcastle County Schools Calendar
Open jazz : podcast et émission en replay | France Musique
Craiglist Rhode Island
Chi Trib Weather
What Does FYP Mean on TikTok?
Moss Adams Client Portal
Craigslist Apts Near Me
Vision Government Solutions Stamford Ct
Mexi Unblocked Games
Fortnite Fap Hero
Hingham Police Scanner Wicked Local
Healthstream Mobile Infirmary
Watch ESPN - Stream Live Sports & ESPN Originals
Andhrajyoti
Roblox Roguelike
Oklahoma Scratch Off Remaining Prizes
Journal articles: 'New York (State). First Congregational Church' – Grafiati
Snowy Hydro Truck Jobs in All Sydney NSW - Sep 2024 | SEEK
Brian Lizer Life Below Zero Next Generation
Stark Cjis Court Docket
Lagniappemobile
How to Survive (and Succeed!) in a Fast-Paced Environment | Exec Learn
Fandafia
Rockin That Orange Jumpsuit Columbia County
Sam's Club Hiring Near Me
El Pulpo Auto Parts Houston
The Swarthmorean, 1932-05 | TriCollege Libraries Digital Collections
Fintechzoommortgagecalculator.live Hours
Guy Ritchie's The Covenant Showtimes Near Century 16 Eastport Plaza
How Long Ago Was February 28 2023
Cb2 South Coast Plaza
Latest Posts
Article information

Author: Rev. Leonie Wyman

Last Updated:

Views: 5982

Rating: 4.9 / 5 (59 voted)

Reviews: 82% of readers found this page helpful

Author information

Name: Rev. Leonie Wyman

Birthday: 1993-07-01

Address: Suite 763 6272 Lang Bypass, New Xochitlport, VT 72704-3308

Phone: +22014484519944

Job: Banking Officer

Hobby: Sailing, Gaming, Basketball, Calligraphy, Mycology, Astronomy, Juggling

Introduction: My name is Rev. Leonie Wyman, I am a colorful, tasty, splendid, fair, witty, gorgeous, splendid person who loves writing and wants to share my knowledge and understanding with you.