Customising your Arch Linux desktop environment
I’ll be blunt. Arch is a toolkit, not a finished desktop. That makes it ideal if you want full control of Linux personalisation. You pick the desktop environment, themes, configurations and behaviour. You also take responsibility when things break. If that sounds fine, this guide shows a safe, repeatable route from a minimal Arch install to a customised desktop you can actually use.
This guide focuses on desktop environment choices and visual tweaks. It covers a simple setup, the exact commands to run, the UI clicks where relevant and how to check that each change took effect. I use common tools and examples: GNOME for a polished, integrated experience and a tiling Wayland setup (Sway) for a minimal route. Swap names to match your preferred desktop environment. Throughout I use the phrase customising Arch Linux to keep the steps clear and searchable.
Prep is practical. Take backups. Keep a live USB handy. Work in stages: base system → display server → desktop environment → theming → personal configs. Make a restore point before changes that alter system files.
Setup
Start from a functioning Arch base. If you’re still installing Arch, stop here and follow the official install guide until you have a booting system and a user with sudo. Once you have that, do the basics.
- Update packages:
sudo pacman -Syu
- Expected: no errors; ends with “there is nothing to do” or shows upgraded packages.
- Create backups of configs:
cp -r ~/.config ~/.config.bak
sudo cp -r /etc /etc.bak
- Keep these safe. If a step changes state you can restore the originals.
- Install Xorg (for X11) or Wayland tools as needed:
- Xorg example:
sudo pacman -S xorg xorg-server
- Wayland example:
sudo pacman -S sway swaybg
- Pick one based on the desktop environment you plan to use.
- Xorg example:
- Install a desktop environment and tools. Examples:
- GNOME:
sudo pacman -S gnome gnome-tweaks gnome-shell-extensions
- KDE Plasma:
sudo pacman -S plasma kde-applications
- Sway (tiling Wayland):
sudo pacman -S sway wlroots swaybg
- Expected: pacman lists packages and finishes without errors.
- GNOME:
- Display manager (if you want a graphical login):
- GNOME:
sudo systemctl enable --now gdm
- KDE:
sudo systemctl enable --now sddm
- Expected:
Active: active (running)
when you runsystemctl status gdm
orsystemctl status sddm
.
- GNOME:
Do not proceed until update and backups succeed. If an install fails, fix the package error first. Don’t skip backups. They are the quickest rollback.
Steps
Follow these numbered steps for the actual customisation. I keep them short and verifiable.
- Choose a theme framework
- GTK (GNOME) or Qt (KDE). Install themes and icon packs.
- Example:
sudo pacman -S gnome-themes-extra adwaita-icon-theme
- For extra themes from AUR use an AUR helper like
yay
. Installyay
manually if comfortable.
- Apply theme (GNOME example)
- Install Tweaks:
sudo pacman -S gnome-tweaks
- Open Tweaks: Activities → search “Tweaks”.
- Click Appearance → Applications, Icons, Shell and pick your theme.
- Verification:
gsettings get org.gnome.desktop.interface gtk-theme
- Expected output:
'Adwaita-dark'
or the theme name you set.
- Expected output:
- Rollback note: If the theme breaks interfaces, restore
~/.config
from your backup withmv ~/.config.bak ~/.config
after logging into TTY.
- Install Tweaks:
- Apply theme (KDE example)
- System Settings → Appearance → Global Theme → Apply.
- Verification: open System Settings appearance page and confirm the active theme.
- Install icons and cursor sets
sudo pacman -S papirus-icon-theme
- Set via Tweaks or System Settings.
- Verification: check
ls /usr/share/icons | grep Papirus
shows the folder.
- Set wallpaper and fonts
- Wallpaper: copy image to
~/Pictures
then set through the DE’s background settings. - Fonts: install
ttf-dejavu
or other fonts:sudo pacman -S ttf-dejavu
. - Verification: font change visible in apps;
fc-match
shows matching font:fc-match sans
.
- Wallpaper: copy image to
- Configure startup apps and hotkeys
- GNOME: Settings → Startup Applications (Extensions might be required).
- Sway: edit
~/.config/sway/config
and addexec
lines. - Verification: restart session. Autostarted apps should be running. Use
ps aux | grep <app>
.
- Save final state
- Export dotfiles:
tar czf arch-dotfiles-$(date +%F).tar.gz ~/.config
- This gives a quick rollback and migration point.
- Export dotfiles:
Keep commands exact. Each step changes state; backups above let you revert quickly.
Checks
Verify the system after each change. Short checks save hours of guessing.
- Check display manager:
systemctl status gdm
orsystemctl status sddm
- Expected:
Active: active (running)
.
- Confirm compositor or Wayland session:
- X11:
xrandr
should list outputs and current resolution, e.g.eDP-1 connected 1920x1080+0+0
. - Wayland: check your DE’s info page or
loginctl show-session $XDG_SESSION_ID -p Type
showingType=wayland
.
- X11:
- Verify packages:
pacman -Qs <theme-name>
shows installed packages.pacman -Qi <package-name>
shows package info including “Installed Size”.
- Verify gsettings for GNOME:
gsettings get org.gnome.desktop.interface gtk-theme
returns the theme name.gsettings get org.gnome.desktop.interface icon-theme
returns the icon theme.
- Check logs for errors:
journalctl -b -p err
shows boot-time errors.- Look for display, gdm or shell errors.
If a check fails, don’t press on. Roll back the last change using the backup. That is often the fastest fix.
If it breaks
Expect breakage. Expect fixable breakage.
- Fall back to TTY
- Press Ctrl+Alt+F2 to reach TTY. Login with your user.
- From here you can restore configs or uninstall problem packages.
- Restore configs
mv ~/.config ~/.config.bad
thenmv ~/.config.bak ~/.config
- Restart the display manager:
sudo systemctl restart gdm
- Verification: graphical session appears or
systemctl status gdm
shows active.
- Remove a broken package
sudo pacman -Rns <package>
- If dependencies were pulled in that you want back, reinstall them selectively.
- Swap display manager temporarily
- Disable a broken DM:
sudo systemctl disable --now gdm
- Enable a known working one:
sudo systemctl enable --now lightdm
- Verification:
systemctl status lightdm
should be active.
- Disable a broken DM:
- Read logs
journalctl -xe
after a failed login will show why the greeter or shell failed.- Look for explicit errors such as missing shared objects or config parse failures.
If nothing fixes it, use your live USB, mount the root partition and copy the backup /etc.bak
and /home/<user>/.config.bak
back in place.
Final takeaways: customise in small, reversible steps. Backups are cheap and fast. Test each change with a clear verification command or UI check. That keeps customising Arch Linux practical rather than painful.
0 Comment