~ruther/guix-local

37719d3ec8db7f2380903c2ac6e4efb2e4639cc7 — Dariqq 2 years ago 8cf823c
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.prikler@gmail.com>
1 files changed, 16 insertions(+), 0 deletions(-)

M gnu/packages/gnome.scm
M gnu/packages/gnome.scm => gnu/packages/gnome.scm +16 -0
@@ 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