diff mbox series

[bug#68556,gnome-team,v4,3/8] gnu: gnome-shell-extensions: Wrap all the extensions.

Message ID 4bca25041b1890755ac5a10d92e546739fe53ea1.1705748530.git.vivien@planete-kraus.eu
State New
Headers show
Series Update the gnome-shell extensions and wrap more | expand

Commit Message

Vivien Kraus Jan. 20, 2024, 10:38 a.m. UTC
The top-level modules that are wrapped are the /extension.js and /prefs.js of
every extension sub-directory.

* gnu/packages/gnome.scm (gnome-shell-extensions) [#:phase
'wrap-applications-menu]: Rename to 'wrap-extensions. Wrap every top-level
module.
[inputs]: Add glib.
[propagated-imputs]: Remove glib.

Change-Id: I88634970321aa8847857e45b369b4ba285caa87d
---
 gnu/packages/gnome.scm | 43 +++++++++++++++++++++++++-----------------
 1 file changed, 26 insertions(+), 17 deletions(-)
diff mbox series

Patch

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index b449ed55db..0f9b2d89c6 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -10729,33 +10729,42 @@  (define-public gnome-shell-extensions
       #:configure-flags #~'("-Dextension_set=all")
       #:phases
       #~(modify-phases %standard-phases
-          (add-after 'unpack 'wrap-applications-menu
+          (add-after 'unpack 'wrap-extensions
             (lambda _
               (use-modules (ice-9 textual-ports))
-              (call-with-output-file "extensions/apps-menu/extension.js-wrapped"
-                (lambda (out)
-                  (format out "'~a'.split(':').forEach("
-                          (getenv "GI_TYPELIB_PATH"))
-                  (display
-                   (string-append "path => imports.gi.GIRepository.Repository"
-                                  ".prepend_search_path(path));\n")
-                   out)
-                  (display
-                   (call-with-input-file "extensions/apps-menu/extension.js"
-                     get-string-all)
-                   out)))
-              (rename-file "extensions/apps-menu/extension.js-wrapped"
-                           "extensions/apps-menu/extension.js"))))))
+              (let list-extensions ((dir (opendir "extensions")))
+                (let ((extension (readdir dir)))
+                  (unless (eof-object? extension)
+                    (for-each
+                     (lambda (file-to-wrap)
+                       (when (file-exists? file-to-wrap)
+                         (call-with-output-file
+                             (string-append file-to-wrap "-wrapped")
+                           (lambda (out)
+                             (format out "'~a'.split(':').forEach("
+                                     (getenv "GI_TYPELIB_PATH"))
+                             (display
+                              (string-append "path => imports.gi.GIRepository.Repository"
+                                             ".prepend_search_path(path));\n")
+                              out)
+                             (display
+                              (call-with-input-file file-to-wrap
+                                get-string-all)
+                              out)))
+                         (rename-file (string-append file-to-wrap "-wrapped")
+                                      file-to-wrap)))
+                     (list (string-append "extensions/" extension "/extension.js")
+                           (string-append "extensions/" extension "/prefs.js")))
+                    (list-extensions dir)))))))))
     (native-inputs
      (list `(,glib "bin")
            gettext-minimal
            pkg-config))
     (inputs
      (list gobject-introspection ;to set GI_TYPELIB_PATH
+           glib
            gnome-menus ;for Applications Menu
            ))
-    (propagated-inputs
-     (list glib))
     (synopsis "Extensions for GNOME Shell")
     (description "GNOME Shell extensions modify and extend GNOME Shell
 functionality and behavior.")