Screen sharing for Linux users

  • Thank you for your question. To check, when you “selected the proper option,” you clicked the camera icon in the FarPlay Video window and then looked for Share desktop screen at the bottom of the menu that appears, is that right?

    If the “Share desktop screen” item doesn’t appear for you, can you send a screenshot similar to the one above? Thanks!

    Here’s
    1-the screenshot you asked.
    2-the one after clicking on “share desktop screen”.
    3-the one after resizing the window, in order to see why it’s everything black.

    Thank you for the screenshots! When you see the “Screen Sharing Active” message and the black screen, can you please click on the Options menu in the FarPlay Video and check that “Show my shared screen” is checkmarked?

    If the “Show my shared screen” option is checked, but your screen is not shown, can you send a screen shot? Thanks!

    • This reply was modified 1 month, 2 weeks ago by David Liao. Reason: adjusted image size

    Well, there’s no option at all.

    But, trying to resize the window, suddenly the option appears, and if I check it, there you can see the little window showing the possibility to click the screen to share, but actually it can’t be checked, and the other member of the session can’t see my screen at all.

    Differently, if the other member (Rita, in this case), which is a windows user, tries to share her screen, I can see it normally.

    Well, it seems that screen sharing is indeed not working properly for you. It is strange, I don’t think it should require any additional permissions on Linux and it was tested on Ubuntu and Debian (I am personally using Debian Linux all the time). What particular version of Ubuntu are you using?

    Also, it would be really helpful if you send us terminal output from FarPlay when you start screen sharing. All you need for this is to run FarPlay from a terminal (open Terminal app and run farplay command there; then start a session, open video and start screen sharing). Then just select all and copy the content of the terminal window (it may be lengthy but it’s ok).

    Hi,
    I’m using Ubuntu Jammy Jallyfish 22.04 LTS
    here’s what you asked (seems there’s a “permission denied somewhere):

    salvatore@salvatore-22-h020el:~$ farplay
    Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.
    dir exists: 1
    FpAppSingleton::start
    FpAppSingleton::locked 1
    FpAppSingleton::start connecting to server
    FpAppSingleton::onError: QLocalSocket::connectToServer: Connection refused
    FpAppSingleton::start finished
    FpAppSingleton::startServer
    FpAppSingleton::stop
    recordsDir=/home/salvatore/.local/share/FarPlay/farplay.client/records
    is absolute == 1
    FpClient::onApiResponse
    FpXmppClient::onConnected
    presence (1): joined DC1C36
    Session created: DC1C36
    FpMainWindow::onSessionJoined session=DC1C36 session_caps=0 is_new=1
    openAudioDev, fpp = 128 rate = 48000
    successfully opened 0
    Open input jack;;PulseAudio JACK Sink: 0x560d2ac71c60 2
    openAudioDev, fpp = 128 rate = 48000
    successfully opened 1
    Open output jack;;PulseAudio JACK Source: 0x560d2ab53740 2
    FpMediaStreamManager sendProc thread = 0x560d2af3b910
    debug_config_path=
    changed: mirroring is 1
    void FpVideoWin::requestLayoutUpdate()
    changed: filling is 0
    void FpVideoWin::requestLayoutUpdate()
    selected camera format: /dev/video2 | rawvideo | yuyv422 | 640×360 | 30,000000 |
    selected camera format: /dev/video0 | rawvideo | yuyv422 | 640×480 | 30,000000 |
    void FpVideoWin::requestLayoutUpdate()
    FpVideoWin::applyVideoOptions size=640×480
    void FpVideoWin::updateLayout()
    frame widget:
    context version: 4.6
    context profile: 2
    VAO: 1
    glsl version: 460

    void FpVideoWin::updateLayout()
    FpMediaStreamManager::startVideo
    selected camera format: :0 | rawvideo | (null) | 1920×1080 | 30,000000 |
    selected camera format: :0 | rawvideo | (null) | 1920×1080 | 10,000000 |
    void FpVideoWin::requestLayoutUpdate()
    camera status: FpCaptureStatus::Stopped FpCaptureStatus::Starting
    void FpVideoWin::updateLayout()
    FpVideoWin::onCameraStatus: 1
    camera status: FpCaptureStatus::Starting FpCaptureStatus::Started
    void FpVProcessor::Private::startEncoder()
    FpVideoWin::onCameraStatus: 2
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    T FpAvResult<T>::ok() [with T = FpAvPacket*]: : error: Permesso negato
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    T FpAvResult<T>::ok() [with T = FpAvPacket*]: : error: Permesso negato
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    T FpAvResult<T>::ok() [with T = FpAvPacket*]: : error: Permesso negato
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    T FpAvResult<T>::ok() [with T = FpAvPacket*]: : error: Permesso negato
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    T FpAvResult<T>::ok() [with T = FpAvPacket*]: : error: Permesso negato
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    T FpAvResult<T>::ok() [with T = FpAvPacket*]: : error: Permesso negato
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    T FpAvResult<T>::ok() [with T = FpAvPacket*]: : error: Permesso negato
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    T FpAvResult<T>::ok() [with T = FpAvPacket*]: : error: Permesso negato
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    T FpAvResult<T>::ok() [with T = FpAvPacket*]: : error: Permesso negato
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    T FpAvResult<T>::ok() [with T = FpAvPacket*]: : error: Permesso negato
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    T FpAvResult<T>::ok() [with T = FpAvPacket*]: : error: Permesso negato
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    T FpAvResult<T>::ok() [with T = FpAvPacket*]: : error: Permesso negato
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    T FpAvResult<T>::ok() [with T = FpAvPacket*]: : error: Permesso negato
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    T FpAvResult<T>::ok() [with T = FpAvPacket*]: : error: Permesso negato
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    void FpVideoWin::updateLayout()
    void FpVideoWin::updateLayout()
    void FpVideoWin::requestLayoutUpdate()
    void FpVideoWin::updateLayout()
    void FpVideoWin::updateLayout()
    ignore packet error
    T FpAvResult<T>::ok() [with T = FpAvPacket*]: : error: Permesso negato
    void FpVideoWin::updateLayout()
    void FpVideoWin::updateLayout()
    void FpVideoWin::updateLayout()
    void FpVideoWin::updateLayout()
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    T FpAvResult<T>::ok() [with T = FpAvPacket*]: : error: Permesso negato
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    T FpAvResult<T>::ok() [with T = FpAvPacket*]: : error: Permesso negato
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    T FpAvResult<T>::ok() [with T = FpAvPacket*]: : error: Permesso negato
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    T FpAvResult<T>::ok() [with T = FpAvPacket*]: : error: Permesso negato
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    T FpAvResult<T>::ok() [with T = FpAvPacket*]: : error: Permesso negato
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    T FpAvResult<T>::ok() [with T = FpAvPacket*]: : error: Permesso negato
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    T FpAvResult<T>::ok() [with T = FpAvPacket*]: : error: Permesso negato
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    T FpAvResult<T>::ok() [with T = FpAvPacket*]: : error: Permesso negato
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    T FpAvResult<T>::ok() [with T = FpAvPacket*]: : error: Permesso negato
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    T FpAvResult<T>::ok() [with T = FpAvPacket*]: : error: Permesso negato
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    T FpAvResult<T>::ok() [with T = FpAvPacket*]: : error: Permesso negato
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    T FpAvResult<T>::ok() [with T = FpAvPacket*]: : error: Permesso negato
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    T FpAvResult<T>::ok() [with T = FpAvPacket*]: : error: Permesso negato
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    T FpAvResult<T>::ok() [with T = FpAvPacket*]: : error: Permesso negato
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    T FpAvResult<T>::ok() [with T = FpAvPacket*]: : error: Permesso negato
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    T FpAvResult<T>::ok() [with T = FpAvPacket*]: : error: Permesso negato
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    ignore packet error
    void FpVideoWin::requestLayoutUpdate()
    void FpVideoWin::updateLayout()
    void FpVideoWin::updateLayout()
    void FpVideoWin::requestLayoutUpdate()
    void FpVideoWin::updateLayout()
    FpMediaStreamManager::stopVideo

    Well, the most likely cause is that it seems that you use Wayland window manager (I believe it is the default in Gnome now). Unfortunately, currently we support screen sharing on Linux only for traditional X11/Xorg sessions. You should be able to select the type of the session at your Ubuntu login page (you need to select “Ubuntu on Xorg” or something like that to start Xorg session).

    Here is a screenshot with Ubuntu login page with session type menu.

    Well, you’re right. Now it works correctly. Thank you.
    But there is another small problem: normally I have to use Wayland, because a few months ago Xorg started having problems starting the session, i.e. it takes almost 2 minutes and 30 seconds from typing the login password to have the desktop correctly visible, compared to 15 sec. of Wayland. I don’t know how it happened, but one day I came across this delay problem, and while searching the web for a solution I only found the possibility of changing the graphic environment, from Xorg to Wayland. There must probably be some problem with dependencies, and reinstalling the operating system it could be solved, but it would take me too long. Excuse me.
    Now I know that if I want to use Farplay I have to start my session with Xorg, and unfortunately wait those 2 minutes. and a half to be functioning regularly.
    Thanks again for your excellent help.

    Waiting 2 minutes for login sounds like crazy. I think it should be some config issue, not the expected Xorg behavior. I hope at some point we will add support for screen capturing on Wayland, but for now it’s not in the short list of our priorities. Sorry about that.

Viewing 12 replies - 1 through 12 (of 12 total)
  • You must be logged in to reply to this topic.