Convert Figma logo to code with AI

TigerVNC logotigervnc

High performance, multi-platform VNC client and server

5,041
930
5,041
180

Top Related Projects

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

11,402

VNC client web application

VNC server app for Android that does not require root privileges.

10,779

FreeRDP is a free remote desktop protocol library and clients

Quick Overview

TigerVNC is a high-performance, platform-neutral implementation of VNC (Virtual Network Computing). It allows users to view and interact with remote desktop environments over a network connection. TigerVNC is based on the RealVNC 4 and X.org code bases, providing a robust and feature-rich remote desktop solution.

Pros

  • Cross-platform compatibility (Windows, Linux, macOS)
  • High-performance and optimized for modern hardware
  • Supports various security options, including TLS encryption
  • Active development and community support

Cons

  • May require additional configuration for optimal performance
  • Some advanced features might be complex for novice users
  • Limited built-in file transfer capabilities compared to some alternatives
  • Occasional compatibility issues with certain graphics drivers

Getting Started

To get started with TigerVNC:

  1. Download the appropriate package for your operating system from the TigerVNC GitHub releases page.

  2. Install the package on both the server (computer to be accessed) and client (computer accessing the remote desktop).

  3. On the server, start the VNC server:

    vncserver :1
    
  4. On the client, connect to the server using the VNC viewer:

    vncviewer server_ip:5901
    
  5. Enter the password when prompted to access the remote desktop.

For more detailed instructions and configuration options, refer to the TigerVNC documentation.

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 lightweight and focused on providing VNC server/client libraries
  • Easier to integrate into other projects due to its modular design
  • Supports a wider range of platforms, including embedded systems

Cons of libvncserver

  • Less feature-rich as a standalone VNC solution
  • May require more setup and configuration for a complete VNC system
  • Smaller community and potentially slower development pace

Code Comparison

libvncserver:

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

tigervnc:

rfb::VNCServerST server("TigerVNC");
network::TcpListener listener(NULL, 5900);
while (true) {
    network::Socket* sock = listener.accept();
    server.addClient(sock);
}

Both examples show basic server setup, but libvncserver's API is more C-style and focused on screen buffer management, while tigervnc uses a more object-oriented C++ approach with separate server and listener objects.

11,402

VNC client web application

Pros of noVNC

  • Browser-based: Runs in any modern web browser without additional software
  • Cross-platform compatibility: Works on various devices and operating systems
  • Easy deployment: Can be integrated into web applications seamlessly

Cons of noVNC

  • Performance: May have higher latency compared to native VNC clients
  • Feature limitations: Some advanced VNC features might not be available
  • Browser dependencies: Relies on browser technologies and may be affected by updates

Code Comparison

TigerVNC (C++):

rfb::VNCServerST::VNCServerST(const char* name, rfb::SDesktop* desktop)
  : desktop(desktop), name(name), clients(&updateScheduler),
    pointerClient(0), comparer(0), encoder(0), server(0),
    queryConnectionHandler(0), keyRemapper(0)
{
  slog.debug("creating single-threaded VNC server");
}

noVNC (JavaScript):

class RFB extends EventTargetMixin {
    constructor(target, url, options) {
        super();
        this._target = target;
        this._url = url;
        this._options = options || {};
        this._rfbInitPromise = null;
    }
}

Both projects implement VNC functionality, but TigerVNC is a native application written in C++, while noVNC is a JavaScript-based solution for web browsers. The code snippets show the initialization of core classes in each project, highlighting their different approaches and languages.

VNC server app for Android that does not require root privileges.

Pros of droidVNC-NG

  • Specifically designed for Android devices, offering better mobile compatibility
  • Lightweight and optimized for mobile performance
  • Includes touch input support for Android devices

Cons of droidVNC-NG

  • Limited platform support compared to TigerVNC's multi-platform approach
  • Smaller community and potentially less frequent updates
  • May lack some advanced features found in TigerVNC

Code Comparison

TigerVNC (C++):

void VNCServerST::processClientMessage(rfb::ClientPtr client)
{
  // Process client messages
}

droidVNC-NG (Java):

public void processClientMessage(RfbClient client) {
    // Process client messages for Android
}

Both projects implement VNC server functionality, but droidVNC-NG focuses on Android-specific optimizations and touch input support. TigerVNC offers a more comprehensive multi-platform solution with potentially more advanced features. The code structures reflect their respective language choices and target platforms.

droidVNC-NG is ideal for users primarily interested in Android VNC solutions, while TigerVNC is better suited for those requiring cross-platform compatibility and a more established codebase.

10,779

FreeRDP is a free remote desktop protocol library and clients

