GUI in Arch Linux

Now that the Arch Linux is installed and hardened, it is time to install a graphical environment to enable this system to be used as a workstation. This text will show how to setup the system, install the basic packages, and apply my personal configurations to build a system very close to mine.

Before starting, make sure the system is up-to-date with the next command.

sudo pacman -Syu


The very first thing to do is to guarantee that all hardware is properly recognized and maybe it will require the installation of drivers. This text will not cover driver installation, since it varies from machine to machine.

Video card, sound card, keyboard, mouse, peripherals... all of them should be managed by the system, but fortunatelly Arch's documentation covers a lot of systems, and after that you can look in Arch's forums, Reddit, or even Stack Exchange.


This text will only cover the scenario proposed on the first text, a VirtualBox VM, so it is unnecessary on bare metal installations.

Start by installing VirtualBox's basic packages and enabling its service in Arch.

sudo pacman -S virtualbox-guest-utils xf86-video-vmware
sudo systemctl enable vboxservice.service

In my tests the VirtualBox's video card was not able to dynamically set the video resolution, so I had to discover the one used in my system (1440x900), match it to the options provided by GRUB, and apply them in GRUB.

Note: To see a list of GRUB's available resolution options, type control-c while in GRUB screen and use the command videoinfo for GRUB EFI or vbeinfo for GRUB BIOS.

To apply the desired resolution, open the file /etc/defaut/grub, locate the option GRUB_GFXMODE and insert the resolution there. In my case the result was: GRUB_GFXMODE=1440x900x32.

Now, regenerate the GRUB configuration file and remember to edit it to add the --unrestricted option so GRUB will not ask for password for default boot. Next listing shows the commands, including the necessary reboot.

grub-mkconfig -o /boot/grub/grub.cfg

vim /boot/grub/grub.cfg
...-menuentry "Arch Linux"... --unrestricted...


Graphical Environment and Applications

Install the base graphical environment and applications with the next command, but be sure to adapt it to your personal usage.

sudo pacman -S \
    xorg-server xorg-xinit ttf-dejavu xorg-xbacklight \
    picom xautolock i3-gaps i3lock i3status rofi \
    dunst libnotify \
    pulseaudio mpd mpc pulsemixer pavucontrol \
    arc-gtk-theme papirus-icon-theme \
    xdg-user-dirs \
    termite code ranger pcmanfm \
    firefox transmission-gtk \
    gnome-calculator calibre evince \
    nitrogen maim xclip xdotool \
    imagemagick gimp inkscape feh vlc \
    nmap wireshark-cli tcpdump httping

Having all applications, prepare the system to receive the configuration files. Here I will show how to install my own dotfiles, but you can change it according to your preference.

cd    # go $HOME now
mkdir ~/{Desktop,Documents,Downloads,Laboratory,Music,Pictures,Shares,Videos}
mkdir ~/Pictures/{wallpapers,screenshots}
mkdir -p ~/.cache/zsh

git clone

cp -r dotfiles/.{bashrc,config,inputrc,local,screenrc,vimrc,xinitrc,zshrc} .

Now install addional local software, like micro and Zola. The ~/.local/bin directory is set in my dotfiles to store this kind of software and is included in the user's path.

mkdir .local/bin
cd .local/bin
curl | bash


You will need to install additional fonts to use my dotfiles and I recommend installing the Nerd Fonts collection. Follow this link to read a step-by-step guide on how to install Nerd Fonts on Arch Linux.


Note: to troubleshoot Picom, run the same command in i3 configuration file and pay attention to the error message. Maybe you will have to disable some feature for instance vsync.


setxkbmap -layout us -model abnt -variant intl
localectl --no-convert set-x11-keymap us abnt intl
localectl status


To troubleshoot some audio problem, you can try running pulseaudio --check and pulseaudio -D.

Wallpaper and Notifications

Download wallpapers and put in ~/Pictures/wallpapers. We're gonna use Nitrogen as a tool to set up the wallpapers: nitrogen ~/Pictures/wallpapers

Dunst is not delivered with an elegant way to reload the configuration file, so the best way to do it is killing Dunst's process with killall command.


Firefox theme is set with GTK, but there is an Arc-Dark theme for it here. Download Arc Dark theme here and install like this: vlc -I skins2 --skins2-last ~/.local/share/vlc/skins2/Arc-Dark.vlt.

System Performance

Until now we installed the system using secure features and hardened the whole thing. Now we implemented a lot of graphical software and it worths measuring how the boot process was affected. The commands below show that and can be used to troubleshoot whether there is some problem in the boot process.

systemd-analyze blame
systemd-analyze critical-chain
systemd-analyze plot > /tmp/boot.png

Note: to monitor processes consuming power, a.k.a., draining the battery, you can use powertop.

To be Continued...

Setting up a beautiful and usable desktop environment in Arch with i3 is far from an easy task. At this point, I got an usable and somewhat concise environment, but there are some bugs to be fixed and some configurations to be done.