Skip to content
Commits on Source (97)
  • Jonas Ådahl's avatar
    Add translation files · 74b427f5
    Jonas Ådahl authored
    74b427f5
  • Yuri Chornoivan's avatar
    Add Ukrainian translation · 8bb74f57
    Yuri Chornoivan authored
    8bb74f57
  • Enrico Nicoletto's avatar
    Add Brazilian Portuguese translation · 01c09da2
    Enrico Nicoletto authored
    01c09da2
  • Trần Ngọc Quân's avatar
    Add Vietnamese translation · 8cf54dfa
    Trần Ngọc Quân authored
    8cf54dfa
  • Daniel Mustieles's avatar
    Spanish Translation · fe325e79
    Daniel Mustieles authored
    fe325e79
  • Daniel Mustieles's avatar
    Spanish Translation · aeb6617f
    Daniel Mustieles authored
    aeb6617f
  • Yaron Shahrabani's avatar
    Add Hebrew translation · 8a563eaf
    Yaron Shahrabani authored
    8a563eaf
  • Fran Dieguez's avatar
    Add Galician translation · db8c365d
    Fran Dieguez authored
    db8c365d
  • Danial Behzadi's avatar
    Add Persian translation · 4486e57c
    Danial Behzadi authored
    4486e57c
  • Jordi Mas's avatar
    Add Catalan translation · 283557fb
    Jordi Mas authored
    283557fb
  • Jordi Mas's avatar
    Fix typos, order should be lower case · 053ae9fb
    Jordi Mas authored
    053ae9fb
  • Yuri Chornoivan's avatar
    Update Ukrainian translation · 9c0e883f
    Yuri Chornoivan authored
    9c0e883f
  • Luna Jernberg's avatar
    Add Swedish translation · 7036203c
    Luna Jernberg authored
    7036203c
  • Hugo Carvalho's avatar
    Add Portuguese translation · 7b1c3361
    Hugo Carvalho authored
    7b1c3361
  • Boyuan Yang's avatar
    Add Chinese (China) translation · bba6aeb2
    Boyuan Yang authored
    bba6aeb2
  • Asier Sarasua Garmendia's avatar
    Add Basque translation · c1991bd3
    Asier Sarasua Garmendia authored
    c1991bd3
  • Matej Urbančič's avatar
    Add Slovenian translation · 6470df28
    Matej Urbančič authored
    6470df28
  • Matej Urbančič's avatar
    Update Slovenian translation · 3ca4c11b
    Matej Urbančič authored
    3ca4c11b
  • Florentina Mușat's avatar
    Add Romanian translation · 94442ea4
    Florentina Mușat authored
    94442ea4
  • Rafael's avatar
    Update Brazilian Portuguese translation · 9f96f097
    Rafael authored
    9f96f097
  • Alexey Rubtsov's avatar
    Add Russian translation · e4e1a5a2
    Alexey Rubtsov authored
    e4e1a5a2
  • Daniel Mustieles's avatar
    Updated Spanish translation · 4cbc914c
    Daniel Mustieles authored
    4cbc914c
  • Andika Triwidada's avatar
    Add Indonesian translation · dac24f1d
    Andika Triwidada authored
    dac24f1d
  • Andika Triwidada's avatar
    Update Indonesian translation · 61f89cf2
    Andika Triwidada authored
    61f89cf2
  • Quentin PAGÈS's avatar
    Add Occitan translation · fb77a1fb
    Quentin PAGÈS authored
    fb77a1fb
  • Kukuh Syafaat's avatar
    Update Indonesian translation · d25acbf2
    Kukuh Syafaat authored
    d25acbf2
  • Fabio Tomat's avatar
    Add Friulian translation · c6adbebf
    Fabio Tomat authored
    c6adbebf
  • Pascal Nowack's avatar
    clipboard: Split up SelectionRead requests · 60e1d251
    Pascal Nowack authored
    In order to be able to handle SelectionRead requests in an async way,
    request_server_content_for_mime_type() needs to be adjusted to not to
    directly return the data.
    The function now becomes a void function, meaning no data returns to
    the calling function.
    To return the fetched data to the clipboard implementation, use a newly
    introduced vfunc.
    
    Functionality wise, nothing changes in this commit, since the backends
    still get their data in the same way, except that the calling function
    is not the same any more, as the part, that processes the returned
    data, is now a separate function.
    60e1d251
  • Pascal Nowack's avatar
    session: Move 'ReadMimeTypeContent' to clipboard class · 8105215c
    Pascal Nowack authored
    Reading the mime type content from a fd is a task for the clipboard.
    Handling the read() operation in an async way should therefore be done
    in grd-clipboard, as it will introduce more code, that is specific to
    the clipboard.
    
    So, move this part into grd-clipboard as another preparation for async
    read() operations.
    Functionality wise, nothing changes in this commit.
    grd_session_selection_read() will now return the read fd, instead of
    the read mime type content.
    8105215c
  • Pascal Nowack's avatar
    clipboard: Handle SelectionRead() operations in an async way · 703ea94c
    Pascal Nowack authored
    Currently, reading the mime type content happens by directly calling
    read() on a fd.
    This is problematic, as it will only work, when the other end also
    supplies the mime type content.
    This is not always the case and in such cases gnome-remote-desktop will
    freeze with 100% cpu usage in read().
    To get rid of this situation, the read() operation must happen in an
    async way.
    If a certain timeout passes, the read() operation needs to be aborted.
    
    Do this using a GTask, which runs in another thread, which then runs
    g_input_stream_read(), which listens on the read fd and on the
    cancellable fd.
    This allows g-r-d to stay responsive, even when an application does not
    supply the mime type content.
    
    When the GTask is done with the async operation, it will create a
    GSource and attach it to the thread, that created the GTask.
    Since that GSource function can also run, when the client is already
    gone, abort the current read operation with a GCancellable, when
    disposing the clipboard.
    
    If a new mime type list is advertised by the server or client, abort
    the current read operation and flush the current mime type content.
    This ensures, that the order in which all clipboard operations happen
    is kept, as the RDP clipboard, for example, does not define how pending
    FormatDataRequests are handled, when a new FormatList is advertised.
    If the read operation was successful, but the mime type content was not
    submitted yet, submit the mime type content.
    Otherwise, inform the backend about the abortion of the operation.
    For clipboard implementations that support delayed rendering of
    clipboard data (RDP), this ensures that the client is notified about
    the read result.
    In the case of RDP this means, that the FormatDataResponse with the
    fail flag is sent.
    
    When the read() operation is aborted, wait for the GTask thread
    function to complete.
    Do this using a GCond. This ensures that the read result can be
    retrieved without any race conditions.
    This also ensures that mutter won't deny any new SelectionRead()
    requests from gnome-remote-desktop, as the fd of the pipe is closed on
    gnome-remote-desktops side, before the GCond is signalled, so that
    mutter won't deny the request with the "reading in parallel" error.
    
    Fixes: https://gitlab.gnome.org/GNOME/gnome-remote-desktop/-/issues/60
    703ea94c
  • Efstathios Iosifidis's avatar
    Add Greek translation · 5005b0ab
    Efstathios Iosifidis authored
    5005b0ab
  • Pascal Nowack's avatar
    build: Bump FreeRDP version to 2.3.x · 807cc4ec
    Pascal Nowack authored
    After a very long time, Fedora finally started shipping FreeRDP >=
    2.3.x stable releases, which allow now to bump the version requirement.
    
    So, do exactly that and get rid of all the HAVE_FREERDP_2_3 ifdefs.
    807cc4ec
  • Pascal Nowack's avatar
    session-rdp: Correctly set the OsMinorType · 67c229de
    Pascal Nowack authored
    Instead of setting the OsMinorType, the OsMinorType was not set, but
    the OsMajorType was overwritten with an invalid value.
    
    Fix this by replacing the second OsMajorType with OsMinorType.
    67c229de
  • Pascal Nowack's avatar
    session: Get rid of trailing spaces · d3e490ee
    Pascal Nowack authored
    d3e490ee
  • Pascal Nowack's avatar
    rdp-fuse-clipboard: Rename clear_instant_droppable_clip_data_entry() · 3ce85f44
    Pascal Nowack authored
    In most cases, clear_instant_droppable_clip_data_entry() just clears
    one entry.
    That is true. However, the implementation does not stop after finding
    the first instant droppable clip data entry.
    
    So, rename this function to clear_instant_droppable_clip_data_entries.
    Also set the copyright year correctly, as the clipboard data locking
    implementation was done in 2021.
    3ce85f44
  • Pascal Nowack's avatar
    rdp-fuse-clipboard: Fix debug output · d6b141e6
    Pascal Nowack authored
    The debug output message is supposed to say "All clipDataIds used.",
    instead of "All clipDataIds still used.", as there was no clipDataId
    deletion before.
    d6b141e6
  • Pascal Nowack's avatar
    clipboard-rdp: Fix comments and output messages · bf337e4b
    Pascal Nowack authored
    CLIPRDR does not perform stream file clipping, it performs streaming
    operations of file clips.
    
    So, fix that output message. Also fix some comments, to use the word
    "notify", instead of "inform", and fix a comment to correctly reflect
    the documentation ("can now be released" -> "MUST now be released").
    Additionally, set the copyright year correctly, as the clipboard data locking
    implementation was done in 2021.
    bf337e4b
  • Pascal Nowack's avatar
    clipboard-rdp: Don't leak memory when session ends · 982b4db3
    Pascal Nowack authored
    When the remote desktop session ends, but there is still a list of
    pending mime type tables for the server, then these tables are leaked.
    While it is in reality very unlikely that this situation happens, it is
    theoretically not impossible that this situation happens.
    
    So, save the FormatListUpdateContext, like the FormatDataRequestContext
    on the clipboard_rdp struct to allow freeing the memory, when the
    associated server_format_list_update_id is cleared.
    982b4db3
  • Pascal Nowack's avatar
    clipboard-rdp: Also ensure that the mime type tables are freed · 5bb43cc1
    Pascal Nowack authored
    Commit 982b4db3 fixes a memory leak,
    that can happen, if there is still a list of pending mime type tables,
    when the session ends.
    While the commit ensures that the update context is freed, it does not
    clear the list of pending mime type tables itself.
    
    Do this now in this commit. Use however here g_idle_add_full(), instead
    of g_idle_add(), as that function allows the caller to pass a destroy
    function, which is called, when the GSource is removed.
    When the source function is called, steal the mime type tables, to
    ensure that the pointer is NULL to avoid a double free.
    
    Fixes 982b4db3
    5bb43cc1
  • Philipp Kiemle's avatar
    Add German translation · 7b668b59
    Philipp Kiemle authored
    7b668b59
  • Marek Černocký's avatar
    Added Czech translation · 2402bc23
    Marek Černocký authored
    2402bc23
  • Fran Dieguez's avatar
    Update Galician translation · e2f3d206
    Fran Dieguez authored
    e2f3d206
  • Zander Brown's avatar
    Add British English translation · 54097f5e
    Zander Brown authored
    54097f5e
  • Pascal Nowack's avatar
    rdp-fuse-clipboard: Handle FUSE lifetime object in FUSE thread · 5e669c29
    Pascal Nowack authored
    Currently, the rdp-fuse-clipboard creates the FUSE session in the main
    thread and executes the FUSE loop in the FUSE thread.
    However, when creating the FUSE session, FUSE creates thread specific
    data.
    This thread specific data lies in the main thread, but MUST lie in the
    FUSE thread, as it is accessed there, especially, when the session
    ends.
    The problem, when the FUSE session ends is, that if a pending file
    operation is happening, then FUSE cannot forcibly abort it.
    Instead, it waits until the user in Nautilus confirmed the "OK"
    message, that tells the user, that the data is not available any more.
    While this situation can be worse (especially with headless sessions,
    as gnome-remote-desktop would effectively freeze here), it is an
    undefined situation, as the thread specific data is not available in
    the FUSE thread.
    
    To solve this situation, create the FUSE session in the FUSE thread.
    This ensures that the thread specific data, that FUSE creates, is
    created and accessed in the correct thread.
    Also, since fuse_session_exit() does not directly stop the FUSE session
    upon calling it, but merely sets an exit flag, call the stat command on
    the FUSE root directory.
    FUSE will always wait for an operation. Upon retrieving the operation,
    it checks the exit flag.
    If it is set, FUSE will exit the FUSE loop.
    
    Since the user can unmount any (FUSE) mount any time, don't directly
    destroy the FUSE session.
    Instead, wait for the main thread here. This ensures that no race
    conditions happen, where fuse_session_exit() might be called on a NULL
    pointer or similar.
    This waiting operation uses WinPR events and will not consume precious
    CPU time here.
    Also, do the same, when starting the FUSE session. This ensures that
    the FUSE session always exists, when the FUSE clipboard has been
    created.
    5e669c29
  • Pascal Nowack's avatar
    clipboard-rdp: Don't add duplicated mime types to mime type tables · a9a3e331
    Pascal Nowack authored
    Normally, all FormatLists contain all announced formats only once.
    With xfreerdp3, this is not the case any more, since the introduction
    of server to client file transfer via the clipboard for xfreerdp.
    Since file lists are announced via the name "FileGroupDescriptorW" and
    their id is dynamically assigned, gnome-remote-desktop replaces the
    existing mime type tables of their mime type.
    
    The problem with duplicated mime types is, that gnome-remote-desktop
    correctly replaces the old mime type tables, if they exist, but for
    each freed mime type table still tries to announce them to mutter.
    glib realizes this situation, when creating the string variant for each
    type and emits a critical warning (instead of crashing).
    
    To solve this situation, use a GHashTable to ensure that mime type
    tables are only added once.
    Once all mime type tables are in the list, destroy the temporary hash
    table.
    With this handling, gnome-remote-desktop ignores all duplicated entries
    in a FormatList and only picks their first occurrence.
    a9a3e331
  • Jiri Grönroos's avatar
    Add Finnish translation · 7d7077af
    Jiri Grönroos authored
    7d7077af
  • Baurzhan Muftakhidinov's avatar
    Add Kazakh translation · 39487468
    Baurzhan Muftakhidinov authored
    39487468
  • Jordi Mas's avatar
    Update Catalan translation · 2bd1575c
    Jordi Mas authored
    2bd1575c
  • Dušan Kazik's avatar
    Add Slovak translation · dae05d4a
    Dušan Kazik authored
    dae05d4a
  • Seong-ho Cho's avatar
    Add Korean translation · 8bfbeff6
    Seong-ho Cho authored
    8bfbeff6
  • Danial Behzadi's avatar
    Update Persian translation · 2177c952
    Danial Behzadi authored
    2177c952
  • Nathan Follens's avatar
    Add Dutch translation · ec922224
    Nathan Follens authored
    ec922224
  • Aurimas Černius's avatar
    Add Lithuanian translation · 66ff47cb
    Aurimas Černius authored
    66ff47cb
  • Pascal Nowack's avatar
    session-rdp: Send Provider Ultimatum after the socket thread stopped · adfdb804
    Pascal Nowack authored
    The Disconnect Provider Ultimatum PDU is supposed to be the last PDU
    that is sent to the client.
    This can only be assured, if the socket thread ends before sending this
    PDU.
    
    So, move the Close() call below the join call of the socket thread.
    adfdb804
  • Pascal Nowack's avatar
    session-rdp: Also unset RDP_PEER_ACTIVATED flag when session is stopped · 450ec753
    Pascal Nowack authored
    Unsetting the RDP_PEER_ACTIVATED flag ensures that actions that depend
    on this flag won't run any more.
    Currently, only when the client disconnects, this flag is unset, but
    not, when the disconnection happened from gnome-shell.
    
    So, always unconditionally unset the RDP_PEER_ACTIVATED, when stopping
    the RDP session.
    450ec753
  • Pascal Nowack's avatar
    rdp: Add RDP surface · 2b3e89fb
    Pascal Nowack authored
    This is a preparatory step for the graphics pipeline.
    While in the legacy path frame updates happen directly in the graphics
    output buffer, that is visible to the user, the graphics pipeline
    handles frame updates differently:
    
    Instead of updating one chunk of area in the graphics output buffer,
    the graphics pipeline only updates an offscreen surface.
    That surface can be mapped to the user-visible graphics output
    buffer (to become an onscreen surface) for the usage as a monitor or
    window (RAIL), but is not limited to that.
    The graphics pipeline also allows using offscreen surfaces to e.g.
    composite frames with the usage of the blitting PDUs or to cache frame
    content using them.
    
    Each RDP surface can later correspond to a GFX surface, but does not
    have to, to remain compatible with the legacy path.
    In the next step, gnome-remote-desktop will be adapted to use RDP
    surfaces, when handling frame updates.
    2b3e89fb
  • Pascal Nowack's avatar
    rdp: Adapt to GrdRdpSurface · 2453c6bc
    Pascal Nowack authored
    With the introduction of the RDP surface in the last commit, adapt the
    frame handling in session-rdp to it.
    RDP surfaces can be invalidated in case of e.g. a recreation is
    necessary.
    This will for example be the case, when the surface was resized, as
    GFX surfaces cannot be directly resized.
    Instead, GFX surfaces need to be recreated. This will later also
    force the codec to reset, in case of the frame is progressively
    encoded (e.g. when using H264 or RFX Progressive with TILE_FIRST +
    TILE_UPGRADE tiles).
    2453c6bc
  • Pascal Nowack's avatar
    session-rdp: Remove get_framebuffer_stride() · 74ad7481
    Pascal Nowack authored
    It is now unused and won't be needed any more.
    74ad7481
  • Pascal Nowack's avatar
    session-rdp: Set RLGR mode before encoding frame data · 9b0f07cb
    Pascal Nowack authored
    RFX and RFX Progressive are similar codecs. However, they are not the
    same and even when progressive encoding is not used, the encoded frame
    will not be the same.
    RFX uses for the Golomb-Rice coding the RLGR3 mode, while RFX
    Progressive uses the RLGR1 mode.
    
    Since, with the introduction of the graphics pipeline, both are
    supported, set the RLGR mode before encoding the frame data to ensure
    that the correct mode is used.
    9b0f07cb
  • Pascal Nowack's avatar
    rdp: Add GSource to encode pending frame data · 87696911
    Pascal Nowack authored
    Add a GSource to encode the pending frame data. This GSource will then
    be later used to update all RDP surfaces to their latest frame.
    
    To be able to do that, also save the pending frame for an RDP surface,
    when the current situation does not allow updating an RDP surface, but
    a later situation will.
    87696911
  • Pascal Nowack's avatar
    session-rdp: Encode pending frame data upon end of SuppressOutput · 026ac0af
    Pascal Nowack authored
    Use the GSource, that was added in the previous commit, to encode any
    pending frame data, when client stops suppressing the output.
    This will be the case, when the user restores the RDP client or
    switches to the workspace, where the restored RDP client window lies.
    Without this commit, the user would have to trigger a new frame by e.g.
    moving the mouse to ensure that they received the latest frame content.
    026ac0af
  • Pascal Nowack's avatar
    rdp-server: Run primitives benchmark when the server starts · 71b48f43
    Pascal Nowack authored
    For different actions, like colour conversion, FreeRDP uses the FreeRDP
    primitives.
    When using the FreeRDP primitives the first time, FreeRDP runs a small
    benchmark.
    This benchmark can take up to ~310ms. Running the benchmark earlier
    (, when the server starts), saves that time, when the first RDP client
    connects.
    
    So, add a primitives_get() call, when the RDP server initializes to
    ensure that the benchmark won't have to run any more, when the user
    connects.
    71b48f43
  • Pascal Nowack's avatar
    session-rdp: Add status flags for the graphics pipeline · eed32dc1
    Pascal Nowack authored
    The graphics pipeline is a dynamic channel and has its own capability
    exchange.
    This means: If the connection is activated, then the graphics pipeline
    will not be ready yet.
    The RDP_PEER_PENDING_GFX_INIT flag signals, that there is a pending
    capability exchange (graphics pipeline not ready yet), while the
    RDP_PEER_PENDING_GFX_GRAPHICS_RESET flag signals, that
    gnome-remote-desktop needs to submit the monitor configuration and the
    size of the graphics output buffer to the client first, in order to be
    able to submit surface updates.
    eed32dc1
  • Pascal Nowack's avatar
    session-rdp: Add API to encode pending frame for RDP surface · a5292693
    Pascal Nowack authored
    Currently, gnome-remote-desktop encodes all pending frame data upon the
    end of the SuppressOutput PDU.
    When using the graphics pipeline, gnome-remote-desktop needs to be able
    to control the rate of the encodings.
    This means: gnome-remote-desktop needs to be able to suspend the
    encoding and continue it later.
    This is the case, when the client is too slow with the decoding.
    In that case, gnome-remote-desktop needs to immediately stop the
    encoding to not flood the client with too much new frame content.
    When the client acked enough pending frames, continue the encoding
    process.
    
    To be able to do that, add an API to encode the pending frame of an RDP
    surface.
    a5292693
  • Pascal Nowack's avatar
    rdp-surface: Add attribute to indicate that encoding is suspended · 799a730d
    Pascal Nowack authored
    This attribute indicates, when set to TRUE, that a new frame for this
    RDP surface should not be encoded yet.
    It is independent of the graphics pipeline, meaning session-rdp can
    later use this attribute without considering whether the graphics
    pipeline is supported or not.
    It will, however, later only be used for the graphics pipeline.
    799a730d
  • Pascal Nowack's avatar
    rdp: Add skeleton class for GFX surfaces · 66df97a8
    Pascal Nowack authored
    This class will later represent a GFX surface.
    
    Add the class now, so it can be already tracked in the corresponding
    RDP surface.
    66df97a8
  • Pascal Nowack's avatar
    rdp: Add public FrameInfo struct · 37d9ea27
    Pascal Nowack authored
    This FrameInfo struct will later be used by the graphics pipeline and
    the frame log of a GFX surface to rewrite the frame history.
    37d9ea27
  • Pascal Nowack's avatar
    rdp: Introduce GFX frame log · b895c7e3
    Pascal Nowack authored
    The GFX frame log will track pending frame acks of a GFX surface and
    calculate the frame encoding and frame acking rate.
    The latter part will later be important, when dealing with the network
    latency, as gnome-remote-desktop cannot fully rely on the measured
    round trip time for handling the encoding rate, as the measured round
    trip time can also reflect bottlenecks on the client side.
    
    The GFX frame log is therefore also an initial step for network
    autodetection.
    b895c7e3
  • Pascal Nowack's avatar
  • Pascal Nowack's avatar
    session-rdp: Add API to notify a severe error · efe8d3aa
    Pascal Nowack authored
    The capability, that indicates the support for the graphics pipeline
    for the client or the server, is already exchanged upon connection of
    the RDP client.
    If the client indicates support for the graphics pipeline, but actually
    does not support it (opening the graphics pipeline fails), then the
    client heavily violates the protocol.
    In the future, gnome-remote-desktop might also require the graphics
    pipeline for specific use cases, like headless sessions or RAIL, as
    some actions like submitting alpha channel data (usually, when using
    RAIL), submitting the monitor configuration to the client, handling
    network latency can only be (easily) done with the graphics pipeline.
    
    Additionally, if the client tries to reset the graphics pipeline with
    a new capability exchange (CapsAdvertise), but is not allowed to, or
    submits capability sets, that are unsupported by gnome-remote-desktop,
    then gnome-remote-desktop needs to get rid of the client.
    
    So, add an API for this use case. Normally, these severe situations
    should not happen, but gnome-remote-desktop needs to be able to handle
    them if they happen.
    efe8d3aa
  • Pascal Nowack's avatar
    session-rdp: Add API to notify whether the graphics pipeline is ready · 5dbed558
    Pascal Nowack authored
    The graphics pipeline will use this API, when the capability exchange
    or protocol reset is done.
    This will later (re)start the encoding process.
    5dbed558
  • Pascal Nowack's avatar
    session-rdp: Add API to notify a GFX protocol reset · 8344d5f9
    Pascal Nowack authored
    The graphics pipeline will use this API later to indicate a protocol
    reset.
    This will happen, when the RDP client resets the protocol by using the
    CapsAdvertise PDU.
    8344d5f9
  • Pascal Nowack's avatar
    rdp: Add and implement classes for the graphics pipeline · 7a3031ba
    Pascal Nowack authored
    Starting with Windows 8, Microsoft revamped the graphics handling for
    RDP with the graphics pipeline.
    The graphics pipeline is a dynamic channel that redefines how frame
    updates are handled:
    
    1. Frame updates don't have to happen directly on the graphics output
       buffer any more.
       Instead, surfaces are used. These surfaces can be user-visible
       (onscreen) surfaces, or be used in the background for different
       purposes, like caching, using the surface to composite frame content
       to another surface using SurfaceToSurface, SurfaceToCache,
       CacheToSurface updates.
    2. Each frame update, whether it is a WireToSurface, SurfaceToSurface,
       etc., MUST be grouped into logical frames.
       These logical frames will then be used for the frame acknowledge,
       but can also be used for other purposes like preventing tearing.
       The legacy path also allows the usage of something like frame
       markers to mark logical frames.
       However, the usage of logical frames in the graphics pipeline is
       mandatory, as they are necessary for tracking frames, allowing the
       server to e.g. slow down the encoding rate, when the client is too
       slow with the decoding process.
    3. The graphics pipeline is a dynamic channel, which allows the
       graphics pipeline to also run via UDP in the future.
       Additionally, gnome-remote-desktop won't have to care about things
       like the MultifragMaxRequestSize any more, when pushing updates, as
       the dynamic channel handles splitting up the packages itself.
       Things like "pushing n tiles" now, and pushing the other m tiles in
       another PDU won't have to happen any more, like in the legacy path.
       This is especially useful, when handling codecs like H264, where
       gnome-remote-desktop won't know how the encoded data is structured.
    4. Progressive rendering: The RemoteFX Calista Progressive codec and
       H264 can be used for encoding content.
       Both codecs support the usage of progressive rendering.
       The server will then track the client state of the codec context
       and will possibly push progressive updates, which depend on the
       previous data that has been sent, allowing the server to reduce the
       bandwidth usage.
    5. For gnome-remote-desktop specially this also means that the encoding
       thread won't have to block any more, when pushing the frame update.
       Instead, like in the case of the cliprdr channel, the update is
       pushed to a queue, which will then be pushed in the socket thread,
       allowing the encoding thread to save time.
    
    For the graphics pipeline, gnome-remote-desktop needs to implement the
    following PDUs:
    
    CapsAdvertise:
    
    The RDP client sends this PDU once the graphics pipeline has been
    opened.
    It contains the capability sets, which the client supports.
    Each capability set may have contained some flags, like whether H264 is
    supported by the client or not.
    This PDU can also be sent during the connection to reset the graphics
    pipeline.
    This is only possible, when the first accepted capability set was at
    least version RDPGFX_CAPVERSION_103.
    
    CacheImportOffer:
    
    This PDU is usually sent by the client once the capabilities have been
    exchanged.
    The client tells the server, what currently is in its offline surface
    cache.
    Not every client, however, makes use of this PDU. xfreerdp, for
    example, won't ever send this PDU to the server, which means that
    xfreerdp won't have a frame cache, that is persistent between
    connections.
    
    FrameAcknowledge:
    
    This PDU is important. The client sends this PDU after a logical frame
    has been decoded and displayed by the client.
    It will contain the frame id, the amount of frames, that have been
    decoded by the client since the last protocol reset, and the queue
    depth.
    The queue depth can either provide no information, the amount of data,
    that is unprocessed by the client (in bytes) or indicate, that the
    client suspends the frame acknowledgement.
    In the latter case, the server side just assumes, that the client is
    fast enough to handle the frame updates.
    The client can, however, still opt back into frame acknowledgement by
    sending this PDU again with the queue depth not being set to the magic
    value, that indicates the frame acknowledgement suspension.
    
    QoeFrameAcknowledge:
    
    This is an optional PDU, which is usually sent after the
    FrameAcknowledge PDU containing information, like the time, that the
    client needed to decode and display the frame.
    This PDU is normally not sent. The usage is usually for debugging
    purposes only.
    
    This commit implements two classes: the graphics pipeline and the GFX
    surface.
    The GFX surface corresponds to an RDP surface. It is also autonomous by
    also being able to decide whether frame updates for a surface should be
    suspended or not.
    The usage here is to control the encoding rate, which usually happens,
    if the client is too slow with the decoding and displaying process to
    keep up with the server.
    This is done with the help of the GFX frame log.
    By default, the GFX surface always allows one in flight frame, before
    it will throttle the encoding rate.
    The encoding rate is controlled by suspending the encoding and it is
    resumed with an internal GSource, which runs in the same thread as the
    main encoding GSource.
    While this commit does not consider the round trip time yet, the GFX
    surface already has the handling for round trip times:
    
    The mechanism for this is similar to a Schmitt trigger:
    By default, the GFX surface enters the throttling mode, when two or
    more frame acks are missing.
    When this limit is reached, the encoding rate is determined by the ack
    rate of the client, meaning the encoding rate won't surpass the ack
    rate.
    This obviously only works, if the server is constantly encoding, which
    is e.g. the case, when watching a video.
    This throttling mechanism has a specific advantage: It is independent
    from the round trip time.
    Using the round trip time in the throttling mode can have the opposite
    behaviour of throttling by allowing more and more frames, since the
    round trip time would always increase, since the client gets flooded
    with too many frames, which has the effect, that the client might not
    be able to handle the RTTResponse directly.
    To leave the throttling mode, the amount of pending frame acks must
    fall below two again.
    
    This means: Whether the GFX surface throttles the encoding rate,
    depends on the amount of pending frame acks.
    The encoding rate is in the throttling mode determined by the encoding
    and ack rate.
    In later commits, this will also consider the round trip time by
    increasing the activate threshold.
    This will then allow gnome-remote-desktop handle fast clients with low
    latency, slow clients with low latency, fast clients with high latency,
    and slow clients with high latency.
    
    By letting the GFX surface handle the throttling, instead of the
    graphics pipeline, the client can optimize its frame handling by e.g.
    letting a specific GPU handle a specific surface, in case of hardware
    acceleration is being used.
    
    For the frame acknowledge in the graphics pipeline, the graphics
    pipeline needs to be able to track the frame ids too.
    The RDP client is allowed to suspend or resume the frame acknowledge.
    mstsc, for example, makes use of that.
    mstsc usually opts out of frame acknowledgement after the first frame
    was received.
    Only if mstsc realizes that it cannot keep up with the server, it will
    opt back into frame acknowledgement.
    In that case the graphics pipeline needs to restore the state of the
    client.
    To do that, track the frame ids of the encoded frames, regardless
    whether frame acknowledgement is suspended or not.
    When the frame acknowledgement is suspended, push the frame info about
    the currently encoded frame to a queue.
    This queue has a limit of 1000 tracked frames.
    When the client opts back into frame acknowledgement, use the total
    frames decoded value to determine how far the client lags behind.
    The, that way calculated amount of pending frame acks, will then be
    used to unack the last n frames, where n corresponds to the amount of
    the pending frame acks.
    The GFX surfaces will then reevaluate their throttling state.
    
    Another situation that needs to handled is, when a frame ack is
    received in a different order:
    1. frame_ack_n+1, which suspends the frame acknowledgement
    2. frame_ack_n+0, which continues the frame acknowledgement
    
    In this situation, the implementation of the graphics pipeline will now
    take a look at the pending frame acks using the total frames decoded
    value, which is included in the FrameAcknowledge PDU.
    If the value is <= 1000, then the graphics pipeline discards the PDU,
    since the frame had been already auto-acked with the frame_ack_n+1 due
    the SUSPEND_FRAME_ACKNOWLEDGEMENT indication.
    If the value is > 1000, which is highly unlikely, then the PDU won't be
    discarded.
    If the client really would lag that amount of frames behind, then there
    is certainly something wrong with the client.
    In that case, gnome-remote-desktop won't discard the PDU.
    
    Currently, only RFX Progressive with TILE_SIMPLE tiles (non-progressive
    encoding) is supported by the current implementation of the graphics
    pipeline.
    This codec MUST be supported by the client, when using the graphics
    pipeline.
    In the future, the RFX Progressive codec will be used as fallback, when
    other more efficient codecs are not available (like H264).
    7a3031ba
  • Pascal Nowack's avatar
    session-rdp: Add support for the graphics pipeline · b524234a
    Pascal Nowack authored
    Use the previously implemented graphics pipeline class to add support
    for the graphics pipeline.
    The graphics pipeline is a dynamic channel. It will be differently
    initialized than the CLIPRDR channel, which is a static channel.
    For this, the graphics pipeline needs to wait first until the DRDYNVC
    channel (, which is a special static channel) is initialized, as that
    channel tunnels all dynamic channels.
    b524234a
  • Pascal Nowack's avatar
    rdp-surface: Also track the refresh rate · c6cd7569
    Pascal Nowack authored
    The refresh rate will later be used to determine the activate threshold
    for the throttling mechanism in the GFX surface, when also considering
    the round trip time.
    c6cd7569
  • Pascal Nowack's avatar
    session-rdp: Also set and use the refresh rate for RDP surfaces · aac4dcf5
    Pascal Nowack authored
    Currently, hardcoded to 30 FPS. Use the value also for the maximum
    framerate in the PipeWire class.
    aac4dcf5
  • Pascal Nowack's avatar
    rdp-gfx-surface: Add API to notify new round trip time · cb7804cd
    Pascal Nowack authored
    Extend the throttling mechanism by also considering the round trip
    time.
    The higher the round trip time, the higher the activate threshold for
    the throttling mechanism.
    This ensures that even on high latencies (up to 500ms everything works
    fine), gnome-remote-desktop will still be able to provide a smooth
    experience.
    The frame latency will still be delayed. This obviously cannot be
    changed, but the experience will stay smooth regarding any frame
    updates with both slow and fast clients.
    cb7804cd
  • Pascal Nowack's avatar
    rdp-graphics-pipeline: Add API to notify new round trip time · d9fe3425
    Pascal Nowack authored
    Since the throttling mechanism lies in the GFX surface, just pass the
    round trip time to the GFX surfaces.
    d9fe3425
  • Pascal Nowack's avatar
    rdp: Move some elements from RdpPeerContext to the GrdSessionRdp struct · c15d62db
    Pascal Nowack authored
    In order to be able to implement separate classes, that handle Fast-
    and Slowpath PDUs, the RdpPeerContext struct needs to be moved out of
    the GrdSessionRdp class.
    Before doing that, move some elements from the RdpPeerContext struct
    into the GrdSessionRdp struct, that are private to the GrdSessionRdp
    class.
    
    This is a preparatory step for the implementation of a class, that
    detects the network characteristics of the RDP session, as this class
    will use and hook up to Fast- and Slowpath PDUs.
    c15d62db
  • Pascal Nowack's avatar
    rdp: Move RdpPeerContext struct into its own file · afe20213
    Pascal Nowack authored
    This allows the creation of separate classes for Fast- and Slowpath
    PDUs.
    afe20213
  • Pascal Nowack's avatar
    rdp: Add class for detecting network characteristics · 4c646d45
    Pascal Nowack authored
    Starting with Windows 8, Microsoft added a few PDUs, that allow the
    server to detect network characteristics, such as the round trip time
    (RTT) or the available bandwidth.
    These characteristics are measured with the RTT
    Measure-Request/-Response and Bandwidth Measure-Start/-Stop PDUs.
    
    In order to make use of these PDUs, add a new class that hooks up to
    these PDUs.
    Currently, only RTT detection is implemented.
    
    RTT detection works by putting a sequence number to a hash table,
    saving the time for the sequence, sending an RTTRequest to the client
    with the sequence number and when the client responds with the
    RTTResponse, calculate the time difference between the response and the
    request.
    This RTT value will then be forwarded to a consumer, like the graphics
    pipeline.
    The graphics pipeline will forward the RTT value to the GFX surfaces,
    which will then use that value to calculate the activate threshold for
    the throttling mechanism.
    
    To smooth out spikes in the RTT value, ignore out-of-order RTTResponses
    and calculate the average RTT value from the RTTs of the last 500ms.
    Also limit the maximum RTT value to 1000ms, as RTTs above that value
    are extremely hard to handle, if they can be handled.
    
    The ping interval will for now always be 70ms and the RTTRequsts will
    only be sent, when there is an RTT consumer.
    4c646d45
  • Pascal Nowack's avatar
    rdp: Add initial support for autodetecting network characteristics · 1224260d
    Pascal Nowack authored
    Add support for autodetecting network characteristics using the
    previously implemented class.
    When the graphics pipeline is being used, add the graphics pipeline as
    RTT consumer to ensure a smooth experience even on high latencies.
    When the SuppressOutput PDU is received, there won't be any reason to
    emit RTTRequests, as no frame updates will happen.
    In that case, remove the graphics pipeline as RTT consumer, until the
    SuppressOutput PDU allows gnome-remote-desktop to send frame updates
    again.
    1224260d
  • Pascal Nowack's avatar
    rdp/nw-auto: Add API to allow lowering or increasing the ping interval · 45a47f2c
    Pascal Nowack authored
    When no frame updates happen for some time, but the client window is
    not minimized, gnome-remote-desktop will currently happily still emit
    a lot of RTTRequests, producing unnecessary network activity.
    This usually results in a bandwidth usage of ~2.5KiB/s.
    
    When the graphics pipeline detects that the global encoding rate
    stalled at zero, it should be able to notify the network autodetection
    class about it, so that the network autodetection class can lower the
    ping interval.
    Lowering the ping interval, instead of stopping the detection mechanism
    completely, still allows gnome-remote-desktop to track the current
    round trip time to ensure that the throttling mechanism still has an up
    to date value of the round trip time, when gnome-remote-desktop
    continues to encode frame content.
    When any encoding activity happens again, the graphics pipeline will
    notify the network autodetection class again about the behaviour, to
    increase the ping interval again for a more accurate round trip time.
    45a47f2c
  • Pascal Nowack's avatar
    rdp: Add mechanism to lower or increase the ping interval · d0c33933
    Pascal Nowack authored
    With the API to lower or increase the ping interval in place, add a
    mechanism that uses the previously implemented API to change the ping
    interval depending on the encoding rate (and therefore for the need for
    new and fresh round trip times).
    
    For the mechanism, add a new GSource, which checks every second the
    amount of surface updates.
    If the amount reaches zero, destroy the GSource and notify the network
    autodetection class to lower the ping interval.
    If the encoding starts again attach the (recreated) GSource again and
    notify the network autodetection class to increase the ping interval.
    d0c33933
  • Pascal Nowack's avatar
    rdp-gfx-surface: Add handling to lower frame latency · 7d510f13
    Pascal Nowack authored
    While the throttling mechanism can currently take care of higher and
    increasing RTT values, it can currently not take care of lowering the
    latency.
    For example: If an RTT value of 300ms is detected and the RDP client is
    slow with the decoding and displaying process, then
    gnome-remote-desktop adapts to the situation.
    However, if the RTT value suddenly drops to, for example, 150ms, then
    the frame content might still be delayed by 300ms, since the client
    might be too slow with the frame updates.
    
    To solve this situation, recalculate the activate threshold for the
    throttling mechanism, when a new frame is encoded or a frame is being
    acked.
    When the new activate threshold is lower than the current one, suspend
    the encoding until the client acks enough logical frames.
    After this, reevaluate the throttling situation.
    This ensures that gnome-remote-desktop uses the lowest possible
    activate threshold for the throttling mechanism to ensure an experience
    with the lowest possible latency, while still being able to handle high
    latency connections.
    7d510f13
  • Pascal Nowack's avatar
    damage-utils: Replace desktop{width,height} with surface{width,height} · 9654a734
    Pascal Nowack authored
    The words desktop_width and desktop_height actually don't represent the
    situation (any more), since the damage detection mechanism handles
    surfaces (monitors, windows, part of monitors or windows, etc.) now,
    which won't necessarily represent the whole graphics output buffer.
    9654a734
  • Pascal Nowack's avatar
    rdp: Add class for NVENC and CUDA support · ab2231c1
    Pascal Nowack authored
    This is the first step for hardware acceleration support in
    gnome-remote-desktop.
    The implementation for Hardware acceleration using NVENC and CUDA is
    way easier than the implementation of hardware acceleration using
    VAAPI.
    To be able to use NVENC and CUDA, use the ffnvcodec-headers. These
    headers, provide functions to easily load NVENC and CUDA using dlopen.
    NVENC itself, will be used to encode AVC420 content, which will then
    be pushed via the graphics pipeline.
    CUDA will be used to perform the BGRX to YUV420 colour conversion, as
    that will massively improve the performance compared to colour
    conversion computed on the CPU.
    
    To be able to encode AVC420 frames, the frame size needs to be aligned
    to the value of 16 (both width and height), and the colour format needs
    to be converted to YUV420.
    In addition to the alignment to the value of 16, NVENC seems to require
    the frame height to be aligned to a multiple of 64, as otherwise the
    resulting frame on the client may contain a black strip in the middle
    of the frame, when the height is not aligned to a multiple of 64.
    Since the FreeRDP primitives are way too slow (17-24ms for a FullHD
    frame) to take care of the colour conversion, use a CUDA kernel to
    perform this operation.
    This will reduce the conversion time under 400µs (313µs according to
    the NVIDIA Visual Profiler) on a GeForce GTX 660.
    
    The resulting image (YUV420 in the NV12 format) will then be passed to
    NVENC, which then encodes the frame.
    When using NVENC with MBAFF, NVENV requires the image to be already
    interlaced.
    If it is not interlaced, then even lines end up in the resulting image
    at the position y / 2, instead of y, while odd lines end up in the
    resulting image at the position y / 2 + aligned_height / 2, instead of
    y.
    To take care of this situation, calculate the interlaced position
    directly in the CUDA kernel function.
    The resulting image will then be correct on the client side.
    
    NVENC support was introduced with the Kepler generation.
    Since the CUDA toolkit removed Kepler support with version 11, and most
    distributions don't ship a CUDA package, ship the generated PTX code
    with gnome-remote-desktop.
    The PTX code is generated with the CUDA toolkit version 10 and will
    work for all Kepler and later GPUs, since PTX code is forward
    compatible.
    
    PTX code is not binary, meaning it is a human readable text file.
    CUDA code is generated in two steps:
    
    First, the PTX code: The PTX code is code, that is generated for a
    specific compute capability, but can also be processed by GPUs, that
    support a newer compute capability.
    However, it cannot be processed by GPUs with an older (lower) compute
    capability.
    
    Second, the CUDA binary: The binary that will end up on the GPU
    eventually.
    Technically, gnome-remote-desktop could ship that binary, but this is
    not suitable:
    First, it is a binary, it cannot be easily verified.
    Second, the binary is GPU specific, meaning gnome-remote-desktop would
    have to ship a fat binary to cover all GPUs, which is not suitable.
    
    The NVIDIA driver ships a JIT compiler, which can load PTX code and
    generate the CUDA binary at runtime.
    
    When gnome-remote-desktop starts, the NVIDIA driver will automatically
    use the JIT compiler to produce the device specific CUDA binary.
    This is a fast process and it will also load the module.
    
    gnome-remote-desktop then uses the module to perform the colour
    conversion, when encoding an AVC420 frame.
    
    In the future, the NVENC and CUDA implementation will be extended to be
    able to produce AVC444 frames.
    The NVENC capable GPU doesn't need to have support for AVC444 frames
    for this, since RDP uses a special way to create AVC444 frames
    (composed out of two AVC420 frames, one main view, one auxiliary view).
    ab2231c1
  • Pascal Nowack's avatar
    rdp: Add initial support for NVENC · eacedf33
    Pascal Nowack authored
    With the NVENC and CUDA class implemented in the last commit, add now
    the handling to use them to produce AVC420 frames.
    H264 content can only be submitted with the graphics pipeline and will
    only be produced, if the client supports H264.
    
    Since NVENC does not support any damage rects (only emphasis regions),
    always encode the frame progressively.
    The first frame will obviously be an IDR frame, while the subsequent
    frames will be progressive frames.
    
    Using H264 drastically reduces the bandwidth usage.
    gnome-remote-desktop uses, instead of a constant QP value, a constant
    quality value (of 22) to encode the frames, since using the constant QP
    can waste bandwidth, while the constant quality value produces the same
    quality, like the constant QP, but the encoder may use less bytes to
    produce the bitstream.
    eacedf33
  • Jonas Ådahl's avatar
    build: Bump version to 41.rc · 4b87908e
    Jonas Ådahl authored
    4b87908e
  • gogo's avatar
    Add Croatian translation · 3894a033
    gogo authored
    3894a033
  • Balázs Meskó's avatar
    Add Hungarian translation · 5aeaf913
    Balázs Meskó authored
    5aeaf913
  • Piotr Drąg's avatar
    Add Polish translation · 13f93335
    Piotr Drąg authored
    13f93335
  • Claude Paroz's avatar
    Add French translation · 4fb5fce2
    Claude Paroz authored
    4fb5fce2
  • Emin Tufan Çetin's avatar
    Add Turkish translation · 7369671b
    Emin Tufan Çetin authored
    7369671b
  • Emin Tufan Çetin's avatar
    Update Turkish translation · bd47fc51
    Emin Tufan Çetin authored
    bd47fc51
  • Jonas Ådahl's avatar
    build: Bump version to 41.0 · 240489f3
    Jonas Ådahl authored
    240489f3
  • Jeremy Bicha's avatar
    New upstream version 41.0 · 0943e5dd
    Jeremy Bicha authored
    0943e5dd
