Using systemd-logind Session.TakeControl() from Xorg, input needed

Hans de Goede hdegoede at redhat.com
Wed Dec 4 05:32:57 PST 2013


Hi All,

I've been looking into using systemd-logind Session.TakeControl()
and friends from the xserver, so that the xserver can let
logind open/close the device nodes for it, and then hopefully
will no longer need root rights.

Sofar I've mainly been finding investigating / finding my way around
the xserver.

So today I was ready to start adding some initial code for this to
the Xserver, only to immediately hit a roadblock :|

Hence this mail I'm looking for input on how to solve the problems
I've found sofar. Below I try to explain the 2 problems I see and
I ask a few initial questions about them. Your input on this is
very much appreciated.

Problem 1:
1) TakeControl() works on a session, so the xserver will need to find
the session it is to serve and then TakeControl of that session.

Questions about problem 1:
* Does gdm create the session before starting X ?
* Can gdm pass in the session id, or the pid of the session leader
   to X when starting X ?

Problem 2:
2) When switching from the "gdm" session to the user login session
a new session gets created. For this to work we either need to
start a new X, or X needs to deal with the session going away,
and another one showing up. Dealing with this means releasing
all devices including the drm node and then re-opening it when
X gets the new session.

Questions about problem 2:
* I know starting a new X for the user-session is undesirable,
but is it a blocker ?
* How feasible is it to make X deal with the drm node going away,
without fully invoking the entire switch vt logic ?

Regards,

Hans


More information about the xorg-devel mailing list