# Tiling (Computer)

Tiling bezeichnet im Gebiet der grafischen Benutzeroberflächen die kachelartige Anordnung von Fenstern nebeneinander, frei von Überdeckungen. Je nach Oberfläche kann Tiling die einzige Möglichkeit sein, mehrere Fenster gleichzeitig auf dem Desktop darzustellen, oder eine Möglichkeit neben anderen.
Auch die technische Anordnung mehrerer Kacheln (engl. tiles) eines Bildes oder einer Grafik nebeneinander wird als Tiling bezeichnet. Die Kacheldarstellung ermöglicht es ein wiederkehrendes Bildelement wiederholt neben- und/oder untereinander darzustellen, um so den Eindruck einer großen Fläche zu erzeugen. Dieses auch als Parkettierung bezeichnete Verfahren kommt oft bei Hintergrundbildern zum Einsatz, die ein wiederkehrendes Muster bzw. eine Textur darstellen.
Ein anderes Einsatzgebiet der Kacheldarstellung besteht in der Darstellung großformatiger Bilder: Hierbei wird das Bild vor der Darstellung in viele Teilbilder zerlegt und nur die Kacheln des darzustellenden Bildausschnitts angezeigt. Auf diese Weise können Bilder bandbreiten- und speicherschonend ausgeliefert werden, die sonst aufgrund ihrer Größe nicht dargestellt werden könnten. Anwendungsgebiete sind Kartendienste wie Google Maps oder hochaufgelöste Panoramabilder (Panos).
Ein vergleichbares Verfahren kommt auch bei der Darstellung sogenannter Fotomosaike zur Anwendung. Wird ein Bild aus vielen Einzelbildern zu einem großen Bild zusammengesetzt, spricht man vom Stitching.

## Geschichte
### Xerox PARC

Als erste graphische Benutzeroberfläche mit Tiling gilt das von Xerox PARC entwickelte CEDAR. Der Xerox Star benutzte ebenfalls Tiling zur Anordnung von Fenstern, kannte jedoch zum Teil auch überlappende Fenster.

### Siemens RTL Tiled Window Manager

Ein weiterer früher Fenstermanager mit Tiling war der Siemens RTL Tiled Window Manager aus dem Jahr 1988. Er gilt bis heute als Lehrbeispiel wegen seiner Algorithmen für automatische Größenanpassung, Platzierung, Anordnung und Verkleinern zu Icons sowie Wiederherstellung. RTL lief auf X11R2 und R3, hauptsächlich auf Siemens-eigenen Systemen, wie Sinix.

### Andrew Project

Das Andrew-Projekt (AP oder tAP) war ein Desktop-Clientsystem (ähnlich dem frühen Gnome) für X mit einem Fenstermanager, der Tiling und Überlappung beherrschte.

## Bekannte Fenstermanager mit Tiling
### Microsoft Windows

Windows beinhaltete seit Windows 95 bis einschließlich Windows XP einen Fenstermanager, der standardmäßig überlappend arbeitet, jedoch auch auf Tiling umgestellt werden kann.
Diese Funktion wurde bei der Neugestaltung der Taskleiste in Windows 7 nicht wieder eingeführt. Stattdessen ist es möglich, Fenster an den linken bzw. rechten Rand des aktiven Bildschirms zu ziehen (sie dort anzuheften), so dass diese jeweils eine Bildschirmhälfte einnehmen und eine Darstellung zweier Fenster nebeneinander möglich ist.
Mit der Einführung von Windows 8 wurde das Konzept der Kacheldarstellung systemweit eingeführt. Hierbei stellen die Kacheln Programme und die von Mobiltelefonen bekannten Apps im Rahmen eines kachelbasierten Startbildschirms dar. Diese können statische oder dynamische Inhalte anzeigen (Live Tiles).

#### Geschichte

Die erste Version (Windows 1.0) basierte auf einem Fenstermanager mit Tiling, zu Teil wegen eines Rechtsstreits mit Apple, die die Rechte an der Metapher des Desktops mit überlappenden Fenstern beanspruchten. Aber aufgrund von Beschwerden folgte die nächste Version (Windows 2.0) der Desktop-Metapher. Alle späteren Versionen des Betriebssystems hielten an diesem Ansatz als Standardverhalten fest.

