Warning, /plasma/krdp/README.md is written in an unsupported language. File is not indexed.

0001 # KRdp
0002 
0003 Library and examples for creating an RDP server.
0004 
0005 # Running the example server
0006 
0007 The example server requires a username and password to be provided on the command line, which will be used when connecting from an RDP client. They can be provided using the `-u` and `-p` command line parameters, respectively. For example:
0008 
0009 ```
0010 krdpserver -u user -p test
0011 ```
0012 
0013 The server will then listen on all interfaces on port 3389, and clients can connect with the username "user" and the password "pass".
0014 
0015 # Connecting to the example server
0016 
0017 To connect to the server, make sure to pass the username and password the server was started with.
0018 
0019 Currently, the main client that has been used for testing and is confirmed to work is the FreeRDP client. Launch the FreeRDP client with the following command: `xfreerdp /u:<username> /p:<password> -clipboard /v:<ip_address>:3389`, filling in the username, password and IP address as appropriate. If testing locally, substitute `localhost` for an IP address.
0020 
0021 # Security considerations
0022 
0023 In addition, a valid TLS certificate and key are required to encrypt the communication between client and server. The server will look for a file called `server.crt` and `server.key` in the current working directory, but a different path can be provided using the `--certificate` and `--certificate-key` command line parameters. If no valid certificate is found using any of these methods, the server will internally generate a self-signed certificate and use that.
0024 
0025 # Command Line Options
0026 
0027 The following command line options are available for the example server:
0028 
0029 <dl>
0030     <dt>-u, --username <username></dt>
0031     <dd>The username to use when a client tries to login. Required.</dd>
0032     <dt>-p, --password <password></dt>
0033     <dd>The password to require when a client tries to login. Required.</dd>
0034     <dt>--port <port></dt>
0035     <dd>The port to listen on for connections. Defaults to 3389.</dd>
0036     <dt>--certificate <certificate></dt>
0037     <dd>The path to a TLS certificate file to use. If not supplied or it cannot be found a temporary self-signed certificate will be generated.</dd>
0038     <dt>--certificate-key <certificate-key></dt>  
0039     <dd>The path to the TLS certificate key that matches the provided certificate.</dd>
0040     <dt>--monitor <monitor></dt>The index of the monitor to use for streaming video. If not supplied the whole workspace is used.</dd>
0041     <dt>--quality <quality></dt>
0042     <dd>Set the video quality, from 0 (lowest) to 100 (highest).</dd>
0043 </dl>
0044 
0045 # Known Working and Not-Working Clients
0046 
0047 The following clients are known to work with the server:
0048 
0049 - XFreeRDP and wlFreeRDP from the FreeRDP project.
0050 - Reminna, a remote desktop client for Gnome.
0051 - Thincast Remote Desktop Client
0052 - Windows Remote Desktop client, at least as shipped with a recent Windows 10.
0053 
0054 The following clients are known not to work:
0055 
0056 - Krdc, KDE's remote desktop client. While it supports RDP it does not support
0057 the graphics pipeline.
0058 - Microsoft's Remote Desktop client for Android. While it should support H.264
0059 it seems to not enable it.
0060 
0061 # Known Issues and Limitations
0062 
0063 - Only video streaming and remote input is supported.
0064 - Only the NLA security type of RDP is supported.
0065 - Only one username and password combination is supported for login.
0066 - Only the "Graphics Pipeline" extension of the RDP protocol is
0067 implemented for video streaming. This extension allows using H.264 for video
0068 streaming, but it means only clients supporting that extension are supported.
0069 - H.264 encoding is done using hardware encoding if possible, but currently we
0070 only support using VAAPI for this. Most notably this means hardware encoding on
0071 NVidia hardware can not be used and software encoding will be used instead.
0072 Additionally, on certain hardware there are limits to what size of frame can be
0073 encoded by the hardware. In both cases, encoding will fall back to software
0074 encoding.
0075 - KDE's implementation of the Remote Desktop portal is rather limited as
0076 shipped with Plasma 5.27. Most notably it does not allow selecting which screen
0077 to stream, nor does it have an option to remember the setup and reuse it when
0078 the same application requests a new connection. As a workaround, the server
0079 will open a remote desktop session on startup and reuse that session for all
0080 RDP connections. Additionally, monitor selection can be done using the
0081 `--monitor` command line option.
0082 - Input on a high DPI screen may be offset incorrectly. This is due to a bug in
0083 the Remote Desktop Portal that has been fixed in the meantime. The fix will be 
0084 released with KDE Plasma 5.27.8.