Conflicts and errors - gstreamer requirement for both gtk+3 and gtk4

I’m getting the following when running gst-inspect-1.0 gtk4paintablesink

Need to add that this only appears the first time I run gst-inspect-1.0 gtk4paintablesink after a reboot or from a freshly launched terminal window. Any subsequent request doesn’t include the errors – this has been consistent for some time and across different vs of macOS.

My environment: mac M1 (Apple Silicon) macOS = Sequoia 15.5; gstreamer = 1.26.2; gtk4 = 4.18.5; gtk4paintablesink = 0.14.0-alpha.1-RELEASE (via gst-plugins-rs); gtk+3 = 3.24.43

BACKGROUND: my app requires gtk4 and gtk4paintablesink — despite output below unable to remove gtk+3 as gstreamer requires it:

brew uninstall gtk+3
Error: Refusing to uninstall /opt/homebrew/Cellar/gtk+3/3.24.43
because it is required by gstreamer, which is currently installed.
You can override this and force removal with:
  brew uninstall --ignore-dependencies gtk+3

Please advise how I can resolve this. Any tips would be very much appreciated. I’m having issues with gtk4paintablesink and believe if I can resolve these it may solve those issues as well. Thanks in advance.

OUTPUT:

gst-inspect-1.0 gtk4paintablesink
objc[344]: Class gdkCoreCursor is implemented in both /opt/homebrew/Cellar/gtk4/4.18.5/lib/libgtk-4.1.dylib (0x104282d00) and /opt/homebrew/Cellar/gtk+3/3.24.43/lib/libgdk-3.0.dylib (0x1056ad628). This may cause spurious casting failures and mysterious crashes. One of the duplicates must be removed or renamed.
objc[344]: Class ResultReceiver is implemented in both /opt/homebrew/Cellar/gtk4/4.18.5/lib/libgtk-4.1.dylib (0x104282b48) and /opt/homebrew/Cellar/gtk+3/3.24.43/lib/libgtk-3.0.dylib (0x106361e00). This may cause spurious casting failures and mysterious crashes. One of the duplicates must be removed or renamed.
objc[344]: Class GtkApplicationQuartzDelegate is implemented in both /opt/homebrew/Cellar/gtk4/4.18.5/lib/libgtk-4.1.dylib (0x104282b70) and /opt/homebrew/Cellar/gtk+3/3.24.43/lib/libgtk-3.0.dylib (0x106361e28). This may cause spurious casting failures and mysterious crashes. One of the duplicates must be removed or renamed.
objc[344]: Class GNSMenuItem is implemented in both /opt/homebrew/Cellar/gtk4/4.18.5/lib/libgtk-4.1.dylib (0x104282c10) and /opt/homebrew/Cellar/gtk+3/3.24.43/lib/libgtk-3.0.dylib (0x106361e78). This may cause spurious casting failures and mysterious crashes. One of the duplicates must be removed or renamed.
objc[344]: Class GNSMenu is implemented in both /opt/homebrew/Cellar/gtk4/4.18.5/lib/libgtk-4.1.dylib (0x104282c38) and /opt/homebrew/Cellar/gtk+3/3.24.43/lib/libgtk-3.0.dylib (0x106361ea0). This may cause spurious casting failures and mysterious crashes. One of the duplicates must be removed or renamed.
objc[344]: Class FilterComboBox is implemented in both /opt/homebrew/Cellar/gtk4/4.18.5/lib/libgtk-4.1.dylib (0x104282cb0) and /opt/homebrew/Cellar/gtk+3/3.24.43/lib/libgtk-3.0.dylib (0x106361f18). This may cause spurious casting failures and mysterious crashes. One of the duplicates must be removed or renamed.

(gst-plugin-scanner:344): GLib-GIRepository-WARNING **: 12:19:28.475: Failed to load shared library 'libgobject-2.0.0.dylib' referenced by the typelib: dlopen(libgobject-2.0.0.dylib, 0x0009): tried: 'libgobject-2.0.0.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OSlibgobject-2.0.0.dylib' (no such file), '/usr/lib/libgobject-2.0.0.dylib' (no such file, not in dyld cache), 'libgobject-2.0.0.dylib' (no such file)

(gst-plugin-scanner:344): GLib-GIRepository-WARNING **: 12:19:28.475: Failed to load shared library 'libglib-2.0.0.dylib' referenced by the typelib: dlopen(libglib-2.0.0.dylib, 0x0009): tried: 'libglib-2.0.0.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OSlibglib-2.0.0.dylib' (no such file), '/usr/lib/libglib-2.0.0.dylib' (no such file, not in dyld cache), 'libglib-2.0.0.dylib' (no such file)

