Skip to content

A modern, high performance implementation of the VNC/RFB protocol written in Swift.

License

Notifications You must be signed in to change notification settings

royalapplications/royalvnc

Repository files navigation

CI

RoyalVNC

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 has no external dependencies but includes some free (public domain) third party code from the libtommath, libtomcrypt and D3DES libraries (see Credits).

Supported Features

Security Types (Authentication Methods)

  • No Authentication
  • VNC Password
  • Apple Remote Desktop
  • UltraVNC MS-Logon II

Encodings

  • Zlib
  • ZRLE
  • Hextile
  • CoRRE
  • RRE
  • CopyRect

Pseudo Encodings

  • LastRect
  • CompressionLevel
  • DesktopName
  • Cursor
  • DesktopSize
  • ExtendedDesktopSize
  • ContinuousUpdates

Misc. Features

  • 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 VNCError type 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.
  • This repository contains Demo/Sample clients for macOS (one written in Swift, one in Objective-C) and iOS/iPadOS.

Usage

See Usage.

License

MIT License

Credits