\documentclass[english,smaller,t]{beamer}
\usepackage[T1]{fontenc}  
\usepackage[utf8]{inputenc}
\usepackage[right]{eurosym}
\usepackage{lmodern}

\newcommand{\noun}[1]{\textsc{#1}}

\usepackage[english]{babel}
\usepackage[babel]{csquotes}
\MakeAutoQuote{»}{«}

\pdfimageresolution150
\def\EUR{\,\euro}

%\usepackage{beamerthemesplit}
%\usetheme{Warsaw}
%\usetheme{Berkeley}
%\usetheme{Marburg}
%\usetheme{Goettingen}
%\usetheme{AnnArbor}
\usetheme{PaloAlto}
%\usecolortheme{beaver}
%\usecolortheme{dolphin}
\usecolortheme{wolverine}
\beamertemplatenumberedsquaresectiontoc
\beamertemplatetransparentcovered

\title[Impressive Display]{Impressive Display HowTo (v0.4.1)}
\institute[Debian Edu]{Debian Edu Dev Team}
\author[Debian Edu \\ Dev Team]{Mike Gabriel \\ Daniel Teichmann \\ and others}
\date{Dec 2016}

\begin{document}

\frame{\titlepage}
%\frame{\tableofcontents}

\section[About]{About Impressive Display}

\frame[label=about]
{
  \frametitle{About Impressive Display}
  \framesubtitle{What can I use Impressive Display for?}

  \begin{beamerboxesrounded}[shadow=true]{Setup PDF presentation Screens at School, University \& your Office}

    \parbox[t][2.4in][t]{3.5in}{
    \begin{itemize}
    \item<alert@+| uncover@+->An \textbf{Impressive Display} can \textbf{show information} provided as PDF, images or videos \textbf{to people passing by}
    \item<alert@+| uncover@+->At schools for example, it can be used to display \textbf{substitute teacher schedules} to students and teachers
    \item<alert@+| uncover@+->At theaters or other venues, you can provide \textbf{information screens} about what's going on at your location
    \item<alert@+| uncover@+->Use it to \textbf{present slide shows, photo collections, etc.} at a Linux Day presentation booth
    \item<alert@+| uncover@+->Impressive Display has been \textbf{designed for automatic display} of PDF based information
    \end{itemize}
    }
  \end{beamerboxesrounded}
}

\frame[label=extend]
{
  \frametitle{About Impressive Display}
  \framesubtitle{How can I extend Impressive Display?}

  \begin{beamerboxesrounded}[shadow=true]{Combine Impressive Display with other FLOSS Components}

    \parbox[t][2.4in][t]{3.5in}{
    \begin{itemize}
    \item<alert@+| uncover@+->Combine Impressive Display \textbf{with a display manager} (such as NoDM or LightDM) \textbf{that allows passwordless user login}
    \item<alert@+| uncover@+->Combine it with a \textbf{PXE booted diskless system} such as LTSP for \textbf{deploying a farm of info displays} at your location
    \item<alert@+| uncover@+->Combine with Xephyr (a \textbf{nested Xserver}) \textbf{while testing / preparing your setup}
    \end{itemize}
    }
  \end{beamerboxesrounded}
}

\frame[label=howitworks]
{
  \frametitle{About Impressive Display}
  \framesubtitle{How does it work?}

  \begin{beamerboxesrounded}[shadow=true]{Impressive Display runs as an X11 session manager}

    \parbox[t][2.4in][t]{3.5in}{
    \begin{itemize}
    \item<alert@+| uncover@+->\textbf{Impressive Display} registers itself as an available \textbf{X session manager}. Make it the default (or the only session manager installed)
    \item<alert@+| uncover@+->Feed it with a presentation-like PDF file or a list of image and video files. The \textbf{PDF} can be obtained \textbf{from} the \textbf{local file system or} from a \textbf{webserver}
    \item<alert@+| uncover@+->Serve a \textbf{dynamic or static list of such files} from any web-based backend
    \item<alert@+| uncover@+->Impressive Display supports \textbf{host-specific configuration parameters}; you can run \textbf{various displays} presenting different PDF content \textbf{based on the same configuration} set
    \end{itemize}
    }
  \end{beamerboxesrounded}
}


\section[Installation]{Installation}

\frame[label=debinstall]
{
  \frametitle{Installation\,\ldots}
  \framesubtitle{\ldots\,on a standalone Debian-like system.}

  \begin{beamerboxesrounded}[shadow=true]{Installation: Debian GNU/Linux (and alike)}

    \parbox[t][2.4in][t]{3.5in}{
    \begin{itemize}
    \item<alert@+| uncover@+->\textbf{Install a minimal} Debian (or derivative) \textbf{system without X11} / Graphical Login Manager
    \item<alert@+| uncover@+->Install Impressive Display and NoDM: \\ \small \texttt{apt-get install impressive-display nodm}
    \item<alert@+| uncover@+->\textbf{Edit \texttt{/etc/default/nodm}}, set \texttt{NODM\_ENABLED=true} and \texttt{NODM\_USER=impressive-display}. Create this user as a system user.
    \item<alert@+| uncover@+->\textbf{Check that \texttt{impressive-display} is the default X session manager}: \\ \small \texttt{update-alternatives \hbox{-}\hbox{-}config x-session-manager}
    \item<alert@+| uncover@+->\textbf{Start NoDM}: \small \texttt{sudo invoke-rc.d nodm start}
    \end{itemize}
    }
  \end{beamerboxesrounded}
}

\frame[label=rpminstall]
{
  \frametitle{Installation\,\ldots}
  \framesubtitle{\ldots\,on a standalone RPM-based system.}

  \begin{beamerboxesrounded}[shadow=true]{Installation on Fedora, openSUSE or similar}

    \parbox[t][2.4in][t]{3.5in}{
    \begin{itemize}
    \item<alert@+| uncover@+->The \textbf{Impressive Display} tool \textbf{has not been packaged for the RPM world}
    \item<alert@+| uncover@+->\textbf{Please} contact distribution maintainers and \textbf{request packaging}
    \end{itemize}
    }
  \end{beamerboxesrounded}
}

\frame[label=ltspchroot]
{
  \frametitle{Installation\,\ldots}
  \framesubtitle{\ldots\,in an LTSP chroot.}

  \begin{beamerboxesrounded}[shadow=true]{Install LTSP based info screen farm running Impressive Display}

    \parbox[t][2.4in][t]{3.5in}{
    \begin{itemize}
    \item<alert@+| uncover@+->Create a \textbf{minimal LTSP chroot}, uninstall or \textbf{disable the LTSP Display Manager} (aka LDM)
    \item<alert@+| uncover@+->\textbf{Make} the LTSP \textbf{chroot bootable over PXE}: the system should boot into a text-based logon screen
    \item<alert@+| uncover@+->All LTSP \textbf{client systems must have a dedicated hostnames} after PXE boot
    \item<alert@+| uncover@+->Apply \textbf{installation steps for standalone hosts to} the LTSP \textbf{chroot}
    \item<alert@+| uncover@+->\textbf{Set host-specific parameters} like PDF download URI, display resolution, etc. via the \texttt{\$\{DISPLAYS[@]\}} associative array, \textbf{for examples see:} \\ \small \texttt{/etc/default/impressive-display}
    \end{itemize}
    }
  \end{beamerboxesrounded}
}

\section[Configuration]{Configuration}

\frame[label=systemconfig]
{
  \frametitle{Configuration\,\ldots}
  \framesubtitle{\ldots system-wide}

  \begin{beamerboxesrounded}[shadow=true]{Configure Impressive Display -- system-wide}

    \parbox[t][2.4in][t]{3.5in}{
    \begin{itemize}
    \item<alert@+| uncover@+->The \textbf{system-wide configuration} of Impressive Display is done \textbf{in \texttt{/etc/default/impressive-display}}
    \item<alert@+| uncover@+->You can \textbf{adapt various parameters}:
    \begin{itemize}
    \item<alert@+| uncover@+->\textbf{Basic options}:Pulseaudio support, uncluttering of the pointer device, screensaver options, slide transition options, etc.
    \item<alert@+| uncover@+->\textbf{Default parameters}: PDF download URI, display resolution
    \item<alert@+| uncover@+->\textbf{Display specific}: PDF download URI, display resolution, based on the display system's hostname
    \item<alert@+| uncover@+->\textbf{Rush hours} (phases of frequent PDF content changes), \textbf{sleep hours} (phases of no PDF content updates)
    \end{itemize}
    \end{itemize}
    }
  \end{beamerboxesrounded}
}

\frame[label=userconfig]
{
  \frametitle{Configuration\,\ldots}
  \framesubtitle{\ldots on a per-user basis}

  \begin{beamerboxesrounded}[shadow=true]{Configure Impressive Display -- on a per-user basis}

    \parbox[t][2.4in][t]{3.5in}{
    \begin{itemize}
    \item<alert@+| uncover@+->The \textbf{per-user configuration} of Impressive Display is done \textbf{in \texttt{\$HOME/.impressive-display/config}}
    \item<alert@+| uncover@+->All \textbf{system-wide parameters can be overriden by the user}
    \item<alert@+| uncover@+->For URIs that require \textbf{authentication before PDF content retrieval}, put \textbf{credentials into}: \\ \small \texttt{\$HOME/.impressive-display/secrets/default.secrets}
    \item<alert@+| uncover@+->\textbf{Credentials} can also be \textbf{specified per info screen}: \\ \small \texttt{\$HOME/.impressive-display/secrets/<hostname>.secrets}
    \item<alert@+| uncover@+->The \textbf{\texttt{*.secrets} files use the \texttt{.netrc} file format} (see \texttt{man 5 netrc})
    \end{itemize}
    }
  \end{beamerboxesrounded}
}

\frame[label=listbackend]
{
  \frametitle{Configuration\,\ldots}
  \framesubtitle{\ldots of multiple URLs from a backend}

  \begin{beamerboxesrounded}[shadow=true]{Configure list of files -- from a web backend}

    \parbox[t][2.4in][t]{3.5in}{
    \begin{itemize}
    \item<alert@+| uncover@+->Use any server-side tool you like (PHP script, Flask app, etc.) to serve a list of URIs
    \item<alert@+| uncover@+->Serve it with a \texttt{.txt} extension ans as \texttt{text/plain}
    \item<alert@+| uncover@+->The list can contain an arbitrary number of URLs pointing to PDFs, images, videos, or further lists
    \item<alert@+| uncover@+->The AlekSIS® School Information System contains a backend with UI to manage content
    \end{itemize}
    }
  \end{beamerboxesrounded}
}
\section[Testing]{Testing your Setup}

\frame[label=testing]
{
  \frametitle{Testing Impressive Display\,\ldots}
  \framesubtitle{\ldots using a nested Xserver}

  \begin{beamerboxesrounded}[shadow=true]{Testing your Setup}

    \parbox[t][2.4in][t]{3.5in}{
    \begin{itemize}
    \item<alert@+| uncover@+->\textbf{Install Impressive Display} locally \textbf{on your PC or notebook}; you can launch Impressive Display under your normal user account
    \item<alert@+| uncover@+->\textbf{Use FAKE\_HOSTNAME variable to simulate a specifc display host} when testing infoscreen farm setups
    \item<alert@+| uncover@+->Do a \textbf{graphical login with your normal user} account; when logged in, open two Terminal windows
    \item<alert@+| uncover@+->Terminal 1: \textbf{Launch} a nested Xserver (like \textbf{Xephyr}): \\ \small \texttt{Xephyr -screen 1024x768 -ac :1}
    \item<alert@+| uncover@+->Terminal 2, also under your normal user account: \\ \small \texttt{export DISPLAY=:1 \\ FAKE\_HOSTNAME=<display-host> impressive-display}
    \end{itemize}
    }
  \end{beamerboxesrounded}
}

\section[Authors]{Authors and Contributors}

\frame[label=label]
{
  \frametitle{Authors, Contributors \& Sponsors}

  \begin{beamerboxesrounded}[shadow=true]{Authors \& Contributors}

    \parbox[t][2.4in][t]{3.5in}{
    \begin{itemize}
    \item<alert@+| uncover@+->Authors (and copyright holders): \\ \ \ \ \ Mike Gabriel <mike.gabriel@das-netzwerkteam.de> \\ \ \ \ \ Daniel Teichmann <daniel@teichm-sh.de> \\ \ \ \ \ Dominik George <dominik.george@teckids.org>
%    \item<alert@+| uncover@+->Other contributors: \\ none, so far\,\ldots
    \item<alert@+| uncover@+->Development sponsored by: \\ \ \ \ \ Katharineum zu Lübeck (Germany) \\ \ \ \ \ Fritz-Reuter-Schule Eckernförde (Germany) \\ \ \ \ \ Ernst-Barlach-Gymnasium Kiel (Germany) \\ \ \ \ \ Teckids e.V. (Germany)
    \item<alert@+| uncover@+->Upstream code: \\ \ \ \ \ \scriptsize \url{https://code.it-zukunft-schule.de/cgit/impressive-display/}
    \end{itemize}
    }
  \end{beamerboxesrounded}
}

\end{document}
