%Beginners guide to wmii
%Copyright (C) 2005,2006 by Steffen Liebergeld

%This program is free software; you can redistribute it and/or
%modify it under the terms of the GNU General Public License
%as published by the Free Software Foundation; either version 2
%of the License, or (at your option) any later version.

%This program is distributed in the hope that it will be useful,
%but WITHOUT ANY WARRANTY; without even the implied warranty of
%MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
%GNU General Public License for more details.

%You should have received a copy of the GNU General Public License
%along with this program; if not, write to the Free Software
%Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

\documentclass[11pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage[left=3cm,top=2cm,right=2cm,bottom=3cm]{geometry}
\usepackage[a4paper,dvipdfm]{hyperref}
\usepackage{ngerman}
\usepackage{times}
\newenvironment{itemize*}
  {\begin{itemize}
      \setlength{\itemsep}{0pt}
      \setlength{\parskip}{0pt}}
  {\end{itemize}}
\date{\today}
\author{Norman Golisz}
\title{Eine Einführung in wmii}

\begin{document}

\maketitle

\tableofcontents

\newpage

\section{Einführung}
\subsection{wmii - Die zweite Generation von window manager improved}
	wmii ist ein leichtgewichtiger Window Manager (WM) für das
	X-Window-System. Er unterstützt sowohl das konventionelle Window
	Management, als auch Tiled und Tabbed, basierend auf Layouts.
	Mehrere Grundlagen dieser Window Management-Fähigkeiten wurden
	mit den WM Ion und LarsWM eingeführt. Abgesehen davon,
	implementiert er einen auf Sockets basierenden Dateiserver,
	welcher zur Konfiguration und Interaktion mit wmii benutzt
	wird. Die Idee hinter diesem datei-basierenden Ansatz kommt
	vom Plan9-Betriebssystem und lässt sich in der Programmierumgebung
	Acme wiederfinden. wmii besteht aus dem eigentlichen Window
	Manager und mehreren Hilfsprogrammen, wie wmibar, wmifs, wmimenu,
	wmikeys, wmiplumb, wmir und wmiwarp.

\subsection{Über dieses Dokument}
	Dieses Dokument ist eine deutsche Übersetzung des
	Originaldokuments \emph{A beginners guide to wmii} von Steffen
	Liebergeld. Es wird Sie in die Arbeit mit wmii einführen. Sie
	werden erfahren, wie Sie wmii konfigurieren und installieren,
	und schließlich benutzen. Dabei werden Ihnen bestimmte
	Eigenheiten erläutert. Sobald Sie dieses Dokument zu Ende
	gelesen haben, werden Sie sich in wmii verlieben und deutlich
	effizienter arbeiten können, als je zuvor.

\subsection{Was Sie noch wissen sollten}
	Dieser Text wurde für Menschen geschrieben, welche schon
	Erfahrung im Umgang mit UNIX-Systemen und grundlegendes
	Wissen über das X-Window-System mitbringen. Er richtet sich an
	wissbegierige Menschen, welche offen für neue
	Interaktionsmöglichkeiten mit dem Computer sind. Wahrscheinlich
	passt die Bezeichnung \emph{Hacker} am besten zur Zielgruppe.

\section{Konfiguration und Installation}
\subsection{wmii beziehen}
	wmii wird unter den Bestimmungen der MIT/X Consortium License
	lizenziert. Das heißt, dass es jedem erlaubt ist, die Software
	zu nutzen, zu kopieren, zu modifizieren, zu veröffentlichen, zu
	vertreiben und/oder Kopien dieser Software zu verkaufen. Bitte
	bedenken Sie, dass die Autoren die Software ohne jegliche Gewähr
	zur Verfügung stellen ("`as is"').

	Natürlich können Sie den Quelltext von http://wmii.de beziehen.
	Für viele der populären Linux-Distributionen stehen im Netz
	vorkompilierte Pakete zur Verfügung.

	Falls Sie immer auf dem aktuellsten Entwicklungsstand sein
	wollen, steht Ihnen das darcs-Repository zur Verfügung.

\subsection{Konfiguration}
	Die wmii-Quellen beinhalten eine Datei namens \emph{config.mk},
	welche alle Optionen enthält um wmii vor der Kompilation
	anzupassen.

	Die wichtigste Einstellung ist PREFIX, sie zeigt auf den Pfad,
	in welchem wmii installiert werden soll. In selbiger Datei
	legen Sie ebenfalls fest, ob wmii mit cairo-Unterstützung
	kompiliert werden soll. Nun, cairo scheint sehr instabil zu
	sein, daher wird davon abgeraten. Sie werden es nicht brauchen.

\subsection{Installation}
	Nach der Konfiguration, brauchen Sie nur noch \texttt{make}
	auszuführen, um wmii zu kompilieren.

	Jetzt sind Sie in der Lage als Superuser (root) wmii zu
	installieren, indem Sie \texttt{make install} ausführen.

	Nach der Installation sollten Sie die Dateien von
	PREFIX/etc/wmii in Ihr lokales Verzeichnis \emph{.wmii} kopieren.

	Beachten Sie, dass PREFIX standardmäßig auf \emph{/usr/local/}
	zeigt.

	Um wmii zu Ihrem Standard-WM zu machen, können Sie die folgenden
	Zeilen zu Ihrer \emph{~/.xinit} (oder \emph{~/.xsession} falls Sie
	einen Display Manager wie xdm nutzen) hinzufügen:

	\begin{verbatim}
		#!/bin/sh
		exec wmii
	\end{verbatim}

\subsection{Anpassung}
	Das Verzeichnis \emph{~/.wmii} beinhaltet eine Reihe von Dateien,
	welche Ihnen erlauben Ihre Einstellungen anzupassen.

	Wenn wmii startet, führt es eine Datei namens \emph{rc} aus Ihrem
	\emph{.wmii}-Verzeichnis aus. Beachten Sie, dass dies jegliche
	ausführbare Datei sein kann, sei es ein Shell-Skript oder ein
	Binary. Das \emph{rc}-Programm erwartet einen Parameter, \emph{start}
	oder \emph{stop}. Bei \emph{start} richtet es das interne virtuelle
	Dateisystem von wmii ein.

	Es wichtig zu wissen, dass wmii zum Setup und zur Nutzung ein
	neues Konzept der Interprozesskommunikation nutzt.
	Der grundlegende Ansatz besteht darin, eine dateisystem-ähnliche
	Repräsentation der Daten zu nutzen. Diese Idee stammt vom
	Plan9-Betriebssystem und dessen Acme-Programmierumgebung.

	Bedenken Sie, dass sich dieses Dateisystem zukünftig in ein
	UNIX-Dateibaum einbinden lässt, wodurch Sie mit all den
	Möglichkeiten Ihrer Standardshell operieren können.

	Zum jetzigen Zeitpunkt werden wir es bei der
	Standardkonfiguration belassen, welche schon sehr leistungsfähig
	ist. Auf die Grundlagen der Datei- und Dateisystemmanipulation
	werde ich später eingehen.

\section{Terminologie}
\subsection{Pages}
	Der komplette sichtbare Bereich des Monitors wird als Page
	bezeichnet.

\subsection{Frames}
	Der Name lässt es schon erahnen, es sind rechteckige Bereiche
	auf Pages, welche X-Klienten enthalten (z.B. xterm). In wmii
	wird standardmäßig ein identifizierender String in der
	Titelleiste angezeigt.

\subsection{Clients}
	Jedes X-Programm, oder jedes Programm welches ein Fenster auf
	einem X-Server zeichnet, wird Client genannt. Später werden Sie
	in der Lage sein, diverse Manipulationen an Clients vorzunehmen.
	Für Sie ist es an dieser Stelle nur interessant, dass jeweils
	nur ein Client zu einem Zeitpunkt auf Eingaben des Nutzers
	wartet. In unserer Terminologie wird das \emph{selected}\footnote{Im
	X-Server-System wird dies als \emph{focussed Client} bezeichnet}
	genannt.

\subsection{Layout}
	Ein Layout definiert das Verhalten einer Page. Es legt fest, wie
	Frames auf einer Page angeordnet werden.

\subsection{Actions}
	Actions sind alle Befehle zur Manipulation des Window
	Managements. Beispielsweise das Maximieren eines Fensters, oder
	das Starten eines Programms.

\section{Benutzung}
	Bevor Sie nun Ihr wmii starten, bitte ich Sie, die folgenden
	Shortcuts auf einem Zettel zu notieren.
	\begin{itemize*}
		\item \texttt{MOD+Tab} = wechsle das Frame
		\item \texttt{MOD+Shift+Tab} = wechsle das verschachtelte
			Frame (Tabbed Frame)
		\item \texttt{MOD+Ctrl+a} = öffne das Aktionsmenü
		\item \texttt{MOD+Ctrl+p} = öffne das Programmmenü
		\item \texttt{MOD+t} = öffne ein xterm
	\end{itemize*}
	Denken Sie daran, die \texttt{MOD}-Taste ist üblicherweise Ihre
	linke \texttt{ALT}-Taste, kann aber je nach Manipulation mit
	xmodmap variieren.

	Das standardmäßig eingestellte Layout ist \emph{Tiled}. Öffnen
	Sie ein paar xterms und schauen Sie, wie sich die Page aufbaut.
	Sobald Sie vier xterms geöffnet haben, haben Sie eine gute Basis
	für die ersten Navigationsversuche.

	Wie Sie sehen, ordnet wmii die Fenster automatisch an. Damit
	bleibt der Kopf für die Arbeit frei.

	Tippen Sie einfach mal ein paar Buchstaben. Von dem xterm, auf
	dem sie erscheinen, spricht man von einem \emph{selektierten}
	Client. Sie sehen, dass das jeweils selektierte Frame eine
	andere Rahmenfarbe bekommt. Dies wird vor allem bei
	\emph{Tabbed Frames} von Bedeutung sein, worauf ich später
	noch eingehen werde.			

	Um nun zwischen den geöffneten xterms zu selektieren, drücken
	Sie \texttt{MOD+Tab}.

\subsection{Auswahl von Layouts}
	Das \emph{Tiled}-Layout ist schon gut und leistungsfähig. Dennoch
	bietet wmii weitere interessante Layouts an. Wir werden nun alle
	einmal durchtesten. Dazu drücken Sie \texttt{MOD+Shift+m}. Nun
	sind alle Fenster maximiert (\emph{Maximized}-Layout). Durch
	drücken der Tasten \texttt{MOD+Tab} wechseln Sie zum nächsten
	Frame.

	Drücken Sie \texttt{MOD+Shift+g} für das \emph{Grid}-Layout. Nun
	werden alle Frames so angeordnet, dass jedes soviel wie möglich
	an Platz zugeteilt bekommt.

	Ein weiteres Layout ist das \emph{Float}-Layout. Dazu drücken Sie
	\texttt{MOD+Shift+f}. Sie sehen, dass die Frames nicht mehr
	automatisch angeordnet werden. Dieses Layout findet meist nur
	Anwendung, wenn Programme kein dynamisches Window Management
	unterstützen.

	Sie können nun Ihr bevorzugtes Layout auswählen:
	\begin{itemize*}
		\item \texttt{MOD+Shift+m} = \emph{Maximized}-Layout
		\item \texttt{MOD+Shift+t} = \emph{Tiled}-Layout
		\item \texttt{MOD+Shift+g} = \emph{Grid}-Layout
		\item \texttt{MOD+Shift+f} = \emph{Float}-Layout
	\end{itemize*}

\subsection{Tabbed Frames}
	Bis jetzt hatten wir jeweils einen Client in einem Frame. Öffnen
	wir jedoch mehrere Clients, würde die Arbeitsfläche recht
	unübersichtlich werden. Um dies zu vermeiden, beherrscht wmii
	eine Technik namens \emph{Tabbed Frames}. Sie erlaubt, mehrere
	Clients in einen Frame unterzubringen. Die Clients nehmen die
	gesamte zur Verfügung stehende Fläche ein, werden jedoch in Tabs
	organisiert. Diese sind in der Titelleiste des Fensters
	sichtbar.

	Soweit die Theorie, probieren wir es nun einmal aus. Navigieren
	Sie zu dem xterm Ihrer Wahl und drücken Sie \texttt{MOD+u}, um
	den Frame für Tabs zu öffnen. Alle Clients welche nun
	geöffnet werden, werden entsprechend im selektierten Frame
	angeordnet. Öffnen Sie ein weiteres xterm. Sie werden
	feststellen, dass sich die Titelleiste geteilt hat. Für jeden
	Client wird eine zugeordnet. Um nun durch die verschachtelten
	Frames zu navigieren, drücken Sie \texttt{MOD+Shift+Tab}. Wenn
	Sie nun \texttt{MOD+Tab} drücken, stellen Sie fest, dass Sie
	weiterhin durch die Frames der Page springen können.

	Nun wechseln Sie auf den Frame mit den zwei xterms zurück und
	drücken \texttt{MOD+Shift+u}, um den Frame für Tabs zu
	schließen. Öffnen Sie nun ein weiteres xterm, so wird
	dieses in einem neuen eigenen Frame auf der Page gestartet.

	Sie haben nun zwei Grundkonzepte von wmii kennengelernt:
	das \emph{Öffnen} (unlock) und \emph{Schließen} (lock) von Frames.

\section{Weitere Konzepte}
\subsection{Zoom}
	wmii hat eine Eigenschaft mit dem Namen \emph{Zoom}, welche
	versucht dem fokussierten Frame den meisten Platz zu bieten.
	\emph{Zoom} macht vor allem im \emph{Tiled}-Layout Sinn, um Frames
	den Fokus zu geben. Aufzurufen mit \texttt{MOD+Enter}.
	
\subsection{Virtuelle Arbeitsflächen}
	Bis zu diesem Zeitpunkt haben Sie nur eine Page genutzt, jedoch
	bietet wmii die Möglichkeit, soviele einzurichten wie Sie
	möchten. Eine neue erstellen Sie mit \texttt{MOD+Ctrl+y}. Um
	zurück zur vorherigen Page zu gelangen, drücken Sie
	\texttt{MOD+l}.

\subsection{Maximieren}
	Manchmal möchte man die überfüllte Arbeitsfläche verlassen und
	nur einen Frame sehen. Das ist möglich, indem Sie die
	\texttt{MOD+m} drücken. wmii wird dann eine neue virtuelle Page
	erstellen und das maximierte Frame dort abbilden. Zurück kommen
	Sie durch die übliche Tastenfolge \texttt{MOD+l}. Um das Frame
	nun wieder in die ursprüngliche Größe zu versetzen, drücken Sie
	\texttt{MOD+m} ein weiteres Mal.

\subsection{Bewegen von Frames}
	Wahrscheinlich haben Sie sich das schon selbst gefragt, wie Sie
	einen Client von einem in ein anderes Frame oder auf eine
	andere Page verschieben können. In wmii erledigt man dies durch
	\emph{anheften} (attaching) bzw. \emph{ablösen} (detaching) des
	Frames. Ich werde Ihnen nun zeigen, wie das funktioniert.

	Als erstes müssen Sie sich ein Frame aussuchen, welches Sie
	verschieben möchten. Sobald Sie eines ausgewählt haben, drücken
	Sie \texttt{MOD+d}, um den Client abzulösen. Sie werden
	feststellen, dass der Client verschwindet, dieser befindet sich
	nun im Speicher des wmii.

	Nun navigieren Sie zu einem anderen Frame und öffnen dieses mit
	\texttt{MOD+u}. Nun heften Sie den vorher abgelösten Client
	mittels \texttt{MOD+a} wieder an. Wie Sie sehen, ist der Client nun
	Teil des Frames. Sie schließen das Frame wieder mit
	\texttt{MOD+Shift+u}.

	Sie können auch einen verschachtelten Client in sein eigenes
	Frame verschieben. Dazu lösen Sie den Client und stellen sicher,
	dass das Frame geschlossen ist. Nun heften Sie den Client wieder
	an und sehen, dass dieser nun in ein eigenes Frame untergebracht
	wurde.

\subsection{Im Überblick}
	\begin{itemize*}
		\item \texttt{MOD+Enter} = zoome das Frame
		\item \texttt{MOD+Ctrl+y} = erstelle eine neue Page
		\item \texttt{MOD+l} = wechsle die Page
		\item \texttt{MOD+m} = maximiere einen Client
		\item \texttt{MOD+u} = öffne das Frame
		\item \texttt{MOD+Shift+u} = schließe das Frame
		\item \texttt{MOD+d} = lösen den Client
		\item \texttt{MOD+a} = hefte den zuvor gelösten Client
			wieder an
	\end{itemize*}

\subsection{Flashback}
	Sie möchten vielleicht eine Liste mit allen momentan belegten
	Shortcuts, dies erledigt ein Tool namens \texttt{wmirefcard}.

	Glückwunsch. Sie haben nun alles gelernt, was Sie zum Umgang mit
	wmii wissen müssen. Im nächsten Kapitel werde ich Ihnen Näheres
	zum Konfigurationsinterface von wmii vermitteln.

\section{Einblicke in wmii}
\subsection{Werkzeuge}
	wmii besteht aus einer Reihe von kleinen Programmen, wobei
	jeweils ein Programm für eine bestimmte Aufgabe zuständig ist.
	Diese Programme sind durch ein virtuelles Dateisystem in der
	Lage, miteinander zu kommunizieren. Dieses Design kommt den
	UNIX-Regeln nahe, der \emph{Regel der Modularität} und der
	\emph{Regel der Zusammensetzung}.

	Vielleicht möchten Sie mehr darüber in \emph{The Art of Unix
	Programming}\footnote{Das Buch von Eric S. Raymond \emph{The Art
	of Unix Programming} kann online gelesen werden:
	http://www.faqs.org/docs/artu/} von Eric S. Raymond lesen.

\subsubsection{wmibar}
	wmibar ist ein kleines Programm mit der Aufgabe eine kleine Bar
	mit Informationen bereitszustellen.

\subsubsection{wmimenu}
	wmimenu erstellt Menüs. Es ist durch das virtuelle Dateisystem
	sehr anpassbar, sodass man seine eigene Menüstruktur definieren
	kann.

\subsubsection{wmikeys}
	wmikeys erledigt alle Aufgaben, die mit Tasteneingabe zutun
	haben. Es fängt Tasteneingaben auf und führt ggf. Aktionen aus.
	Auch dies lässt sich durch das virtuelle Dateisystem
	einstellen.

\subsubsection{wmifs}
	wmifs hat die Aufgabe, die unterschiedlichen virtuellen
	Dateisysteme der wmii-Programme in einen Namensraum
	zusammenzufassen und verhält sich nach außen hin wie ein
	einzelnes virtuelles Dateisystem.

\subsubsection{wmir}
	wmir wird genutzt, um das von wmifs exportierte virtuelle
	Dateisystem zu lesen und zu verändern. Sie können damit alles in
	wmii kontrollieren, was nur über die Repräsentation durch wmifs
	existiert.

\subsection{Über ixpfs}
	Wenn Sie \texttt{wmir read /} ausführen, sehen Sie die Wurzel /
	von ixpfs. Sie können nun wie mit anderen Dateisystemen gewohnt,
	durch das Dateisystem navigieren.

\section{Copyright notice}

Beginners guide to wmii
Copyright (C) 2006 by Steffen Liebergeld

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.


\end{document}

