RDP Client

RDP Client

RU | EN


Remote desktop client application

Description. The client application allows you to access the remote desktop via RDP and VNC protocols and interact with them.

Functionality and components of the example. The application implements the following features:

  • Connecting to remote desktop via RDP protocols: subdirectory RDP
  • Connecting to remote desktop via VNC protocols: subdirectory VNC
  • Saving and subsequent editing of connection configurations.
  • Interact with the remote desktop using a physical mouse, virtual cursor, zoom panel, physical and system keyboard.

The application uses third-party libraries:

Build status:

  1. example - pipeline status
  2. dev - pipeline status

Table of Contents

  1. Table of Contents
  2. Compatibility
  3. Features of build
  4. Branch info
  5. Install and Run
  6. Screenshots
  7. Use cases
  8. Project Structure
  9. Terms of Use and Participation in Development

Compatibility

The project is compatible with all the supported versions of the Aurora OS.

Features of build

This example being built using the Aurora SDK: Documentation) The project uses Ninja for building. To avoid errors during building, the following actions must be performed:

  1. Set Initial CMake parameters to use -GNinja in Build Settings;
  2. Press Re-configure with Initial Parameters to reconfigure the project.

Branch info

Branches

Install and Run

The project being built in the usual way using the Aurora SDK: Documentation.

Screenshots

screenshots

Use cases

The application has been tested for the following features:

  • The application allows to connect (and to disconnect) to the remote desktop using RDP and VNC.
  • The application allows to set up the connection hostname, port, username and password.
  • The application allows to set up the remote desktop screen resolution before the connection.
  • The application allows to save multiple connection configurations (including hostname, port, username, screen resolution and connection type) and use them again.
  • The application displays the remote desktop screen after the successful connection.
  • The application allows to interact with the remote desktop screen using the mouse pointer and touch gestures.
  • The application allows to send the keyboard keypresses to the remote desktop.
  • The application allows to zoom in and out the remote screen picture using the pinch gesture.
  • The application allows to drag the remote screen picture using the touch gesture.

Connection settings

On the application start page user should set up following parameters to perform the connection:

  • Connection type — RDP or VNC.
  • Screen resolution (can be ignored if the remote desktop server is not supported setting the resolution):
    • Use resolution of mobile screen — the device resolution will be sent to the remote desktop.
    • Use remote resolution — the remote desktop resolution will be used on the device.
    • Specify resolution manually — user sets up a resolution to use on the device and remote screen.
  • Address — IP-address of the remote desktop server.
  • Port — port of the remote desktop server.
  • Username — the remote machine user name.
  • Password — the remote machine user password.

VNC

The VNC connection is tested with the following VNC-servers: TightVNC, TigerVNC, TurboVNC and UltraVNC.

Keyboard layouts specifics

TightVNC, TigerVNC a TurboVNC servers work with keyboards layouts correctly. All layouts of the client's physical keyboard are correctly transmitted and displayed on the servers, provided that the client and server layouts match when connected. Switching the layout on the server is also performed correctly.

But a connection with the UltraVNC server has the keyboard layouts specifics.

  • Only Latin characters are transmitted to the server among all keyboard layouts on the client. When switching to Cyrillic layouts, character input does not occur.

  • Switching the layout on the server works correctly if the Latin layout is enabled on the client and on the server. In this case, it is possible to switch the layout on the server, for example, switch from Latin to Cyrillic, and the input will be carried out by the corresponding server layout.

This behavior is typical not only for this application, but also for other VNC-clients: TightVNC, TightVNC, TurboVNC and the client of UltraVNC itself.

Project structure

The project has a standard structure of an application based on C++ and QML for Aurora OS.

  • app subproject contains the application source code:
    • CMakeLists.txt file describes the app subproject structure for the CMake build system.
    • icons directory contains the application icons for different screen resolutions.
    • qml directory contains the QML source code and the UI resources.
      • components directory contains the custom UI components.
      • cover directory contains the application cover implementations.
      • icons directory contains the additional custom UI icons.
      • pages directory contains the application pages.
      • RemoteDesktopClient.qml file provides the application window implementation.
    • src directory contains the C++ source code.
      • main.cpp file is the application entry point.
    • translations directory contains the UI translation files.
    • ru.auroraos.RemoteDesktopClient.desktop file defines the display and parameters for launching the application.
  • rdp subproject contains the FreeRDP library source code.
  • vnc subproject contains the VNC library source code.
  • CMakeLists.txt file describes the project structure for the CMake build system.
  • rpm directory contains the rpm-package build settings.

Terms of Use and Participation in Development

The source code of the project is provided under the license, which allows it to be used in third-party applications.

Contributor License Agreement The contributor agreement documents the rights granted by contributors of the Open Mobile Platform.

Information about the contributors is specified in the AUTHORS file.

Code of conduct is a current set of rules of the Open Mobile Platform which informs you how we expect the members of the community will interact while contributing and communicating.