Customising your Arch Linux desktop environment

Arch gives you control, and that means you also own the mess when it breaks. Pick the desktop environment, the theme, the config, and the behaviour. If that sounds like a fair trade, the sensible route is to work in small steps and keep a way back.

This post stays with desktop environment choices and visual changes. GNOME gives you a polished, integrated setup. Sway is the leaner Wayland route. Swap the names to suit whatever you actually run. I keep the steps simple and check each change before moving on.

Prep properly. Take backups. Keep a live USB handy. Work in stages: base system, display server, desktop environment, theming, then personal config. Make a restore point before touching system files.

Setup

Start from a working Arch base. If you are still installing Arch, stop here and finish that first. Once you have a booting system and a user with sudo, do the basics.

  1. Update packages:

    sudo pacman -Syu
  2. Create backups of configs:

    cp -r ~/.config ~/.config.bak
    sudo cp -r /etc /etc.bak

    Keep those somewhere safe. If a change goes sideways, you want the original files back.

  3. Install Xorg for X11 or Wayland tools as needed:

    sudo pacman -S xorg xorg-server
    sudo pacman -S sway swaybg

    Pick one based on the desktop environment you plan to use.

  4. Install a desktop environment and tools. Examples:

    sudo pacman -S gnome gnome-tweaks gnome-shell-extensions
    sudo pacman -S plasma kde-applications
    sudo pacman -S sway wlroots swaybg
  5. Display manager, if you want a graphical login:

    sudo systemctl enable --now gdm
    sudo systemctl enable --now sddm

    Check with systemctl status gdm or systemctl status sddm.

Do not move on until the update and backups work. If the install fails, fix the package problem first. Skipping backups is a bad way to save time.

Steps

  1. Choose a theme setup

    • GTK for GNOME or Qt for 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 such as yay. Install yay manually if you are comfortable doing that.
  2. Apply a GNOME theme

    • Install Tweaks:
    sudo pacman -S gnome-tweaks
    • Open Tweaks from Activities and search for it.
    • Go to Appearance, then Applications, Icons, Shell, and choose the theme you want.
    • Check it with:
    gsettings get org.gnome.desktop.interface gtk-theme
    • You should see 'Adwaita-dark' or whatever theme you set.
    • If the theme breaks the interface, log into a TTY and restore ~/.config from the backup:
    mv ~/.config.bak ~/.config
  3. Apply a KDE theme

    • Go to System Settings, then Appearance, then Global Theme, and apply the one you want.
    • Check the active theme in the appearance page.
  4. Install icons and cursor sets

    • Example:
    sudo pacman -S papirus-icon-theme
    • Set it through Tweaks or System Settings.
    • Check the install with:
    ls /usr/share/icons | grep Papirus
  5. Set wallpaper and fonts

    • Copy the wallpaper into ~/Pictures and set it through your desktop background settings.
    • Install a font such as DejaVu:
    sudo pacman -S ttf-dejavu
    • Look for the change in your apps. fc-match sans should show the font match.
  6. Configure startup apps and hotkeys

    • In GNOME, use Settings and any extensions you need.
    • In Sway, edit ~/.config/sway/config and add exec lines.
    • Restart the session, then check that the app started.
    ps aux | grep <app>
  7. Save the final state

    tar czf arch-dotfiles-$(date +%F).tar.gz ~/.config

    That gives you a quick rollback point and something you can move to another machine later.

Checks

  • Check the display manager:

    systemctl status gdm
    systemctl status sddm

    Look for Active: active (running).

  • Confirm the compositor or Wayland session:

    • X11:
    xrandr

    It should list outputs and the current resolution, for example eDP-1 connected 1920x1080+0+0.

    • Wayland:
    loginctl show-session $XDG_SESSION_ID -p Type

    Look for Type=wayland.

  • Check installed packages:

    pacman -Qs <theme-name>
    pacman -Qi <package-name>
  • Check GNOME settings:

    gsettings get org.gnome.desktop.interface gtk-theme
    gsettings get org.gnome.desktop.interface icon-theme
  • Check logs for errors:

    journalctl -b -p err

    Look for display, GDM, or shell errors.

If a check fails, stop there and roll back the last change. That is usually quicker than guessing.

If it breaks

  1. Fall back to a TTY

    Press Ctrl+Alt+F2, log in, and work from there.

  2. Restore configs

    mv ~/.config ~/.config.bad
    mv ~/.config.bak ~/.config
    sudo systemctl restart gdm

    Check that the graphical session returns, or that systemctl status gdm shows it active.

  3. Remove a broken package

    sudo pacman -Rns <package>

    If that pulls in dependencies you still want, reinstall them by hand.

  4. Swap display manager temporarily

    sudo systemctl disable --now gdm
    sudo systemctl enable --now lightdm

    Check systemctl status lightdm.

  5. Read the logs

    journalctl -xe

    Look for missing shared objects or config parse failures.

If none of that helps, use the live USB, mount the root partition, and copy /etc.bak and /home/<user>/.config.bak back in place.

Customise in small steps. Keep backups. Test each change before you pile on the next one.

Related posts

Weekly Tech Digest | 06 Jul 2026

Stay updated with the latest in tech! This digest covers AI ethics, auto industry shifts, and the impact of politics on technology, exploring today's pressing issues.

wolfCOSE zero-allocation parsing in embedded C

wolfCOSE looks sensible only if you care about what your firmware actually has to carry. I like that, because on small targets the wrong crypto feature can cost more than the message itself, and there...

restic | v0.19.1

restic v0 19 1: safer FUSE mounts and mountpoint checks, robust backup source and exclude handling, clearer CLI JSON output, Windows SFTP deletion fixes