Hi Brett, bre...@posteo.net writes:
> On 29.04.2019 18:05, Timothy Sample wrote: >> >> After doing some testing in a VM, it looks like this is an issue >> with my >> recent commit: 8caa458953eeac783c73a0e5aaa72842fe3914c9. >> >> I added a placeholder desktop entry file, and even though I did my best >> to make it invisible, GDM is still selecting it. (I tested GNOME and >> XFCE, but I guess they were preferred by GDM over the placeholder, >> whereas StumpWM is not. Maybe the has to do with how the names are >> sorted.) This is exactly the problem. To find a default session, it sorts the names of all the “.desktop” files it can find (using “g_strcmp0”), and picks the first. Since we have “GNOME” < “XFCE” < “Fail” < “stumpwm”, my tests did not catch this error. I can think of two options for a fix before 1.0 (which is supposed to be tomorrow!). The cute one is to just rename “Fail” to “~Fail”, on the expectation that this will come after most other names when sorted. The ugly one is to patch GDM to exclude the placeholder file when looking for “.desktop” files, and then to select it instead of raising an error when it can’t find anything. My preference is for the ugly one, because the cute one feels like putting a silly hack on top of silly hack – it’s just a bit too much. I’ve attached a patch. Thoughts? (If I don’t hear anything, I will push it – it’s important that this works for 1.0).
>From 6b78b1d9c9a4c5ecb55dcd973248310fbbea3a33 Mon Sep 17 00:00:00 2001 From: Timothy Sample <samp...@ngyro.com> Date: Mon, 29 Apr 2019 14:49:42 -0400 Subject: [PATCH] gnu: gdm: Avoid selecting the placeholder session. This fixes <https://bugs.gnu.org/35484>. * gnu/packages/gnome.scm (gdm)[arguments]: Modify the pre-configure phase to patch GDM to only select the placeholder session if there are no others. --- gnu/packages/gnome.scm | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 17dc2fd102..f19b1836d3 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -5597,7 +5597,7 @@ libxml2.") (modify-phases %standard-phases (add-before 'configure 'pre-configure - (lambda* (#:key inputs #:allow-other-keys) + (lambda* (#:key inputs outputs #:allow-other-keys) ;; We don't have <systemd/sd-daemon.h>. (substitute* '("common/gdm-log.c" "daemon/gdm-server.c" @@ -5665,6 +5665,16 @@ libxml2.") (("\"gnome-session\"") (string-append "\"" (assoc-ref inputs "gnome-session") "/bin/gnome-session\""))) + ;; Do not automatically select the placeholder session. + (substitute* "daemon/gdm-session.c" + (("!g_str_has_suffix [(]base_name, \"\\.desktop\"[)]") + (string-append "!g_str_has_suffix (base_name, \".desktop\") || " + "(g_strcmp0(search_dirs[i], \"" + (assoc-ref outputs "out") "/share/gdm/BuiltInSessions/" + "\") == 0 && " + "g_strcmp0(base_name, \"fail.desktop\") == 0)")) + (("g_error [(]\"GdmSession: no session desktop files installed, aborting\\.\\.\\.\"[)];") + "{ self->priv->fallback_session_name = g_strdup(\"fail\"); goto out; }")) #t)) ;; GDM requires that there be at least one desktop entry ;; file. This phase installs a hidden one that simply -- 2.21.0
In the future, we should find a way to make GDM errors less catastrophic, but I doubt we could do that in a day (I certainly couldn’t)! > Thank you for looking into this Tim! I have gone back to SLiM for the > time being until it is fixed :). > > If anybody else is having this issue, going back to SLiM is really > easy, check out my commit for reference. > > https://github.com/brettgilio/guix-system/commit/64d389db13c2f78ee5c58af28c1639b098113c93 Thanks for providing this. Hopefully it helps anybody else having problems. -- Tim