** (gst-plugin-scanner:344): CRITICAL **: 12:19:28.475: can't find gi.repository.Gst
Traceback (most recent call last):
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 921, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 813, in module_from_spec
  File "/opt/homebrew/lib/python3.13/site-packages/gi/importer.py", line 146, in create_module
    importlib.import_module('gi.repository.' + dep.split("-")[0])
    ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/Cellar/python@3.13/3.13.3_1/Frameworks/Python.framework/Versions/3.13/lib/python3.13/importlib/__init__.py", line 88, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 921, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 813, in module_from_spec
  File "/opt/homebrew/lib/python3.13/site-packages/gi/importer.py", line 146, in create_module
    importlib.import_module('gi.repository.' + dep.split("-")[0])
    ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/Cellar/python@3.13/3.13.3_1/Frameworks/Python.framework/Versions/3.13/lib/python3.13/importlib/__init__.py", line 88, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 921, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 813, in module_from_spec
  File "/opt/homebrew/lib/python3.13/site-packages/gi/importer.py", line 147, in create_module
    dynamic_module = load_overrides(introspection_module)
  File "/opt/homebrew/lib/python3.13/site-packages/gi/overrides/__init__.py", line 98, in load_overrides
    override_mod = importlib.import_module(override_package_name)
  File "/opt/homebrew/Cellar/python@3.13/3.13.3_1/Frameworks/Python.framework/Versions/3.13/lib/python3.13/importlib/__init__.py", line 88, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.13/site-packages/gi/overrides/GLib.py", line 37, in <module>
    from gi import _option as option
  File "/opt/homebrew/lib/python3.13/site-packages/gi/_option.py", line 41, in <module>
    OPTION_CONTEXT_ERROR_QUARK = GLib.quark_to_string(GLib.option_error_quark())
                                                      ~~~~~~~~~~~~~~~~~~~~~~~^^
gi._error.GError: gi-invoke-error-quark: Could not locate g_option_error_quark: dlopen(libglib-2.0.0.dylib, 0x0009): tried: 'libglib-2.0.0.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OSlibglib-2.0.0.dylib' (no such file), '/usr/lib/libglib-2.0.0.dylib' (no such file, not in dyld cache), 'libglib-2.0.0.dylib' (no such file) (1)


Factory Details:
  Rank                     none (0)
  Long-name                GTK 4 Paintable Sink
  Klass                    Sink/Video
  Description              A GTK 4 Paintable sink
  Author                   Bilal Elmoussaoui <bil.elmoussaoui@gmail.com>, Jordan Petridis <jordan@centricular.com>, Sebastian Dröge <sebastian@centricular.com>
  Documentation            https://gstreamer.freedesktop.org/documentation/gtk4/#gtk4paintablesink-page

Plugin Details:
  Name                     gtk4
  Description              GStreamer GTK 4 sink element
  Filename                 /opt/homebrew/Cellar/gstreamer/gtk4plugin/gstreamer-1.0/libgstgtk4.dylib
  Version                  0.14.0-alpha.1-RELEASE
  License                  MPL
  Source module            gst-plugin-gtk4
  Documentation            https://gstreamer.freedesktop.org/documentation/gtk4/
  Source release date      2025-06-05
  Binary package           gst-plugin-gtk4
  Origin URL               https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs

GObject
 +----GInitiallyUnowned
       +----GstObject
             +----GstElement
                   +----GstBaseSink
                         +----GstVideoSink
                               +----GstGtk4PaintableSink

Implemented Interfaces:
  GstChildProxy

Element Flags:
  - SINK

