[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
06/08: gnu: gdm: Fix environment of worker processes and sessions.
From: |
Andy Wingo |
Subject: |
06/08: gnu: gdm: Fix environment of worker processes and sessions. |
Date: |
Fri, 25 Aug 2017 10:02:48 -0400 (EDT) |
wingo pushed a commit to branch master
in repository guix.
commit e0e6756fbddc56b73640273ea8c6bf17825b337a
Author: Andy Wingo <address@hidden>
Date: Tue Aug 22 18:39:39 2017 +0200
gnu: gdm: Fix environment of worker processes and sessions.
* gnu/packages/gnome.scm (gdm): Get X server path from GDM_X_SERVER
environment variable, and make sure this variable is propagated to internal
sub-processes. Launch sessions with a reasonable XDG_CONFIG_DIRS setting.
Get the custom GDM conf from the current system's profile.
---
gnu/packages/gnome.scm | 32 ++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 2d82508..bd41513 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -5142,6 +5142,38 @@ libxml2.")
"\"/run/current-system/profile/share/wayland")
(("DATADIR \"/gnome")
"\"/run/current-system/profile/share/gnome"))
+ (substitute* '("daemon/gdm-session.c")
+ (("set_up_session_environment \\(self\\);")
+ (string-append
+ "set_up_session_environment (self);\n"
+ ;; Propagate GDM_X_SERVER environment variable (which is set
+ ;; by the GDM service, as it's a function of what X modules
+ ;; the user decides to have available) down to worker
+ ;; processes.
+ "gdm_session_set_environment_variable (self,
\"GDM_X_SERVER\",\n"
+ " g_getenv (\"GDM_X_SERVER\"));\n"
+ ;; FIXME: Really glib should be declaring XDG_CONFIG_DIRS as a
+ ;; variable, but it doesn't do that right now. Anyway
+ ;;
/run/current-system/profile/share/gnome-session/sessions/gnome.desktop
+ ;; requires that a number of .desktop files be present, and
+ ;; these special .desktop files are in $XDG_CONFIG_DIRS (which
+ ;; defaults to /etc/xdg if it's not set). Here we need to
+ ;; provide a value such that the GNOME session's requirements
+ ;; are met (provided GNOME is installed of course).
+ "gdm_session_set_environment_variable (self,
\"XDG_CONFIG_DIRS\",\n"
+ " \"/run/current-system/profile/etc/xdg\");\n"
+ )))
+ ;; Look for custom GDM conf in /run/current-system.
+ (substitute* '("common/gdm-settings-backend.c")
+ (("GDM_CUSTOM_CONF")
+ "/run/current-system/etc/gdm/custom.conf"))
+ ;; Use service-supplied path to X.
+ (substitute* '("daemon/gdm-server.c")
+ (("\\(X_SERVER X_SERVER_ARG_FORMAT")
+ "(\"%s\" X_SERVER_ARG_FORMAT, g_getenv (\"GDM_X_SERVER\")"))
+ (substitute* '("daemon/gdm-x-session.c")
+ (("X_SERVER")
+ "g_getenv (\"GDM_X_SERVER\")"))
#t)))))
(native-inputs
`(("dconf" ,dconf)
- branch master updated (cb8b14f -> 6e99c01), Andy Wingo, 2017/08/25
- 02/08: gnu: Add AccountsService service to desktop services., Andy Wingo, 2017/08/25
- 05/08: gnu: gdm: Use proper elogind check, and wrap environment., Andy Wingo, 2017/08/25
- 07/08: gnu: services: Log debug messages to /var/log/debug., Andy Wingo, 2017/08/25
- 01/08: gnu: accountsservice: Properly reference shadow., Andy Wingo, 2017/08/25
- 03/08: gnu: services: Refactor to separate X and startx wrappers., Andy Wingo, 2017/08/25
- 04/08: gnu: gdm: Look for sessions in /run/current-system., Andy Wingo, 2017/08/25
- 08/08: gnu: Add draft of gdm service., Andy Wingo, 2017/08/25
- 06/08: gnu: gdm: Fix environment of worker processes and sessions.,
Andy Wingo <=