Convert Figma logo to code with AI

TurboVNC logoturbovnc

Main TurboVNC repository

1,022
154
1,022
24

Top Related Projects

LibVNCServer/LibVNCClient are cross-platform C libraries that allow you to easily implement VNC server or client functionality in your program.

13,871

VNC client web application

6,680

xrdp: an open source RDP server

13,686

FreeRDP is a free remote desktop protocol library and clients

👁️ UltraVNC Server, UltraVNC Viewer, UltraVNC Repeater and UltraVNC SC | Official repository: https://github.com/ultravnc/UltraVNC

Quick Overview

TurboVNC is a high-performance, enterprise-quality VNC (Virtual Network Computing) server and client. It is optimized for 3D and video workloads, providing a remote desktop experience with exceptional speed and image quality. TurboVNC is particularly well-suited for use with GPU-accelerated applications and in high-latency network environments.

Pros

  • High performance and low latency, especially for 3D and video applications
  • Excellent image quality with advanced compression algorithms
  • Cross-platform support (Windows, Linux, macOS)
  • Integrates well with VirtualGL for 3D acceleration

Cons

  • Requires more bandwidth compared to some other remote desktop solutions
  • Setup can be complex, especially for optimal performance
  • Limited built-in security features compared to some enterprise solutions
  • May require additional configuration for use in restrictive network environments

Getting Started

To get started with TurboVNC:

  1. Download the appropriate package for your operating system from the TurboVNC GitHub releases page.
  2. Install the package on your system.
  3. On the server side, start the TurboVNC server:
    /opt/TurboVNC/bin/vncserver
    
  4. On the client side, connect using the TurboVNC viewer:
    /opt/TurboVNC/bin/vncviewer server:display
    
    Replace server with the hostname or IP address of your server, and display with the appropriate display number (usually 1).

For optimal performance, consider using TurboVNC in conjunction with VirtualGL for 3D-accelerated applications. Refer to the TurboVNC documentation for detailed setup instructions and advanced configuration options.

Competitor Comparisons

LibVNCServer/LibVNCClient are cross-platform C libraries that allow you to easily implement VNC server or client functionality in your program.

Pros of libvncserver

  • More versatile and can be used for both client and server implementations
  • Actively maintained with regular updates and contributions
  • Supports a wider range of VNC protocols and extensions

Cons of libvncserver

  • May have lower performance compared to TurboVNC for high-performance graphics
  • Less focused on optimizing for specific use cases like remote 3D graphics
  • Potentially more complex to set up and configure for specialized scenarios

Code Comparison

libvncserver:

rfbScreenInfoPtr screen = rfbGetScreen(&argc, argv, width, height, 8, 3, bpp);
screen->frameBuffer = (char*)malloc(width * height * bpp);
screen->alwaysShared = TRUE;
rfbInitServer(screen);
rfbRunEventLoop(screen, -1, FALSE);

TurboVNC:

vncServer = new vncServer();
vncServer->SetDesktopName("TurboVNC");
vncServer->SetFrameBufferSize(width, height);
vncServer->SetPixelFormat(&pf);
vncServer->Init();
vncServer->Run();

The code snippets demonstrate basic server setup in both libraries. libvncserver uses a more C-style approach with function calls, while TurboVNC employs a C++ object-oriented design. TurboVNC's API appears more streamlined for its specific use case, while libvncserver offers more flexibility in configuration.

13,871

VNC client web application

Pros of noVNC

  • Browser-based: Runs entirely in web browsers without additional software
  • Cross-platform compatibility: Works on any device with a modern web browser
  • Easy deployment: No client-side installation required

Cons of noVNC

  • Performance: Generally slower than native VNC clients like TurboVNC
  • Feature limitations: May lack some advanced features available in native clients
  • Dependency on web technologies: Requires up-to-date browsers and may have compatibility issues

Code Comparison

noVNC (JavaScript):

var rfb = new RFB(document.getElementById('screen'), 'ws://example.com:5900');
rfb.scaleViewport = true;
rfb.resizeSession = true;

TurboVNC (C):

rfbClient* client = rfbGetClient(8, 3, 4);
client->serverHost = "example.com";
client->serverPort = 5900;
rfbClientSetClientData(client, client);

Both projects aim to provide remote desktop access, but noVNC focuses on browser-based solutions, while TurboVNC offers a native client with potentially better performance. The choice between them depends on specific use cases, required features, and deployment preferences.

6,680

xrdp: an open source RDP server

Pros of xrdp

  • Uses the RDP protocol, which is natively supported by Windows clients
  • Supports multiple simultaneous sessions on a single server
  • Integrates well with existing authentication systems like PAM

Cons of xrdp

  • Generally slower performance compared to TurboVNC
  • Less optimized for high-performance graphics applications
  • May have compatibility issues with some Linux desktop environments

Code Comparison

xrdp (session initialization):

static int
xrdp_mm_connect(struct xrdp_mm *self)
{
    if (self == NULL)
    {
        return 1;
    }
    self->wm = xrdp_wm_create(self, self->client_info);
    return 0;
}

TurboVNC (frame encoding):

void
TightEncoder::compressData(rdr::OutStream *os, rdr::ZlibOutStream *zos,
                           const void *data, unsigned int length,
                           int zlibLevel, int zlibStrategy)
{
  zos->setUnderlying(os);
  zos->setCompressionLevel(zlibLevel);
  zos->writeBytes(data, length);
  zos->flush();
}