Pad Templates:
  SINK template: 'sink'
    Availability: Always
    Capabilities:
      video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition)
                 format: { (string)RGBA, (string)RGB }
                  width: [ 1, 2147483647 ]
                 height: [ 1, 2147483647 ]
              framerate: [ 0/1, 2147483647/1 ]
         texture-target: 2D
      video/x-raw(memory:GLMemory)
                 format: { (string)RGBA, (string)RGB }
                  width: [ 1, 2147483647 ]
                 height: [ 1, 2147483647 ]
              framerate: [ 0/1, 2147483647/1 ]
         texture-target: 2D
      video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition)
                 format: { (string)BGRA, (string)ARGB, (string)RGBA, (string)ABGR, (string)RGB, (string)BGR }
                  width: [ 1, 2147483647 ]
                 height: [ 1, 2147483647 ]
              framerate: [ 0/1, 2147483647/1 ]
      video/x-raw(meta:GstVideoOverlayComposition)
                 format: { (string)BGRA, (string)ARGB, (string)RGBA, (string)ABGR, (string)RGB, (string)BGR }
                  width: [ 1, 2147483647 ]
                 height: [ 1, 2147483647 ]
              framerate: [ 0/1, 2147483647/1 ]
      video/x-raw
                 format: { (string)BGRA, (string)ARGB, (string)RGBA, (string)ABGR, (string)RGB, (string)BGR }
                  width: [ 1, 2147483647 ]
                 height: [ 1, 2147483647 ]
              framerate: [ 0/1, 2147483647/1 ]

Element has no clocking capabilities.
Element has no URI handling capabilities.

Pads:
  SINK: 'sink'
    Pad Template: 'sink'

Element Properties:

  async               : Go asynchronously to PAUSED
                        flags: readable, writable
                        Boolean. Default: true
  
  blocksize           : Size in bytes to pull per buffer (0 = default)
                        flags: readable, writable
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4096 
  
  enable-last-sample  : Enable the last-sample property
                        flags: readable, writable
                        Boolean. Default: true
  
  last-sample         : The last sample received in the sink
                        flags: readable
                        Boxed pointer of type "GstSample"
  
  max-bitrate         : The maximum bits per second to render (0 = disabled)
                        flags: readable, writable
                        Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 0 
  
  max-lateness        : Maximum number of nanoseconds that a buffer can be late before it is dropped (-1 unlimited)
                        flags: readable, writable
                        Integer64. Range: -1 - 9223372036854775807 Default: 5000000 
  
  name                : The name of the object
                        flags: readable, writable
                        String. Default: "gtk4paintablesink0"
  
  paintable           : The Paintable the sink renders to
                        flags: readable
                        Object of type "GstGtk4Paintable"
  
  parent              : The parent of the object
                        flags: readable, writable
                        Object of type "GstObject"
  
  processing-deadline : Maximum processing time for a buffer in nanoseconds
                        flags: readable, writable
                        Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 15000000 
  
  qos                 : Generate Quality-of-Service events upstream
                        flags: readable, writable
                        Boolean. Default: true
  
  render-delay        : Additional render delay of the sink in nanoseconds
                        flags: readable, writable
                        Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 0 
  
  show-preroll-frame  : Whether to render video frames during preroll
                        flags: readable, writable
                        Boolean. Default: true
  
  stats               : Sink Statistics
                        flags: readable
                        Boxed pointer of type "GstStructure"
                                                        average-rate: 0
                                                             dropped: 0
                                                            rendered: 0

  
  sync                : Sync on the clock
                        flags: readable, writable
                        Boolean. Default: true
  
  throttle-time       : The time to keep between rendered buffers (0 = disabled)
                        flags: readable, writable
                        Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 0 
  
  ts-offset           : Timestamp offset in nanoseconds
                        flags: readable, writable
                        Integer64. Range: -9223372036854775808 - 9223372036854775807 Default: 0 
  
CT@betty gst-plugins-rs-main % 
CT@betty gst-plugins-rs-main % 
CT@betty gst-plugins-rs-main % 
CT@betty gst-plugins-rs-main % gst-inspect-1.0 gtk4paintablesink
Factory Details:
  Rank                     none (0)
  Long-name                GTK 4 Paintable Sink
  Klass                    Sink/Video
  Description              A GTK 4 Paintable sink
  Author                   Bilal Elmoussaoui <bil.elmoussaoui@gmail.com>, Jordan Petridis <jordan@centricular.com>, Sebastian Dröge <sebastian@centricular.com>
  Documentation            https://gstreamer.freedesktop.org/documentation/gtk4/#gtk4paintablesink-page

Plugin Details:
  Name                     gtk4
  Description              GStreamer GTK 4 sink element
  Filename                 /opt/homebrew/Cellar/gstreamer/gtk4plugin/gstreamer-1.0/libgstgtk4.dylib
  Version                  0.14.0-alpha.1-RELEASE
  License                  MPL
  Source module            gst-plugin-gtk4
  Documentation            https://gstreamer.freedesktop.org/documentation/gtk4/
  Source release date      2025-06-05
  Binary package           gst-plugin-gtk4
  Origin URL               https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs

