GNOME desktop environment

How to install and configure GNOME as your desktop environment




Install audio

pacman -Syu pipewire pipewire-alsa pipewire-jack pipewire-pulse wireplumber pipewire-docs helvum

Install GNOME

pacman -Syu gnome gnome-extra gnome-themes-extra gnome-power-manager qt5ct libsecret seahorse

Install extensions and additional themes

yay -Syu gnome-shell-extension-dash-to-panel gnome-shell-extension-arc-menu gnome-shell-extension-no-overview gnome-shell-extension-tray-icons-reloaded xcursor-pro-cursor-theme adwaita-qt

Optional MacOS theme

yay -Syu whitesur-icon-theme whitesur-gtk-theme

Remove bloat

pacman -Rscn baobab gnome-recipes gnome-books gnome-boxes gnome-builder gnome-chess gnome-connections tali gnome-games geary ipython gnome-nibbles totem epiphany gnome-software polari iagno lightsoff four-in-a-row gnome-robots hitori gnome-klotski gnome-mines gnome-mahjongg gnome-sudoku quadrapassel swell-foop gnome-tetravex gnome-taquin gnome-remote-desktop

Configuration of Qt5 apps under environments other than KDE Plasma

/etc/environment
export QT_QPA_PLATFORMTHEME=qt5ct

Run qt5ct to set an Qt5 icon theme


Use Xorg backend by default

/etc/gdm/custom.conf

uncomment WaylandEnable=false


Enable display manager

systemctl enable gdm.service -f

Hide user from GDM login list

To hide a ordinary users from the login list create or edit a file named after the user

/var/lib/AccountsService/users/username
[User]
SystemAccount=true
Info

GNOME login using tty (GDM disabled)
Sessions are stored in /usr/share/xsessions

~/.xinitrc
#!/bin/sh

userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/etc/X11/xinit/.Xresources
sysmodmap=/etc/X11/xinit/.Xmodmap

# merge in defaults and keymaps

if [ -f $sysresources ]; then
    xrdb -merge $sysresources
fi

if [ -f $sysmodmap ]; then
    xmodmap $sysmodmap
fi

if [ -f "$userresources" ]; then
    xrdb -merge "$userresources"
fi

if [ -f "$usermodmap" ]; then
    xmodmap "$usermodmap"
fi

# start some nice programs

if [ -d /etc/X11/xinit/xinitrc.d ] ; then
 for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
  [ -x "$f" ] && . "$f"
 done
 unset f
fi

export XDG_SESSION_TYPE=x11
export GDK_BACKEND=x11
exec gnome-session

# redirect output to /dev/null.
>/dev/null 2>&1

Start an Xorg display server

~/.zprofile
#
# ~/.zprofile
#
[[ -f ~/.zshrc ]] && . ~/.zshrc

if [[ -z $DISPLAY && $(tty) == /dev/tty1 ]]; then
    XDG_SESSION_TYPE=x11 GDK_BACKEND=x11 exec startx
fi
Tip

Disable caps lock

Tweaks > Keyboard & mouse > additional layout options > Caps Lock behaivior

Confusingly, it is shown as Disabled
But this means that any customization on that is disabled
In the dropdown choose Caps Lock is disabled option and you are done


Unlock the keyring for a display manager

/etc/pam.d/login
#%PAM-1.0

auth       required     pam_securetty.so
auth       requisite    pam_nologin.so
auth       include      system-local-login
auth       optional     pam_gnome_keyring.so
account    include      system-local-login
session    include      system-local-login
session    optional     pam_gnome_keyring.so auto_start

Set login keyring as default

~/.local/share/keyrings/default
login

Automatically change default keyring password with user password

#%PAM-1.0
#password       required        pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3
#password       required        pam_unix.so sha512 shadow use_authtok
password        required        pam_unix.so sha512 shadow nullok
password        optional        pam_gnome_keyring.so

Complete initialization automatically

~/.zprofile
[[ -f ~/.zshrc ]] && . ~/.zshrc

if [ -n "$DESKTOP_SESSION" ];then
    eval $(gnome-keyring-daemon --start)
    export SSH_AUTH_SOCK
fi