diff --git a/GOALS b/GOALS
deleted file mode 100644
index 40d548f8..00000000
--- a/GOALS
+++ /dev/null
@@ -1,6 +0,0 @@
-GOALS (these have to be fullfilled all the time):
-
- * Do _NOT_ use autotools or a similar mechanism. Instead, document all
- requirements properly so that packagers for every plattform can easily
- provide users with a package. Those who build software for themselves
- do know how to install requirements, if they are documented.
diff --git a/contrib/banner.svg b/contrib/banner.svg
new file mode 100644
index 00000000..af82021b
--- /dev/null
+++ b/contrib/banner.svg
@@ -0,0 +1,620 @@
+
+
+
+
diff --git a/dump-asy.pl b/contrib/dump-asy.pl
similarity index 100%
rename from dump-asy.pl
rename to contrib/dump-asy.pl
diff --git a/gtk-tree-watch.pl b/contrib/gtk-tree-watch.pl
similarity index 100%
rename from gtk-tree-watch.pl
rename to contrib/gtk-tree-watch.pl
diff --git a/i3-wsbar b/contrib/i3-wsbar
similarity index 100%
rename from i3-wsbar
rename to contrib/i3-wsbar
diff --git a/show-download-count.sh b/contrib/show-download-count.sh
similarity index 100%
rename from show-download-count.sh
rename to contrib/show-download-count.sh
diff --git a/contrib/sticker_stickma_black.svg b/contrib/sticker_stickma_black.svg
new file mode 100644
index 00000000..fced8dd9
--- /dev/null
+++ b/contrib/sticker_stickma_black.svg
@@ -0,0 +1,645 @@
+
+
+
+
diff --git a/docs/slides-2012-03-16/TdilE.jpg b/docs/slides-2012-03-16/TdilE.jpg
new file mode 100644
index 00000000..9b939ab8
Binary files /dev/null and b/docs/slides-2012-03-16/TdilE.jpg differ
diff --git a/docs/slides-2012-03-16/Ubuntu_Linux_Jaunty_screenshot.png b/docs/slides-2012-03-16/Ubuntu_Linux_Jaunty_screenshot.png
new file mode 100644
index 00000000..95a2cdb5
Binary files /dev/null and b/docs/slides-2012-03-16/Ubuntu_Linux_Jaunty_screenshot.png differ
diff --git a/docs/slides-2012-03-16/i3.tex b/docs/slides-2012-03-16/i3.tex
new file mode 100644
index 00000000..673c72c1
--- /dev/null
+++ b/docs/slides-2012-03-16/i3.tex
@@ -0,0 +1,146 @@
+% vim:ts=4:sw=4:expandtab
+% © 2012 Michael Stapelberg
+%
+% use xelatex %<
+%
+\documentclass[xetex,serif,compress]{beamer}
+\usepackage{fontspec}
+\usepackage{xunicode} % Unicode extras!
+\usepackage{xltxtra} % Fixes
+\usepackage{listings}
+\setmainfont{Trebuchet MS}
+\setmonofont{Inconsolata}
+\usetheme{default}
+
+\setbeamertemplate{frametitle}{
+ \color{black}
+ \vspace*{0.5cm}
+ \hspace*{0.25cm}
+ \textbf{\insertframetitle}
+ \par
+}
+
+% Hide the navigation icons at the bottom of the page
+\setbeamertemplate{navigation symbols}{}
+
+% No margins on any side
+\setbeamersize{text margin left=0cm,text margin right=0cm}
+
+
+\begin{document}
+
+% slide with bullet points
+\newcommand{\mslide}[2]{
+ \begin{frame}{#1}
+ \begin{center}
+ \begin{list}{$\bullet$}{\itemsep=1em}
+ #2
+ \end{list}
+ \end{center}
+ \end{frame}
+}
+
+\frame{
+\begin{center}
+\vspace{1.5cm}
+{\huge i3}\\
+{\large improved tiling window manager}\\
+\vspace{3cm}
+Michael Stapelberg\\
+\vspace{0.5cm}
+2012-03-16\\
+\end{center}
+}
+
+\begin{frame}{}
+\begin{center}
+\huge
+„Oh, interessant…“
+
+\vspace*{1cm}
+
+oder
+
+\vspace*{1cm}
+
+„Was?! \textbf{Noch ein} window manager?“
+\end{center}
+\end{frame}
+
+
+\begin{frame}{}
+ % talk about the difference between a desktop environment and a window manager:
+ % a desktop environment (like GNOME, KDE, Xfce) is a collection of
+ % programs, libraries (including a graphical toolkit) and configuration.
+ % it usually aims for a coherent look and feel and comes with a number of
+ % tools (g*, like gedit, geeqie, …)
+ % One of the programs of a DE is a window manager.
+ \begin{figure}
+ \includegraphics[width=0.97\textwidth]{Ubuntu_Linux_Jaunty_screenshot.png}
+ % source: http://en.wikipedia.org/wiki/File:Ubuntu_Linux_Jaunty_screenshot.png
+ \end{figure}
+\end{frame}
+
+
+\begin{frame}{}
+\begin{center}
+% compare this to a screenshot of i3:
+% notice the little amount of toolbars.
+% notice the lack of fancy window decorations
+% notice the absence of a desktop.
+% instead, you get to use the full screen.
+ \begin{figure}
+ \includegraphics[width=0.97\textwidth]{TdilE.jpg}
+ % source: jrd in #i3
+ \end{figure}
+\end{center}
+\end{frame}
+
+
+\mslide{i3: Geschichte und Merkmale}{
+ \item komplett neu geschrieben (Februar 2009)
+ \item Nachfolger* zu wmii, den wir nicht hacken konnten
+ \item sauberen, lesbaren, dokumentierten Code. und Dokumentation
+ \item ordentlichen Multi-Monitor-Unterstützung, UTF-8-Unterstützung
+ \item schnell und klein, ausgerichtet auf Power-Nutzer
+}
+
+% live demo here, just like at FrOSCon
+% include: the docs, with the keyboard layout
+% include: the configuration file
+
+\mslide{Inter-Prozess-Kommunication}{
+ \item UNIX-Socket, JSON zur Serialisierung
+ \item i3-msg (C), AnyEvent::I3 (Perl), i3-ipc (Ruby), i3ipc (Python)
+ \item beliebige Befehle schicken, wie \texttt{floating enable}
+ \item Ereignisse empfangen (z.B. Fokusänderung)
+ \item Zugriff auf die Layout-Datenstruktur (!)
+}
+
+% demo: change a workspace
+% demo: testsuite
+
+\mslide{Workflow-Beispiele}{
+ \item Urgency hint
+ \item Scratchpad
+ \item Web-Entwicklung (browser, editor, syslog)
+ \item Programmieren (C): zwei Editoren (Code, Tests), schnell Doku aufmachen
+}
+
+\mslide{i3 in Zahlen}{
+ \item 3149 Commits von > 40 verschiedenen Leuten
+ \item > 600 Tickets (ca. 60 offen)
+ \item ungefähr 10.000 SLOC (größtenteils C, ein bisschen Perl)
+ \item Testsuite: > 1000 Tests in 96 Dateien
+ \item vorsichtige Schätzungen von > 1000 Nutzern
+}
+
+\mslide{Danke für eure Aufmerksamkeit!}{
+ \item Auf \url{http://www.i3wm.org/} findet ihr alles
+ \item Ubuntu: bitte nutze unser Repository: \url{http://i3wm.org/docs/repositories.html}
+ \item Debian: bitte nutze die Version in testing
+ \item Fragen?
+ \item (Bilder: Creative Commons Attribution-Share Alike 3.0 Unported)
+}
+
+\end{document}
diff --git a/i3.welcome b/i3.welcome
deleted file mode 100644
index 5a267bb9..00000000
--- a/i3.welcome
+++ /dev/null
@@ -1,44 +0,0 @@
-1.) Welcome to i3!
-
-This message provides an overview of the default keybindings to use i3.
-Please also make sure to have a look at the man page and the user's guide:
-http://i3wm.org/docs/userguide.html
-
-
-2.) Configuration Files
-
-/etc/i3/config is the default configuration. It is recommended to copy it and
-afterwards edit it to suit your needs (in particular, you may want to disable
-this message):
-
- cp /etc/i3/config ~/.i3/config
-
-
-3.) Keybindings
-
-The following explanation is related to the QWERTY layout, but as the default
-configuration uses keycodes instead of keysymbols for binding, you still have
-to press the same physical keys, regardless of your keyboard layout.
-
-The Mod1 key is usually bound to the "Alt" key on your keyboard.
-
-Mod1+Enter opens a terminal emulator
-Mod1+v starts dmenu (an application launcher)
-
-The directional keys are j(left), k(down), l(up) and ;(right). You can also use
-the arrow keys on your keyboard, if you prefer them.
-
-Mod1+ moves the focus to the window in the given direction
-Mod1+Shift+ moves the window to the given direction
-Mod1+ opens the corresponding workspace
-Mod1+Shift+ moves a window to the selected workspace
-Mod1+h sets the mode of a container to stacking
-Mod1+e sets the mode back to default
-Mod1+f toggles fullscreen mode for the current window
-Mod1+Shift+Space toggles floating mode for the current window
-Mod1+Shift+q closes a window
-Mod1+Shift+r restarts i3 in-place (at this time, you will lose your layout)
-Mod1+Shift+e exits i3
-
-If you have any questions, please don't hesitate to ask!
-Have fun using i3
diff --git a/render-tree/Con.pm b/render-tree/Con.pm
deleted file mode 100644
index 1830caf8..00000000
--- a/render-tree/Con.pm
+++ /dev/null
@@ -1,21 +0,0 @@
-# vim:ts=4:sw=4:expandtab
-package Con;
-
-use Moose;
-use MooseX::AttributeHelpers;
-use v5.10;
-
-has 'name' => (is => 'ro', isa => 'Str');
-has 'width' => (is => 'rw', isa => 'Int', default => 100);
-has '_nodes' => (is => 'ro', metaclass => 'Collection::Array', isa => 'ArrayRef[Con]',
- default => sub { [] },
- provides => {
- 'push' => 'add_node',
- elements => 'nodes',
- }
-);
-has 'parent' => (is => 'rw', isa => 'Con', predicate => 'has_parent');
-
-__PACKAGE__->meta->make_immutable;
-
-1
diff --git a/render-tree/render.pl b/render-tree/render.pl
deleted file mode 100755
index bea5811a..00000000
--- a/render-tree/render.pl
+++ /dev/null
@@ -1,125 +0,0 @@
-#!/usr/bin/env perl
-# vim:ts=4:sw=4:expandtab
-# © 2011 Michael Stapelberg, see LICENSE
-#
-# Needs SVG (libsvg-perl), IO::All (libio-all-perl), JSON::XS (libjson-xs-perl) and Moose (libmoose-perl)
-#
-# XXX: unfinished proof-of-concept. awaits a json dump in my.tree, renders to test.svg
-# XXX: needs more beautifying (in the SVG but also in the code)
-# XXX: has some rendering differences between firefox and chromium. maybe inkscape makes the file look the same in both browsers
-
-use strict;
-use warnings;
-use SVG;
-use Data::Dumper;
-use JSON::XS;
-use IO::All;
-use List::Util qw(sum);
-use lib qw(.);
-use Con;
-use v5.10;
-
-my $input = io('my.tree')->slurp;
-my $tree = decode_json($input);
-my $root = parse_tree($tree);
-render_tree($root);
-
-sub parse_tree {
- my ($input, $parent) = @_;
- my $con = Con->new(name => $input->{name});
- $con->parent($parent) if defined($parent);
- for my $node (@{$input->{nodes}}) {
- $con->add_node(parse_tree($node, $con));
- }
-
- return $con;
-}
-
-sub render_tree {
- my ($con) = @_;
- say 'rendering con ' . $con->name;
- my @nodes = $con->nodes;
- for my $node (@nodes) {
- render_tree($node);
- }
-
- # nothing to calculate when there are no children
- return unless @nodes > 0;
-
- $con->width((@nodes > 1 ? (@nodes - 1) * 20 : 0) + sum map { $_->width } @nodes);
-
- say $con->name . ' has width ' . $con->width;
-}
-
-# TODO: figure out the height
-my $svg = SVG->new(id => "tree", width => $root->width + 5, height => '1052');
-
-my $l1 = $svg->group(id => 'layer1');
-
-# gaussian blur (for drop shadows)
-$svg->defs()->filter(id => 'dropshadow')->fe(-type => 'gaussianblur', stdDeviation => '2.19');
-
-my $idcnt = 0;
-my $y = 10;
-render_svg($root, 0, 0);
-
-sub render_svg {
- my ($con, $level, $x) = @_;
-
- my $indent = ' ' x $level;
-
- say $indent . 'svg-rendering con ' . $con->name . ' on level ' . $level;
- say $indent . 'width: ' . $con->width;
-
- # render the dropshadow rect
- $l1->rect(
- id => 'outer_rect_shadow' . $idcnt,
- style => 'opacity:1.0;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:4;stroke-opacity:1;stroke-miterlimit:4;filter:url(#dropshadow)',
- width => "96",
- height => '50',
- #x => $x + ($con->has_parent ? ($con->parent->width - 100) / 2 : 0),
- x => $x + ($con->width / 2) - (96 / 2) + 0,
- y => 4 + $level * 70 + 0,
- );
- $idcnt++;
-
- # render the main rect
- $l1->rect(
- id => 'outer_rect' . $idcnt,
- style => 'opacity:1.0;fill:#c30000;fill-opacity:1;stroke:#000000;stroke-width:4;stroke-opacity:1;stroke-miterlimit:4',
- width => "96",
- height => '50',
- x => $x + ($con->width / 2) - (96 / 2),
- y => 4 + $level * 70,
- );
-
- $idcnt++;
-
- # render the text
- $l1->text(
- style => 'font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:left;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Trebuchet MS;-inkscape-font-specification:Trebuchet MS',
- x => $x + ($con->width / 2) - (100/2) + 5,
- y => 4 + 15 + $level * 70,
- id => 'title_'.$idcnt,
- )->tspan(style => 'text-align:start;text-anchor:start')->cdata($con->name);
- $idcnt++;
-
- $y = $y + 50;
- my @nodes = $con->nodes;
- my $startx = $x + ($con->width / 2);
-
- for my $node (@nodes) {
- render_svg($node, $level + 1, $x);
- my $mid = $x + ($node->width / 2);
- $l1->path(
- d => 'M ' . $startx . ',' . (4 + $level * 70 + 50) . ' ' . $mid . ',' . (4 + ($level+1) * 70),
- id => 'path' . $idcnt,
- style => 'fill:none;stroke:#000000;stroke-width:2px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1'
- );
- $x += $node->width + 20;
- $idcnt++;
- }
-
-}
-
-$svg->render > io('test.svg');