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:
- RDP: FreeRDP doc
FreeRDP 2.10.0 - VNC: VNC doc
LibVNCServer-0.9.14
Build status:
Table of Contents
- Table of Contents
- Compatibility
- Features of build
- Branch info
- Install and Run
- Screenshots
- Use cases
- Project Structure
- 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:
- Set
Initial CMake parameters
to use-GNinja
inBuild Settings
; - Press
Re-configure with Initial Parameters
to reconfigure the project.
Branch info
Install and Run
The project being built in the usual way using the Aurora SDK: Documentation.
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.
- FreeRDP directory with FreeRDP 2.10.0.
- CMakeLists.txt file describes the rdp subproject structure for the CMake build system.
-
vnc subproject contains the VNC library source code.
- libvncserver directory with LibVNCServer-0.9.14.
- CMakeLists.txt file describes the vnc subproject structure for the CMake build system.
- CMakeLists.txt file describes the project structure for the CMake build system.
-
rpm directory contains the rpm-package build settings.
- ru.auroraos.RemoteDesktopClient.spec file is used by rpmbuild tool.
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.