RoyalVNC is a modern, high performance implementation of the VNC/RFB protocol written in Swift. The SDK (RoyalVNCKit) is compatible with Swift, Objective-C, C and C# on macOS, iOS, iPadOS, Linux and Windows. It depends on CryptoSwift, zlib and D3DES (see Credits).
- No Authentication
- VNC Password
- Apple Remote Desktop
- UltraVNC MS-Logon II
- Zlib
- ZRLE
- Hextile
- CoRRE
- RRE
- CopyRect
- LastRect
- CompressionLevel
- DesktopName
- Cursor
- DesktopSize
- ExtendedDesktopSize
- ContinuousUpdates
- Support for 8-bit, 16-bit and 24/32-bit color depths with high-performance framebuffer implementations.
- Clipboard redirection support for text in both ways (remote to local and local to remote).
- Connection state management and rendering is decoupled from each other, so it's possible to build "headless" clients (ie. no rendering of the remote desktop).
- The SDK includes a ready-to-use implementation of a framebuffer view for macOS (subclass of
NSView), which also handles mouse and keyboard input, local cursor (NSCursor), scaling and rendering. The iOS/iPadOS equivalent (UIView) is a work-in-progress. - First-class error handling. The
VNCErrortype divides all possible errors into three broad categories: Protocol, Authentication and Connection errors. There are helper functions to retrieve human-readable descriptions for all errors and a convenience functions that allows the SDK consumer to distinguish between errors that should be displayed to the user and ones that shouldn't. - Headless CLI demos (one using Swift and another one using the C API) are included in the repository.
- The repository also contains C# bindings so the library can be used with .NET.
- The repository also contains Kotlin bindings which make the library usable in Android projects. To set up the Android development environment (only supported on macOS currently):
- Install Java 11 or later, ensuring the
javaexecutable is added to thePATH - Install Android Studio and ensure the
ANDROID_HOMEenvironment variable is exposed to your shell (see https://developer.android.com/tools/variables) - Run
./android_dependencies.shto install the Android tooling and SDKs for Android - Run
./android_build.shwhich builds the RoyalVNCKit native library and lays out its depedencies - Open
Bindings/kotlin/RoyalVNCAndroidTestin Android Studio to build and run the demo app
- Install Java 11 or later, ensuring the
- This repository contains Demo/Sample clients for macOS (one written in Swift, one in Objective-C) and iOS/iPadOS.
See Usage.
- CryptoSwift (The CryptoSwift license)
- zlib (zlib license)
- D3DES (Public Domain, Copyright Richard Outerbridge)
