Black screen on multiseat after logout
Xorg, systemd etc support the concept of multiple seats, one seat per graphics card. LTSP also supports a very easy way to configure it, by just putting MULTISEAT=1 in ltsp.conf.
Up to Ubuntu 20.04 with slick-greeter, everything was working fine. Now with Ubuntu 22.04 and actica-greeter, after logout we're getting black screen in either one or both seats.
A workaround is in /usr/lib/lightdm/lightdm-greeter-session to change the following line:
--- [ -n "$DBUS_SESSION_BUS_ADDRESS" ] || eval `dbus-launch --sh-syntax`
+++ eval `dbus-launch --sh-syntax`
I.e. by forcing a new dbus, there's no black screen anymore.
It feels like something in the greeter or the indicators is incompatible with the concept that "a single user, lightdm, using a single dbus, may launch the greeter two times, and have the indicators two times".
I verified that by uninstalling arctica-greeter and installing slick-greeter (even without rebooting the workstation, by just restarting lightdm), the problem no longer happens on Ubuntu 22.04.
@sunweaver some input on this one please, where should I focus my debugging attempts?
I assume that this is really related to Arctica Greeter using indicators.
Also, personally, I'd put every lightdm session into its own dbus-run-session context (not dbus-launch, this is deprecated).
Because every greeter seat should be considered as an independent entity/session, IMHO.
Can you remember if this worked with old Unity Greeter (that was using indicators, as well?). However, at that time everything was driven by upstart and DBus sessions would all be separate if not explicitly set up with the same DBus session bus address.
Hmmm...
The question is, you may no better, as you have put some research into this already: Is there another way to enforce lightdm with individual DBus contexts except from modifying the non-owned file /usr/lib/lightdm/lightdm-greeter-session?
I just saw that we have a /usr/lib/x86_64-linux-gnu/arctica-greeter/lightdm-arctica-greeter-session script which executes eval dbus-launch --sh-syntax...
I think we broke the multi-seat support with this commit: 7b6860dad7c6aa39861e6d65dfe161b65eca1f50
When I was researching the issue I did see the /usr/libexec/arctica-greeter/lightdm-arctica-greeter-session script but I figured it wasn't used at all, so I patched /usr/lib/lightdm/lightdm-greeter-session instead.
Indeed I think that if you revert the greeter-wrapper=@pkglibexecdir@/lightdm-arctica-greeter-session line, it could work.
I'll need a couple of weeks to test it though as I only have production multiseat environments, I don't have a test environment handy.