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>
This commit is contained in:
Dariqq 2024-05-08 18:33:30 +00:00 committed by Liliana Marie Prikler
parent 8cf823c17b
commit 37719d3ec8
No known key found for this signature in database
GPG key ID: 442A84B8C70E2F87

View file

@ -9412,6 +9412,7 @@ (define-public gnome-shell
(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 @@ (define-public gnome-shell
"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 @@ (define-public gnome-shell
gnome-settings-daemon
graphene
gst-plugins-base
gst-plugins-good
ibus
libcanberra
libcroco
@ -9506,6 +9521,7 @@ (define-public gnome-shell
mesa-headers
mutter
network-manager-applet
pipewire
polkit
pulseaudio
python-pygobject