<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
   "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
  <!ENTITY % general-entities SYSTEM "../../general.ent">
  %general-entities;

  <!ENTITY tigervnc-download-http "http://anduin.linuxfromscratch.org/sources/BLFS/conglomeration/tigervnc/tigervnc-&tigervnc-version;.tar.gz">
  <!ENTITY tigervnc-download-ftp  " ">
  <!ENTITY tigervnc-md5sum        "93b935487d0ec33341f079bc402df6b1">
  <!ENTITY tigervnc-size          "1.3 MB">
  <!ENTITY tigervnc-buildsize     "155 MB">
  <!ENTITY tigervnc-time          "0.5 SBU (with parallelism=4)">
  <!ENTITY tigervnc-xorg-version  "1.16.2.901">
]>

<sect1 id="tigervnc" xreflabel="tigervnc-&tigervnc-version;">
  <?dbhtml filename="tigervnc.html"?>

  <sect1info>
    <othername>$LastChangedBy: bdubbs $</othername>
    <date>$Date: 2014-03-01 00:00:12 -0600 (Sat, 01 Mar 2014) $</date>
  </sect1info>

  <title>Tigervnc-&tigervnc-version;</title>

  <indexterm zone="tigervnc">
    <primary sortas="a-tigervnc">tigervnc</primary>
  </indexterm>

  <sect2 role="package">
    <title>Introduction to Tigervnc</title>

    <para><application>Tigervnc</application> 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.
    </para>

    &lfs77_checked;

    <bridgehead renderas="sect3">Package Information</bridgehead>
    <itemizedlist spacing="compact">
      <listitem>
        <para>Download (HTTP): <ulink url="&tigervnc-download-http;"/></para>
      </listitem>
      <listitem>
        <para>Download (FTP): <ulink url="&tigervnc-download-ftp;"/></para>
      </listitem>
      <listitem>
        <para>Download MD5 sum: &tigervnc-md5sum;</para>
      </listitem>
      <listitem>
        <para>Download size: &tigervnc-size;</para>
      </listitem>
      <listitem>
        <para>Estimated disk space required: &tigervnc-buildsize;</para>
      </listitem>
      <listitem>
        <para>Estimated build time: &tigervnc-time;</para>
      </listitem>
    </itemizedlist>

    <bridgehead renderas="sect3">Additional Downloads</bridgehead>
    <itemizedlist spacing="compact">
      <listitem>
        <para>
          Required file:
          <ulink url="http://xorg.freedesktop.org/archive/individual/xserver/xorg-server-&tigervnc-xorg-version;.tar.bz2"/>
        </para>
      </listitem>
      <listitem>
        <para>
          Required patch:
          <ulink url="&patch-root;/tigervnc-&tigervnc-version;-gethomedir-1.patch"/>
        </para>
      </listitem>
      <listitem>
        <para>
          Required patch:
          <ulink url="&patch-root;/tigervnc-&tigervnc-version;-getmaster-1.patch"/>
        </para>
      </listitem>
      <listitem>
        <para>
          Required patch:
          <ulink url="&patch-root;/tigervnc-&tigervnc-version;-xorg116-1.patch"/>
        </para>
      </listitem>
    </itemizedlist>

    <note><para>The version of <application>Xorg</application> is a few versions
    out of date, but is required for the customizations needed for this 
    package.</para></note>

    <bridgehead renderas="sect3">Tigervnc Dependencies</bridgehead>

    <bridgehead renderas="sect4">Required</bridgehead>
    <para role="required">
      <xref linkend="cmake"/>,
      <xref linkend="fltk"/>,
      <xref linkend="gnutls"/>,
      <xref linkend="libgcrypt"/>,
      <xref linkend="libjpeg"/>,
      <xref linkend="pixman"/>, and
      <xref linkend="xorg7-app"/>
    </para>

    <bridgehead renderas="sect4">Recommended</bridgehead>
    <para role="recommended">
      <xref linkend="imagemagick"/> and
      <xref linkend="linux-pam"/>
    </para>

    <para condition="html" role="usernotes">User Notes:
    <ulink url="&blfs-wiki;/tigervnc"/></para>

  </sect2>

  <sect2 role="installation">
    <title>Installation of Tigervnc</title>

    <para>Install <application>tigervnc</application> by running the following
    commands:</para>

<screen><userinput>tar -xf ../xorg-server-&tigervnc-xorg-version;.tar.bz2 -C unix/xserver --strip-components=1 &amp;&amp;

patch -Np1 -i ../tigervnc-&tigervnc-version;-gethomedir-1.patch &amp;&amp;
patch -Np1 -i ../tigervnc-&tigervnc-version;-getmaster-1.patch  &amp;&amp;

cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr &amp;&amp;
make &amp;&amp;

