[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#70282] [PATCH v2] gnu: gnome-shell: Wrap screencast service.
From: |
Dariqq |
Subject: |
[bug#70282] [PATCH v2] gnu: gnome-shell: Wrap screencast service. |
Date: |
Fri, 12 Apr 2024 17:26:48 +0000 |
The screencast service can now find typelibs and gstreamer plugins.
* gnu/packages/linux.scm (gnome-shell)
[inputs]: Add gst-plugins-good and pipewire.
[#:phases]<'wrap-programs>: Create a wrapper for screencast service and use it.
Change-Id: I2c31bf1bd92e281b86c57b06988c6a3793a58d40
---
Hi,
Here is v2 of the patch. The wrapper is now created manually as I was unable to
find a way to manipulate the gstreamer plugin load path from within javascript.
Importantly this leaves the original javascript file untouched and therefore
circumvents the argv[0] problem in v1.
All the required gstreamer plugins (pipewire and gst-plugins-good) are now
inputs and are in the wrapper via GST_PLUGIN_SYSTEM_PATH.
I've also left a comment for the required home-pipewire-service.
In gnome-shell 45+ the invocation has changed to 'gjs -m service'. Should this
also be a comment somewhere?
gnu/packages/gnome.scm | 37 ++++++++++++++++++++++++++++++++++++-
1 file changed, 36 insertions(+), 1 deletion(-)
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 4934ade3dd..d68624344f 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -9381,6 +9381,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)
@@ -9405,7 +9406,39 @@ (define-public gnome-shell
(wrap-program (string-append #$output "/bin/" prog)
`("GUIX_PYTHONPATH" ":" prefix (,python-path))
`("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
- '("gnome-shell-perf-tool")))))
+ '("gnome-shell-perf-tool"))
+ ;; Make a wrapper for the screencast service
+ ;; Requires a pipewire service running
+ ;; (i.e. as provided by home-pipewire-service-type)
+ (let* ((screencast "org.gnome.Shell.Screencast")
+ (dir (string-append #$output "/share/gnome-shell/"))
+ (dbus-service-dir (string-append #$output
+ "/share/dbus-1/"
+ "services/"))
+ (wrapper (string-append dir screencast "-wrapper")))
+ (call-with-output-file wrapper
+ (lambda (port)
+ (format port
+ (string-append
+ "#!~a~%"
+ "export GI_TYPELIB_PATH=~a~%"
+ "export GST_PLUGIN_SYSTEM_PATH=~a~%"
+ "exec \"~a\" \"~a\" \"$@\"~%")
+ (which "bash")
+ (format #f "\"~a${~a:+:}$~a\""
+ gi-typelib-path
+ "GI_TYPELIB_PATH" "GI_TYPELIB_PATH")
+ (format #f "\"~a${~a:+:}$~a\""
+ gst-plugin-path
+ "GST_PLUGIN_SYSTEM_PATH"
+ "GST_PLUGIN_SYSTEM_PATH")
+ (string-append #$(this-package-input "gjs")
+ "/bin/gjs")
+ (string-append dir screencast))))
+ (chmod wrapper #o555)
+ (substitute* (string-append dbus-service-dir screencast
+ ".service")
+ (("Exec=.*") (string-append "Exec=" wrapper "\n")))))))
(add-after 'install 'rewire
(lambda* (#:key inputs #:allow-other-keys)
(for-each
@@ -9465,6 +9498,7 @@ (define-public gnome-shell
gnome-settings-daemon
graphene
gst-plugins-base
+ gst-plugins-good
ibus
libcanberra
libcroco
@@ -9475,6 +9509,7 @@ (define-public gnome-shell
mesa-headers
mutter
network-manager-applet
+ pipewire
polkit
pulseaudio
python-pygobject
base-commit: 3dc26b4eaed448cbc02a80bafb2ebb6d908f2b4e
--
2.41.0
- [bug#70282] [PATCH 1/2] gnu: gnome-shell: Wrap d-bus services., (continued)
- [bug#70282] [PATCH 1/2] gnu: gnome-shell: Wrap d-bus services., Dariqq, 2024/04/08
- [bug#70282] [PATCH 1/2] gnu: gnome-shell: Wrap d-bus services., Liliana Marie Prikler, 2024/04/08
- [bug#70282] [PATCH 1/2] gnu: gnome-shell: Wrap d-bus services., Dariqq, 2024/04/09
- [bug#70282] [PATCH 1/2] gnu: gnome-shell: Wrap d-bus services., Liliana Marie Prikler, 2024/04/09
- [bug#70282] [PATCH 1/2] gnu: gnome-shell: Wrap d-bus services., Dariqq, 2024/04/10
- [bug#70282] [PATCH 1/2] gnu: gnome-shell: Wrap d-bus services., Liliana Marie Prikler, 2024/04/10
- [bug#70282] [PATCH 1/2] gnu: gnome-shell: Wrap d-bus services., Dariqq, 2024/04/11
[bug#70282] [PATCH 2/2] gnu: gnome-essential-extras: Propagate pipewire., Dariqq, 2024/04/08
[bug#70282] [PATCH v2] gnu: gnome-shell: Wrap screencast service.,
Dariqq <=
[bug#70282] [PATCH v3] gnu: gnome-shell: Wrap screencast service., Dariqq, 2024/04/21