Subject: bug#59489: [PATCH v3] gnu: gdm: Enable accessibility settings.

From: Dariqq <[email-masked]>
Date: Tue, 20 Feb 2024 19:58:48 +0000

gdm needs the "/share" subdirectory of these packages present in XDG_DATA_DIRS
such that the accessibility settings work:
- at-spi2-core: contains accessibility dbus service.
- dconf: To be able to change settings.
- gnome-control-center: icon.

* gnu/packages/gnome.scm (gdm)[inputs]: Add at-spi2-core, dconf, gnome-control-center.
[phases]: Add wrap-accessibility-dependencies phase.

Change-Id: Ibfe8f1aee9c8fe0c06f895de121f0f84defe4773
---

Hi everyone,

Here is v3 of gdm accessibility issue which adds the wrapper phase we've been discussing.
I added the extra inputs under a seperate section in the inputs. If you'd like to keep them in alphabetical order feel free to adjust this. 
ALso I am not sure if the format of my commit message is ok.

I've tested on both master and gnome-team and it works on both.

To ennable the screenreader it is enough for orca to be in the system profile (and orca working i.e. on gnome-team branch).
dconf is both a native and normal input: Based on the fedora gdm.spec it seems like a build dependency however i was not able to verify this as cross-compiling (for i686-linux-gnu) requries me to bootstrap gcc. At leeast the default tests do not seem to require it.
Adding gnome-control-center, which is used for the icon, pulls in python dependencies which breaks cross compiling. Maybe you have some ideas for this.

Also some other thing that I notices is that because /var/lib/gdm is mounted as tmpfs this makes the changes in the gdm accessibility settings not persist through reboots which is annoying. These will get stored in /var/lib/gdm/.config/dconf/.

 gnu/packages/gnome.scm | 21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 953bd817ed..a967c9cb16 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -77,6 +77,7 @@
 ;;; Copyright © 2023 Juliana Sims <[email-masked]>
 ;;; Copyright © 2023 Dominik Delgado Steuter <[email-masked]>
 ;;; Copyright © 2023 Zhu Zihao <[email-masked]>
+;;; Copyright © 2024 Dariqq <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -9007,7 +9008,18 @@ (define-public gdm
                   (for-each (lambda (desktop)
                               (symlink desktop (basename desktop)))
                             (find-files
-                             (string-append settings "/etc/xdg"))))))))))
+                             (string-append settings "/etc/xdg")))))))
+          ;; GDM needs some additional programs available via XDG_DATA_DIRS,
+          ;; to make accessibility settings and related services available.
+          (add-after 'install 'wrap-accessibility-dependencies
+            (lambda _
+              (wrap-program (string-append #$output "/bin/gdm")
+                `("XDG_DATA_DIRS" ":" prefix
+                  #$(map (lambda (input)
+                           (file-append (this-package-input input) "/share"))
+                         '("at-spi2-core"
+                           "dconf"
+                           "gnome-control-center")))))))))
     (native-inputs
      (list `(,glib "bin")               ;for glib-compile-schemas, etc.
            dconf
@@ -9029,7 +9041,12 @@ (define-public gdm
            iso-codes
            libcanberra
            libgudev
-           linux-pam))
+           linux-pam
+
+           ;; accessibility dependencies
+           at-spi2-core
+           dconf
+           gnome-control-center))
     (synopsis "Display manager for GNOME")
     (home-page "https://wiki.gnome.org/Projects/GDM/")
     (description

base-commit: ffcce77ec488e3c89401ad77fafa65fcd9e9f5be
-- 
2.41.0