#### Fremdsoftware

Es gibt Fremdsoftware, die ausgeklügeltere Tiling-Funktionalitäten hinzufügen (in Klammer Lizenz, unter der die Software steht):
* AquaSnap – Dynamischer Fenstermanager mit Tiling, Docking, Snapping und Gruppenoperationen (Freeware)
* WindowSizer – Ordnet Fenster als Kacheln an (Shareware)
* WinSplit – Ordnet Fenster als Kacheln über Tastenkürzel an (Freeware)
* HashTWM – Fenstermanager mit automatischem Tiling (MIT/X11)
* GridMove – Ordnet Fenster in ausgeklügelten Layouts an mit Hotkeys und Multimonitor-Unterstützung (Freeware/Donationware)
* bug.n – Dynamischer Fenstermanager mit Tiling, der versucht die Funktionalität von dwm zu kopieren (GPL)
* MaxTo – Platziert Fenster an einer benutzerdefinierten Raster durch Überwachen von Fenstern, die maximiert sind oder Hotkeys benutzen (Shareware)
* Twinsplay – Ordnet Fenster als Kacheln über Tastenkürzel an (Demoware/Closed Source)

### X Window System

Im X Window System ist der Fenstermanager ein separates Programm. X selbst setzt vom Ansatz her keinen bestimmten Fenstermanager voraus und die aktuelle X-Protokollversion X11 erwähnt ausdrücklich die Möglichkeit von Fenstermanagern mit Tiling. Der Siemens RTL Tiled Window Manager (veröffentlicht 1988) war der erste, der automatische Strategien für Anordnung und Größe implementierte. Ein weiterer Fenstermanager mit Tiling aus dieser Zeit war der Cambridge Window Manager, entwickelt von IBMs Academic Information System Group.
Danach wurden längere Zeit keine neuen Fenstermanager mit Tiling entwickelt. Im Jahr 2000 wurden die ersten Versionen von larswm und Ion veröffentlicht.

#### Liste von Fenstermanagern für X mit Tiling

