FVWM on Ubuntu 21.04

FVWM(https://www.fvwm.org/) is an ICCCM-compliant multiple virtual desktop window manager for the X Window system. It is configured by editing text-based configuration files.

I’m tired of the endless bugs and updates of the Ubuntu’s default GNOME desktop. Therefore, I switched to FWVM and no longer use GNOME desktop.

I tried FVWM for a few days, and it works very well. I haven’t added some features yet, but it doesn’t matter. I will continue to improve my Fvwm when I have free time. Screenshot of my desktop:

simple desktop.png

Part I: Install fvwm and quick start

Setup 1. Install the FVWM3 package.

Setup 2. Build your ~/.xinitrc file

The xinit program allows a user to manually start an Xorg display server. More details: https://wiki.archlinux.org/title/Xinit

My file ~/.xinitrc is here.

Setup 3. Test and Try basic fvwm configuration

I use the default configuration files in fvwm3/default-config/* as my starting point. So, I copy those configuration files to ~/.fvwm directory with the following command:

# copy fvwm3/default-config github directory to ~/.fvwm.
sudo cp -r /usr/local/share/fvwm3/default-config/* ~/.fvwm

sudo chown -R someuser ~/.fvwm

sudo rm -r /usr/local/share/fvwm3/default-config

If your are running Ubuntu with GNONE, you must logout current Ubuntu session, and Ctrl + Alt + F2. Then:

# Disable gnome display manager.
sudo service gdm3 stop

#  start X
startx

Part II: Build your own fvwm3 .config

You can modify the default .fvwm/config as your first start. Or copy and use my config file directly, then make your personalized twist and changes.

I use nemo as my file manager.

Part III: Switch from Gnome to Fvwm permanently

Setup 1. Disable Gdm

sudo systemctl disable gdm3

Setup 2. Boot with command-line interface:

sudo gedit /etc/default/grub

comment: #GRUB_CMDLINE_LINUX_DEFAULT="quite splash" and add “text”. This:

#GRUB_CMDLINE_LINUX_DEFAULT="quite splash"
GRUB_CMDLINE_LINUX_DEFAULT="text"

Then, sudo update-grub.

Setup 3. Tell systemd to not load the desktop with:

sudo systemctl enable multi-user.target --force
sudo systemctl set-default multi-user.target    

Setup 3. Auto-run startx

add entry to ~/.bash_profile or ~/.zprofile

if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then
  exec startx
fi