\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{dim. janv. 26 16:01:39 CET 2014}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={xdmx},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Serveur X Multi-head distribué},
CreationDate={D:20140126160139},
ModDate={D:20140126160139},
Keywords={X;X Window System}
}}
\begin{document}
 
\begin{center}
{\Huge xdmx }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Serveur X Multi-head distribué}
 
\vspace{10mm}
 
\hspace{1mm}  xdmx est un serveur proxy X qui utilise un ou plusieurs autres serveurs X comme périphérique d'affichage. Il fournis des fonctionnalités multi-head pour les affichages qui peuvent être localisés sur différentes machines. xdmx communique avec les serveurs X en utilisant le protocole X11 standard, et/ou les extensions communes disponibles.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge OPTIONS }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} -display display-name]{Nom du serveur X back-end auquel se connecter. Peut être spécifié plusieurs fois. Le premier est utilisé comme écran 0, le suivant l'écran 1, etc. Si omis, utilise \$DISPLAY}
\item[\hspace{1mm} -xinput input-source]{Spécifie la source à utiliser pour les extensions de périphériques xinput. Les choix sont les mêmes que pour input, excepté que les périphériques sur les serveurs back-end ne peuvent pas être traités comme tel.}
\item[\hspace{1mm} -input input-source]{Spécifie la source à utiliser pour le périphériques d'entrée core. les choix sont:}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{6mm} dummy]{Un jeu de pilotes d'entrée factice à utiliser. Ne génèrent jamais d'events d'entrée.}
\item[\hspace{6mm} local]{Utilise le clavier et pointeur local. une liste de pilotes peut être ajoutée (ex: -input local,kbd,ps2)}
\item[\hspace{6mm} display-name]{Si le nom d'affichage est un serveur back-end, les events d'entrées sont pris depuis le serveur spécifié. Sinon, une fenêtre console sera ouverte sur l'affichage spécifié.}
\item[\hspace{6mm} Si display-name des suivi par \textbf{",xi"} alors les pérphériques XInput sur l'affichage sont utilisés comme périphérique XInput Xdmx. Si display-name est suivi par \textbf{",noxi"} alors les périphériques XInput sur l'affichage ne seront par utilisés comme périphériques XInput Xdmx,]{}
\item[\hspace{6mm} Si display-name est suivi par \textbf{",console"} et que display-name réfère à un affichage qui est utilisé comme affichage backend, alors une fenêtre console sera ouverte sur cet affichage et sera traité comme affichage backend. Si display-name est suivi par \textbf{",noconsole"}, l'affichage sera traité purement comme backend ou affichage console.]{}
\item[\hspace{6mm} Si display-name est suivi par \textbf{",windows"}, alors les outlines dans les fenêtres dans le backend seront affichés dans la fenêtre console. Si display-name est suivi par \textbf{",nowindows"}, la fenêtre console n'affichera par les outlines des fenêtres backend.]{}
\item[\hspace{6mm} Si display-name est suivi par \textbf{",xkb"}, les 1 à 3 paramètres suivant vont spécifier les keycodes, symboles et géométrie du clavier pour ce périphérique d'entrée. Ex: ",xkb,xfree86,pc104" spécifie que les keycodes xfree86 et les symboles "pc104" devraient être utilisés pour initialiser le clavier. Une liste le keycodes, symboles et géométries se trouvent dans /usr/share/X11/xkb.]{}
\end{description}
 
\hspace{1mm}  Si cette option n'est pas spécifisé, la source d'entrée est le premier serveur backend (celui utilisé pour l'écran 0). La fenêtre console affiche le layout des affichage backend et les events dans la fenêtre console seront utilisés comme périphériques d'entrée core. De nombreuses touches de fonction sont actives, en fonction de la source d'entrée
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{6mm} Ctrl-Alt-q]{Termine le serveur Xdmx dans tous les modes}
\item[\hspace{6mm} Ctrl-Alt-g]{Bascule un serveur grab en mode console}
\item[\hspace{6mm} Ctrl-Alt-f]{Bascule en fine-grain motion en mode console.}
\item[\hspace{6mm} Ctrl-Alt-F1 à F12]{Switch sur un autre VC en mode local.}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{1mm} -shadowfb]{Active le support pour le shadow frame buffer}
\item[\hspace{1mm} -noshadowfb]{Désactive le support pour le shadow frame buffer}
\item[\hspace{1mm} -nomulticursor]{Désactive de support pour l'affichage de plusieurs curseurs sur des affichages backend chevauchés.}
\item[\hspace{1mm} -fontpath]{Chemin des fonts par défaut du serveur xdmx}
\item[\hspace{1mm} -configfile filename]{Fichier de configuration à lire. Si -display est spécifié, le fichier de configuration est ignoré.}
\item[\hspace{1mm} -config name]{Spécifie une configuration à utiliser, name est le nom du \textbf{virtual} dans le fichier de configuration}
\item[\hspace{1mm} -stat interval screens]{Active les statistique de performances de l'affichage.}
\item[\hspace{1mm} -syncbatch interval]{Définis l'interval en millisecondes pour XSync() batching.}
\item[\hspace{1mm} -nooffscreenopt]{Désactive l'optimisation offscreen.}
\item[\hspace{1mm} -nowindowopt]{Désactive l'optimisation de création de fenêtre}
\item[\hspace{1mm} -nosubdivprims]{Désactive l'optimisation les subdivisions de primitives}
\item[\hspace{1mm} -noxkb]{Désactive l'utilisation les extensions XKB pour communiquer avec les affichages backend.}
\item[\hspace{1mm} -depth int]{Définis la profondeur par défaut de la fenêtre root.}
\item[\hspace{1mm} -norender]{Désactive l'extension RENDER}
\item[\hspace{1mm} -noglxproxy]{Désactive les proxy GLX.}
\item[\hspace{1mm} -noglxswapgroup]{Désactive le groupe swap et les extension de swap dans le proxy GLX}
\item[\hspace{1mm} -glxsyncswap]{Active la synchronisation après un swap buffer.}
\item[\hspace{1mm} -glxfinishswap]{Active la synchronisation après un swap buffer.}
\item[\hspace{1mm} -ignorebadfontpaths]{Ignore les chemins de fonts non disponibles sur tous les backend.}
\item[\hspace{1mm} -param]{Spécifie les paramètres sur la ligne de commande. Actuellement, seul les paramètres pour XKEYBOARD sont supportés.}
\end{description}
 
\vspace{1cm}{\huge Grammaire de fichier de configuration }
 
\
 
\hspace{1mm}  Les mots suivants sont réservés:
\vspace{5mm} \\
\hspace{1mm}  \textbf{virtual display wall option param \{ \} ; \#}
\vspace{5mm} \\
\hspace{1mm}  La grammaire est comme suit:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{6mm} virtual-list ::= \texttt{[} virtual-list \texttt{]} | virtual]{}
\item[\hspace{6mm} virtual ::= virtual \texttt{[} name \texttt{]} \texttt{[} dim \texttt{]} \{ dw-list \}]{}
\item[\hspace{6mm} dw-list ::= \texttt{[} dw-list \texttt{]} | dw]{}
\item[\hspace{6mm} dw ::= display | wall | option]{}
\item[\hspace{6mm} display ::= display name \texttt{[} geometry \texttt{]} \texttt{[} / geometry \texttt{]} \texttt{[} origin \texttt{]} ;]{}
\item[\hspace{6mm} wall ::= wall \texttt{[} dim \texttt{]} \texttt{[} dim \texttt{]} name-list ;]{}
\item[\hspace{6mm} option ::= option name-list ;]{}
\item[\hspace{6mm} param ::= param name-list ;]{}
\item[\hspace{6mm} param ::= param \{ param-list \}]{}
\item[\hspace{6mm} param-list ::= \texttt{[} param-list \texttt{]} | name-list ;]{}
\item[\hspace{6mm} name-list ::= \texttt{[} name-list \texttt{]} | name]{}
\item[\hspace{6mm} name ::= string | double-quoted-string]{}
\item[\hspace{6mm} dim ::= integer x integer]{}
\item[\hspace{6mm} geometry ::= \texttt{[} integer x integer \texttt{]} \texttt{[} signed-integer signed-integer \texttt{]}]{}
\item[\hspace{6mm} origin ::= @ integer x integer]{}
\end{description}
 
\vspace{1cm}{\huge Exemple de fichier de configuration }
 
\
 
\hspace{1mm} 2 affichage sont utilisés pour un bureau \\
\hspace{1mm} \textbf{virtual example0 \{} \\
\hspace{1mm} \textbf{display d0:0 1280x1024 @0x0;} \\
\hspace{1mm} \textbf{display d1:0 1280x1024 @1280x0;} \\
\hspace{1mm} \textbf{\}} \\
\hspace{1mm} \textbf{virtual example1 \{} \\
\hspace{1mm} \textbf{display d0:0 1280x1024;} \\
\hspace{1mm} \textbf{display d1:0 @1280x0;} \\
\hspace{1mm} \textbf{\}} \\
\hspace{1mm} \textbf{virtual example2 \{} \\
\hspace{1mm} \textbf{display "d0:0";} \\
\hspace{1mm} \textbf{display "d1:0" @1280x0;} \\
\hspace{1mm} \textbf{\}} \\
\hspace{1mm} \textbf{virtual example3 \{ wall 2x1 d0:0 d1:0; \}} \\
\hspace{1mm} Un Mur 4x4 de 16 affichages peut être spécifié comme suit \\
\hspace{1mm} \textbf{virtual example4 \{} \\
\hspace{1mm} \textbf{wall d0:0 d1:0 d2:0 d3:0} \\
\hspace{1mm} \textbf{d4:0 d5:0 d6:0 d7:0} \\
\hspace{1mm} \textbf{d8:0 d9:0 da:0 db:0} \\
\hspace{1mm} \textbf{dc:0 dd:0 de:0 df:0;} \\
\hspace{1mm} \textbf{\}} \\
 
\vspace{1cm}{\huge Chemins de fonts }
 
\
 
\hspace{1mm}  Le font path utilisé par le serveur Xdmx est propagé à chaque serveur backend, ce qui nécessite que chaque serveur backend ait accès au même chemin de fonts que le serveur frontend. Cela peut se faire en utilisant un serveur de fonts ou en montant les chemins de fonts sur chaque serveur. Par exemple, si on spécifie un font path avec la commande suivante:
\vspace{5mm} \\
\hspace{1mm}  \textbf{xdmx :1 -display d0:0 -fontpath /usr/fonts/75dpi/ -fontpath /usr/fonts/Type1/ +xinerama}
\vspace{5mm} \\
\hspace{1mm}  alors /usr/fonts/75dpi/ et /usr/fonts/Type1/ doivent être valide pour tous les serveurs.
\vspace{5mm} \\
\hspace{1mm}  Les serveurs de fonts peuvent être spécifiés avec l'option -fontpath:
\vspace{5mm} \\
\hspace{1mm}  \textbf{Xdmx :1 -display d0:0 -display d1:0 -fontpath tcp/d0:7100 +xinerama}
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Exemples }
 
\
 
\hspace{1mm} les machines backend sont d0 et d1, core input vient des périphériques attachés à d0, les clients réfèrent à :1 en ouvrant les fenêtres \\
\hspace{1mm} \textbf{Xdmx :1 -display d0:0 -display d1:0 +xinerama} \\
\hspace{1mm} Idem, excepté que le core input vient de d1 \\
\hspace{1mm} \textbf{Xdmx :1 -display d0:0 -display d1:0 -input d1:0 +xinerama} \\
\hspace{1mm} Idem, excepté avec core input depuis une fenêtre console sur l'affichage local \\
\hspace{1mm} \textbf{Xdmx :1 -display d0:0 -display d1:0 -input :0 +xinerama} \\
\hspace{1mm} Idem, excepté avec core input depuis le clavier et la souris locale \\
\hspace{1mm} \textbf{Xdmx :1 -display d0:0 -display d1:0 -input local,kbd,ps2 +xinerama} \\
\hspace{1mm} Utilise la configuration affiché dans la section précédente \\
\hspace{1mm} \textbf{Xdmx :1 -input :0 +xinerama -configfile filename -config example2} \\
\hspace{1mm} Avec cette ligne du fichier de configuration \\
\hspace{1mm} \textbf{option -input :0 +xinerama;} \\
\hspace{1mm} La ligne de commande peut être raccourci \\
\hspace{1mm} \textbf{Xdmx :1 -configfile filename -config example2} \\
\end{flushleft}
\end{document}