GObject
 +----GInitiallyUnowned
       +----GstObject
             +----GstElement
                   +----GstBaseSink
                         +----GstVideoSink
                               +----GstGtk4PaintableSink

Implemented Interfaces:
  GstChildProxy

Element Flags:
  - SINK

Pad Templates:
  SINK template: 'sink'
    Availability: Always
    Capabilities:
      video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition)
                 format: { (string)RGBA, (string)RGB }
                  width: [ 1, 2147483647 ]
                 height: [ 1, 2147483647 ]
              framerate: [ 0/1, 2147483647/1 ]
         texture-target: 2D
      video/x-raw(memory:GLMemory)
                 format: { (string)RGBA, (string)RGB }
                  width: [ 1, 2147483647 ]
                 height: [ 1, 2147483647 ]
              framerate: [ 0/1, 2147483647/1 ]
         texture-target: 2D
      video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition)
                 format: { (string)BGRA, (string)ARGB, (string)RGBA, (string)ABGR, (string)RGB, (string)BGR }
                  width: [ 1, 2147483647 ]
                 height: [ 1, 2147483647 ]
              framerate: [ 0/1, 2147483647/1 ]
      video/x-raw(meta:GstVideoOverlayComposition)
                 format: { (string)BGRA, (string)ARGB, (string)RGBA, (string)ABGR, (string)RGB, (string)BGR }
                  width: [ 1, 2147483647 ]
                 height: [ 1, 2147483647 ]
              framerate: [ 0/1, 2147483647/1 ]
      video/x-raw
                 format: { (string)BGRA, (string)ARGB, (string)RGBA, (string)ABGR, (string)RGB, (string)BGR }
                  width: [ 1, 2147483647 ]
                 height: [ 1, 2147483647 ]
              framerate: [ 0/1, 2147483647/1 ]

Element has no clocking capabilities.
Element has no URI handling capabilities.

Pads:
  SINK: 'sink'
    Pad Template: 'sink'

Element Properties:

  async               : Go asynchronously to PAUSED
                        flags: readable, writable
                        Boolean. Default: true
  
  blocksize           : Size in bytes to pull per buffer (0 = default)
                        flags: readable, writable
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4096 
  
  enable-last-sample  : Enable the last-sample property
                        flags: readable, writable
                        Boolean. Default: true
  
  last-sample         : The last sample received in the sink
                        flags: readable
                        Boxed pointer of type "GstSample"
  
  max-bitrate         : The maximum bits per second to render (0 = disabled)
                        flags: readable, writable
                        Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 0 
  
  max-lateness        : Maximum number of nanoseconds that a buffer can be late before it is dropped (-1 unlimited)
                        flags: readable, writable
                        Integer64. Range: -1 - 9223372036854775807 Default: 5000000 
  
  name                : The name of the object
                        flags: readable, writable
                        String. Default: "gtk4paintablesink0"
  
  paintable           : The Paintable the sink renders to
                        flags: readable
                        Object of type "GstGtk4Paintable"
  
  parent              : The parent of the object
                        flags: readable, writable
                        Object of type "GstObject"
  
  processing-deadline : Maximum processing time for a buffer in nanoseconds
                        flags: readable, writable
                        Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 15000000 
  
  qos                 : Generate Quality-of-Service events upstream
                        flags: readable, writable
                        Boolean. Default: true
  
  render-delay        : Additional render delay of the sink in nanoseconds
                        flags: readable, writable
                        Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 0 
  
  show-preroll-frame  : Whether to render video frames during preroll
                        flags: readable, writable
                        Boolean. Default: true
  
  stats               : Sink Statistics
                        flags: readable
                        Boxed pointer of type "GstStructure"
                                                        average-rate: 0
                                                             dropped: 0
                                                            rendered: 0

  
  sync                : Sync on the clock
                        flags: readable, writable
                        Boolean. Default: true
  
  throttle-time       : The time to keep between rendered buffers (0 = disabled)
                        flags: readable, writable
                        Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 0 
  
  ts-offset           : Timestamp offset in nanoseconds
                        flags: readable, writable
                        Integer64. Range: -9223372036854775808 - 9223372036854775807 Default: 0 
  
  window-height       : the height of the main widget rendering the paintable
                        flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state
                        Unsigned Integer. Range: 0 - 4294967295 Default: 0 
  
  window-width        : the width of the main widget rendering the paintable
                        flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state
                        Unsigned Integer. Range: 0 - 4294967295 Default: 0`Preformatted text`