Tigervnc-1.16.2

#### Beyond Linux® From Scratch (System V Edition) - Version r13.0-1374

### Chapter 41. Other X-based Programs

- Prev

  Thunderbird-153.1.1esr

- Next

  Transmission-4.1.3

- Up
- Home

# Tigervnc-1.16.2

## Introduction to Tigervnc

Tigervnc is an advanced VNC (Virtual Network Computing) implementation. It allows creation of an Xorg server not tied to a physical console and also provides a client for viewing of the remote graphical desktop.

### Note

This version of BLFS may not build or run some packages properly if LFS or dependencies have been updated since the most recent stable version of the System V books.

### Package Information

- Download (HTTP): https://github.com/TigerVNC/tigervnc/archive/v1.16.2/tigervnc-1.16.2.tar.gz

- Download MD5 sum: 61c6b4af2bc925c7ef4110b8a52d3d2f

- Download size: 2.1 MB

- Estimated disk space required: 154 MB

- Estimated build time: 0.6 SBU (Using parallelism=4)

### Additional Downloads

- Required file: https://www.x.org/pub/individual/xserver/xorg-server-21.1.24.tar.xz

### Note

The version of Xorg may eventually be a few versions out of date, but is required for the customizations needed for this package.

- Required patch: https://www.linuxfromscratch.org/patches/blfs/svn/tigervnc-1.16.2-configuration_fixes-1.patch

- Optional file to start the server without a display manager: https://anduin.linuxfromscratch.org/BLFS/tigervnc/vncserver

- Optional manual page: https://anduin.linuxfromscratch.org/BLFS/tigervnc/vncserver.1

### Tigervnc Dependencies

#### Required

CMake-4.4.2, FLTK-1.3.11, GnuTLS-3.8.13, libgcrypt-1.12.2, libjpeg-turbo-3.2.0, Linux-PAM-1.7.2, Pixman-0.46.4, Xorg Applications, xinit-1.4.4, and Xorg Legacy Fonts

#### Recommended

ImageMagick-7.1.2-13

#### Optional

FFmpeg-9.0.1

## Installation of Tigervnc

First, make adjustments to the configuration files to make them compatible with LFS systems:

    patch -Np1 -i ../tigervnc-1.16.2-configuration_fixes-1.patch

Next, adapt to nettle-4 and higher:

    grep -rl _digest | xargs sed -Ei '/digest/s/([^,]*),.*,(.*)/\1,\2/' &&
    grep -rl _DIGEST | xargs sed -i '/DIGEST/s/, 16//'

Install tigervnc by running the following commands:

    # Put code in place
    mkdir -p unix/xserver &&
    tar -xf ../xorg-server-21.1.24.tar.xz \
        --strip-components=1              \
        -C unix/xserver                   &&

    pushd unix/xserver                             &&
      patch -Np1 -i ../xserver21.patch             &&
    popd                                           &&

    # Build viewer
    cmake -G "Unix Makefiles"          \
          -D CMAKE_INSTALL_PREFIX=/usr \
          -D CMAKE_BUILD_TYPE=Release  \
          -D INSTALL_SYSTEMD_UNITS=OFF \
          -W no-author .               &&
    make                               &&

    # Build server
    pushd unix/xserver &&
      autoreconf -fiv  &&

      CPPFLAGS="-I/usr/include/drm" \
      ./configure $XORG_CONFIG      \
          --disable-xorg        --disable-xnest      --disable-xvfb        \
          --disable-xwin        --disable-xephyr     --disable-kdrive      \
          --disable-devel-docs  --disable-config-hal --disable-config-udev \
          --disable-unit-tests  --disable-selective-werror                 \
          --disable-static      --enable-dri3        --disable-dri         \
          --without-dtrace      --enable-dri2        --enable-glx          \
          --with-pic &&
      make           &&
    popd

This package does not come with a test suite.

Now, as the `root` user:

    # Install viewer
    make install &&
    mv  /usr/share/doc/tigervnc /usr/share/doc/tigervnc-1.16.2

    # Install server
    ( cd unix/xserver/hw/vnc && make install )                     &&
    cp  unix/vncserver/vncserver@.service /usr/lib/systemd/system/ &&
    install -m755 unix/vncserver/vncsession-start /usr/libexec/    &&

    [ -e /usr/bin/Xvnc ] || ln -svf $XORG_PREFIX/bin/Xvnc /usr/bin/Xvnc

Finally, modify the PAM file to be compatible with elogind:

    sed -i 's/pam_systemd.so/pam_elogind.so/' /etc/pam.d/tigervnc

## Command Explanations

tar -xf .. xorg-server...: This command extracts the standard Xorg package into the tree in a location needed for modification.

`--disable ...`: Most options that are usually needed for the standard Xorg server are not needed for the Xvnc instance being built.

[ -e /usr/bin/Xvnc ] || ln ... Xvnc: If the Xvnc server is not installed in the `/usr/bin` directory, then create a link so the vncserver script can find it.

## Configuring Tigervnc

The default installation of this package makes some changes in the way it is used. The vncserver perl script is placed in /usr/bin/libexec and the server is designed to be run via a systemd style .service file or the vncsession script as the root user. The man page for vncserver is placed in section 8 of the man pages. The new procedures require a display manager to be installed.

To restore the previous behavior, install the additional downloaded files as the `root` user:

    install -m755 --owner=root ../vncserver /usr/bin &&
    cp ../vncserver.1 /usr/share/man/man1

Using the previous procedures, the user specific configuration files of vncserver reside in the `.vnc` directory in the user's home directory. The `xstartup` file in that directory is a script specifying what commands to run when a VNC desktop is started. If no `xstartup` file exists, vncserver will try to start an xterm in a twm session. An example `xstartup` would be:

    #!/bin/sh
    [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
    [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
    startlxqt &

The `xstartup` file must be executable for the commands in it to be executed, so run chmod a+x ~/.vnc/xstartup.

Set up the vnc passwd with vncpasswd. The server can then be started with the vncserver command. See the man pages in section 1 for the vncserver for the server system and vncviewer for the remote system.

## Command Explanations

`-D ENABLE_H264=ON`: Append this switch to the cmake command to enable the H264 decoding support for the viewer. It requires FFmpeg-9.0.1. Note that even with this, the Xvnc server from this package still does not support H264 encoding.

## Contents

Installed Programs: Xvnc, vncconfig, vncpasswd, vncserver, vncviewer, and x0vncserver
Installed Libraries: libvnc.so
Installed Directories: /usr/share/doc/tigervnc-1.16.2

### Short Descriptions

Xvnc | is a X VNC (Virtual Network Computing) server. It is based on a standard X server, but it has a “virtual” screen rather than a physical one
vncconfig | is a program to configure and control a VNC server
vncpasswd | allows you to set the password used to access VNC desktops
vncserver | is a perl script used to start or stop a VNC server
vncviewer | is a client used to connect to VNC desktops
x0vncserver | is a program to make an X display on a physical terminal accessible via TigerVNC or compatible viewers

- Prev

  Thunderbird-153.1.1esr

- Next

  Transmission-4.1.3

- Up
- Home