......@@ -9,7 +9,7 @@ stages:
.gnome-remote-desktop.fedora:33@common:
variables:
FDO_DISTRIBUTION_VERSION: 34
BASE_TAG: '2021-03-26.0'
BASE_TAG: '2021-08-06.1'
FDO_UPSTREAM_REPO: GNOME/gnome-remote-desktop
FDO_DISTRIBUTION_EXEC: |
dnf -y update && dnf -y upgrade &&
......@@ -25,6 +25,7 @@ stages:
dnf remove -y pipewire0.2-devel pipewire0.2-libs &&
dnf install -y 'pkgconfig(libpipewire-0.3)' &&
dnf install -y 'pkgconfig(fuse3)' &&
dnf install -y 'pkgconfig(ffnvcodec)' &&
dnf install -y dbus-daemon xorg-x11-server-Xvfb python3-dbus \
python3-gobject gnome-settings-daemon mesa-dri-drivers \
xorg-x11-server-Xwayland mutter &&
......
......@@ -12,5 +12,8 @@
/* Defined if VNC backend is enabled */
#mesondefine HAVE_VNC
/* Defined if FreeRDP >= 2.3.x is available */
#mesondefine HAVE_FREERDP_2_3
/* Defined if NVENC is available */
#mesondefine HAVE_NVENC
/* Path of the data dir */
#mesondefine GRD_DATA_DIR
How to produce the PTX instructions for CUDA kernels
====================================================
For the generation of the PTX instructions, the CUDA toolkit needs to be
installed (See for this below in "Retrieving the CUDA toolkit").
Generation:
-----------
When the CUDA toolkit is installed, and the current directory is `src`,
generate the PTX instructions via:
/opt/cuda/bin/./nvcc -arch=compute_30 -ptx grd-cuda-avc-utils.cu -o ../data/grd-cuda-avc-utils_30.ptx
The nvcc path differ from OS to OS. In the case above, Archlinux is used, which
uses the path `/opt/cuda/bin/nvcc` for nvcc.
`-arch=compute_30` tells nvcc to generate instructions for GPUs with compute
capability 3.0.
CUDA GPUs with higher compute capability can also run CUDA kernels with lower
compute capability.
The CUDA kernel for gnome-remote-desktop uses compute capability 3.0, as
compute capability 3.0 is the one of Kepler GPUs.
Kepler GPUs are the first generation GPUs, that support NVENC. To remain
compatible with these GPUs, generate the instructions for compute capability
3.0.
Also append a suffix, like in the example above, for the compute capability of
the generated PTX instructions.
If a kernel might be more efficient with newer CUDA features, generate a kernel
for the higher necessary compute capability and another one for older GPUs as
fallback.
Use then the CUDA functions to check the compute capability of the selected GPU
at runtime to determine, which PTX instructions should be loaded.
Retrieving the CUDA toolkit:
----------------------------
Retrieving the CUDA toolkit depends on the distribution. It should be noted,
that the generation of PTX instructions for compute capability 3.0 was removed
from the CUDA toolkit version 11.
So, an older version of the CUDA toolkit (version 10) is needed to generate PTX
instructions for Kepler GPUs.
Instructions to retrieve the CUDA toolkit version 10 on Archlinux:
------------------------------------------------------------------
While the current version of the CUDA toolkit can be found in the `community`
repository (included by default) under the name `cuda`, the older version 10 is
available via the Arch Linux Archive:
For this, the easiest way here is to use the `downgrade` tool (AUR):
Run `downgrade gcc8 gcc8-libs cuda` (might require root privileges) and choose
the latest gcc8 and gcc8-libs version for gcc8 (dependency of CUDA 10) and for
CUDA 10 choose the latest CUDA 10 release.
The downgrade utility will then download and install these packages.
After this, you can use nvcc to generate PTX instructions for Kepler GPUs as
well.
//
// Generated by NVIDIA NVVM Compiler
//
// Compiler Build ID: CL-27506705
// Cuda compilation tools, release 10.2, V10.2.89
// Based on LLVM 3.4svn
//
.version 6.5
.target sm_30
.address_size 64
// .globl convert_2x2_bgrx_area_to_yuv420_nv12
.visible .entry convert_2x2_bgrx_area_to_yuv420_nv12(
.param .u64 convert_2x2_bgrx_area_to_yuv420_nv12_param_0,
.param .u64 convert_2x2_bgrx_area_to_yuv420_nv12_param_1,
.param .u16 convert_2x2_bgrx_area_to_yuv420_nv12_param_2,
.param .u16 convert_2x2_bgrx_area_to_yuv420_nv12_param_3,
.param .u16 convert_2x2_bgrx_area_to_yuv420_nv12_param_4,
.param .u16 convert_2x2_bgrx_area_to_yuv420_nv12_param_5,
.param .u16 convert_2x2_bgrx_area_to_yuv420_nv12_param_6,
.param .u16 convert_2x2_bgrx_area_to_yuv420_nv12_param_7
)
{
.reg .pred %p<15>;
.reg .b16 %rs<23>;
.reg .b32 %r<127>;
.reg .b64 %rd<36>;
ld.param.u64 %rd6, [convert_2x2_bgrx_area_to_yuv420_nv12_param_0];
ld.param.u64 %rd7, [convert_2x2_bgrx_area_to_yuv420_nv12_param_1];
ld.param.u16 %rs7, [convert_2x2_bgrx_area_to_yuv420_nv12_param_2];
ld.param.u16 %rs8, [convert_2x2_bgrx_area_to_yuv420_nv12_param_3];
ld.param.u16 %rs9, [convert_2x2_bgrx_area_to_yuv420_nv12_param_4];
ld.param.u16 %rs10, [convert_2x2_bgrx_area_to_yuv420_nv12_param_6];
ld.param.u16 %rs11, [convert_2x2_bgrx_area_to_yuv420_nv12_param_7];
mov.u32 %r30, %ntid.x;
mov.u32 %r31, %ctaid.x;
mov.u32 %r32, %tid.x;
mad.lo.s32 %r1, %r30, %r31, %r32;
mov.u32 %r33, %ntid.y;
mov.u32 %r34, %ctaid.y;
mov.u32 %r35, %tid.y;
mad.lo.s32 %r2, %r33, %r34, %r35;
and.b32 %r36, %r1, 65535;
ld.param.u16 %r37, [convert_2x2_bgrx_area_to_yuv420_nv12_param_5];
shr.u32 %r38, %r37, 1;
and.b32 %r3, %r2, 65535;
cvt.u32.u16 %r4, %rs10;
shr.u32 %r5, %r4, 1;
setp.ge.u32 %p1, %r3, %r5;
setp.ge.u32 %p2, %r36, %r38;
or.pred %p3, %p1, %p2;
@%p3 bra BB0_10;
cvta.to.global.u64 %rd8, %rd6;
cvt.u32.u16 %r42, %rs9;
and.b32 %r43, %r1, 32767;
shl.b32 %r44, %r1, 1;
and.b32 %r6, %r44, 65534;
mov.u32 %r45, 1;
shl.b32 %r46, %r2, 1;
and.b32 %r47, %r46, 65534;
mul.lo.s32 %r48, %r47, %r42;
cvt.u64.u32 %rd9, %r48;
shl.b32 %r49, %r43, 3;
cvt.u64.u32 %rd10, %r49;
add.s64 %rd1, %rd9, %rd10;
cvta.to.global.u64 %rd11, %rd7;
add.s64 %rd2, %rd11, %rd1;
setp.lt.u32 %p4, %r47, %r5;
shl.b32 %r50, %r2, 2;
sub.s32 %r51, %r45, %r4;
selp.b32 %r52, 0, %r51, %p4;
mov.u32 %r124, 0;
add.s32 %r53, %r52, %r50;
cvt.u64.u32 %rd12, %r53;
and.b64 %rd13, %rd12, 65535;
cvt.u64.u16 %rd14, %rs11;
mul.lo.s64 %rd15, %rd13, %rd14;
cvt.u64.u32 %rd16, %r6;
add.s64 %rd17, %rd15, %rd16;
add.s64 %rd3, %rd8, %rd17;
add.s32 %r7, %r47, 1;
and.b32 %r54, %r7, 65535;
setp.lt.u32 %p5, %r54, %r5;
shl.b32 %r55, %r7, 1;
selp.b32 %r56, 0, %r51, %p5;
add.s32 %r57, %r56, %r55;
cvt.u64.u32 %rd18, %r57;
and.b64 %rd19, %rd18, 65535;
mul.lo.s64 %rd20, %rd19, %rd14;
add.s64 %rd21, %rd20, %rd16;
add.s64 %rd4, %rd8, %rd21;
shr.u32 %r58, %r4, 2;
setp.lt.u32 %p6, %r3, %r58;
sub.s32 %r59, %r45, %r5;
selp.b32 %r60, 0, %r59, %p6;
shl.b32 %r61, %r3, 1;
add.s32 %r62, %r61, %r60;
cvt.u64.u32 %rd22, %r62;
and.b64 %rd23, %rd22, 65535;
cvt.u64.u16 %rd24, %rs10;
add.s64 %rd25, %rd23, %rd24;
mul.lo.s64 %rd26, %rd25, %rd14;
add.s64 %rd27, %rd26, %rd16;
add.s64 %rd5, %rd8, %rd27;
cvt.u32.u16 %r63, %rs7;
setp.ge.u32 %p7, %r6, %r63;
cvt.u32.u16 %r64, %rs8;
setp.ge.u32 %p8, %r47, %r64;
mov.u16 %rs21, 0;
or.pred %p9, %p7, %p8;
mov.u16 %rs20, %rs21;
mov.u32 %r125, %r124;
mov.u32 %r126, %r124;
@%p9 bra BB0_3;
ld.global.u8 %rs13, [%rd2];
cvt.u32.u16 %r126, %rs13;
ld.global.u8 %r125, [%rd2+1];
ld.global.u8 %r124, [%rd2+2];
mul.wide.u16 %r65, %rs13, 18;
mad.lo.s32 %r66, %r125, 183, %r65;
mad.lo.s32 %r67, %r124, 54, %r66;
shr.u32 %r68, %r67, 8;
cvt.u16.u32 %rs20, %r68;
BB0_3:
and.b32 %r73, %r2, 32767;
shl.b32 %r74, %r73, 1;
setp.ge.u32 %p10, %r74, %r64;
st.global.u8 [%rd3], %rs20;
add.s32 %r14, %r6, 1;
setp.ge.u32 %p11, %r14, %r63;
or.pred %p12, %p11, %p10;
@%p12 bra BB0_5;
ld.global.u8 %rs15, [%rd2+4];
cvt.u32.u16 %r77, %rs15;
add.s32 %r126, %r77, %r126;
ld.global.u8 %r78, [%rd2+5];
add.s32 %r125, %r78, %r125;
ld.global.u8 %r79, [%rd2+6];
add.s32 %r124, %r79, %r124;
mul.wide.u16 %r80, %rs15, 18;
mad.lo.s32 %r81, %r78, 183, %r80;
mad.lo.s32 %r82, %r79, 54, %r81;
shr.u32 %r83, %r82, 8;
cvt.u16.u32 %rs21, %r83;
BB0_5:
st.global.u8 [%rd3+1], %rs21;
setp.lt.u32 %p13, %r7, %r64;
@%p13 bra BB0_7;
bra.uni BB0_6;
BB0_7:
cvt.u64.u16 %rd28, %rs9;
add.s64 %rd29, %rd1, %rd28;
add.s64 %rd31, %rd11, %rd29;
ld.global.u8 %rs18, [%rd31];
cvt.u32.u16 %r86, %rs18;
add.s32 %r126, %r86, %r126;
ld.global.u8 %r87, [%rd31+1];
add.s32 %r125, %r87, %r125;
ld.global.u8 %r88, [%rd31+2];
add.s32 %r124, %r88, %r124;
mul.wide.u16 %r89, %rs18, 18;
mad.lo.s32 %r90, %r87, 183, %r89;
mad.lo.s32 %r91, %r88, 54, %r90;
shr.u32 %r92, %r91, 8;
st.global.u8 [%rd4], %r92;
mov.u16 %rs22, 0;
@%p11 bra BB0_9;
add.s32 %r94, %r42, 4;
and.b32 %r95, %r94, 65535;
cvt.u64.u32 %rd32, %r95;
add.s64 %rd33, %rd1, %rd32;
add.s64 %rd35, %rd11, %rd33;
ld.global.u8 %rs19, [%rd35];
cvt.u32.u16 %r96, %rs19;
add.s32 %r126, %r96, %r126;
ld.global.u8 %r97, [%rd35+1];
add.s32 %r125, %r97, %r125;
ld.global.u8 %r98, [%rd35+2];
add.s32 %r124, %r98, %r124;
mul.wide.u16 %r99, %rs19, 18;
mad.lo.s32 %r100, %r97, 183, %r99;
mad.lo.s32 %r101, %r98, 54, %r100;
shr.u32 %r102, %r101, 8;
cvt.u16.u32 %rs22, %r102;
bra.uni BB0_9;
BB0_6:
mov.u16 %rs22, 0;
st.global.u8 [%rd4], %rs22;
BB0_9:
st.global.u8 [%rd4+1], %rs22;
bfe.u32 %r103, %r124, 2, 8;
mul.lo.s32 %r104, %r103, -29;
bfe.u32 %r105, %r125, 2, 8;
mad.lo.s32 %r106, %r105, -99, %r104;
bfe.u32 %r107, %r126, 2, 8;
shl.b32 %r108, %r107, 7;
add.s32 %r109, %r106, %r108;
shr.u32 %r110, %r109, 8;
add.s32 %r111, %r110, 128;
st.global.u8 [%rd5], %r111;
shl.b32 %r112, %r124, 5;
and.b32 %r113, %r112, 32640;
mad.lo.s32 %r114, %r105, -116, %r113;
mad.lo.s32 %r115, %r107, -12, %r114;
shr.u32 %r116, %r115, 8;
add.s32 %r117, %r116, 128;
st.global.u8 [%rd5+1], %r117;
BB0_10:
ret;
}
if have_nvenc
install_data(['grd-cuda-avc-utils_30.ptx'],
install_dir: grd_datadir,
)
endif
project('gnome-remote-desktop', 'c',
version: '40.2',
version: '41.0',
meson_version: '>= 0.47.0',
default_options: ['warning_level=1',
'buildtype=debugoptimized'])
freerdp_req = '>= 2.2.0'
freerdp_req = '>= 2.3.0'
fuse_req = '>= 3.9.1'
nvenc_req = '>= 11'
xkbcommon_req = '>= 1.0.0'
gnome = import('gnome')
i18n = import('i18n')
cc = meson.get_compiler('c')
cairo_dep = dependency('cairo')
glib_dep = dependency('glib-2.0', version: '>= 2.68')
......@@ -21,26 +25,30 @@ libnotify_dep = dependency('libnotify')
have_rdp = get_option('rdp')
have_vnc = get_option('vnc')
have_freerdp_2_3 = true
have_nvenc = get_option('nvenc')
if not have_rdp and not have_vnc
error('Must enable at least one backend')
endif
if have_nvenc and not have_rdp
error('Support for hardware acceleration using NVENC requires the RDP backend')
endif
if have_rdp
add_global_arguments('-D_GNU_SOURCE', language : 'c')
freerdp_dep = dependency('freerdp2', version: '>= 2.3.0', required: false)
if not freerdp_dep.found()
freerdp_dep = dependency('freerdp2', version: freerdp_req)
have_freerdp_2_3 = false
endif
freerdp_dep = dependency('freerdp2', version: freerdp_req)
freerdp_client_dep = dependency('freerdp-client2', version: freerdp_req)
freerdp_server_dep = dependency('freerdp-server2', version: freerdp_req)
fuse_dep = dependency('fuse3', version: fuse_req)
winpr_dep = dependency('winpr2', version: freerdp_req)
xkbcommon_dep = dependency('xkbcommon', version: xkbcommon_req)
if have_nvenc
dl_dep = cc.find_library('dl', required: true)
nvenc_dep = dependency('ffnvcodec', version: nvenc_req)
endif
endif
if have_vnc
......@@ -48,13 +56,22 @@ if have_vnc
libvncclient_dep = dependency('libvncclient')
endif
prefix = get_option('prefix')
libexecdir = join_paths(prefix, get_option('libexecdir'))
datadir = join_paths(prefix, get_option('datadir'))
schemadir = join_paths(datadir, 'glib-2.0', 'schemas')
grd_datadir = join_paths(datadir, 'gnome-remote-desktop')
cdata = configuration_data()
cdata.set_quoted('GETTEXT_PACKAGE', 'gnome-remote-desktop')
cdata.set_quoted('VERSION', meson.project_version())
cdata.set('HAVE_RDP', have_rdp)
cdata.set('HAVE_VNC', have_vnc)
cdata.set('HAVE_FREERDP_2_3', have_freerdp_2_3)
cdata.set('HAVE_NVENC', have_nvenc)
cdata.set_quoted('GRD_DATA_DIR', grd_datadir)
configure_file(input: 'config.h.meson',
output: 'config.h',
......@@ -74,13 +91,10 @@ endif
top_srcdir = meson.current_source_dir()
builddir = meson.current_build_dir()
prefix = get_option('prefix')
libexecdir = join_paths(prefix, get_option('libexecdir'))
datadir = join_paths(prefix, get_option('datadir'))
schemadir = join_paths(datadir, 'glib-2.0', 'schemas')
subdir('data')
subdir('src')
subdir('tests')
subdir('po')
meson.add_install_script('meson_post_install.py')
......@@ -101,6 +115,10 @@ output = [
' RDP...................... ' + have_rdp.to_string(),
' VNC...................... ' + have_vnc.to_string(),
'',
' Options for the RDP backend:',
'',
' Support for hardware acceleration using NVENC and CUDA........' + have_nvenc.to_string(),
'',
' Now type \'ninja -C ' + meson.build_root() + '\' to build ' + meson.project_name(),
'',
'',
......
......@@ -8,6 +8,11 @@ option('vnc',
value: true,
description: 'Enable the VNC backend')
option('nvenc',
type: 'boolean',
value: true,
description: 'Build with support for hardware acceleration using NVENC and CUDA')
option('systemd_user_unit_dir',
type: 'string',
value: '',
......
# please keep this list sorted alphabetically
#
ca
cs
de
el
en_GB
es
eu
fa
fi
fr
fur
gl
he
hr
hu
id
kk
ko
lt
nl
oc
pl
pt
pt_BR
ro
ru
sk
sl
sv
tr
uk
vi
zh_CN
src/grd-daemon.c
src/grd-prompt.c
src/org.gnome.desktop.remote-desktop.gschema.xml.in
# Catalan translation for gnome-remote-desktop.
# Jordi Mas i Hernàndez <jmas@softcatala.org>, 2021
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-remote-desktop master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-remote-desktop/"
"issues\n"
"POT-Creation-Date: 2021-06-24 07:32+0000\n"
"PO-Revision-Date: 2021-06-21 17:34+0000\n"
"Last-Translator: Jordi Mas i Hernàndez <jmas@softcatala.org>\n"
"Language-Team: Catalan <gnome@llistes.softcatala.org>\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: src/grd-daemon.c:351
msgid "GNOME Remote Desktop"
msgstr "Escriptori remot del GNOME"
#: src/grd-prompt.c:124
#, c-format
msgid "Do you want to share your desktop?"
msgstr "Voleu compartir l'escriptori?"
#: src/grd-prompt.c:125
#, c-format
msgid ""
"A user on the computer '%s' is trying to remotely view or control your "
"desktop."
msgstr ""
"Un usuari de l'ordinador «%s» està intentant visualitzar o controlar "
"remotament l'escriptori."
#: src/grd-prompt.c:131
msgid "Refuse"
msgstr "Rebutja"
#: src/grd-prompt.c:136
msgid "Accept"
msgstr "Accepta"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:7
msgid "Path to the certificate file"
msgstr "Camí al fitxer del certificat"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:8
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:16
msgid ""
"In order to be able to use RDP with TLS Security, both the private key file "
"and the certificate file need to be provided to the RDP server."
msgstr ""
"Per a poder utilitzar RDP amb seguretat TLS, tant el fitxer de la clau "
"privada com el fitxer del certificat s'han de proporcionar al servidor RDP."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:15
msgid "Path to the private key file"
msgstr "Camí al fitxer de clau privada"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:23
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:33
msgid "Only allow remote connections to view the screen content"
msgstr ""
"Permet només a les connexions remotes per veure el contingut de la pantalla"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:24
msgid ""
"When view-only is true, remote RDP connections cannot manipulate input "
"devices (e.g. mouse and keyboard)."
msgstr ""
"Quan «view-only» és cert, les connexions RDP remotes no poden manipular els "
"dispositius d'entrada (p. ex. ratolí i teclat)."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:34
msgid ""
"When view-only is true, remote VNC connections cannot manipulate input "
"devices (e.g. mouse and keyboard)."
msgstr ""
"Quan «view-only» és cert, les connexions VNC remotes no poden manipular els "
"dispositius d'entrada (p. ex. ratolí i teclat)."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:41
msgid "Method used to authenticate VNC connections"
msgstr "Mètode utilitzat per a autenticar les connexions VNC"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:42
msgid ""
"The VNC authentication method describes how a remote connection is "
"authenticated. It can currently be done in two different ways: * prompt - by "
"prompting the user for each new connection, requiring a person with physical "
"access to the workstation to explicitly approve the new connection. * "
"password - by requiring the remote client to provide a known password"
msgstr ""
"El mètode d'autenticació VNC descriu com s'ha autentica una connexió remota. "
"Actualment, es pot fer de dues maneres diferents: * «prompt» - demanant a "
"l'usuari per a cada nova connexió, requerint a una persona amb accés físic a "
"l'estació de treball que aprovi explícitament la nova connexió. * «password» "
"- demanant al client remot que proporcioni una contrasenya coneguda"
# Czech translation for gnome-remote-desktop.
# Copyright (C) 2021 gnome-remote-desktop's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-remote-desktop package.
#
# Marek Černocký <marek@manet.cz>, 2021.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-remote-desktop\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-remote-desktop/"
"issues\n"
"POT-Creation-Date: 2021-08-19 09:29+0000\n"
"PO-Revision-Date: 2021-08-22 11:18+0200\n"
"Last-Translator: Marek Černocký <marek@manet.cz>\n"
"Language-Team: Czech <gnome-cs-list@gnome.org>\n"
"Language: cs\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n"
"X-Generator: Gtranslator 3.38.0\n"
#: src/grd-daemon.c:351
msgid "GNOME Remote Desktop"
msgstr "Vzdálená plocha GNOME"
#: src/grd-prompt.c:124
#, c-format
msgid "Do you want to share your desktop?"
msgstr "Přejete si sdílet svoji plochu?"
#: src/grd-prompt.c:125
#, c-format
msgid ""
"A user on the computer '%s' is trying to remotely view or control your "
"desktop."
msgstr ""
"Uživatel na počítači „%s“ zkouší vzdáleně zobrazit nebo ovládat vaše "
"uživatelské prostředí."
#: src/grd-prompt.c:131
msgid "Refuse"
msgstr "Zamítnout"
#: src/grd-prompt.c:136
msgid "Accept"
msgstr "Přijmout"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:7
msgid "Path to the certificate file"
msgstr "Cesta k souboru s cerifikátem"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:8
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:16
msgid ""
"In order to be able to use RDP with TLS Security, both the private key file "
"and the certificate file need to be provided to the RDP server."
msgstr ""
"Aby protokol RDP bylo možné použít zabezpečený pomocí TLS, musí být serveru "
"RDP poskytnuty soubory se soukromým klíčem a certifikátem."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:15
msgid "Path to the private key file"
msgstr "Cesta k souboru se soukromým klíčem"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:23
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:33
msgid "Only allow remote connections to view the screen content"
msgstr "Vzdálenému připojení umožnit pouze zobrazení obsahu obrazovky"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:24
msgid ""
"When view-only is true, remote RDP connections cannot manipulate input "
"devices (e.g. mouse and keyboard)."
msgstr ""
"Když je zapnuto „pouze zobrazení“, vzdálené připojení RDP nebude mít "
"kontrolu nad vstupními zařízeními (např. myší a klávesnicí)."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:34
msgid ""
"When view-only is true, remote VNC connections cannot manipulate input "
"devices (e.g. mouse and keyboard)."
msgstr ""
"Když je zapnuto „pouze zobrazení“, vzdálené připojení VNC nebude mít "
"kontrolu nad vstupními zařízeními (např. myší a klávesnicí)."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:41
msgid "Method used to authenticate VNC connections"
msgstr "Metoda použitá k ověření spojení VNC"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:42
msgid ""
"The VNC authentication method describes how a remote connection is "
"authenticated. It can currently be done in two different ways: * prompt - by "
"prompting the user for each new connection, requiring a person with physical "
"access to the workstation to explicitly approve the new connection. * "
"password - by requiring the remote client to provide a known password"
msgstr ""
"Metoda ověření VNC určuje, jak je ověřováno vzdálené připojení. V "
"současnosti může být provedeno dvěma různými způsoby: • prompt – výzvou "
"uživateli při každém novém připojení, kdy je nutná uživatelova fyzická "
"přítomnost u zařízení, aby připojení výslovně schválil. • password – "
"požaduje po vzdáleném klientovi znalost hesla"
# German translation for gnome-remote-desktop.
# Copyright (C) 2021 gnome-remote-desktop's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-remote-desktop package.
#
# Philipp Kiemle <philipp.kiemle@gmail.com>, 2021.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-remote-desktop master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-remote-desktop/"
"issues\n"
"POT-Creation-Date: 2021-07-13 09:47+0000\n"
"PO-Revision-Date: 2021-08-12 21:48+0200\n"
"Last-Translator: Tim Sabsch <tim@sabsch.com>\n"
"Language-Team: German <gnome-de@gnome.org>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.0\n"
#: src/grd-daemon.c:351
msgid "GNOME Remote Desktop"
msgstr "GNOME Remote Desktop"
#: src/grd-prompt.c:124
#, c-format
msgid "Do you want to share your desktop?"
msgstr "Möchten Sie Ihren Desktop teilen?"
#: src/grd-prompt.c:125
#, c-format
msgid ""
"A user on the computer '%s' is trying to remotely view or control your "
"desktop."
msgstr ""
"Ein Benutzer am Rechner »%s« versucht, Ihren Desktop aus der Ferne zu "
"betrachten oder zu steuern."
#: src/grd-prompt.c:131
msgid "Refuse"
msgstr "Abweisen"
#: src/grd-prompt.c:136
msgid "Accept"
msgstr "Akzeptieren"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:7
msgid "Path to the certificate file"
msgstr "Pfad zur Zertifikatsdatei"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:8
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:16
msgid ""
"In order to be able to use RDP with TLS Security, both the private key file "
"and the certificate file need to be provided to the RDP server."
msgstr ""
"Um RDP mit TLS-Sicherheit nutzen zu können, müssen sowohl die private "
"Schlüsseldatei als auch die Zertifikatsdatei dem RDP-Server bereitgestellt "
"werden."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:15
msgid "Path to the private key file"
msgstr "Pfad zur privaten Schlüsseldatei"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:23
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:33
msgid "Only allow remote connections to view the screen content"
msgstr ""
"Entfernten Verbindungen lediglich das Ansehen des Bildschirminhalts erlauben"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:24
msgid ""
"When view-only is true, remote RDP connections cannot manipulate input "
"devices (e.g. mouse and keyboard)."
msgstr ""
"Wenn »Nur ansehen« wahr ist, können entfernte RDP-Verbindungen keine "
"Eingabegeräte manipulieren (z.B. Maus und Tastatur)."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:34
msgid ""
"When view-only is true, remote VNC connections cannot manipulate input "
"devices (e.g. mouse and keyboard)."
msgstr ""
"Wenn »Nur ansehen« wahr ist, können entfernte VNC-Verbindungen keine "
"Eingabegeräte manipulieren (z.B. Maus und Tastatur)."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:41
msgid "Method used to authenticate VNC connections"
msgstr "Zur Authentifizierung von VNC-Verbindungen genutzte Methode"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:42
msgid ""
"The VNC authentication method describes how a remote connection is "
"authenticated. It can currently be done in two different ways: * prompt - by "
"prompting the user for each new connection, requiring a person with physical "
"access to the workstation to explicitly approve the new connection. * "
"password - by requiring the remote client to provide a known password"
msgstr ""
"Die VNC-Authentifizierungsmethode gibt an, wie eine entfernte Verbindung "
"verifiziert wird. Dies kann aktuell auf zwei verschiedene Arten geschehen: * "
"Aufforderung - indem der Benutzer jedes Mal aufgefordert wird, die "
"Verbindung zu bestätigen. Das erfordert physischen Zugang zum entfernten "
"Rechner. * Passwort - indem der entfernte Benutzer ein bekanntes Passwort "
"benötigt"
# Greek translation for gnome-remote-desktop.
# Copyright (C) 2021 gnome-remote-desktop's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-remote-desktop package.
# Efstathios Iosifidis <eiosifidis@gnome.org>, 2021.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-remote-desktop master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-remote-desktop/"
"issues\n"
"POT-Creation-Date: 2021-07-28 15:25+0000\n"
"PO-Revision-Date: 2021-08-01 19:43+0300\n"
"Language-Team: Greek <gnome-el-list@gnome.org>\n"
"Language: el\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Last-Translator: Efstathios Iosifidis <eiosifidis@gnome.org>\n"
"X-Generator: Poedit 2.3\n"
#: src/grd-daemon.c:351
msgid "GNOME Remote Desktop"
msgstr "Απομακρυσμένη επιφάνεια εργασίας GNOME"
#: src/grd-prompt.c:124
#, c-format
msgid "Do you want to share your desktop?"
msgstr "Θέλετε να διαμοιραστείτε την επιφάνεια εργασίας σας;"
#: src/grd-prompt.c:125
#, c-format
msgid ""
"A user on the computer '%s' is trying to remotely view or control your "
"desktop."
msgstr ""
"Ένας χρήστης στον υπολογιστή «%s» προσπαθεί να δει ή να ελέγξει "
"απομακρυσμένα την επιφάνεια εργασίας σας."
#: src/grd-prompt.c:131
msgid "Refuse"
msgstr "Άρνηση"
#: src/grd-prompt.c:136
msgid "Accept"
msgstr "Αποδοχή"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:7
msgid "Path to the certificate file"
msgstr "Διαδρομή για το αρχείο πιστοποίησης"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:8
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:16
msgid ""
"In order to be able to use RDP with TLS Security, both the private key file "
"and the certificate file need to be provided to the RDP server."
msgstr ""
"Για να μπορέσετε να χρησιμοποιήσετε το RDP με την ασφάλεια TLS, τόσο το "
"αρχείο ιδιωτικού κλειδιού όσο και το αρχείο πιστοποιητικού πρέπει να "
"παρέχονται στον διακομιστή RDP."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:15
msgid "Path to the private key file"
msgstr "Διαδρομή για το αρχείο προσωπικού κλειδιού"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:23
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:33
msgid "Only allow remote connections to view the screen content"
msgstr ""
"Να επιτρέπεται μόνο σε απομακρυσμένες συνδέσεις η προβολή του περιεχομένου "
"της οθόνης"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:24
msgid ""
"When view-only is true, remote RDP connections cannot manipulate input "
"devices (e.g. mouse and keyboard)."
msgstr ""
"Όταν είναι αληθές το μόνο για προβολή, οι απομακρυσμένες συνδέσεις RDP δεν "
"μπορούν να χειριστούν συσκευές εισόδου (π.χ. ποντίκι και πληκτρολόγιο)."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:34
msgid ""
"When view-only is true, remote VNC connections cannot manipulate input "
"devices (e.g. mouse and keyboard)."
msgstr ""
"Όταν είναι αληθές το μόνο για προβολή, οι απομακρυσμένες συνδέσεις VNC δεν "
"μπορούν να χειριστούν συσκευές εισόδου (π.χ. ποντίκι και πληκτρολόγιο)."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:41
msgid "Method used to authenticate VNC connections"
msgstr "Μέθοδος που χρησιμοποιείται για την πιστοποίηση συνδέσεων VNC"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:42
msgid ""
"The VNC authentication method describes how a remote connection is "
"authenticated. It can currently be done in two different ways: * prompt - by "
"prompting the user for each new connection, requiring a person with physical "
"access to the workstation to explicitly approve the new connection. * "
"password - by requiring the remote client to provide a known password"
msgstr ""
"Η μέθοδος πιστοποίησης VNC περιγράφει τον τρόπο που πιστοποιείται μια "
"απομακρυσμένη σύνδεση. Προς το παρόν μπορεί να γίνει με δύο διαφορετικούς "
"τρόπους: * προτροπή - προτρέποντας τον χρήστη για κάθε νέα σύνδεση, "
"απαιτώντας από ένα άτομο με φυσική πρόσβαση στο σταθμό εργασίας να εγκρίνει "
"τη νέα σύνδεση. * συνθηματικό - απαιτώντας από τον απομακρυσμένο πελάτη να "
"παρέχει ένα γνωστό συνθηματικό"
# British English translation for gnome-remote-desktop.
# Copyright (C) 2021 gnome-remote-desktop's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-remote-desktop package.
# Zander Brown <zbrown@gnome.org>, 2021.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-remote-desktop master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-remote-desktop/"
"issues\n"
"POT-Creation-Date: 2021-07-28 15:25+0000\n"
"PO-Revision-Date: 2021-07-31 20:00+0100\n"
"Last-Translator: Zander Brown <zbrown@gnome.org>\n"
"Language-Team: English - United Kingdom <en_GB@li.org>\n"
"Language: en_GB\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Gtranslator 40.0\n"
#: src/grd-daemon.c:351
msgid "GNOME Remote Desktop"
msgstr "GNOME Remote Desktop"
#: src/grd-prompt.c:124
#, c-format
msgid "Do you want to share your desktop?"
msgstr "Do you want to share your desktop?"
#: src/grd-prompt.c:125
#, c-format
msgid ""
"A user on the computer '%s' is trying to remotely view or control your "
"desktop."
msgstr ""
"A user on the computer '%s' is trying to remotely view or control your "
"desktop."
#: src/grd-prompt.c:131
msgid "Refuse"
msgstr "Refuse"
#: src/grd-prompt.c:136
msgid "Accept"
msgstr "Accept"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:7
msgid "Path to the certificate file"
msgstr "Path to the certificate file"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:8
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:16
msgid ""
"In order to be able to use RDP with TLS Security, both the private key file "
"and the certificate file need to be provided to the RDP server."
msgstr ""
"To be able to use RDP with TLS Security, both the private key file and the "
"certificate file need to be provided to the RDP server."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:15
msgid "Path to the private key file"
msgstr "Path to the private key file"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:23
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:33
msgid "Only allow remote connections to view the screen content"
msgstr "Only allow remote connections to view the screen content"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:24
msgid ""
"When view-only is true, remote RDP connections cannot manipulate input "
"devices (e.g. mouse and keyboard)."
msgstr ""
"When view-only is true, remote RDP connections cannot manipulate input "
"devices (e.g. mouse and keyboard)."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:34
msgid ""
"When view-only is true, remote VNC connections cannot manipulate input "
"devices (e.g. mouse and keyboard)."
msgstr ""
"When view-only is true, remote VNC connections cannot manipulate input "
"devices (e.g. mouse and keyboard)."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:41
msgid "Method used to authenticate VNC connections"
msgstr "Method used to authenticate VNC connections"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:42
msgid ""
"The VNC authentication method describes how a remote connection is "
"authenticated. It can currently be done in two different ways: * prompt - by "
"prompting the user for each new connection, requiring a person with physical "
"access to the workstation to explicitly approve the new connection. * "
"password - by requiring the remote client to provide a known password"
msgstr ""
"The VNC authentication method describes how a remote connection is "
"authenticated. It can currently be done in two different ways: * prompt - by "
"prompting the user for each new connection, requiring a person with physical "
"access to the workstation to explicitly approve the new connection. * "
"password - by requiring the remote client to provide a known password"
# Spanish translation for gnome-remote-desktop.
# Copyright (C) 2021 gnome-remote-desktop's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-remote-desktop package.
# FULL NAME <EMAIL@ADDRESS>, 2021.
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2021.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-remote-desktop master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-remote-desktop/"
"issues\n"
"POT-Creation-Date: 2021-06-24 07:32+0000\n"
"PO-Revision-Date: 2021-07-13 11:41+0200\n"
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
"Language-Team: Spanish - Spain <gnome-es-list@gnome.org>\n"
"Language: es_ES\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Gtranslator 40.0\n"
#: src/grd-daemon.c:351
msgid "GNOME Remote Desktop"
msgstr "Escritorio remoto GNOME"
#: src/grd-prompt.c:124
#, c-format
msgid "Do you want to share your desktop?"
msgstr "¿Quiere compartir su escritorio?"
#: src/grd-prompt.c:125
#, c-format
msgid ""
"A user on the computer '%s' is trying to remotely view or control your "
"desktop."
msgstr ""
"Un usuario del equipo «%s» está intentando ver o controlar en remoto su "
"equipo."
#: src/grd-prompt.c:131
msgid "Refuse"
msgstr "Rechazar"
#: src/grd-prompt.c:136
msgid "Accept"
msgstr "Aceptar"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:7
msgid "Path to the certificate file"
msgstr "Ruta al archivo del certificado"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:8
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:16
#| msgid ""
#| "In Order to be able to use RDP with TLS Security, both the private key "
#| "file and the certificate file need to be provided to the RDP server."
msgid ""
"In order to be able to use RDP with TLS Security, both the private key file "
"and the certificate file need to be provided to the RDP server."
msgstr ""
"Para poder usar RDP con seguridad TLS, los archivos de la clave privada y "
"del certificado los debe proporcionar en servidor RDP."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:15
msgid "Path to the private key file"
msgstr "Ruta al archivo de clave privada"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:23
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:33
msgid "Only allow remote connections to view the screen content"
msgstr "Permitir sólo las conexiones para ver el contenido de la pantalla"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:24
msgid ""
"When view-only is true, remote RDP connections cannot manipulate input "
"devices (e.g. mouse and keyboard)."
msgstr ""
"Cuando el modo de sólo lectura es cierto, las conexiones RDP remotas no "
"pueden manipular los dispositivos de entrada (ej. teclado y ratón)."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:34
msgid ""
"When view-only is true, remote VNC connections cannot manipulate input "
"devices (e.g. mouse and keyboard)."
msgstr ""
"Cuando el modo de sólo lectura es cierto, las conexiones VNC remotas no "
"pueden manipular los dispositivos de entrada (ej. teclado y ratón)."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:41
msgid "Method used to authenticate VNC connections"
msgstr "Método usado para autenticar conexiones VNC"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:42
msgid ""
"The VNC authentication method describes how a remote connection is "
"authenticated. It can currently be done in two different ways: * prompt - by "
"prompting the user for each new connection, requiring a person with physical "
"access to the workstation to explicitly approve the new connection. * "
"password - by requiring the remote client to provide a known password"
msgstr ""
"El método de autenticación VNC describe cómo se autentica una conexión "
"remota. Actualmente esto se puede hacer de dos maneras diferentes: * prompt "
"- preguntar siempre al usuario por cada nueva conexión, solicitando que una "
"persona con acceso físico al equipo apruebe dicha conexión. * password - "
"solicitar al cliente remoto que introduzca una contraseña conocida"
# Basque translation for gnome-remote-desktop.
# Copyright (C) 2021 gnome-remote-desktop's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-remote-desktop package.
# Asier Sarasua Garmendia <asiersarasua@ni.eus>, 2021.
#
msgid ""
msgstr "Project-Id-Version: gnome-remote-desktop master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-remote-desktop/issues\n"
"POT-Creation-Date: 2021-06-26 19:16+0000\n"
"PO-Revision-Date: 2021-06-26 19:16+0000\n"
"Last-Translator: Asier Sarasua Garmendia <asiersarasua@ni.eus>\n"
"Language-Team: Basque <librezale@librezale.eus>\n"
"Language: eu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: src/grd-daemon.c:351
msgid "GNOME Remote Desktop"
msgstr "GNOME Urruneko Mahaigaina"
#: src/grd-prompt.c:124
#, c-format
msgid "Do you want to share your desktop?"
msgstr "Zure mahaigaina partekatu nahi al duzu?"
#: src/grd-prompt.c:125
#, c-format
msgid ""
"A user on the computer '%s' is trying to remotely view or control your "
"desktop."
msgstr "'%s' ordenagailuko erabiltzaile bat zure mahaigaina urrunetik ikusteko edo kontrolatzeko saiakera egiten ari da."
#: src/grd-prompt.c:131
msgid "Refuse"
msgstr "Ukatu"
#: src/grd-prompt.c:136
msgid "Accept"
msgstr "Onartu"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:7
msgid "Path to the certificate file"
msgstr "Ziurtagiri-fitxategiaren bide-izena"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:8
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:16
msgid ""
"In order to be able to use RDP with TLS Security, both the private key file "
"and the certificate file need to be provided to the RDP server."
msgstr "RDP eta TLS segurtasuna erabiltzeko, gako pribatuaren fitxategia zein ziurtagiri-fitxategia, biak eman behar ditu RDP zerbitzariak."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:15
msgid "Path to the private key file"
msgstr "Gako pribatuaren fitxategiaren bide-izena"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:23
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:33
msgid "Only allow remote connections to view the screen content"
msgstr "Onartu urruneko konexioek pantailaren edukia soilik ikus dezaten soilik"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:24
msgid ""
"When view-only is true, remote RDP connections cannot manipulate input "
"devices (e.g. mouse and keyboard)."
msgstr "Soilik ikusteko aukera egia denean, urruneko RDP konexioek ezin dituzte manipulatu sarrera-gailuak (adibidez, sagua edo teklatu)."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:34
msgid ""
"When view-only is true, remote VNC connections cannot manipulate input "
"devices (e.g. mouse and keyboard)."
msgstr "Soilik ikusteko aukera egia denean, urruneko VNC konexioek ezin dituzte manipulatu sarrera-gailuak (adibidez, sagua edo teklatu)."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:41
msgid "Method used to authenticate VNC connections"
msgstr "VNC konexioak autentifikatzeko erabili den metodoa"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:42
msgid ""
"The VNC authentication method describes how a remote connection is "
"authenticated. It can currently be done in two different ways: * prompt - by "
"prompting the user for each new connection, requiring a person with physical "
"access to the workstation to explicitly approve the new connection. * "
"password - by requiring the remote client to provide a known password"
msgstr "VNC autentifikazio-metodoak urruneko konexio bat nola autentifikatzen den deskribatzen du. Bi modutara egin daiteke: * prompt - konexio berri bakoitzerako, erabiltzaileak baimena eskatzea eta ordenagailura sarbide fisikoa duen pertsona bateak esplizituki konexio berria onartzea. * password - urruneko bezeroak pasahitz ezagun bat ematea"
# Persian translation for gnome-remote-desktop.
# Copyright (C) 2021 gnome-remote-desktop's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-remote-desktop package.
# Danial Behzadi <dani.behzi@ubuntu.com>, 2021.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-remote-desktop master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-remote-desktop/"
"issues\n"
"POT-Creation-Date: 2021-06-24 07:32+0000\n"
"PO-Revision-Date: 2021-09-01 15:16+0430\n"
"Last-Translator: Danial Behzadi <dani.behzi@ubuntu.com>\n"
"Language-Team: Persian <fa@li.org>\n"
"Language: fa\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.4.2\n"
#: src/grd-daemon.c:351
msgid "GNOME Remote Desktop"
msgstr "میزکار دوردست گنوم"
#: src/grd-prompt.c:124
#, c-format
msgid "Do you want to share your desktop?"
msgstr "می‌خواهید میزکارتان را هم‌رسانی کنید؟"
#: src/grd-prompt.c:125
#, c-format
msgid ""
"A user on the computer '%s' is trying to remotely view or control your desktop."
msgstr ""
"کاربری روی رایانهٔ «%s» در تلاش برای دیدن یا واپایش میزکارتان از راه دور است."
#: src/grd-prompt.c:131
msgid "Refuse"
msgstr "رد"
#: src/grd-prompt.c:136
msgid "Accept"
msgstr "پذیرش"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:7
msgid "Path to the certificate file"
msgstr "مسیر پروندهٔ گواهی‌نامه"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:8
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:16
msgid ""
"In order to be able to use RDP with TLS Security, both the private key file and "
"the certificate file need to be provided to the RDP server."
msgstr ""
"برای استفاده از RDP با امنیت TLS، باید هر دو پروندهٔ گواهی‌نامه و کلید خصوصی، به "
"کارساز RDP داده شوند."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:15
msgid "Path to the private key file"
msgstr "مسیر پروندهٔ کلید خصوصی"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:23
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:33
msgid "Only allow remote connections to view the screen content"
msgstr "اجازه به اتّصال‌های دوردست فقط برای دیدن محتوای صفحه"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:24
msgid ""
"When view-only is true, remote RDP connections cannot manipulate input devices "
"(e.g. mouse and keyboard)."
msgstr ""
"هنگامی که فقط‌دیدنی روشن است، اتّصال‌های RDP دودردست نمی‌توانند افزاره‌های ورودی (مثل "
"موشی و صفحه‌کلید) را دستکاری کنند."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:34
msgid ""
"When view-only is true, remote VNC connections cannot manipulate input devices "
"(e.g. mouse and keyboard)."
msgstr ""
"هنگامی که فقط‌دیدنی روشن است، اتّصال‌های VNC دودردست نمی‌توانند افزاره‌های ورودی (مثل "
"موشی و صفحه‌کلید) را دستکاری کنند."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:41
msgid "Method used to authenticate VNC connections"
msgstr "روش استفاده‌شده برای تأیید هویت اتّصال‌های VNC"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:42
msgid ""
"The VNC authentication method describes how a remote connection is "
"authenticated. It can currently be done in two different ways: * prompt - by "
"prompting the user for each new connection, requiring a person with physical "
"access to the workstation to explicitly approve the new connection. * password - "
"by requiring the remote client to provide a known password"
msgstr ""
"روش تأیید هویت VNC چگونگی تأیید هویت یک اتّصال دوردست را توضیح می‌دهد. در حال حاضر "
"این تأیید هویت می‌تواند به دو روش مختف انجام شود: * اعلان - با اعلان به کاربر "
"برای هر اتّصال جدید. نیازمند کسی با دسترسی فیزیکی به رایانه برای تأیید صریح اتّصال "
"جدید. * گذرواژه - با نیاز به فراهم کردن گذرواژه‌ای شناخته‌شده به دست کارخواه دوردست"
# Finnish translation for gnome-remote-desktop.
# Copyright (C) 2021 gnome-remote-desktop's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-remote-desktop package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-remote-desktop master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-remote-desktop/"
"issues\n"
"POT-Creation-Date: 2021-06-27 14:13+0000\n"
"PO-Revision-Date: 2021-08-30 16:37+0300\n"
"Language-Team: Finnish <lokalisointi-lista@googlegroups.com>\n"
"Language: fi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Last-Translator: Jiri Grönroos <jiri.gronroos+l10n@iki.fi>\n"
"X-Generator: Poedit 3.0\n"
#: src/grd-daemon.c:351
msgid "GNOME Remote Desktop"
msgstr "Gnomen Etätyöpöytä"
#: src/grd-prompt.c:124
#, c-format
msgid "Do you want to share your desktop?"
msgstr "Haluatko jakaa työpöytäsi?"
#: src/grd-prompt.c:125
#, c-format
msgid ""
"A user on the computer '%s' is trying to remotely view or control your "
"desktop."
msgstr ""
"Käyttäjä laitteella '%s' yrittää muodostaa etäyhteyden nähdäkseen tai "
"ohjatakseen työpöytääsi."
#: src/grd-prompt.c:131
msgid "Refuse"
msgstr "Estä"
#: src/grd-prompt.c:136
msgid "Accept"
msgstr "Hyväksy"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:7
msgid "Path to the certificate file"
msgstr "Polku varmennetiedostoon"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:8
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:16
msgid ""
"In order to be able to use RDP with TLS Security, both the private key file "
"and the certificate file need to be provided to the RDP server."
msgstr ""
"Jotta RDP:tä voidaan käyttää TLS-protokollan kanssa, on toimitettava sekä "
"yksityisen avaimen tiedosto että sertifikaattitiedosto RDP-palvelimelle."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:15
msgid "Path to the private key file"
msgstr "Polku yksityisen avaimen tiedostoon"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:23
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:33
msgid "Only allow remote connections to view the screen content"
msgstr "Salli etäyhteyksien nähdä vain näytön sisältö"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:24
msgid ""
"When view-only is true, remote RDP connections cannot manipulate input "
"devices (e.g. mouse and keyboard)."
msgstr ""
"Kun vain luku -tila on käytössä, RDP-etäyhteydet eivät voi manipuloida "
"syötelaitteita (esim. hiirtä ja näppäimistöä)."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:34
msgid ""
"When view-only is true, remote VNC connections cannot manipulate input "
"devices (e.g. mouse and keyboard)."
msgstr ""
"Kun vain luku -tila on käytössä, VNC-etäyhteydet eivät voi manipuloida "
"syötelaitteita (esim. hiirtä ja näppäimistöä)."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:41
msgid "Method used to authenticate VNC connections"
msgstr "VNC-yhteyksien todentamiseen käytetty menetelmä"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:42
msgid ""
"The VNC authentication method describes how a remote connection is "
"authenticated. It can currently be done in two different ways: * prompt - by "
"prompting the user for each new connection, requiring a person with physical "
"access to the workstation to explicitly approve the new connection. * "
"password - by requiring the remote client to provide a known password"
msgstr ""
"VNC-todennusmenetelmä kuvaa, kuinka etäyhteys todennetaan. Se voidaan tällä "
"hetkellä tehdä kahdella eri tavalla: * kehote - pyytämällä käyttäjää "
"jokaisesta uudesta yhteydestä ja vaatimalla henkilö, jolla on fyysinen pääsy "
"työasemalle, hyväksymään nimenomaisesti uuden yhteyden. * salasana - "
"vaatimalla etäkäyttäjää antamaan olemassa oleva salasana"
# French translation for gnome-remote-desktop.
# Copyright (C) 2021 gnome-remote-desktop's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-remote-desktop package.
# Titouan Bénard Le Bouffos <itotutona@evta.fr>, 2021
# Claude Paroz <claude@2xlibre.net>, 2021
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-remote-desktop master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-remote-desktop/"
"issues\n"
"POT-Creation-Date: 2021-09-05 09:11+0000\n"
"PO-Revision-Date: 2021-09-12 18:46+0200\n"
"Last-Translator: Claude Paroz <claude@2xlibre.net>\n"
"Language-Team: GNOME French Team <gnomefr@traduc.org>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
"X-Generator: Gtranslator 40.0\n"
#: src/grd-daemon.c:351
msgid "GNOME Remote Desktop"
msgstr "Bureau à distance de GNOME"
#: src/grd-prompt.c:124
#, c-format
msgid "Do you want to share your desktop?"
msgstr "Voulez vous partagez votre bureau ?"
#: src/grd-prompt.c:125
#, c-format
msgid ""
"A user on the computer '%s' is trying to remotely view or control your "
"desktop."
msgstr ""
"Un utilisateur sur l’ordinateur « %s » essaie d’afficher ou de contrôler à "
"distance votre bureau."
#: src/grd-prompt.c:131
msgid "Refuse"
msgstr "Refuser"
#: src/grd-prompt.c:136
msgid "Accept"
msgstr "Accepter"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:7
msgid "Path to the certificate file"
msgstr "Chemin vers le fichier du certificat"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:8
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:16
msgid ""
"In order to be able to use RDP with TLS Security, both the private key file "
"and the certificate file need to be provided to the RDP server."
msgstr ""
"Afin de pouvoir utiliser RDP avec la sécurité TLS, le fichier de clé privée "
"et le fichier de certificat doivent être fournis au serveur RDP."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:15
msgid "Path to the private key file"
msgstr "Chemin vers le fichier de clé privée"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:23
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:33
msgid "Only allow remote connections to view the screen content"
msgstr ""
"Autoriser les connexions à distance à uniquement afficher le contenu de "
"l’écran."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:24
msgid ""
"When view-only is true, remote RDP connections cannot manipulate input "
"devices (e.g. mouse and keyboard)."
msgstr ""
"Lorsque la lecture seule est active, les connexions RDP distantes ne peuvent "
"pas manipuler les périphériques d’entrée (par exemple, la souris et le "
"clavier)."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:34
msgid ""
"When view-only is true, remote VNC connections cannot manipulate input "
"devices (e.g. mouse and keyboard)."
msgstr ""
"Lorsque la lecture seule est active, les connexions VNC distantes ne peuvent "
"pas manipuler les périphériques d’entrée (par exemple, la souris et le "
"clavier)."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:41
msgid "Method used to authenticate VNC connections"
msgstr "Méthode utilisée pour authentifier les connexions VNC"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:42
msgid ""
"The VNC authentication method describes how a remote connection is "
"authenticated. It can currently be done in two different ways: * prompt - by "
"prompting the user for each new connection, requiring a person with physical "
"access to the workstation to explicitly approve the new connection. * "
"password - by requiring the remote client to provide a known password"
msgstr ""
"La méthode d’authentification VNC décrit comment une connexion à distance "
"est authentifiée. Cela peut actuellement être fait de deux manières "
"différentes : * invite - en invitant l’utilisateur à chaque nouvelle "
"connexion, exigeant qu’une personne ayant un accès physique au poste de "
"travail approuve explicitement la nouvelle connexion. * mot de passe - en "
"demandant au client distant de fournir un mot de passe connu"
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-remote-desktop/"
"issues\n"
"POT-Creation-Date: 2021-07-25 14:14+0000\n"
"PO-Revision-Date: 2021-07-25 23:26+0200\n"
"Language-Team: Friulian <f.t.public@gmail.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.0\n"
"Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Language: fur\n"
#: src/grd-daemon.c:351
msgid "GNOME Remote Desktop"
msgstr "Scritori lontan di GNOME"
#: src/grd-prompt.c:124
#, c-format
msgid "Do you want to share your desktop?"
msgstr "Desideristu condividi il to scritori?"
#: src/grd-prompt.c:125
#, c-format
msgid ""
"A user on the computer '%s' is trying to remotely view or control your "
"desktop."
msgstr ""
"Un utent sul computer '%s' al sta cirint di viodi di lontan o controlâ il to "
"scritori."
#: src/grd-prompt.c:131
msgid "Refuse"
msgstr "Refude"
#: src/grd-prompt.c:136
msgid "Accept"
msgstr "Acete"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:7
msgid "Path to the certificate file"
msgstr "Percors al file dal certificât"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:8
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:16
msgid ""
"In order to be able to use RDP with TLS Security, both the private key file "
"and the certificate file need to be provided to the RDP server."
msgstr ""
"Par podê rivâ a doprâ RDP cu la sigurece TLS, il servidôr RDP al à di furnî "
"sedi il file de clâf privade sedi il file dal certificât."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:15
msgid "Path to the private key file"
msgstr "Percors al file de clâf privade"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:23
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:33
msgid "Only allow remote connections to view the screen content"
msgstr "Permet aes conessions esternis dome di viodi il contignût dal schermi"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:24
msgid ""
"When view-only is true, remote RDP connections cannot manipulate input "
"devices (e.g. mouse and keyboard)."
msgstr ""
"Cuant che view-only al è vêr, lis conessions esternis RDP no puedin manipolâ "
"i dispositîfs di input (p.e. mouse e tastiere)."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:34
msgid ""
"When view-only is true, remote VNC connections cannot manipulate input "
"devices (e.g. mouse and keyboard)."
msgstr ""
"Cuant che view-only al è vêr, lis conessions VNC esternis no puedin manipolâ "
"i dispositîfs di input (p.e. mouse e tastiere)."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:41
msgid "Method used to authenticate VNC connections"
msgstr "Metodi doprât par autenticâ lis conessions VNC"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:42
msgid ""
"The VNC authentication method describes how a remote connection is "
"authenticated. It can currently be done in two different ways: * prompt - by "
"prompting the user for each new connection, requiring a person with physical "
"access to the workstation to explicitly approve the new connection. * "
"password - by requiring the remote client to provide a known password"
msgstr ""
"Il metodi di autenticazion VNC al descrîf cemût che e à di vignî autenticade "
"une conession esterne. Pal moment si pues fâ in dôs manieris: * prompt - "
"domandant al utent par ogni gnove conession, che al domande che une persone "
"e vedi acès fisic ae postazion di lavôr par aprovâ in maniere esplicite lis "
"gnovis conessions. * password - domandant al client lontan di furnî une "
"password cognossude"