Skip to content
  • Jonas Ådahl's avatar
    Add remote desktop and screen cast functionality · 97f2c7c1
    Jonas Ådahl authored
    This commit adds basic screen casting and remote desktoping
    functionalty. This works by exposing two D-Bus API services:
    org.gnome.Mutter.ScreenCast and org.gnome.Mutter.RemoteDesktop.
    
    The remote desktop API is used to create remote desktop sessions. For
    each session, a D-Bus object is created, and an application can manage
    the session by sending messages to the session object. A remote desktop
    session the user to emit input events using the D-Bus methods on the
    session object. To get framebuffer content, the application should
    create an associated screen cast session.
    
    The screen cast API is used to create screen cast sessions. One can so
    far either create stand-alone screen cast sessions, or a screen cast
    session associated with a remote desktop session. A remote desktop
    associated screen cast session is managed by the remote desktop session.
    
    So far only remote desktop managed screen cast sessions are implemented.
    
    Each screen cast session may have one or more streams. A screen cast
    stream is a stream of buffers of some part of the compositor content.
    So far API exists for creating streams of monitors and windows, but
    only monitor streams are implemented.
    
    When a screen cast session is started, the one PipeWire stream is
    created for each screen cast stream created for the session. When this
    has happened, a PipeWireStreamAdded signal is emitted on the stream
    object, passing a unique identifier. The application may use this
    identifier to find the associated stream being advertised by the
    PipeWire daemon.
    
    The remote desktop and screen cast functionality must be explicitly be
    enabled at ./configure time by passing --enable-remote-desktop to
    ./configure. Doing this will build both screen cast and remote desktop
    support.
    
    To actually enable the screen casting and remote desktop, the user must
    enable the experimental feature. See
    org.gnome.mutter.experimental-features.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=784199
    97f2c7c1