Fed up with Gnome? Here's how to purge it
After the most recent update to Gnome Shell 50, so many things broke that I decided to purge Gnome from my Arch Linux installation. Here’s how I did it:
#!/bin/bash
set -e
# Step 1 - Install ly display manager
sudo pacman -S ly
# Step 2 - Swap display managers
sudo systemctl enable ly@tty2.service
sudo systemctl disable gdm.service
# Step 3 - Remove GNOME (keeps gnome-keyring)
sudo pacman -Rns \
alacarte decibels evince flat-remix-gnome gnome-control-center \
nautilus sushi totem xdg-desktop-portal-gnome yaru-gnome-shell-theme-git \
gnome-shell gnome-session gnome-settings-daemon mutter gjs gdm \
gnome-app-list gnome-autoar gnome-backgrounds gnome-bluetooth-3.0 \
gnome-browser-connector-git gnome-calculator gnome-calendar gnome-characters \
gnome-clocks gnome-color-manager gnome-common gnome-connections gnome-console \
gnome-contacts gnome-desktop gnome-desktop-4 gnome-desktop-common \
gnome-disk-utility gnome-font-viewer gnome-keybindings gnome-logs gnome-maps \
gnome-menus gnome-music gnome-online-accounts gnome-remote-desktop \
gnome-screenshot gnome-software-appstream-git gnome-software-packagekit-plugin-appstream-git \
gnome-system-monitor gnome-text-editor gnome-themes-extra gnome-tour \
gnome-tweaks gnome-user-docs gnome-user-share gnome-weather \
gnome-shell-extension-appindicator gnome-shell-extension-arc-menu \
gnome-shell-extension-caffeine gnome-shell-extension-clipboard-indicator \
gnome-shell-extension-dash-to-panel gnome-shell-extension-desktop-icons-ng \
gnome-shell-extension-forge gnome-shell-extension-gsconnect \
gnome-shell-extension-pop-shell-git gnome-shell-extensions \
gnome-shell-extension-vitals gnome-shell-extension-weather-oclock \
gnome-shell-theme-copernico-git gnome-shell-theme-macos-mojave \
gnome-shell-theme-mist-git gnome-shell-theme-viva-git \
mutter-devkit
# Step 4 - Clean up orphans
sudo pacman -Rns $(pacman -Qdtq) 2>/dev/null || true
# Step 5 - Reboot
sudo reboot
Published on 09 Apr 2026
all tags
100daysofcode activerecord ai android annoyances api apt arch array artix atom az3w backend bash blog browser bug callback career ci-cd claude cli cloud code coding config configuration cp crud cryptography css csv database db demo design development devops django docker email erp feelsgood filter fugitive gif gist git github gmail gnome gnome pomodoro grep hebrew http ide isbn-fetcher iso javascript job search js kanban kindle koans learning linkedin linux llm logger manjaro map markdown microservices mobi mtp neovim nodejs nvchad packages panda pastbin patch portfolio post postgres pytest python rails reduce refactoring reflections rest routes rspec ruby salesforce script scripting security sed shell sql string_replacement study tasks tdd terminal testing tmux ttd version_control vim vim sort walkthrough wayland webdev workflow xorg zsh