Pros of FreeRDP

  • Supports the Remote Desktop Protocol (RDP), which is widely used in Windows environments
  • Offers better performance and lower latency for Windows remote desktop connections
  • Provides a more comprehensive set of features for remote desktop management

Cons of FreeRDP

  • Limited support for non-Windows platforms compared to TigerVNC
  • May require more configuration and setup for optimal performance
  • Less suitable for simple, cross-platform remote desktop needs

Code Comparison

TigerVNC (C++):

rfb::VNCServerST::VNCServerST(const char* name, rfb::SDesktop* desktop)
  : desktop(desktop), name(name), pointerClient(0),
    comparer(0), encoder(0), server(0), pb(0), clientManager(0)
{
  slog.debug("creating VNCServerST");
}

FreeRDP (C):

BOOL freerdp_connect(freerdp* instance)
{
    BOOL status;
    rdpRdp* rdp;
    if (!instance)
        return FALSE;
    rdp = instance->context->rdp;
    status = rdp_client_connect(rdp);
    return status;
}

Both projects use low-level programming languages for performance, but FreeRDP's code is more focused on the RDP protocol, while TigerVNC deals with VNC-specific concepts.

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 TigerVNC

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

TigerVNC is a high-speed version of VNC based on the RealVNC 4 and X.org code bases. TigerVNC started as a next-generation development effort for TightVNC on Unix and Linux platforms, but it split from its parent project in early 2009 so that TightVNC could focus on Windows platforms. TigerVNC supports a variant of Tight encoding that is greatly accelerated by the use of the libjpeg-turbo JPEG codec.

Legal

Incomplete and generally out of date copyright list::

    Copyright (C) 1999 AT&T Laboratories Cambridge
    Copyright (C) 2002-2005 RealVNC Ltd.
    Copyright (C) 2000-2006 TightVNC Group
    Copyright (C) 2005-2006 Martin Koegler
    Copyright (C) 2005-2006 Sun Microsystems, Inc.
    Copyright (C) 2006 OCCAM Financial Technology
    Copyright (C) 2000-2008 Constantin Kaplinsky
    Copyright (C) 2004-2017 Peter Astrand for Cendio AB
    Copyright (C) 2010 Antoine Martin
    Copyright (C) 2010 m-privacy GmbH
    Copyright (C) 2009-2011 D. R. Commander
    Copyright (C) 2009-2011 Pierre Ossman for Cendio AB
    Copyright (C) 2004, 2009-2011 Red Hat, Inc.
    Copyright (C) 2009-2024 TigerVNC Team
    All Rights Reserved.

This software is distributed under the GNU General Public Licence as published by the Free Software Foundation. See the file LICENCE.TXT for the conditions under which this software is made available. TigerVNC also contains code from other sources. See the Acknowledgements section below, and the individual source files, for details of the conditions under which they are made available.

All Platforms

All versions of TigerVNC contain the following programs:

  • vncviewer - the cross-platform TigerVNC Viewer, written using FLTK. vncviewer connects to a VNC server and allows you to interact with the remote desktop being displayed by the VNC server. The VNC server can be running on a Windows or a Unix/Linux machine.

Windows-Specific

The Windows version of TigerVNC contains the following programs:

  • winvnc - the TigerVNC Server for Windows. winvnc allows a Windows desktop to be accessed remotely using a VNC viewer.

WARNING: winvnc is currently unmaintained and and may not function correctly.

winvnc may not work if the Fast User Switching or Remote Desktop features are in use.

Unix/Linux-Specific (not Mac)

The Unix/Linux version of TigerVNC contains the following programs:

  • Xvnc - the TigerVNC Server for Unix. Xvnc is both a VNC server and an X server with a "virtual" framebuffer. You should normally use the vncserver service to start Xvnc.

  • vncpasswd - a program which allows you to change the VNC password used to access your VNC server sessions (assuming that VNC authentication is being used.) This command must be run to set a password before using VNC authentication with any of the servers or services.

  • vncconfig - a program which is used to configure and control a running instance of Xvnc.

  • x0vncserver - an inefficient VNC server which continuously polls any X display, allowing it to be controlled via VNC. It is intended mainly as a demonstration of a simple VNC server.

It also contains the following systemd service:

  • vncserver@.service - a service to start a user session with Xvnc and one of the desktop environments available on the system.

ACKNOWLEDGEMENTS

This distribution contains public domain DES software by Richard Outerbridge. This is:

Copyright (c) 1988,1989,1990,1991,1992 by Richard Outerbridge.
(GEnie : OUTER; CIS : [71755,204]) Graven Imagery, 1992.

This distribution contains software from the X Window System. This is:

Copyright 1987, 1988, 1998 The Open Group

Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation.

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group.

Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.

                     All Rights Reserved

Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Digital not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission.

DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.