DeskPad is an open-source VNC client for iPadOS, built with SwiftUI. It implements core parts of the RFB protocol to connect to remote desktops and interact with them using touch, pointer, and hardware keyboard input.
- VNC connection flow with RFB handshaking and session setup
- Password-based VNC authentication (including DES challenge response)
- Framebuffer rendering for remote desktop updates
- Remote input forwarding:
- Keyboard key down/up events
- Pointer move/click events
- Scroll input handling
- Zoom and pan support in the remote desktop view
- SwiftUI app structure with a UIKit-backed rendering/input view for desktop interaction
- Swift
- SwiftUI + UIKit interoperability
- Network.framework
- CoreGraphics
- CommonCrypto
DeskPad/Network: VNC connection lifecycle and socket communicationDeskPad/Protocol: RFB message encoder/decoder and authentication helpersDeskPad/Framebuffer: Pixel buffer and image generation for renderingDeskPad/Input: Key symbol mapping and input event forwardingDeskPad/Views: Connection UI, remote desktop view, and session toolbar
- Xcode 26 or later
- iPadOS 26.0 or later
- This app requires a hardware keyboard and a pointing device, including the iPad Magic Keyboard.
- Clone the repository.
- Open
DeskPad/DeskPad.xcodeprojin Xcode. - Select an iPad simulator or a physical iPad device.
- Build and run the
DeskPadtarget.
- Launch the app.
- Enter the VNC server host, port, and credentials (if required).
- Connect and start interacting with the remote desktop.
- Use DeskPad only on trusted networks or through secure tunnels/VPN when accessing remote systems.
- Avoid exposing VNC servers directly to the public internet.
- Additional RFB encoding support
- Better reconnection and session resilience
- Improved keyboard/layout coverage
- UI/UX improvements for multitasking workflows on iPad
Issues and pull requests are welcome. If you plan a larger change, please open an issue first to discuss scope and implementation direction.
Licensed under the MIT license.

