This may seem like overkill, but I wanted two kiosks to be available on our
ltsp clients on different screens, one for a web browser kiosk, another for a
vmware view kiosk. The vmware view account is also required to be a member of
audio, pulse and pulse-access. We're using the VMWare Horizon View client
(VMware-Horizon-Client-3.5.0-2999900.x64.bundle) supporting PCOIP and USB
redirection - there may be some library dependencies to be installed and at
least one library soft link to create.
Add the following three (3) files to the LTSP server (they were copied from
/usr/share/ltsp/screen.d/kiosk and /usr/share/ltsp/kioskSession, respectively:
(1) /etc/ltsp/screen.d/vmware-view:
* All VIEW* environment variables can set in /var/lib/tftpboot/lts.conf.
* Added VIEW_MESSAGE for echoing a "Please wait"
* Add qoutes around the gecos data ,,, in the adduser line - it may work in the
script, but it doesn't always work from the command line.
* Add $VIEW_USER to the audio, pulse and pulse-access groups.
* Escaped quotation marks were added to pass VIEW_OPTIONS for su statement in
vmware-view (and the eval in vmware-view-Session) to work properly
#--- begin /etc/ltsp/screen.d/vmware-view
#!/bin/sh
#
# The following script works for LTSP5.
#
# This software is licensed under the Gnu General Public License.
# The full text of which can be found at http://www.LTSP.org/license.txt
#
#
# To customize the vmware-view session, you can add "homedir" files
# to $chroot/usr/local/share/ltspview/home/
# AND to add startup scripts that run as the user, you can add
# them as executables or symlinks to executables in:
# $chroot/usr/local/share/ltspview/startup
PATH=/bin:$PATH; export PATH
. /usr/share/ltsp/screen-x-common
[ -n "$1" ] && VIEW_EXE=$1
[ -n "$2" ] && VIEW_OPTIONS=$2
if [ -z "${VIEW_EXE}" ]; then
if [ -x "/usr/bin/vmware-view" ]; then
VIEW_EXE=/usr/bin/vmware-view
else
VIEW_EXE=unknown
fi
fi
if boolean_is_true "${VIEW_DAEMON:-"False"}"; then
export XINITRC_DAEMON="True"
fi
xinitrc=/usr/share/ltsp/xinitrc
echo ${VIEW_MESSAGE}
sleep 5
VIEW_USER=${VIEW_USER:-"ltspview"}
if [ -z "$(getent passwd ${VIEW_USER})" ]; then
# create a ltspview user
adduser --no-create-home --disabled-password --gecos ",,," ${VIEW_USER}
adduser ltspview audio
adduser ltspview pulse
adduser ltspview pulse-access
fi
# Create a tmpdir to be our homedir
TMPDIR=$(mktemp -d /tmp/.view-XXXXXX)
chown ${VIEW_USER} ${TMPDIR}
# Edit passwd homedir entry for programs that look it up from there
sed -i -e '\|'${VIEW_USER}'|s|[^:]*\(:[^:]*\)$|'$TMPDIR'\1|' /etc/passwd
su - ${VIEW_USER} -c "XINITRC_DAEMON=${XINITRC_DAEMON} VIEW_WM=${VIEW_WM}
VIEW_OPTIONS=\"${VIEW_OPTIONS}\" xinit $xinitrc /etc/ltsp/vmware-view-Session
${VIEW_EXE} -- ${DISPLAY} vt${TTY} -nolisten tcp ${X_ARGS} -br" >/dev/null
rm -rf ${TMPDIR}
#--- end /etc/ltsp/screen.d/vmware-view
(2) /etc/ltsp/vmware-view-Session:
#--- begin /etc/ltsp/vmware-view-Session
#!/bin/sh
VIEW_EXE=$1
VIEW_HOME=/usr/local/share/ltspview/home
VIEW_STARTUP=/usr/local/share/ltspview/startup
VIEW_USER=${VIEW_USER:-"ltspview"}
VIEW_WM=${VIEW_WM:-"/usr/bin/metacity"}
VIEW_USER_STARTUP="${HOME}/.view-startup"
mkdir -p ${VIEW_USER_STARTUP}
if [ -x "${VIEW_WM}" ]; then
ln -s ${VIEW_WM} ${VIEW_USER_STARTUP}/00-view-wm
fi
# Copy a default homedir if present
if [ -d "${VIEW_HOME}" ]; then
cp -r ${VIEW_HOME}/* ${VIEW_HOME}/.??* ${HOME}
fi
for file in ${VIEW_STARTUP}/* ; do
if [ -f "${file}" ]; then
ln -s "${file}" "${VIEW_USER_STARTUP}/$(basename ${file})"
fi
done
[ -n "${XAUTHORITY}" ] && cp -a ${XAUTHORITY} ${HOME}
for i in ${VIEW_USER_STARTUP}/* ; do
[ -x "${i}" ] && eval "${i}" &
done
if [ "${VIEW_EXE}" = "unknown" ]; then
ldm-dialog --message "No program found."
else
eval ${VIEW_EXE} ${VIEW_OPTIONS} || ldm-dialog --message "Could not start
program."
fi
[ "$USER" != "root" ] && pkill -u $USER
exit 0
#--- end /etc/ltsp/vmware-view-Session
(3) /etc/vmware/view-default-config:
#--- end
/etc/vmware/view-default-configview.defaultBroker="YOUR_HORIZON_VIEW_SERVER_FQDN"
view.sslVerificationMode="2"
view.defaultDesktopSize="2"
view.defaultProtocol="PCOIP"
view.defaultDomain="YOUR_DOMAIN"
viewusb.includeFamily="bluetooth;hid;other;physical;storage;unknown;vendor;wireless;wusb"
(You may want to reduce the usb device families included - these work for our
purposes, which includes Windows-based robotics programming)
Add these lines to the top of lts.conf:
SCREEN_05=vmware-view
VIEW_EXE=/usr/bin/vmware-view
VIEW_OPTIONS="--fullscreen --once --nomenubar -q"
VIEW_MESSAGE="\nPlease wait up to 30 seconds for the VMWare Horizon View clien
------------------------------------------------------------------------------
_____________________________________________________________________
Ltsp-discuss mailing list. To un-subscribe, or change prefs, goto:
https://lists.sourceforge.net/lists/listinfo/ltsp-discuss
For additional LTSP help, try #ltsp channel on irc.freenode.net