← all projects

fedora-pantheon

Pantheon on Fedora
repo MIT

Fedora to Pantheon

Turn a fresh Fedora Workstation (typically a VM) into an elementary OS-style desktop. One script, setup.sh, enables SSH, installs the Pantheon desktop on Wayland, adds Flathub, and sets up Btrfs snapshots with Snapper.

Requirements

Tested on Fedora 44 Workstation in a libvirt/QEMU VM (virtio-gpu).

Usage

bash setup.sh

The script pauses at step 1 after enabling SSH so you can switch to an SSH session before the long package installs — handy when you're setting up a VM from your host. Press Enter to carry on, or Ctrl+C to stop and reconnect over SSH first.

When it finishes, reboot and pick Pantheon from the gear menu on the GDM password screen. GDM remembers the choice after the first login.

sudo reboot

What it does

  1. Installs and enables sshd, opens SSH in the firewall, prints the VM's IPs.
  2. Installs and configures Snapper, then takes a pre-setup baseline snapshot of the pristine system — roll back to this to undo the whole run.
  3. Updates the system.
  4. Enables the garaevdi/pantheon-rpm COPR — the maintained Pantheon path since the old dnf group was dropped after Fedora 36. Wayland only.
  5. Installs the Pantheon shell and elementary apps.
  6. Forces software GL (llvmpipe) only when the VM has a virtio-gpu with virgl off, where gala otherwise segfaults on login. Real hardware is left alone.
  7. Keeps GDM as the display manager (the elementary LightDM greeter doesn't hand off the Wayland session correctly on Fedora yet).
  8. Applies the elementary stylesheet and icons to GTK4/libadwaita apps.
  9. Adds Flathub system-wide.
  10. Enables the Snapper timeline and cleanup timers and takes a post-setup baseline snapshot.

The script is idempotent: each step guards against redoing work, so it's safe to re-run on a partially-set-up machine.

Snapshots

sudo snapper -c root list                    # list snapshots
sudo snapper -c root create -d "description"  # manual snapshot
sudo snapper -c root rollback <number>        # roll back, then reboot

Known limitations

Licence

MIT