all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* GDM future work
@ 2018-12-30 16:56 Timothy Sample
  2019-01-05 21:21 ` Ludovic Courtès
  0 siblings, 1 reply; 7+ messages in thread
From: Timothy Sample @ 2018-12-30 16:56 UTC (permalink / raw)
  To: guix-devel

Hi Guix,

I have been using GDM on GuixSD for the past few days, and I am quite
happy with it.  A few patches that make it usable just landed on
master.

Now, there is a lot of room left for cleaning it up, but I need some
advice.

The main issue is the way that GDM launches the session bus (the
instance of D-Bus that manages the session).  It launches it from a
clean environment that has little more than what PAM gives from
“/etc/environment” (and “~/.pam_environment”, if it exists).  The result
is that D-Bus can’t find any services, because it doesn’t have
“XDG_DATA_DIRS” set.

Currently, this is solved by patching GDM to thread “XDG_DATA_DIRS” into
the process the launches D-Bus, but that’s not great.  There are at
least two better options.

(1) Extend the PAM environment service so that it puts important
environment variables for D-Bus in “/etc/environment”.  This is easy to
do, and fits pretty naturally with the way that GDM works.

(2) Set up a wrapper script for D-Bus like the wrapper script we
currently use for X.  This way, we could very precisely set up where the
session bus looks for system and user service files.  This seems to be
more like “the Guix way”, but it would mean threading a
“GDM_DBUS_LAUNCH” environment variable through the GDM code (like we
currently do with “GDM_X_SERVER”).

Besides these two options, I get tempted to think even bigger.  We could
replace a lot of the GDM session initialization code with our own code,
and then if we only had per-session Shepherd instances….  That’s
probably too big for right now.  :)

I lean towards option 2, because my understanding is that, in general,
Guix prefers static configuration over dynamic configuration.  This
means that the discoverability gained by option 1 is actually a
liability, since it creates a way for dependencies to exist which are
not declared statically.  The other advantage that option 2 has is that
it would be possible to find service files from the user’s profile.  By
doing this, we avoid having to tell everyone about “~/.pam_environment”
and what to put in there to make D-Bus aware of services in the user’s
profile.

Thoughts?

Besides this, there are few straight-forward things to do.  We need to
make a “libgdm” package that does not depend on “gnome-shell” [1].  It
would be nice to fill out the config record and get rid of the opaque
configuration text file.  We need documentation for GDM in the manual.
Finally, I already miss the Guix logo from SLiM, so even if it is not
the default, I would like a Guix theme to be available.  :)

I will chip away at these as I have time, but of course anyone is
welcome to jump on them if I’m too slow.


[1] https://lists.gnu.org/archive/html/guix-devel/2017-10/msg00231.html


-- Tim

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2019-01-10  0:15 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-12-30 16:56 GDM future work Timothy Sample
2019-01-05 21:21 ` Ludovic Courtès
2019-01-06 15:10   ` Timothy Sample
2019-01-09 15:17     ` Ricardo Wurmus
2019-01-09 21:40     ` Ludovic Courtès
2019-01-09 22:32       ` Timothy Sample
2019-01-10  0:15         ` Catonano

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.