Both projects aim to provide remote desktop solutions, but xrdp focuses on RDP protocol compatibility, while TurboVNC emphasizes high-performance VNC implementations.

13,686

FreeRDP is a free remote desktop protocol library and clients

Pros of FreeRDP

  • Supports multiple protocols (RDP, RemoteFX, etc.) for remote desktop connections
  • Cross-platform compatibility (Windows, macOS, Linux, iOS, Android)
  • Active development with frequent updates and bug fixes

Cons of FreeRDP

  • Steeper learning curve for configuration and customization
  • May have higher latency compared to TurboVNC in some network conditions
  • Limited built-in compression options compared to TurboVNC

Code Comparison

TurboVNC (server-side encoding):

EncodeRect(int x, int y, int w, int h)
{
    if (cl->format.depth == 24 && cl->format.redMax == 255)
        return EncodeRectTight24(x, y, w, h);
    else
        return EncodeRectTightOther(x, y, w, h);
}

FreeRDP (client-side decoding):

BOOL update_recv_surfcmds(rdpUpdate* update, wStream* s)
{
    UINT16 cmdType;
    UINT32 cmdLength;
    Stream_Read_UINT16(s, cmdType);
    Stream_Read_UINT32(s, cmdLength);
    return update_recv_surfcmd(update, s, cmdType, cmdLength);
}

The code snippets demonstrate different approaches to handling remote desktop data: TurboVNC focuses on server-side encoding optimization, while FreeRDP emphasizes client-side decoding and protocol handling.

👁️ UltraVNC Server, UltraVNC Viewer, UltraVNC Repeater and UltraVNC SC | Official repository: https://github.com/ultravnc/UltraVNC

Pros of UltraVNC

  • More feature-rich, including file transfer and chat functionality
  • Better support for Windows platforms
  • Offers both server and viewer components in a single package

Cons of UltraVNC

  • Less optimized for high-performance graphics and 3D applications
  • May have higher latency compared to TurboVNC
  • Less focus on cross-platform compatibility

Code Comparison

UltraVNC (C++):

void UltraVNC::InitializeConnection() {
    // Windows-specific initialization
    WSADATA wsaData;
    WSAStartup(MAKEWORD(2, 2), &wsaData);
    // ... more initialization code
}

TurboVNC (C):

void TurboVNC_InitializeConnection() {
    // Cross-platform initialization
    #ifdef _WIN32
        // Windows-specific code
    #else
        // Unix-like systems code
    #endif
    // ... more initialization code
}

TurboVNC focuses on cross-platform compatibility and optimized performance for graphics-intensive applications, while UltraVNC offers a broader feature set and better Windows integration. The code comparison shows UltraVNC's Windows-centric approach versus TurboVNC's cross-platform design.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

About TurboVNC

Virtual Network Computing (VNC) is a remote display system that allows you to view and interact with a desktop environment that is running on a remote computer. Using VNC, you can run graphical applications on a remote machine and send only the pixels generated by those applications to your local machine. VNC is platform-independent and supports a wide variety of operating systems and architectures as both servers and clients.

TurboVNC is a high-speed version of VNC derived from TightVNC. It contains a variant of Tight encoding that is tuned to maximize performance for image-intensive applications (such as VirtualGL, video applications, and image editors) while still providing excellent performance for other types of applications. TurboVNC, in combination with VirtualGL, provides a complete solution for remotely displaying 3D applications with interactive performance.

Refer to the TurboVNC User's Guide and man pages for a more thorough description of the components that make up TurboVNC.

More information about TurboVNC can be found at https://TurboVNC.org.

Funding

TurboVNC is an independent open source project, but we rely on patronage and funded development in order to maintain that independence. The easiest way to ensure that TurboVNC remains community-focused and free of any one organization's agenda is to sponsor our project through GitHub. All sponsorship money goes directly toward funding the labor necessary to maintain TurboVNC, support the user community, and implement bug fixes and strategically important features.

Sponsor TurboVNC

Legal

TurboVNC is

Copyright (C) 2009-2026 D. R. Commander
Copyright (C) 2021 Steffen Kieß
Copyright (C) 2011-2019 Brian P. Hinz
Copyright (C) 2010 University Corporation for Atmospheric Research
Copyright (C) 2004-2008 Sun Microsystems, Inc.
Copyright (C) 2004 Landmark Graphics Corporation

TurboVNC contains code from LibVNCServer, RealVNC, TigerVNC, and TightVNC, which are

Copyright (C) 2009-2021 Pierre Ossman for Cendio AB
Copyright (C) 2005-2011 Martin Koegler
Copyright (C) 2010-2011 Joel Martin
Copyright (C) 2011 Gernot Tenchio
Copyright (C) 2010 m-privacy GmbH
Copyright (C) 2010 TigerVNC Team
Copyright (C) 2004-2009 Red Hat, Inc.
Copyright (C) 2009 TightVNC Team
Copyright (C) 2000-2006 Constantin Kaplinsky
Copyright (C) 2006 OCCAM Financial Technology
Copyright (C) 2002-2005 RealVNC Ltd.
Copyright (C) 2004-2005 Cendio AB
Copyright (C) 2003 Sun Microsystems, Inc.
Copyright (C) 2000 Tridia Corp.
Copyright (C) 1999 AT&T Laboratories Cambridge.

This software is distributed under the GNU General Public Licence as published by the Free Software Foundation. See the file LICENSE.txt for the conditions under which this software is made available. TurboVNC also contains code from other sources. See the individual source files for details of the conditions under which they are made available.