No, I am not part of the religious “systemd is evil” war. I won’t be using Devuan, and the fact that MX Linux defaults to sysvinit is actually a disadvantage of that distro (yes, I know systemd can be enabled, but I’m not sure all their tweaking tools would still work properly). Some third-party software actually requires systemd, and that’s a fact. Why aren’t people boycotting e.g. Wayland instead of systemd? This being said, I’m puzzled by a bug in Fedora.

The simple differences

Despite systemd being used in most distros for some time now, some of the advice that can be found on the Internet doesn’t necessarily work in Fedora 35.

Say, Fedora has this annoying system speaker beep in many apps, and even upon selecting e.g. logout from the menu. To make xset b off permanent, I tried and noticed that neither of

echo xset b off >> ~/.xession

and

echo xset -b >> ~/.xession

work. Apparently, Fedora disregards ~/.xession (but during the current session, running xset b off seemed to work).

What worked was to add

blacklist pcspkr
blacklist snd_pcsp

to (preferably)

/etc/modprobe.d/99-nobeep.conf

or to

/etc/modprobe.d/speaker-blacklist.conf

or (less elegantly) even to

/etc/modprobe.d/blacklist.conf

Next task: make Fedora XFCE enable CTRL+ALT+Backspace to kill X. Adding

XKBOPTIONS="terminate:ctrl_alt_bksp"

to /etc/default/keyboard was totally useless.

What worked was to edit this file

/etc/X11/xorg.conf.d/00-keyboard.conf

in the area

Section "InputClass"
Identifier "system-keyboard"

and, in my case, replace

Option "XkbOptions" "grp:lctrl_lshift_toggle"

with

Option "XkbOptions" "grp:lctrl_lshift_toggle,terminate:ctrl_alt_bksp"

The tougher nut: autologin in XFCE

The big question was: how to enable autologin in LightDM? Anaconda was told to do that for me, but it didn’t work! (Adding my user to the autologin group, like in Arch, wasn’t enough.)

In two different Fedora 35 XFCE installations, what the installer did for me was to enable this line

[Seat:*]
autologin-user=ludditus

in the file

/usr/share/lightdm/lightdm.conf.d/60-lightdm-gtk-greeter.conf

In different tutorials and documentations, you’d be told to edit the file /etc/lightdm/lightdm.conf and to put something like this:

[Seat:*]
autologin-user=username
autologin-session=/usr/share/xsessions/xfce.desktop

where the session was selected from /usr/share/xsessions/*.desktop or /usr/share/wayland-sessions/*.desktop. And no, as I wasn’t using GNOME, nor gnome-keyring, there was no need to set up a blank gnome-keyring password.

In other distros, you might be told to edit or create

/usr/share/lightdm/lightdm.conf.d/99-autologin.conf

or maybe

/etc/lightdm/lightdm.conf.d/10-autologin.conf

instead of /etc/lightdm/lightdm.conf, and to make sure you also have

autologin-user-timeout=0

The contrary might be true sometimes, like in this 2019 Fedora Bug 1733696 – The autologin does not work, where the fix was to set this timeout to 5 seconds!

Note that the order in which the config files are read is:

  1. /usr/share/lightdm/lightdm.conf.d/*
  2. /etc/lightdm/lightdm.conf.d/*
  3. /etc/lightdm/lightdm.conf

To find the current configuration, together with the file from which each value has originated, run lightdm --show-config. Here’s what I got in my second installation, after everything I tried to make it work:

$ lightdm --show-config
   [Seat:*]
J  allow-guest=false
M  session-wrapper=/etc/X11/xinit/Xsession
O  xserver-command=X -core -noreset
P  greeter-session=lightdm-gtk-greeter
P  autologin-user=ludditus
P  autologin-user-timeout=5
P  autologin-session=/usr/share/xsessions/xfce.desktop

   [LightDM]
K  minimum-vt=1
L  run-directory=/run/lightdm
N  user-authority-in-system-dir=true

Sources:
I  /usr/share/lightdm/lightdm.conf.d/50-backup-logs.conf
J  /usr/share/lightdm/lightdm.conf.d/50-disable-guest.conf
K  /usr/share/lightdm/lightdm.conf.d/50-minimum-vt.conf
L  /usr/share/lightdm/lightdm.conf.d/50-run-directory.conf
M  /usr/share/lightdm/lightdm.conf.d/50-session-wrapper.conf
N  /usr/share/lightdm/lightdm.conf.d/50-user-authority-in-system-dir.conf
O  /usr/share/lightdm/lightdm.conf.d/50-xserver-command.conf
P  /usr/share/lightdm/lightdm.conf.d/60-lightdm-gtk-greeter.conf
I  /usr/share/lightdm/lightdm.conf.d/50-backup-logs.conf
J  /usr/share/lightdm/lightdm.conf.d/50-disable-guest.conf
K  /usr/share/lightdm/lightdm.conf.d/50-minimum-vt.conf
L  /usr/share/lightdm/lightdm.conf.d/50-run-directory.conf
M  /usr/share/lightdm/lightdm.conf.d/50-session-wrapper.conf
N  /usr/share/lightdm/lightdm.conf.d/50-user-authority-in-system-dir.conf
O  /usr/share/lightdm/lightdm.conf.d/50-xserver-command.conf
P  /usr/share/lightdm/lightdm.conf.d/60-lightdm-gtk-greeter.conf
Q  /etc/lightdm/lightdm.conf

For some strange reason, it has decided to read each systemd-specific file twice. Is that a bug, or … a feature?

Well, the problem is… it still didn’t automatically login, for it still prompted me to select a session! No, not the session as in “XFCE or other DE” (I only have XFCE on the system, so the autologin-session is not really necessary), but the XFCE session (apps and windows):

That one is saved here:

But no, there isn’t a way to specify xfce4-session-ludditus:0 someplace; instead, what I had to do was to make sure the option inappropriately labeled “Display chooser on login” is disabled. I didn’t know what kind of chooser (“Display the list of saved sessions” would have been rocket science, I reckon) was it, so I had it enabled:

The autologin requires to have it disabled:

What was the bug, then?

First, the Arch advice was correct: if during the setup, you don’t tell Anaconda to add your user to the autologin group, it won’t do it for you, despite having been told you want to login automatically! (Anaconda is a true piece of crap.) In such a case, something like this is required for the autologin to work:

sudo usermod -a - G autologin ludditus

Of course, adapt it to your username.

What’s even worse, that autologin-user-timeout of 5 seconds is really necessary, otherwise, upon a fresh reboot, it will ask for a password! (Subsequent logins after e.g. killing X would typically work.) In my case, a value of 3 seconds was enough:

autologin-user-timeout=3

in the file /usr/share/lightdm/lightdm.conf.d/60-lightdm-gtk-greeter.conf.

This is not normal, though. And they happily closed the Fedora Bug 1733696 – The autologin does not work, without taking any action!