lilyp pushed a commit to branch master
in repository guix.

commit 37719d3ec8db7f2380903c2ac6e4efb2e4639cc7
Author: Dariqq <dar...@posteo.net>
AuthorDate: Wed May 8 18:33:30 2024 +0000

    gnu: gnome-shell: Wrap screencast service.
    
    Adjust screencast such that GI_TYPELIB_PATH and GST_PLUGIN_SYSTEM_PATH refer
    to all required typelibs and GStreamer plugins.  This alone is not enough to
    make the screencast function however -- a running pipewire service (e.g.
    via Guix Home) is also needed.
    
    * gnu/packages/gnome.scm (gnome-shell):
    [inputs]: Add gst-plugins-good and pipewire.
    [#:phases]<'wrap-programs>: Wrap org.gnome.Shell.Screencast.
    
    Change-Id: I2c31bf1bd92e281b86c57b06988c6a3793a58d40
    Signed-off-by: Liliana Marie Prikler <liliana.prik...@gmail.com>
---
 gnu/packages/gnome.scm | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 67049bc253..74f33c4d22 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -9412,6 +9412,7 @@ properties, screen resolution, and other GNOME 
parameters.")
             (add-after 'install 'wrap-programs
               (lambda* (#:key inputs #:allow-other-keys)
                 (let ((gi-typelib-path  (getenv "GI_TYPELIB_PATH"))
+                      (gst-plugin-path  (getenv "GST_PLUGIN_SYSTEM_PATH"))
                       (python-path
                        (string-join
                         (filter (lambda (item)
@@ -9431,6 +9432,19 @@ properties, screen resolution, and other GNOME 
parameters.")
                                     "path => 
imports.gi.GIRepository.Repository."
                                     "prepend_search_path(path));\n"
                                     all)))
+                  ;; Screencast requires a pipewire service running
+                  ;; (i.e. as provided by home-pipewire-service-type)
+                  (substitute* (string-append #$output "/share/gnome-shell/"
+                                              "org.gnome.Shell.Screencast")
+                    (("imports\\.package\\.start" all)
+                     (string-append "'" gi-typelib-path "'.split(':').forEach("
+                                    "path => 
imports.gi.GIRepository.Repository."
+                                    "prepend_search_path(path));\n"
+                                    
"imports.gi.GLib.setenv('GST_PLUGIN_SYSTEM_PATH',"
+                                    
"[imports.gi.GLib.getenv('GST_PLUGIN_SYSTEM_PATH'),"
+                                    "'" gst-plugin-path "'].filter(v => 
v).join(':'),"
+                                    "true);\n"
+                                    all)))
                   (for-each
                    (lambda (prog)
                      (wrap-program (string-append #$output "/bin/" prog)
@@ -9496,6 +9510,7 @@ printf '~a is deprecated.  Use the \"gnome-extensions\" 
CLI or \
            gnome-settings-daemon
            graphene
            gst-plugins-base
+           gst-plugins-good
            ibus
            libcanberra
            libcroco
@@ -9506,6 +9521,7 @@ printf '~a is deprecated.  Use the \"gnome-extensions\" 
CLI or \
            mesa-headers
            mutter
            network-manager-applet
+           pipewire
            polkit
            pulseaudio
            python-pygobject

Reply via email to