The “joys” of systemd in Fedora XFCE
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:
/usr/share/lightdm/lightdm.conf.d/*
/etc/lightdm/lightdm.conf.d/*
/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!
Leave a Reply