pushd unix/xserver                                      &amp;&amp;
  patch -Np1 -i ../../../tigervnc-&tigervnc-version;-xorg116-1.patch &amp;&amp;
  autoreconf -fi                                        &amp;&amp;

  ./configure $XORG_CONFIG \
      --disable-xwayland    --enable-dri3        --disable-dmx         \
      --disable-static      --disable-xinerama   --disable-dri         \
      --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                 \
      --without-dtrace      --enable-dri2        --enable-glx          \
      --enable-glx-tls      --with-pic  &amp;&amp;
  make    &amp;&amp;
popd</userinput></screen>

    <para>This package does not come with a test suite.</para>

    <para>Now, as the <systemitem class="username">root</systemitem> user:</para>

<screen role="root"><userinput>make install &amp;&amp;

cd unix/xserver/hw/vnc &amp;&amp;
make install           &amp;&amp;
sed -i 's/iconic/nowin/' /usr/bin/vncserver &amp;&amp;
[ -e /usr/bin/Xvnc ] || ln -svf $XORG_PREFIX/bin/Xvnc /usr/bin/Xvnc</userinput></screen>

    <para>Finally, create a menu entry.  As the 
      <systemitem class="username">root</systemitem> user:</para>

<screen role="root"><userinput>cat &gt; /usr/share/applications/vncviewer.desktop &lt;&lt; "EOF"
<literal>[Desktop Entry]
Type=Application
Name=TigerVNC Viewer
Comment=VNC client
Exec=/usr/bin/vncviewer
Icon=tigervnc
Terminal=false
StartupNotify=false
Categories=Network;RemoteAccess;</literal>
EOF</userinput></screen>

  </sect2>

  <sect2 role="commands">
    <title>Command Explanations</title>

    <para><command>tar .. xorg-server...</command>: This command extracts the
    standard Xorg packages into the tree in a location needed for modification.</para>

    <para><command>patch ...</command>: This set of patches modifies the standard
    Xorg server so that the Xvnc command can be built.</para>

    <para><option>--disable ...</option>: Most options that are usually needed for
    the standard Xorg server are not needed fror the Xvnc instance being built.</para>

    <para><command>[ -e /usr/bin/Xvnc ] || ln ... Xvnc</command>: If the Xvnc server
    is not installed in the <filename class='directory'>/usr/bin</filename> 
    directory, then create a link so the <command>vncserver</command> script 
    can find it.</para>

  </sect2>

  <sect2 role="configuration">
    <title>Configuring Tigervnc</title>

   <para>The user specific configuration files of vncserver resides 
   in the <filename class='directory'>.vnc</filename> directory in the user's 
   home directory.  The <filename>xstartup</filename> file in that
   directory is a script specifying what commands to be run 
   when a VNC desktop is started.  If no  <filename>xstartup</filename> file
   exists, <command>vncserver</command> will try to start an xterm in a twm
   session.  An example <filename>xstartup</filename> would be:</para>

<screen>#!/bin/sh
 
[ -x /etc/vnc/xstartup ] &amp;&amp; exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] &amp;&amp; xrdb $HOME/.Xresources
startlxde &amp;</screen>

  </sect2>

  <sect2 role="content">
    <title>Contents</title>

    <segmentedlist>
      <segtitle>Installed Programs</segtitle>
      <segtitle>Installed Libraries</segtitle>
      <segtitle>Installed Directories</segtitle>

      <seglistitem>
        <seg>Xvnc, 
             vncconfig,  
             vncpasswd,  
             vncserver,  
             vncviewer, and 
             x0vncserver</seg>
        
        <seg>libvnc.so</seg>
        <seg>None</seg>
      </seglistitem>
    </segmentedlist>

    <variablelist>
      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
      <?dbfo list-presentation="list"?>
      <?dbhtml list-presentation="table"?>

      <varlistentry id="xvnc">
        <term><command>Xvnc</command></term>
        <listitem>
          <para> 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.</para>
          <indexterm zone="tigervnc xvnc">
            <primary sortas="b-xvnc">Xvnc</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="vncconfig">
        <term><command>vncconfig</command></term>
        <listitem>
          <para>is a program to configure and control a VNC server.</para>
          <indexterm zone="tigervnc vncconfig">
            <primary sortas="b-vncconfig">vncconfig</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="vncserver">
        <term><command>vncserver</command></term>
        <listitem>
          <para>is a perl script used to start or stop a VNC server.</para>
          <indexterm zone="tigervnc vncserver">
            <primary sortas="b-vncserver">vncserver</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="vncviewer">
        <term><command>vncviewer</command></term>
        <listitem>
          <para>is a client used to access VNC desktops.</para>
          <indexterm zone="tigervnc vncviewer">
            <primary sortas="b-vncviewer">vncviewer</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="x0vncserver">
        <term><command>x0vncserver</command></term>
        <listitem>
          <para>is a program to make an X display onm a physical
          terminal accessible via TigerVNC or compatible viewers.</para>
          <indexterm zone="tigervnc x0vncserver">
            <primary sortas="b-x0vncserver">x0vncserver</primary>
          </indexterm>
        </listitem>
      </varlistentry>

    </variablelist>

  </sect2>

</sect1>
