all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Liliana Marie Prikler <liliana.prikler@gmail.com>
To: Dariqq <dariqq@posteo.net>, 70282@debbugs.gnu.org
Cc: Vivien Kraus <vivien@planete-kraus.eu>,
	Maxim Cournoyer <maxim.cournoyer@gmail.com>
Subject: [bug#70282] [PATCH v2] gnu: gnome-shell: Wrap screencast service.
Date: Sat, 20 Apr 2024 12:46:25 +0200	[thread overview]
Message-ID: <7a635b027f59d348312098650d1606f2e658ffab.camel@gmail.com> (raw)
In-Reply-To: <f929f311-7192-411d-a889-f24a134141c9@posteo.net>

Am Samstag, dem 20.04.2024 um 10:11 +0000 schrieb Dariqq:
> 
> 
> On 19.04.24 20:51, Liliana Marie Prikler wrote:
> > Am Freitag, dem 12.04.2024 um 17:26 +0000 schrieb Dariqq:
> > > 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'm not sure this fix is sounds.  It looks like it misses manual
> > invocation from the command line, does it not?  (Well, it's gnome-
> > shell, so if you have to invoke it from the command line, things
> > are broken, but still…)
> 
> If only the typelib path is set the dbus service now longer greets
> you with an error but still fails to start without the gstreamer
> plugins.  That's why in v1 I was propagating pipewire through
> gnome-essential-extras.
> 
> I am not sure what you mean by manual invocation. The screencast
> service  should get started via dbus. Nothing manual should be
> required (other than enabling the pipewire home service).
Just what it says on the tin, manually running the "binary" through the
command line.  It's not super useful with GNOME, but I think we should
make sure our services work whichever way they could be invoked.

>    What keeps you from wrapping the environment
> > variable in Javascript?
> 
> I was unable to find a way to manipulate the GST_PLUGIN_PATH or
> specify the gst search path from within javascript. There is 
> Gst.Registry().scan_path but this creates a new registry and I don't 
> think is what we want here. (but I don't know anything about
> gstreamer and javascript so I could be wrong here).
Instead of creating a new Gst.Registry – as per the () here – you could
use gst_registry_get() or whatever the according JS method is to access
the Registry singleton.

The Registry constructor ought to be protected, but idk how GJS handles
that.

> I guess the most simple patch for the typelibs would be something
> like
> 
> 
> diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
> index fa6c566c75..28c4e540a6 100644
> --- a/gnu/packages/gnome.scm
> +++ b/gnu/packages/gnome.scm
> @@ -9404,13 +9404,15 @@ (define-public gnome-shell
>                        (wrap-program (string-append #$output "/bin/"
> prog)
>                          `("GI_TYPELIB_PATH" ":" prefix 
> (,gi-typelib-path))))
>                      '("gnome-shell" "gnome-extensions-app"))
> -                  (substitute* (string-append #$output 
> "/share/gnome-shell/"
> -                                             
> "org.gnome.Shell.Extensions")
> -                    (("imports\\.package\\.start" all)
> -                     (string-append "'" gi-typelib-path 
> "'.split(':').forEach("
> -                                    "path => 
> imports.gi.GIRepository.Repository."
> -                                    "prepend_search_path(path));\n"
> -                                    all)))
> +                  (for-each
> +                   (lambda (prog)
> +                     (substitute* (string-append #$output 
> "/share/gnome-shell/" prog)
> +                       (("imports\\.package\\.start" all)
> +                        (string-append "'" gi-typelib-path 
> "'.split(':').forEach("
> +                                       "path => 
> imports.gi.GIRepository.Repository."
> +                                      
> "prepend_search_path(path));\n"
> +                                       all))))
> +                   '("org.gnome.Shell.Extensions" 
> "org.gnome.Shell.Screencast"))
>                     (for-each
>                      (lambda (prog)
>                        (wrap-program (string-append #$output "/bin/"
> prog)
> 
> 
> and dealing with the gstreamer plugins in another way.
Hmm, could you add --gst-plugin-path on the command line?

> > > 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?
> > Gnome-shell 45+ is currently irrelevant, but we might have to adapt
> > things once we get there on gnome-team.  We do need a better gjs-
> > patching strategy.
> > 
> 
> It would be nice if something like wrap-script would work. But the 
> problem is that the dbus services specify somehting like "Exec= gjs 
> service" rather than executing a gjs-script directly. (which is the
> main purpose of the patch from nixos). And also gjs not being a valid
> interpreter for wrap-script (Changing that will rebuild everything)
You can redo the needed logic locally and add a "XXX: Use wrap-script
once it can handle gjs" for example.  That's no hard blocker, but it's
not the nicest option either, I admit.  Let's try our other options
first.

> 
Cheers

  reply	other threads:[~2024-04-20 10:47 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-08 15:39 [bug#70282] [PATCH 0/2] Fix gnome-shell screenrecorder Dariqq
2024-04-08 15:53 ` [bug#70282] [PATCH 1/2] gnu: gnome-shell: Wrap d-bus services Dariqq
2024-04-08 16:54   ` Liliana Marie Prikler
2024-04-09 15:35     ` Dariqq
2024-04-09 17:04       ` Liliana Marie Prikler
2024-04-10  8:07         ` Dariqq
2024-04-10 18:20           ` Liliana Marie Prikler
2024-04-11  9:04             ` Dariqq
2024-04-08 15:53 ` [bug#70282] [PATCH 2/2] gnu: gnome-essential-extras: Propagate pipewire Dariqq
2024-04-08 16:49   ` Liliana Marie Prikler
2024-04-09 14:05     ` Dariqq
2024-04-12 17:26 ` [bug#70282] [PATCH v2] gnu: gnome-shell: Wrap screencast service Dariqq
2024-04-19 18:51   ` Liliana Marie Prikler
2024-04-20 10:11     ` Dariqq
2024-04-20 10:46       ` Liliana Marie Prikler [this message]
2024-04-21 12:37         ` Dariqq
2024-04-21 12:43           ` Liliana Marie Prikler
2024-05-08 12:57             ` [bug#70282] [PATCH v3] " Dariqq
2024-04-21 17:02 ` Dariqq
2024-05-08 17:24   ` Liliana Marie Prikler
2024-05-08 18:33 ` [bug#70282] [PATCH v4] " Dariqq
2024-05-08 19:51   ` Maxim Cournoyer
2024-05-08 21:18     ` Dariqq
2024-05-08 22:11       ` Liliana Marie Prikler
2024-05-09  8:27         ` Dariqq
2024-05-10 14:59         ` Dariqq
2024-05-10 16:04           ` Liliana Marie Prikler
2024-05-11  8:03             ` Dariqq
2024-05-09 15:30       ` Maxim Cournoyer
2024-05-14  5:34         ` bug#70282: " Liliana Marie Prikler

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7a635b027f59d348312098650d1606f2e658ffab.camel@gmail.com \
    --to=liliana.prikler@gmail.com \
    --cc=70282@debbugs.gnu.org \
    --cc=dariqq@posteo.net \
    --cc=maxim.cournoyer@gmail.com \
    --cc=vivien@planete-kraus.eu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.