Xtigervnc(1)
bestie, this is the Xtigervnc(1) page from Virtual Network Computing π Let's get into it β¨
π NAME π
Xtigervnc β the X VNC server π¦
πΈ SYNOPSIS πΈ
Xtigervnc [options] :display#
β¨ DESCRIPTION β¨
okay so Xtigervnc is the X VNC (Virtual Network Computing) server π«Ά It's built on a standard X server, but instead of a physical screen it gets a "virtual" one. X apps show up on it like it's a totally normal X display, but the only way you can actually see them is through a VNC viewer. See xtigervncviewer(1) π
so honestly, Xtigervnc is giving two servers in one π To the apps, it's an X server. To remote VNC users, it's a VNC server. The vibe by convention is that the VNC server display number matches the X server display number, so you can say snoopy:2 to mean display 2 on the machine "snoopy" in both the X world and the VNC world. iconic, right? π§
the best way to start Xtigervnc is through tigervncsession. It sets up the environment properly and starts a desktop environment for you π check the manual page for tigervncsession(8) for more deets β¨
π¦ OPTIONS π¦
okay this part is a lot π Xtigervnc takes LOTS of options. run Xtigervnc -help to get the full list π Lots of them are standard X server options, which you can read about in the Xserver(1) manual page π Some options can only be set on the command line, but there are also "parameters" that you can set both on the command line and through the tigervncconfig(1) program. main character energy π
-depth depthβ this sets the pixel depth in bits for the desktop being created π The default is24, and the other valid choices are16and32. Anything else is a vibe-killer π It will likely cause strange behaviour in applications and might stop the server from starting at all π-geometry widthxheightβ sets the size of the desktop being created β¨ The default is1024x768π-helpβ lists all the options and parameters π«Ά-inetdβ this one changesXtigervnc's whole behaviour so it can be launched from inetd π₯ Check the section below on usage with inetd for the details π§-pixelformat formatβ sets the pixel format for the server to use. Valid formats areBGRnnnorRGBnnnπΈ The default for depth16isRGB565, and for depth24and32it'sRGB888π-rendernode pathβ the DRM render node used for DRI3 GPU acceleration π¦ Pass an empty path to turn DRI3 off. The default isauto, which letsXtigervncpick a suitable available render node for itself π
β¨ PARAMETERS β¨
okay bestie, VNC parameters can be set three ways: the command line, the tigervncconfig(1) program, or Options entries in the xorg.conf file if you're running a VNC-enabled Xorg server π»β¨
To turn a parameter on, use -param. To turn it off, use -param=0 π«Ά. Parameters that take a value can be written as -param value. You can also use param=value, -param=value, or --param=value πΈ. Parameter names are case-insensitive, so no need to stress about capital letters π
-AcceptCutTextβ Accepts clipboard updates from clients π. Default is on.-AcceptKeyEventsβ Accepts key press and release events from clients β¨οΈ. Default is on.-AcceptPointerEventsβ Accepts pointer movement and button events from clients π±οΈ. Default is on.-AcceptSetDesktopSizeβ Accepts requests to resize the desktop π₯οΈ. Default is on.-AllowOverrideβ A comma separated list of parameters that can be changed through the VNC extension. For example, you can change them with the tigervncconfig(1) program from inside a running session π§.-AlwaysSharedβ Always treats incoming connections as shared, no matter what the client asks for π€. Default is off.-AvoidShiftNumLockβ Keys affected by NumLock often need a fake Shift to produce the right symbol. Turning this on skips those extra fake Shift events, but the symbol might come out a little different (for example, a Return instead of a keypad Enter) π.-BlacklistThreshold countβ How many unauthenticated connection attempts a single host gets before it's black-listed π«. Default is5.-BlacklistTimeout secondsβ The initial timeout applied the first time a host gets black-listed β³. That host can't try to connect again until the timeout runs out. Default is10.-CompareFB modeβ Compares pixels in the framebuffer so we don't send updates that aren't needed π§ . The mode can be0(off),1(always), or2(auto). Default is2.-desktop desktop-nameβ Every desktop has a name the viewer can show π·οΈ. It defaults to"<user>@<hostname>".-DisconnectClientsβ Kicks out existing clients when an incoming connection is non-shared π. Default is on. IfDisconnectClientsis false, a new non-shared connection gets refused while a client is already active. Pair it withNeverSharedand only one client is allowed at a time π.-FrameRate fpsβ The maximum number of updates per second sent to each client ποΈ. If the screen changes faster than that, the changes get bundled up and sent together in one update. This only sets the maximum, so a client might get a lower rate when resources are tight. Default is60.-GnuTLSPriority priorityβ A GnuTLS priority string that controls the handshake algorithms for the TLS session π. Check the GnuTLS manual for possible values. For GnuTLS versions below3.6.3, the default isNORMAL, which is the upstream default. For newer versions, the system-wide crypto policy is used.-IdleTimeout secondsβ How many seconds an idle VNC connection can sit around before it gets dropped π€. Default is0, which means idle connections are never dropped.-ImprovedHextileβ Uses a better compression algorithm for Hextile encoding ποΈ. You get better compression ratios, but it costs a bit more CPU time. Default is on.-interface IP addressβ Listens on a specific interface π‘. By default, Xtigervnc listens on all available interfaces.-localhostβ Only allows connections from the same machine π . This is super useful if you use SSH and want to block non-SSH connections from every other host.-Log logname:dest:level[, ...]β Configures the debug log settings πͺ΅.destcan currently bestderr,stdout, orsyslog.levelis between0and100, where100is the most verbose.lognameis usually*, which means all of them, but you can target one specific source file if you know its "LogWriter" name. Default is*:stderr:30.-MaxConnectionTime secondsβ Terminates the server once a client has been connected for N seconds β°. Default is0.-MaxCutText bytesβ The biggest clipboard update that will be accepted from a client π¦. Default is262144.-MaxDisconnectionTime secondsβ Terminates the server when no client has been connected for N seconds π«₯. Default is0.-MaxIdleTime secondsβ Terminates after N seconds of user inactivity π΄. Default is0.-NeverSharedβ Never treats incoming connections as shared, no matter what the client-specified setting says π·. Default is off.-pam_service name,-PAMService nameβ The PAM service name used to authenticate users with any of the "Plain" security types π. Default isvnc.-Password passwordβ The obfuscated binary encoding of the password that clients need to get in π. Using this parameter is insecure, so use thePasswordFileparameter instead.-PasswordFile passwd-file,-rfbauth passwd-fileβ The password file for VNC authentication π. There's no default, so you should specify the password file explicitly. It should be created with the tigervncpasswd(1) utility. The file gets read every time a connection comes in, so you can change it on the fly β¨.-PlainUsers user-listβ A comma separated list of user names allowed to authenticate with any of the "Plain" security types (Plain, TLSPlain, and so on) π§βπ€βπ§. Specify*to let any user in. Specify%uto let in the user running the server process. Default is to deny all users π«.-Protocol3.3β Always uses protocol version3.3for backwards compatibility with badly-behaved clients π. Default is off.-QueryConnectβ Asks the desktop user to explicitly accept or reject incoming connections π. Default is off.
The tigervncconfig(1) program has to be running on the desktop for QueryConnect to work.
-QueryConnectTimeout secondsβ How many seconds the Accept connection dialog stays up before the connection gets rejected β. Default is10.-RawKeyboardβ Sends keyboard events straight through without mapping them to the current keyboard layout β¨οΈ. This basically makes the keyboard act according to the layout configured on the server, not the one on the client. Default is off.-RemapKeys mappingβ Sets up a keyboard mapping πΊοΈ.mappingis a comma-separated string of character mappings, each one written aschar->charorchar<>char, wherecharis a hexadecimal keysym. For example, to swap the"and@symbols, you would specify this:
RemapKeys=0x22<>0x40
-RequireUsernameβ Requires a username for the RSA-AES security types πͺͺ. Default is off.-rfbport portβ The TCP port Xtigervnc listens on for connections from viewers π. The protocol used in VNC is called RFB, which stands for "remote framebuffer." The default is5900plus the display number. Specify-1to stop listening on a TCP port.-rfbunixmode modeβ The mode of the Unix domain socket π§¦. Default is0600.-rfbunixpath pathβ The path of a Unix domain socket that Xtigervnc listens on for connections from viewers π€οΈ.-RSAKey pathβ The path to the RSA key for the RSA-AES security types (RA2,RA2ne,RA2_256, andRA2ne_256), in PEM format ποΈ.-SecurityTypes sec-typesβ Picks which security scheme to use for incoming connections π‘οΈ. Valid values are a comma separated list ofNone,VncAuth,Plain,TLSNone,TLSVnc,TLSPlain,X509None,X509Vnc,X509Plain,RA2,RA2ne,RA2_256, andRA2ne_256. Default isTLSVnc,VncAuth.-SendCutTextβ Sends clipboard changes to clients π€. Default is on.-SendPrimaryβ Sends the primary selection and cut buffer to the server as well as the clipboard selection π. Default is on.-SetPrimaryβ Sets the primary selection as well as the clipboard selection π . Default is on.-UseBlacklistβ Temporarily rejects connections from a host that keeps failing to authenticate π ββοΈ. Default is on.-UseIPv4β Uses IPv4 for incoming and outgoing connections π. Default is on.-UseIPv6β Uses IPv6 for incoming and outgoing connections π. Default is on.-X509Cert pathβ The path to an X509 certificate in PEM format, used for all X509-based security types (X509None,X509Vnc, and so on) π.-X509Key pathβ The private key that goes with the certificate fromX509Certπ. It also has to be in PEM format.
Heads up, bestie π¨ Letting people override parameters likePAMServiceorPasswordFilecan seriously hurt security if Xtigervnc runs under a different user than the programs that are allowed to override those parameters π.
If theNoClipboardparameter is set, letting people overrideSendCutTextandAcceptCutTextdoes absolutely nothing π.
Default is desktop,AcceptPointerEvents,SendCutText,AcceptCutText,SendPrimary,SetPrimary π.
β¨ USAGE WITH INETD β¨
okay so bestie, the cute trick here is that you can set up inetd(1) so Xtigervnc gets summoned on demand the second a connection comes in π§. No manual starting, no chores. When you pass -inetd, Xtigervnc stops listening on a TCP port and uses its standard input and standard output instead π. There are two modes, and which one you get is controlled by the wait/nowait entry in the inetd.conf file π.
π nowait mode
In nowait mode, Xtigervnc uses its standard input and output directly as the connection to a viewer π
. It never has a listening socket, so it can't accept more connections from viewers. (It can connect out to listening viewers, though, using the tigervncconfig program π¦.) Every new viewer connection to the same TCP port makes inetd spawn a brand new Xtigervnc to handle it πΈ. When the viewer connection dies, the Xtigervnc and any associated X clients die too π. This is most useful when you combine it with the XDMCP options -query and -once π.
A typical inetd.conf entry looks like this (it's all one line, babe):
5950 stream tcp nowait nobody /usr/local/bin/Xtigervnc Xtigervnc -inetd -query localhost -once securitytypes=none
In this example, a viewer connecting to :50 gets its own Xtigervnc, which shows the standard XDM login screen on that machine β¨. It's usually fine to accept connections without a VNC password here, since the user still has to log in through XDM π.
π§ wait mode
In wait mode, when the first connection comes in, inetd hands the listening socket over to Xtigervnc π¦. So for any given TCP port, there's only ever one Xtigervnc at a time π. Extra viewer connections to that same port get accepted by that same Xtigervnc in the normal way π
. Even when the original connection breaks, the Xtigervnc keeps running π. If you use this with -query and -once, the Xtigervnc and its associated X clients die when the user logs out of the X session the normal way π.
β οΈ It is important to use a VNC password in this case, bestie! π
A typical entry in inetd.conf might be:
5951 stream tcp wait james /usr/local/bin/Xtigervnc Xtigervnc -inetd -query localhost -once passwordFile=/home/james/.config/tigervnc/passwd
Honestly, you'd usually have one entry per user who uses VNC regularly, and each of them gets their own dedicated TCP port π«Ά. In this example, user "james" connects to :51, enters his VNC password, then gets the XDM login screen where he logs in the normal way π. Unlike the last example, though, if he disconnects, the session stays persistent, and when he reconnects he gets the same session back π. When he logs out of the X session, the Xtigervnc dies, but a new one gets created automatically the next time he connects π.
πΈ SEE ALSO πΈ
tigervncconfig(1), tigervncpasswd(1), xtigervncviewer(1), tigervncsession(8), Xserver(1), inetd(1)
π AUTHOR π
Tristan Richardson, RealVNC Ltd. and others π
VNC was originally developed by the RealVNC team while at Olivetti Research Ltd / AT&T Laboratories Cambridge π¦. TightVNC additions were implemented by Constantin Kaplinsky π. Many other people have since participated in development, testing and support π«Ά. This manual is part of the TigerVNC software suite πΈ.
That's the whole page, bestie! π₯Ήβ¨ Thanks for sticking with me through all three parts π. This one's from the TigerVNC suite, and it's the Xtigervnc(1) page π§π
π¦ where this page comes from
- debian trixie: tigervnc-standalone-server 1.15.0+dfsg-2.1~deb13u1 Β· GPL-2.0-or-later
- ubuntu questing: tigervnc-standalone-server 1.15.0+dfsg-2
- ubuntu resolute: tigervnc-standalone-server 1.15.0+dfsg-2build1 Β· GPL-2.0-or-later
- ubuntu stonking: tigervnc-standalone-server 1.15.0+dfsg-2.1 Β· GPL-2.0-or-later
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms