Hi Andreas,

I know exactly what you mean.

I use the following expression in /etc/config.scm
instead of just %desktop-services, to remove login managers on my laptop:

    (modify-services (remove (lambda (service)
                              (or
                               (eq? (service-kind service) sddm-service-type)
                               (eq? (service-kind service) gdm-service-type)))
                             %desktop-services)

After a (very rare on laptops) reboot, I have to log into a system (text) 
console like it's 1997 and then type

exec setsid startx

or in my case (Wayland)[1]

exec setsid startw

The "exec" is for safety.
(setsid is so you don't have terminal control Ctrl-Z, Ctrl-C etc either)

Life immediately improved.

I've been through the ordeal of keeping my graphical session working over the 
years on my guix--but in the end this is the only practical solution that I 
don't have to keep massaging (sadly).

To be clear, login managers are totally useful in a corporate remote login 
(thin client) or university computer lab setting.

The intent of login managers is to have a lot of "terminal" computers that you 
don't care about (if it breaks throw it in the trash and replace it with any 
other terminal computer) that then can access a (or any number of) powerful 
server via xdmcp, displaying the remote program's windows on your X "server".  
If you don't have this scenario, I'd just remove the complication "login 
manager" from my life.

That you can also log in locally using a login manager is... kinda a weird 
special case (that nowadays became the normal case ;) ).

A login manager is independent from the X (or Wayland or whatever) session it 
starts.  In the ideal case, it's just a "routing" station and doesn't influence 
the targets.  That's why you lose zero features in your target session when you 
remove a login manager.  (If that were not the case, I would (and did!) 
immediately file bug reports--that's how modular the design is)

There's also other graphical "greeters" (also in Guix as services) that should 
work for the local case--but I didn't get as far as actually trying them.

Ideally, I'd just have a non-visible greeter (that definitely doesn't lock any 
DRM devices :P) that would do the equivalent of startw in a login shell ONCE, 
but without the ability to Ctrl-C it.

Has anyone set those very simple graphical greeters up (to not ask the user 
anything, just autolaunch hardcoded thing with default user) on guix 
successfully?

Since this use case is so common in my opinion it would make sense for the 
installer to ask whether you want to have a login manager "Do you want to be 
able to select what or where your graphical desktop is on each boot?" (default 
to no) or something.

Also "Does this computer have more than one user (asks for credentials on every 
boot)?" (default to no).  If not, and if disk encryption is on, it can just not 
ask for the login credentials AGAIN.  As you can see there are dependencies.  
Especially in authentication, situations like this happen a lot:  It's also 
only safe to not ask for the login credentials AGAIN if there's a screen locker 
that autolocks the screen (in case the user powered up the computer and went 
for a coffee while it's booting, at least it doesn't stay open for more than 5 
minutes until it auto-locks.  Could even have the autolocker engage immediately 
on boot to remove this window of opportunity).

Unfortunately, these kind of policy decisions need someone to do some system 
design, and even then will break some use cases[3]--which we'd have to be cold 
enough to break on purpose.  It would improve user-friendliness a lot, though.

>but I think GDM is still required as the login manager.

I don't think any is required (or should ever be required).  They are an 
anachronism nowadays.  Not sure why not dead.  Even for the actual use case, 
people use SSH, VNC or RDP to connect to other computers AFTER they logged into 
their normal X (or Wayland) session locally.  i can count the number of people 
that even know what XDMCP is on one hand :)

But %desktop-services defaults to using a login manager.  And that default 
changed a few years back--I complained about it on this mailing list back then. 
 It's not okay to swap out defaults from underneath the user like this in a 
rolling release distro--it could prevent you to (graphical) login entirely 
because whatever desktop you are using didn't install configuration for the 
service manager (which is what happened)[2].

>Can I choose the login manager separately from the desktop environment (KDM, 
>XDM)?

It is a design goal of login managers to make this possible.  If it wasn't 
possible after all that then that would be ridiculous :)

>If not, can we somehow get there?

To be able to choose the login manager?  Definitely we can change guix to 
enable the user be able to choose which login manager to use (that includes 
selecting "no login manager").

If it was me designing it, I'd just not have had any login manager in the 
original %desktop-services at all to begin with.  Whoever wants one (all 30 
people in the world /s) can add one.

But now (since we have a login manager in %desktop-services) the question is 
how to change it in a backward compatible way.  If we decide to change it.

I can only recommend the workaround I have above.  If there are other weird 
things in %desktop-services, you can also (remove ...) them there.

In engineering systems in general, the cheapest, most reliable and most secure 
component is the one that isn't there ;)

[1] $ cat startw
#!/bin/sh
export XDG_SESSION_TYPE=wayland
export WLR_RENDERER=vulkan
exec sway "$@"

[2] For X, share/xsessions/xfce.desktop or something.
[3] https://xkcd.com/1172/

Reply via email to