* awesome – dwm-Derivat mit der Möglichkeit Fenster mit Tags zu versehen
* Compiz – Obwohl Compiz eigentlich ein Fenstermanager mit Compositing ist, hat er ein Raster-Plug-in, das Tastaturkürzel für Tiling hinzufügt und Fenster im Tiling-Layout erlaubt.
* dwm erlaubt per Umschalten Tiling-Layouts durch Anklicken eines ASCII-Art-„Icons“ in der Statusleiste. Standardeinstellung ist eine larswm-ähnliche Kombination aus Hauptbereich und Stapelbereich, dargestellt durch a= character glyph. Es gibt auch ein Nicht-Tiling-Fließlayout, ähnlich
* Echinus
* Enlightenment, erlaubt bis zu 144 virtuelle Desktops pro Monitor, auf denen einzeln Tiling eingeschaltet werden kann. Es ist dem Benutzer somit möglich einfach zwischen einem Tiling Desktop und einem überlappenden Desktop zu wechseln. Außerdem ist es möglich auf einem Monitor einen Tiling Desktop zu benutzen, auf weiteren Monitoren gleichzeitig überlappende Desktops oder umgekehrt.
* evilwm, welcher erlaubt, Fenster zu verschieben und in der Größe zu ändern, dargestellt durch ein fischähnliches ><>. Es existieren Fremdpatches, um ein Fibonacci-Layout nach dem Goldenen Schnitt, ein Rasterlayout, ein lückenfreies Rasterlayout und eine horizontale Stapelanordnung hinzuzufügen.
* euclid-wm
* i3 beabsichtigt, ein verbesserter, dynamischer Fenstermanager mit Tiling, inspiriert durch wmii, zu sein.
* Ion kombiniert Tiling mit einem Tabbing-Interface. Die Anzeige wird manuell in nichtüberlappende Bereiche (Frames) geteilt. Jeder Frame kann ein oder mehrere Fenster enthalten. Nur eines dieser Fenster ist sichtbar und füllt den gesamten Frame.
* KWin, der Fenstermanager von KDE, bietet ab Version 4.5 eine experimentelle Tiling-Funktion. Aktuell ist diese aber in der Entwicklungsversion 4.10 entfernt.
* larswm implementiert eine Form dynamischen Tilings: Die Anzeige wird vertikal geteilt in zwei Bereiche (Tracks). Der linke Track wird mit einem einzelnen Fenster gefüllt. Der rechte Track enthält alle anderen Fenster, eines über dem anderen gestapelt.
* Lucca WM
* Matchbox zielt speziell auf mobile Geräte und Embedded-Anwendungen, wo mehrere als Kacheln angeordnete Fenster nicht gut passen. Er erlaubt keine überlappenden Hauptfenster (obwohl, wie bei vielen Fenstermanagern mit Tiling, Dialogfenster „speziell“ mit Stapelmanagement sind), aber er erreicht dies, indem er nur ein Fenster zeigt, statt mehrere Fenster gekachelt anzuzeigen. Dies kann als Ein-Kachel-Layout angesehen werden.
* Musca beinhaltet manuelles Tiling, Unterstützung für mehrere Bildschirme, virtuelle Desktops und Maus- oder Tastaturnavigation.
* Notion kombiniert Kacheln mit Registerkarten. Tastatur- oder Mausgesteuert. Abkömmling des 2009 eingestellten Ion.
* plpwm ist eine Konfiguration des plwm-Fenstermanager-Toolkits, welches Tiling unterstützt.
* Qtile ist ein Fenstermanager mit Tiling, geschrieben und konfiguriert in Python.
* ratpoison – tastaturgesteuerter GNU Screen für X
* Scrotwm – ein weiterer minimalistischer Fenstermanager mit Tiling
* tritium
* TrsWM
* WMFS
* wmii – entwickelt parallel zu dwm vom selben Autor
* Xfwm4, der Fenstermanager von Xfce, ist ab der Version 4.12 besser in der Lage zu erkennen, wenn der Benutzer Fenster tiling-mäßig anordnen will und unterstützt ihn dabei durch eine automatische Größenanpassung und Positionierung.
* xmonad – automatischer Fenstermanager mit Tiling, geschrieben und erweiterbar in Haskell
* herbstluftwm – manueller tiling window für X11, benutzt Xlib und Glib, geschrieben in C++

### Fremdapplikationen mit Tiling für X.Org

* Tile ist ein kleines Kommando, welches Tiling unter anderen Fenstermanagern ermöglicht.
* Stiler (früher bekannt als „Poor man's Tiling Window manager“ (Fenstermanager mit Tiling des armen Mannes)) ist ein einfaches Python-Skript, das Tiling unter jedem Fenstermanager erlaubt.
* PyTyle ist ein manueller Tilingmanager, der sich in jeden EWMH-konformen Fenstermanager einklinken kann.

### Sonstige

* Das Oberon System der ETH Zürich beinhaltet einen Fenstermanager mit Tiling.
* Omero, Teil des Betriebssystems Plan B, entwickelt an der URJC Madrid, ordnet Fenster ebenfalls standardmäßig als Kacheln an.

## Anwendungsprogramme mit Tiling

Obwohl Tiling nicht der Standardmodus von Fenstermanagern auf den meisten weit verbreiteten Plattformen ist, zeigen die meisten Anwendungsprogramme gleichzeitig vorhandene Funktionen in ähnlicher Weise an. Beispiele umfassen E-Mail-Clients, IDEs, Sidebars in Webbrowsern und die kontextsensitive Hilfe in Microsoft Office. Zusätzlich können HTML-Frames als Implementierung von Tiling basierend auf einer Auszeichnungssprache betrachtet werden. Fenstermanager mit Tiling erweitern diese nützliche Eigenschaft jenseits gleichzeitig vorhandener Funktionen in Anwendungsprogrammen zu gleichzeitig vorhandenen Anwendungsprogrammen innerhalb eines Desktops. Die Dokumentenschnittstelle mit Tabbing kann ein sinnvoller Zusatz zum Tiling sei, da sie mehrere Fenster für dieselbe Funktion auf dem Bildschirm vermeidet.