]> git.sur5r.net Git - i3/i3.github.io/commitdiff
add (versioned) docs for 4.0
authorMichael Stapelberg <michael@stapelberg.de>
Sun, 31 Jul 2011 23:25:23 +0000 (01:25 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Sun, 31 Jul 2011 23:26:52 +0000 (01:26 +0200)
75 files changed:
_docs/Makefile
_docs/debugging
_docs/hacking-howto
_docs/i3-config-wizard.man [new file with mode: 0644]
_docs/i3-input.man [new file with mode: 0644]
_docs/i3-migrate-config-to-v4.man [new file with mode: 0644]
_docs/i3-msg.man [new file with mode: 0644]
_docs/i3-nagbar.man [new file with mode: 0644]
_docs/i3.man
_docs/ipc
_docs/tree-migrating [deleted file]
_docs/userguide
css/style.css
docs/3.e/bigpicture.png [new file with mode: 0644]
docs/3.e/debugging.html [new file with mode: 0644]
docs/3.e/hacking-howto.html [new file with mode: 0644]
docs/3.e/i3.html [new file with mode: 0644]
docs/3.e/i3status.html [new file with mode: 0644]
docs/3.e/ipc.html [new file with mode: 0644]
docs/3.e/keyboard-layer1.png [new file with mode: 0644]
docs/3.e/keyboard-layer2.png [new file with mode: 0644]
docs/3.e/manpage.html [new file with mode: 0644]
docs/3.e/modes.png [new file with mode: 0644]
docs/3.e/multi-monitor.html [new file with mode: 0644]
docs/3.e/refcard.pdf [new file with mode: 0644]
docs/3.e/repositories.html [new file with mode: 0644]
docs/3.e/single_terminal.png [new file with mode: 0644]
docs/3.e/snapping.png [new file with mode: 0644]
docs/3.e/stacklimit.png [new file with mode: 0644]
docs/3.e/tree-layout1.png [new file with mode: 0644]
docs/3.e/tree-layout2.png [new file with mode: 0644]
docs/3.e/tree-migrating.html [new file with mode: 0644]
docs/3.e/tree-shot1.png [new file with mode: 0644]
docs/3.e/tree-shot2.png [new file with mode: 0644]
docs/3.e/tree-shot3.png [new file with mode: 0644]
docs/3.e/tree-shot4.png [new file with mode: 0644]
docs/3.e/two_columns.png [new file with mode: 0644]
docs/3.e/two_terminals.png [new file with mode: 0644]
docs/3.e/userguide.html [new file with mode: 0644]
docs/3.e/wsbar.html [new file with mode: 0644]
docs/3.e/wsbar.png [new file with mode: 0644]
docs/4.0/bigpicture.png [new file with mode: 0644]
docs/4.0/debugging.html [new file with mode: 0644]
docs/4.0/hacking-howto.html [new file with mode: 0644]
docs/4.0/i3-config-wizard.html [new file with mode: 0644]
docs/4.0/i3-migrate-config-to-v4.html [new file with mode: 0644]
docs/4.0/i3-msg.html [new file with mode: 0644]
docs/4.0/i3-nagbar.html [new file with mode: 0644]
docs/4.0/i3.html [new file with mode: 0644]
docs/4.0/i3status.html [new file with mode: 0644]
docs/4.0/ipc.html [new file with mode: 0644]
docs/4.0/keyboard-layer1.png [new file with mode: 0644]
docs/4.0/keyboard-layer1.svg [new file with mode: 0644]
docs/4.0/keyboard-layer2.png [new file with mode: 0644]
docs/4.0/keyboard-layer2.svg [new file with mode: 0644]
docs/4.0/modes.png [new file with mode: 0644]
docs/4.0/multi-monitor.html [new file with mode: 0644]
docs/4.0/refcard.pdf [new file with mode: 0644]
docs/4.0/repositories.html [new file with mode: 0644]
docs/4.0/single_terminal.png [new file with mode: 0644]
docs/4.0/snapping.png [new file with mode: 0644]
docs/4.0/stacklimit.png [new file with mode: 0644]
docs/4.0/tree-layout1.png [new file with mode: 0644]
docs/4.0/tree-layout2.png [new file with mode: 0644]
docs/4.0/tree-shot1.png [new file with mode: 0644]
docs/4.0/tree-shot2.png [new file with mode: 0644]
docs/4.0/tree-shot3.png [new file with mode: 0644]
docs/4.0/tree-shot4.png [new file with mode: 0644]
docs/4.0/two_columns.png [new file with mode: 0644]
docs/4.0/two_terminals.png [new file with mode: 0644]
docs/4.0/userguide.html [new file with mode: 0644]
docs/4.0/wsbar.html [new file with mode: 0644]
docs/4.0/wsbar.png [new file with mode: 0644]
docs/4.0/wsbar.svg [new file with mode: 0644]
docs/index.html.mako

index b94e0ebe4e2f6365c6d12727c00a97cebeb1cfd9..7def7e4105a3bc11348279442212337081d009a4 100644 (file)
@@ -1,5 +1,5 @@
 
-all: hacking-howto.html debugging.html repositories.html userguide.html ipc.html multi-monitor.html wsbar.html tree-migrating.html i3status.html i3.html
+all: hacking-howto.html debugging.html repositories.html userguide.html ipc.html multi-monitor.html wsbar.html i3status.html i3.html i3-config-wizard.html i3-nagbar.html i3-migrate-config-to-v4.html i3-msg.html
 
 hacking-howto.html: hacking-howto
        asciidoc -a linkcss -a stylesdir=/css -a scriptsdir=/js --backend=xhtml11 -f conf/i3html.conf -a toc -n $<
@@ -13,9 +13,6 @@ repositories.html: repositories
 userguide.html: userguide
        asciidoc -a linkcss -a stylesdir=/css -a scriptsdir=/js --backend=xhtml11 -f conf/i3html.conf -a toc -n $<
 
-tree-migrating.html: tree-migrating
-       asciidoc -a linkcss -a stylesdir=/css -a scriptsdir=/js --backend=xhtml11 -f conf/i3html.conf -a toc -n $<
-
 ipc.html: ipc
        asciidoc -a linkcss -a stylesdir=/css -a scriptsdir=/js --backend=xhtml11 -f conf/i3html.conf -a toc -n $<
 
@@ -28,7 +25,7 @@ wsbar.html: wsbar
 i3status.html: i3status.man
        asciidoc -a linkcss -a stylesdir=/css -a scriptsdir=/js --backend=xhtml11 -f conf/i3html.conf -a toc -n $<
 
-i3.html: i3.man
+%.html: %.man
        asciidoc -a linkcss -a stylesdir=/css -a scriptsdir=/js --backend=xhtml11 -f conf/i3html.conf -a toc -n $<
 
 clean:
index d52edea9d02301dcc10ac843abb3901d4f46865a..5e71ecf0c84cca936ec419787ac275eb009cdb1c 100644 (file)
@@ -1,7 +1,7 @@
 Debugging i3: How To
 ====================
 Michael Stapelberg <michael+i3@stapelberg.de>
-March 2010
+July 2011
 
 This document describes how to debug i3 suitably for sending us useful bug
 reports, even if you have no clue of C programming.
@@ -12,14 +12,21 @@ debugging and/or need further help, do not hesitate to contact us!
 
 == Enabling logging
 
-i3 spits out much information onto stdout, if told so. To have a clearly
-defined place where log files will be saved, you should redirect stdout and
-stderr in xsession. While you’re at it, putting each run of i3 in a separate
-log file with date/time in it is a good idea to not get confused about the
-different log files later on.
+i3 logs useful information to stdout. To have a clearly defined place where log
+files will be saved, you should redirect stdout and stderr in your
++~/.xsession+. While you’re at it, putting each run of i3 in a separate log
+file with date/time in its filename is a good idea to not get confused about
+the different log files later on.
 
 --------------------------------------------------------------------
-exec /usr/bin/i3 -V -d all >/home/michael/i3/i3log-$(date +'%F-%k-%M-%S') 2>&1
+exec /usr/bin/i3 >~/i3log-$(date +'%F-%k-%M-%S') 2>&1
+--------------------------------------------------------------------
+
+To enable verbose output and all levels of debug output (required when
+attaching logfiles to bugreports), add the parameters +-V -d all+, like this:
+
+--------------------------------------------------------------------
+exec /usr/bin/i3 -V -d all >~/i3log-$(date +'%F-%k-%M-%S') 2>&1
 --------------------------------------------------------------------
 
 == Enabling core dumps
@@ -29,7 +36,7 @@ of the memory of the i3 process which can be loaded into a debugger). To get a
 core dump, you have to make sure that the user limit for core dump files is set
 high enough. Many systems ship with a default value which even forbids core
 dumps completely. To disable the limit completely and thus enable core dumps,
-use the following command (in your .xsession, before starting i3):
+use the following command (in your +~/.xsession+, before starting i3):
 
 -------------------
 ulimit -c unlimited
@@ -50,9 +57,9 @@ process id (%p) in it. You can save this setting across reboots using
 == Compiling with debug symbols
 
 To actually get useful core dumps, you should make sure that your version of i3
-is compiled with debug symbols, that is, that they are not stripped during the
-build process. You can check whether your executable contains symbols by
-issuing the following command:
+is compiled with debug symbols, that is, that the symbols are not stripped
+during the build process. You can check whether your executable contains
+symbols by issuing the following command:
 
 ----------------
 file $(which i3)
index dff074cbf4bc2a101da7a8e128480d0425dd8aa7..9a7ec9d4547fd1ce421bd81e14b1bcbc5c3ff74d 100644 (file)
@@ -1,7 +1,7 @@
 Hacking i3: How To
 ==================
 Michael Stapelberg <michael+i3@stapelberg.de>
-December 2009
+July 2011
 
 This document is intended to be the first thing you read before looking and/or
 touching i3’s source code. It should contain all important information to help
@@ -65,6 +65,13 @@ the layout you need at the moment.
 
 === The layout table
 
+*********************************************************************************
+This section has not been updated for v4.0 yet, sorry! We wanted to release on
+time, but we will update this soon. Please talk to us on IRC if you need to
+know stuff *NOW* :).
+*********************************************************************************
+
+/////////////////////////////////////////////////////////////////////////////////
 To accomplish flexible layouts, we decided to simply use a table. The table
 grows and shrinks as you need it. Each cell holds a container which then holds
 windows (see picture below). You can use different layouts for each container
@@ -106,9 +113,15 @@ window).
 |========
 
 Furthermore, you can freely resize table cells.
+/////////////////////////////////////////////////////////////////////////////////
 
 == Files
 
+include/atoms.xmacro::
+A file containing all X11 atoms which i3 uses. This file will be included
+various times (for defining, requesting and receiving the atoms), each time
+with a different definition of xmacro().
+
 include/data.h::
 Contains data definitions used by nearly all files. You really need to read
 this first.
@@ -128,19 +141,27 @@ src/click.c::
 Contains all functions which handle mouse button clicks (right mouse button
 clicks initiate resizing and thus are relatively complex).
 
-src/client.c::
-Contains all functions which are specific to a certain client (make it
-fullscreen, see if its class/name matches a pattern, kill it, …).
+src/cmdparse.l::
+Contains the lexer for i3 commands, written for +flex(1)+.
+
+src/cmdparse.y::
+Contains the parser for i3 commands, written for +bison(1)+.
 
-src/commands.c::
-Parsing commands and actually executing them (focusing, moving, …).
+src/con.c::
+Contains all functions which deal with containers directly (creating
+containers, searching containers, getting specific properties from containers,
+…).
 
 src/config.c::
-Parses the configuration file.
+Contains all functions handling the configuration file (calling the parser
+(src/cfgparse.y) with the correct path, switching key bindings mode).
 
 src/debug.c::
 Contains debugging functions to print unhandled X events.
 
+src/ewmh.c::
+iFunctions to get/set certain EWMH properties easily.
+
 src/floating.c::
 Contains functions for floating mode (mostly resizing/dragging).
 
@@ -151,69 +172,123 @@ unmapping, key presses, button presses, …).
 src/ipc.c::
 Contains code for the IPC interface.
 
-src/layout.c::
-Renders your layout (screens, workspaces, containers).
+src/load_layout.c::
+Contains code for loading layouts from JSON files.
+
+src/log.c::
+Handles the setting of loglevels, contains the logging functions.
 
-src/mainx.c::
+src/main.c::
 Initializes the window manager.
 
 src/manage.c::
 Looks at existing or new windows and decides whether to manage them. If so, it
 reparents the window and inserts it into our data structures.
 
+src/match.c::
+A "match" is a data structure which acts like a mask or expression to match
+certain windows or not. For example, when using commands, you can specify a
+command like this: [title="*Firefox*"] kill. The title member of the match
+data structure will then be filled and i3 will check each window using
+match_matches_window() to find the windows affected by this command.
+
+src/move.c::
+Contains code to move a container in a specific direction.
+
+src/output.c::
+Functions to handle CT_OUTPUT cons.
+
+src/randr.c::
+The RandR API is used to get (and re-query) the configured outputs (monitors,
+…).
+
+src/render.c::
+Renders the tree data structure by assigning coordinates to every node. These
+values will later be pushed to X11 in +src/x.c+.
+
 src/resize.c::
-Contains the functions to resize columns/rows in the table.
+Contains the functions to resize containers.
+
+src/sighandler.c::
+Handles +SIGSEGV+, +SIGABRT+ and +SIGFPE+ by showing a dialog that i3 crashed.
+You can chose to let it dump core, to restart it in-place or to restart it
+in-place but forget about the layout.
 
-src/table.c::
-Manages the most important internal data structure, the design table.
+src/tree.c::
+Contains functions which open or close containers in the tree, change focus or
+cleanup ("flatten") the tree. See also +src/move.c+ for another similar
+function, which was moved into its own file because it is so long.
 
 src/util.c::
 Contains useful functions which are not really dependant on anything.
 
+src/window.c::
+Handlers to update X11 window properties like +WM_CLASS+, +_NET_WM_NAME+,
++CLIENT_LEADER+, etc.
+
 src/workspace.c::
 Contains all functions related to workspaces (displaying, hiding, renaming…)
 
+src/x.c::
+Transfers our in-memory tree (see +src/render.c+) to X11.
+
 src/xcb.c::
 Contains wrappers to use xcb more easily.
 
+src/xcursor.c::
+XCursor functions (for cursor themes).
+
 src/xinerama.c::
-(Re-)initializes the available screens and converts them to virtual screens
-(see below).
+Legacy support for Xinerama. See +src/randr.c+ for the preferred API.
 
 == Data structures
 
+*********************************************************************************
+This section has not been updated for v4.0 yet, sorry! We wanted to release on
+time, but we will update this soon. Please talk to us on IRC if you need to
+know stuff *NOW* :).
+*********************************************************************************
+
+/////////////////////////////////////////////////////////////////////////////////
+
 See include/data.h for documented data structures. The most important ones are
 explained right here.
 
 image:bigpicture.png[The Big Picture]
 
+/////////////////////////////////////////////////////////////////////////////////
+
 So, the hierarchy is:
 
+. *X11 root window*, the root container
 . *Virtual screens* (Screen 0 in this example)
-. *Workspaces* (Workspace 1 in this example)
-. *Table* (There can only be one table per Workspace)
-. *Container* (left and right in this example)
-. *Client* (The two clients in the left container)
+. *Content container* (there are also containers for dock windows)
+. *Workspaces* (Workspace 1 in this example, with horizontal orientation)
+. *Split container* (vertically split)
+. *X11 window containers*
+
+The data type is +Con+, in all cases.
 
 === Virtual screens
 
-A virtual screen (type `i3Screen`) is generated from the connected screens
-obtained through Xinerama. The difference to the raw Xinerama monitors as seen
+A virtual screen (type `i3Screen`) is generated from the connected outputs
+obtained through RandR. The difference to the raw RandR outputs as seen
 when using +xrandr(1)+ is that it falls back to the lowest common resolution of
-the logical screens.
+the actual enabled outputs.
 
-For example, if your notebook has 1280x800 and you connect a video projector
-with 1024x768, set up in clone mode (+xrandr \--output VGA \--mode 1024x768
-\--same-as LVDS+), i3 will have one virtual screen.
+For example, if your notebook has a screen resolution of 1280x800 px and you
+connect a video projector with a resolution of 1024x768 px, set it up in clone
+mode (+xrandr \--output VGA1 \--mode 1024x768 \--same-as LVDS1+), i3 will have
+one virtual screen.
 
-However, if you configure it using +xrandr \--output VGA \--mode 1024x768
-\--right-of LVDS+, i3 will generate two virtual screens. For each virtual
+However, if you configure it using +xrandr \--output VGA1 \--mode 1024x768
+\--right-of LVDS1+, i3 will generate two virtual screens. For each virtual
 screen, a new workspace will be assigned. New workspaces are created on the
 screen you are currently on.
 
 === Workspace
 
-A workspace is identified by its number. Basically, you could think of
+A workspace is identified by its name. Basically, you could think of
 workspaces as different desks in your office, if you like the desktop
 methaphor. They just contain different sets of windows and are completely
 separate of each other. Other window managers also call this ``Virtual
@@ -221,18 +296,38 @@ desktops''.
 
 === The layout table
 
+*********************************************************************************
+This section has not been updated for v4.0 yet, sorry! We wanted to release on
+time, but we will update this soon. Please talk to us on IRC if you need to
+know stuff *NOW* :).
+*********************************************************************************
+
+/////////////////////////////////////////////////////////////////////////////////
+
 Each workspace has a table, which is just a two-dimensional dynamic array
 containing Containers (see below). This table grows and shrinks as you need it
 (by moving windows to the right you can create a new column in the table, by
 moving them to the bottom you create a new row).
 
+/////////////////////////////////////////////////////////////////////////////////
+
 === Container
 
+*********************************************************************************
+This section has not been updated for v4.0 yet, sorry! We wanted to release on
+time, but we will update this soon. Please talk to us on IRC if you need to
+know stuff *NOW* :).
+*********************************************************************************
+
+/////////////////////////////////////////////////////////////////////////////////
+
 A container is the content of a table’s cell. It holds an arbitrary amount of
 windows and has a specific layout (default layout, stack layout or tabbed
 layout). Containers can consume multiple table cells by modifying their
 colspan/rowspan attribute.
 
+/////////////////////////////////////////////////////////////////////////////////
+
 === Client
 
 A client is x11-speak for a window.
@@ -244,11 +339,11 @@ ensure that the operating system on which i3 is compiled has all the expected
 features, i3 comes with `include/queue.h`. On BSD systems, you can use man
 `queue(3)`. On Linux, you have to use google (or read the source).
 
-The lists used are `SLIST` (single linked lists), `CIRCLEQ` (circular
-queues) and TAILQ (tail queues). Usually, only forward traversal is necessary,
+The lists used are +SLIST+ (single linked lists), +CIRCLEQ+ (circular
+queues) and +TAILQ+ (tail queues). Usually, only forward traversal is necessary,
 so an `SLIST` works fine. If inserting elements at arbitrary positions or at
-the end of a list is necessary, a `TAILQ` is used instead. However, for the
-windows inside a container, a `CIRCLEQ` is necessary to go from the currently
+the end of a list is necessary, a +TAILQ+ is used instead. However, for the
+windows inside a container, a +CIRCLEQ+ is necessary to go from the currently
 selected window to the window above/below.
 
 == Naming conventions
@@ -258,14 +353,14 @@ should be chosen for those:
 
  * ``conn'' is the xcb_connection_t
  * ``event'' is the event of the particular type
- * ``container'' names a container
- * ``client'' names a client, for example when using a +CIRCLEQ_FOREACH+
+ * ``con'' names a container
+ * ``current'' is a loop variable when using +TAILQ_FOREACH+ etc.
 
 == Startup (src/mainx.c, main())
 
  * Establish the xcb connection
- * Check for XKB extension on the separate X connection
- * Check for Xinerama screens
+ * Check for XKB extension on the separate X connection, load Xcursor
+ * Check for RandR screens (with a fall-back to Xinerama)
  * Grab the keycodes for which bindings exist
  * Manage all existing windows
  * Enter the event loop
@@ -303,9 +398,10 @@ the correct state.
 Then, it looks through all bindings and gets the one which matches the received
 event.
 
-The bound command is parsed directly in command mode.
+The bound command is parsed by the cmdparse lexer/parser, see +parse_cmd+ in
++src/cmdparse.y+.
 
-== Manage windows (src/mainx.c, manage_window() and reparent_window())
+== Manage windows (src/main.c, manage_window() and reparent_window())
 
 `manage_window()` does some checks to decide whether the window should be
 managed at all:
@@ -325,7 +421,7 @@ After reparenting, the window type (`_NET_WM_WINDOW_TYPE`) is checked to see
 whether this window is a dock (`_NET_WM_WINDOW_TYPE_DOCK`), like dzen2 for
 example. Docks are handled differently, they don’t have decorations and are not
 assigned to a specific container. Instead, they are positioned at the bottom
-of the screen. To get the height which needsd to be reserved for the window,
+of the screen. To get the height which needs to be reserved for the window,
 the `_NET_WM_STRUT_PARTIAL` property is used.
 
 Furthermore, the list of assignments (to other workspaces, which may be on
@@ -339,7 +435,7 @@ i3 does not care for applications. All it notices is when new windows are
 mapped (see `src/handlers.c`, `handle_map_request()`). The window is then
 reparented (see section "Manage windows").
 
-After reparenting the window, `render_layout()` is called which renders the
+After reparenting the window, `render_tree()` is called which renders the
 internal layout table. The new window has been placed in the currently focused
 container and therefore the new window and the old windows (if any) need to be
 moved/resized so that the currently active layout (default/stacking/tabbed mode)
@@ -388,6 +484,15 @@ src/layout.c, function resize_client().
 
 == Rendering (src/layout.c, render_layout() and render_container())
 
+*********************************************************************************
+This section has not been updated for v4.0 yet, sorry! We wanted to release on
+time, but we will update this soon. Please talk to us on IRC if you need to
+know stuff *NOW* :).
+*********************************************************************************
+
+/////////////////////////////////////////////////////////////////////////////////
+
+
 There are several entry points to rendering: `render_layout()`,
 `render_workspace()` and `render_container()`. The former one calls
 `render_workspace()` for every screen, which in turn will call
@@ -460,7 +565,18 @@ floating windows:
 * The new width_factor for each involved column (respectively row) will be
   calculated.
 
-== User commands / commandmode (src/commands.c)
+/////////////////////////////////////////////////////////////////////////////////
+
+== User commands / commandmode (src/cmdparse.{l,y})
+
+*********************************************************************************
+This section has not been updated for v4.0 yet, sorry! We wanted to release on
+time, but we will update this soon. Please talk to us on IRC if you need to
+know stuff *NOW* :).
+*********************************************************************************
+
+/////////////////////////////////////////////////////////////////////////////////
+
 
 Like in vim, you can control i3 using commands. They are intended to be a
 powerful alternative to lots of shortcuts, because they can be combined. There
@@ -485,6 +601,148 @@ j, k and l, like in vim (h = left, j = down, k = up, l = right). When you just
 specify the direction keys, i3 will move the focus in that direction. You can
 provide "m" or "s" before the direction to move a window respectively or snap.
 
+/////////////////////////////////////////////////////////////////////////////////
+
+== Moving containers
+
+The movement code is pretty delicate. You need to consider all cases before
+making any changes or before being able to fully understand how it works.
+
+=== Case 1: Moving inside the same container
+
+The reference layout for this case is a single workspace in horizontal
+orientation with two containers on it. Focus is on the left container (1).
+
+
+[width="15%",cols="^,^"]
+|========
+| 1 | 2
+|========
+
+When moving the left window to the right (command +move right+), tree_move will
+look for a container with horizontal orientation and finds the parent of the
+left container, that is, the workspace. Afterwards, it runs the code branch
+commented with "the easy case": it calls TAILQ_NEXT to get the container right
+of the current one and swaps both containers.
+
+=== Case 2: Move a container into a split container
+
+The reference layout for this case is a horizontal workspace with two
+containers. The right container is a v-split with two containers. Focus is on
+the left container (1).
+
+[width="15%",cols="^,^"]
+|========
+1.2+^.^| 1 | 2
+| 3
+|========
+
+When moving to the right (command +move right+), i3 will work like in case 1
+("the easy case"). However, as the right container is not a leaf container, but
+a v-split, the left container (1) will be inserted at the right position (below
+2, assuming that 2 is focused inside the v-split) by calling +insert_con_into+.
+
++insert_con_into+ detaches the container from its parent and inserts it
+before/after the given target container. Afterwards, the on_remove_child
+callback is called on the old parent container which will then be closed, if
+empty.
+
+Afterwards, +con_focus+ will be called to fix the focus stack and the tree will
+be flattened.
+
+=== Case 3: Moving to non-existant top/bottom
+
+Like in case 1, the reference layout for this case is a single workspace in
+horizontal orientation with two containers on it. Focus is on the left
+container:
+
+[width="15%",cols="^,^"]
+|========
+| 1 | 2
+|========
+
+This time however, the command is +move up+ or +move down+. tree_move will look
+for a container with vertical orientation. As it will not find any,
++same_orientation+ is NULL and therefore i3 will perform a forced orientation
+change on the workspace by creating a new h-split container, moving the
+workspace contents into it and then changing the workspace orientation to
+vertical. Now it will again search for parent containers with vertical
+orientation and it will find the workspace.
+
+This time, the easy case code path will not be run as we are not moving inside
+the same container. Instead, +insert_con_into+ will be called with the focused
+container and the container above/below the current one (on the level of
++same_orientation+).
+
+Now, +con_focus+ will be called to fix the focus stack and the tree will be
+flattened.
+
+=== Case 4: Moving to existant top/bottom
+
+The reference layout for this case is a vertical workspace with two containers.
+The bottom one is a h-split containing two containers (1 and 2). Focus is on
+the bottom left container (1).
+
+[width="15%",cols="^,^"]
+|========
+2+| 3
+| 1 | 2
+|========
+
+This case is very much like case 3, only this time the forced workspace
+orientation change does not need to be performed because the workspace already
+is in vertical orientation.
+
+=== Case 5: Moving in one-child h-split
+
+The reference layout for this case is a horizontal workspace with two
+containers having a v-split on the left side with a one-child h-split on the
+bottom. Focus is on the bottom left container (2(h)):
+
+[width="15%",cols="^,^"]
+|========
+| 1 1.2+^.^| 3
+| 2(h)
+|========
+
+In this case, +same_orientation+ will be set to the h-split container around
+the focused container. However, when trying the easy case, the next/previous
+container +swap+ will be NULL. Therefore, i3 will search again for a
++same_orientation+ container, this time starting from the parent of the h-split
+container.
+
+After determining a new +same_orientation+ container (if it is NULL, the
+orientation will be force-changed), this case is equivalent to case 2 or case
+4.
+
+
+=== Case 6: Floating containers
+
+The reference layout for this case is a horizontal workspace with two
+containers plus one floating h-split container. Focus is on the floating
+container.
+
+TODO: nice illustration. table not possible?
+
+When moving up/down, the container needs to leave the floating container and it
+needs to be placed on the workspace (at workspace level). This is accomplished
+by calling the function +attach_to_workspace+.
+
+== Click handling
+
+Without much ado, here is the list of cases which need to be considered:
+
+* click to focus (tiling + floating) and raise (floating)
+* click to focus/raise when in stacked/tabbed mode
+* floating_modifier + left mouse button to drag a floating con
+* floating_modifier + right mouse button to resize a floating con
+* click on decoration in a floating con to either initiate a resize (if there
+  is more than one child in the floating con) or to drag the
+  floating con (if it’s the one at the top).
+* click on border in a floating con to resize the floating con
+* floating_modifier + right mouse button to resize a tiling con
+* click on border/decoration to resize a tiling con
+
 == Gotchas
 
 * Forgetting to call `xcb_flush(conn);` after sending a request. This usually
diff --git a/_docs/i3-config-wizard.man b/_docs/i3-config-wizard.man
new file mode 100644 (file)
index 0000000..5a9ca39
--- /dev/null
@@ -0,0 +1,41 @@
+i3-config-wizard(1)
+===================
+Michael Stapelberg <michael+i3@stapelberg.de>
+v4.0, July 2011
+
+== NAME
+
+i3-config-wizard - creates a keysym based config based on your layout
+
+== SYNOPSIS
+
+i3-config-wizard
+
+== FILES
+
+=== /etc/i3/config.keycodes
+
+This file contains the default configuration with keycodes. All the bindcode
+lines will be transformed to bindsym and the user-specified modifier will be
+used.
+
+== DESCRIPTION
+
+i3-config-wizard is started by i3 in its default config, unless ~/.i3/config
+exists. i3-config-wizard creates a keysym based i3 config file (based on
+/etc/i3/config.keycodes) in ~/.i3/config.
+
+The advantage of using keysyms is that the config file is easy to read,
+understand and modify. However, if we shipped with a keysym based default
+config file, the key positions would not be consistent across different
+keyboard layouts (take for example the homerow for movement). Therefore, we
+ship with a keycode based default config and let the wizard transform it
+according to your current keyboard layout.
+
+== SEE ALSO
+
+i3(1)
+
+== AUTHOR
+
+Michael Stapelberg and contributors
diff --git a/_docs/i3-input.man b/_docs/i3-input.man
new file mode 100644 (file)
index 0000000..cd85c92
--- /dev/null
@@ -0,0 +1,40 @@
+i3-input(1)
+=========
+Michael Stapelberg <michael+i3@stapelberg.de>
+v3.delta, November 2009
+
+== NAME
+
+i3-input - interactively take a command for i3 window manager
+
+== SYNOPSIS
+
+i3-input [-s <socket>] [-p <prefix>] [-l <limit>] [-P <prompt>] [-f <font>] [-v]
+
+== DESCRIPTION
+
+i3-input is a tool to take commands (or parts of a command) composed by
+the user, and send it/them to i3. This is useful, for example, for the
+mark/goto command.
+
+== EXAMPLE
+
+------------------------------------------------
+i3-input -p 'mark ' -l 1 -P 'Mark: '
+------------------------------------------------
+
+== ENVIRONMENT
+
+=== I3SOCK
+
+If no ipc-socket is specified on the commandline, this variable is used
+to determine the path, at wich the unix domain socket is expected, on which
+to connect to i3.
+
+== SEE ALSO
+
+i3(1)
+
+== AUTHOR
+
+Michael Stapelberg and contributors
diff --git a/_docs/i3-migrate-config-to-v4.man b/_docs/i3-migrate-config-to-v4.man
new file mode 100644 (file)
index 0000000..1d2b13f
--- /dev/null
@@ -0,0 +1,34 @@
+i3-migrate-config-to-v4(1)
+==========================
+Michael Stapelberg <michael+i3@stapelberg.de>
+v4.0, July 2011
+
+== NAME
+
+i3-migrate-config-to-v4 - migrates your i3 config file
+
+== SYNOPSIS
+
+-------------------------------------------------------
+mv ~/.i3/config ~/.i3/old.config
+i3-migrate-config-to-v4 ~/.i3/old.config > ~/.i3/config
+-------------------------------------------------------
+
+== DESCRIPTION
+
+i3-migrate-config-to-v4 is a Perl script which migrates your old (< version 4)
+configuration files to a version 4 config file. The most significant changes
+are the new commands (see the release notes).
+
+This script will automatically be run by i3 when it detects an old config file.
+Please migrate your config file as soon as possible. We plan to include this
+script in all i3 release until 2012-08-01. Afterwards, old config files will no
+longer be supported.
+
+== SEE ALSO
+
+i3(1)
+
+== AUTHOR
+
+Michael Stapelberg and contributors
diff --git a/_docs/i3-msg.man b/_docs/i3-msg.man
new file mode 100644 (file)
index 0000000..116195b
--- /dev/null
@@ -0,0 +1,41 @@
+i3-msg(1)
+=========
+Michael Stapelberg <michael+i3@stapelberg.de>
+v3.delta, November 2009
+
+== NAME
+
+i3-msg - send messages to i3 window manager
+
+== SYNOPSIS
+
+i3-msg "message"
+
+== DESCRIPTION
+
+i3-msg is a sample implementation for a client using the unix socket IPC
+interface to i3. At the moment, it can only be used for sending commands
+(like in configuration file for key bindings), but this may change in the
+future (staying backwards-compatible, of course).
+
+== EXAMPLE
+
+------------------------------------------------
+i3-msg "bp" # Use 1-px border for current client
+------------------------------------------------
+
+== ENVIRONMENT
+
+=== I3SOCK
+
+If no ipc-socket is specified on the commandline, this variable is used
+to determine the path, at wich the unix domain socket is expected, on which
+to connect to i3.
+
+== SEE ALSO
+
+i3(1)
+
+== AUTHOR
+
+Michael Stapelberg and contributors
diff --git a/_docs/i3-nagbar.man b/_docs/i3-nagbar.man
new file mode 100644 (file)
index 0000000..3dd37bb
--- /dev/null
@@ -0,0 +1,34 @@
+i3-nagbar(1)
+============
+Michael Stapelberg <michael+i3@stapelberg.de>
+v4.0, July 2011
+
+== NAME
+
+i3-nagbar - displays an error bar on top of your screen
+
+== SYNOPSIS
+
+i3-nagbar -m 'message' -b 'label' 'action'
+
+== DESCRIPTION
+
+i3-nagbar is used by i3 to tell you about errors in your configuration file
+(for example). While these errors are logged to the logfile (if any), the past
+has proven that users are either not aware of their logfile or do not check it
+after modifying the configuration file.
+
+== EXAMPLE
+
+------------------------------------------------
+i3-nagbar -m 'You have an error in your i3 config file!' \
+-b 'edit config' 'xterm $EDITOR ~/.i3/config'
+------------------------------------------------
+
+== SEE ALSO
+
+i3(1)
+
+== AUTHOR
+
+Michael Stapelberg and contributors
index 109248e57d6958494920c6f0b8a8b5d38c3f821c..868ff8ccd4f601ed0b628d72a86d76b1971c623b 100644 (file)
@@ -1,7 +1,7 @@
 i3(1)
 =====
 Michael Stapelberg <michael+i3@stapelberg.de>
-v3.epsilon, March 2010
+v4.0, July 2011
 
 == NAME
 
@@ -47,7 +47,7 @@ Please be aware that i3 is primarily targeted at advanced users and developers.
 === IMPORTANT NOTE TO nVidia BINARY DRIVER USERS
 
 If you are using the nVidia binary graphics driver (also known as 'blob')
-you need to use the +--force-xinerama+ flag (in your .xsession) when starting
+you need to use the +--force-xinerama+ flag (in your ~/.xsession) when starting
 i3, like so:
 
 ----------------------------------------------
@@ -58,26 +58,21 @@ See also docs/multi-monitor for the full explanation.
 
 === TERMINOLOGY
 
-Client::
-A client is X11-speak for a window.
+Tree::
+i3 keeps your layout in a tree data structure.
 
-Table::
-Your workspace is managed using a table. You can move windows around and create
-new columns (move a client to the right) or rows (move it to the bottom)
-implicitly.
-+
-By "snapping" a client in a specific direction, you increase its colspan/rowspan.
+Window::
+An X11 window, like the Firefox browser window or a terminal emulator.
 
-Container::
-A container contains a variable number of clients. Each cell of the table is a
-container.
+Split container::
+A split container contains multiple other split containers or windows.
 +
-Containers can be used in various modes. The default mode is called "default"
+Containers can be used in various layouts. The default mode is called "default"
 and just resizes each client equally so that it fits.
 
 Workspace::
-A workspace is a set of clients (technically speaking, it’s just a table).
-Other window managers call this "Virtual Desktops".
+A workspace is a set of containers. Other window managers call this "Virtual
+Desktops".
 +
 In i3, each workspace is assigned to a specific virtual screen. By default,
 screen 1 has workspace 1, screen 2 has workspace 2 and so on… However, when you
@@ -103,18 +98,9 @@ on your "j" key). Alternatively, you can use the cursor keys.
 Mod1+<direction>::
 Focus window in <direction>.
 
-Mod3+<direction>::
-Focus container in <direction>.
-
 Mod1+Shift+<direction>::
 Move window to <direction>.
 
-Mod3+Shift+<direction>::
-Move container to <direction>.
-
-Mod1+Control+<direction>::
-Snap container to <direction>.
-
 Mod1+<number>::
 Switch to workspace <number>.
 
@@ -124,17 +110,21 @@ Move window to workspace <number>.
 Mod1+f::
 Toggle fullscreen mode.
 
-Mod1+h::
+Mod1+s::
 Enable stacking layout for the current container.
 
 Mod1+e::
 Enable default layout for the current container.
 
+Mod1+w::
+Enable tabbed layout for the current container.
+
 Mod1+Shift+Space::
-Toggle tiling/floating for the current window.
+Toggle tiling/floating for the current container.
 
-Mod1+t::
-Select the first tiling window if the current window is floating and vice-versa.
+Mod1+Space::
+Select the first tiling container if the current container is floating and
+vice-versa.
 
 Mod1+Shift+q::
 Kills the current window. This is equivalent to "clicking on the close button",
@@ -144,8 +134,7 @@ support that, the window will be killed and it depends on the application what
 happens.
 
 Mod1+Shift+r::
-Restarts i3 in place (without losing any windows, but at this time, the layout
-and placement of windows is not retained).
+Restarts i3 in place. Your layout will be preserved.
 
 Mod1+Shift+e::
 Exits i3.
@@ -165,88 +154,93 @@ You can specify a custom path using the -c option.
 
 .Sample configuration
 -------------------------------------------------------------
+# i3 config file (v4)
+
+# font for window titles. ISO 10646 = Unicode
 font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
 
-# Start terminal (Mod1+Enter)
-bind Mod1+36 exec /usr/bin/urxvt
+# use Mouse+Mod1 to drag floating windows to their wanted position
+floating_modifier Mod1
 
-# Start dmenu (Mod1+v)
-bind Mod1+55 exec /usr/bin/dmenu_run
+# start a terminal
+bindsym Mod1+Return exec /usr/bin/urxvt
 
-# Kill current client (Mod1+Shift+q)
-bind Mod1+Shift+24 kill
+# kill focused window
+bindsym Mod1+Shift+q kill
 
-# Beamer on/off
-bind Mod1+73 exec /home/michael/toggle_beamer.sh
+# start dmenu (a program launcher)
+bindsym Mod1+d exec /usr/bin/dmenu_run
 
-# Screen locking
-bind Mod1+68 exec /usr/bin/i3lock
+# change focus
+bindsym Mod1+j focus left
+bindsym Mod1+k focus down
+bindsym Mod1+l focus up
+bindsym Mod1+semicolon focus right
 
-# Restart i3 inplace (Mod1+Shift+r)
-bind Mod1+Shift+27 restart
+# alternatively, you can use the cursor keys:
+bindsym Mod1+Left focus left
+bindsym Mod1+Down focus down
+bindsym Mod1+Up focus up
+bindsym Mod1+Right focus right
 
-# Exit i3 (Mod1+Shift+e)
-bind Mod1+Shift+26 exit
+# move focused window
+bindsym Mod1+Shift+j move left
+bindsym Mod1+Shift+k move down
+bindsym Mod1+Shift+l move up
+bindsym Mod1+Shift+semicolon move right
 
-# Brightness
-bind Mod1+97 exec sudo sh -c "echo up > /proc/acpi/ibm/brightness"
-bind Mod1+103 exec sudo sh -c "echo down > /proc/acpi/ibm/brightness"
+# alternatively, you can use the cursor keys:
+bindsym Mod1+Shift+Left move left
+bindsym Mod1+Shift+Down move down
+bindsym Mod1+Shift+Up move up
+bindsym Mod1+Shift+Right move right
 
-# Fullscreen (Mod1+f)
-bind Mod1+41 f
+# split in horizontal orientation
+bindsym Mod1+h split h
 
-# Stacking (Mod1+h)
-bind Mod1+43 s
+# split in vertical orientation
+bindsym Mod1+v split v
 
-# Default (Mod1+e)
-bind Mod1+26 d
+# enter fullscreen mode for the focused container
+bindsym Mod1+f fullscreen
 
-# Toggle tiling/floating of the current window (Mod1+Shift+Space)
-bind Mod1+Shift+65 t
+# change container layout (stacked, tabbed, default)
+bindsym Mod1+s layout stacking
+bindsym Mod1+w layout tabbed
+bindsym Mod1+e layout default
 
-# Go into the tiling layer / floating layer, depending on whether
-# the current window is tiling / floating (Mod1+t)
-bind Mod1+28 focus ft
+# toggle tiling / floating
+bindsym Mod1+Shift+space floating toggle
 
-# Focus (Mod1+j/k/l/;)
-bind Mod1+44 h
-bind Mod1+45 j
-bind Mod1+46 k
-bind Mod1+47 l
+# change focus between tiling / floating windows
+bindsym Mod1+space focus mode_toggle
 
-# Focus Container (Mod3+j/k/l/;)
-bind Mod3+44 wch
-bind Mod3+45 wcj
-bind Mod3+46 wck
-bind Mod3+47 wcl
+# focus the parent container
+bindsym Mod1+a focus parent
 
-# Snap (Mod1+Control+j/k/l/;)
-bind Mod1+Control+44 sh
-bind Mod1+Control+45 sj
-bind Mod1+Control+46 sk
-bind Mod1+Control+47 sl
+# focus the child container
+#bindsym Mod1+d focus child
 
-# Move (Mod1+Shift+j/k/l/;)
-bind Mod1+Shift+44 mh
-bind Mod1+Shift+45 mj
-bind Mod1+Shift+46 mk
-bind Mod1+Shift+47 ml
+# switch to workspace
+bindsym Mod1+1 workspace 1
+bindsym Mod1+2 workspace 2
+# ..
 
-# Move Container (Mod3+Shift+j/k/l/;)
-bind Mod3+Shift+44 wcmh
-bind Mod3+Shift+45 wcmj
-bind Mod3+Shift+46 wcmk
-bind Mod3+Shift+47 wcml
+# move focused container to workspace
+bindsym Mod1+Shift+1 move workspace 1
+bindsym Mod1+Shift+2 move workspace 2
+# ...
 
-# Workspaces
-bind Mod1+10 1
-bind Mod1+11 2
-...
+# reload the configuration file
+bindsym Mod1+Shift+c reload
+# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
+bindsym Mod1+Shift+r restart
+# exit i3 (logs you out of your X session)
+bindsym Mod1+Shift+e exit
 
-# Move to Workspace
-bind Mod1+Shift+10 1
-bind Mod1+Shift+11 2
-...
+# Start i3bar to display a workspace bar (plus the system information i3status
+# finds out, if available)
+exec i3status | i3bar -d
 -------------------------------------------------------------
 
 === ~/.xsession
@@ -257,7 +251,7 @@ your login manager (xdm, slim, gdm, …) as soon as you login.
 .Sample xsession
 -------------------------------------------------------------
 # Disable DPMS turning off the screen
-xset dpms force on
+xset -dpms
 xset s off
 
 # Disable bell
@@ -294,6 +288,15 @@ echo "Starting at $(date)" >> ~/.i3/logfile
 exec /usr/bin/i3 -V -d all >> ~/.i3/logfile
 -------------------------------------------------------------
 
+== ENVIRONMENT
+
+=== I3SOCK
+
+This variable overwrites the IPC socket path (placed in
+/tmp/i3-%u/ipc-socket.%p by default, where %u is replaced with your UNIX
+username and %p is replaced with i3’s PID). The IPC socket is used by external
+programs like i3-msg(1) or i3bar(1).
+
 == TODO
 
 There is still lot of work to do. Please check our bugtracker for up-to-date
@@ -308,7 +311,8 @@ and the "how to hack" guide. If you are building from source, run:
 
 You can also access these documents online at http://i3.zekjur.net/
 
-i3-input(1), i3-msg(1), i3-wsbar(1)
+i3-input(1), i3-msg(1), i3-wsbar(1), i3-nagbar(1), i3-config-wizard(1),
+i3-migrate-config-to-v4(1)
 
 == AUTHOR
 
index 5db6f00e55653f597ed4d8cd8c1f565b408e52c3..7e71326022606aa2b4d1abf93d4d77d3c448fe1a 100644 (file)
--- a/_docs/ipc
+++ b/_docs/ipc
@@ -10,9 +10,12 @@ workspace bar.
 
 The method of choice for IPC in our case is a unix socket because it has very
 little overhead on both sides and is usually available without headaches in
-most languages. In the default configuration file, no ipc-socket path is
-specified and thus no socket is created. The standard path (which +i3-msg+ and
-+i3-input+ use) is +~/.i3/ipc.sock+.
+most languages. In the default configuration file, the ipc-socket gets created
+in +/tmp/i3-%u/ipc-socket.%p+ where +%u+ is your UNIX username and +%p+ is the
+PID of i3.
+
+All i3 utilities, like +i3-msg+ and +i3-input+ will read the +I3_SOCKET_PATH+
+X11 property, stored on the X11 root window.
 
 == Establishing a connection
 
@@ -21,7 +24,7 @@ snippet illustrates this in Perl:
 
 -------------------------------------------------------------
 use IO::Socket::UNIX;
-my $sock = IO::Socket::UNIX->new(Peer => '~/.i3/ipc.sock');
+my $sock = IO::Socket::UNIX->new(Peer => '/tmp/i3-ipc.sock');
 -------------------------------------------------------------
 
 == Sending messages to i3
@@ -52,6 +55,10 @@ SUBSCRIBE (2)::
 GET_OUTPUTS (3)::
        Gets the current outputs. The reply will be a JSON-encoded list of outputs
        (see the reply section).
+GET_TREE (4)::
+       Gets the layout tree. i3 uses a tree as data structure which includes
+       every container. The reply will be the JSON-encoded tree (see the reply
+       section).
 
 So, a typical message could look like this:
 --------------------------------------------------
@@ -101,6 +108,8 @@ SUBSCRIBE (2)::
        Confirmation/Error code for the SUBSCRIBE message.
 GET_OUTPUTS (3)::
        Reply to the GET_OUTPUTS message.
+GET_TREE (4)::
+       Reply to the GET_TREE message.
 
 === COMMAND reply
 
@@ -226,6 +235,190 @@ rect (map)::
 ]
 -------------------
 
+=== GET_TREE reply
+
+The reply consists of a serialized tree. Each node in the tree (representing
+one container) has at least the properties listed below. While the nodes might
+have more properties, please do not use any properties which are not documented
+here. They are not yet finalized and will probably change!
+
+id (integer)::
+       The internal ID (actually a C pointer value) of this container. Do not
+       make any assumptions about it. You can use it to (re-)identify and
+       address containers when talking to i3.
+name (string)::
+       The internal name of this container. For all containers which are part
+       of the tree structure down to the workspace contents, this is set to a
+       nice human-readable name of the container.
+       For all other containers, the content is not defined (yet).
+border (string)::
+       Can be either "normal", "none" or "1pixel", dependending on the
+       container’s border style.
+layout (string)::
+       Can be either "default", "stacked", "tabbed", "dockarea" or "output".
+       Other values might be possible in the future, should we add new
+       layouts.
+orientation (string)::
+       Can be either "none" (for non-split containers), "horizontal" or
+       "vertical".
+percent (float)::
+       The percentage which this container takes in its parent. A value of
+       +null+ means that the percent property does not make sense for this
+       container, for example for the root container.
+rect (map)::
+       The absolute display coordinates for this container. Display
+       coordinates means that when you have two 1600x1200 monitors on a single
+       X11 Display (the standard way), the coordinates of the first window on
+       the second monitor are +{ "x": 1600, "y": 0, "width": 1600, "height":
+       1200 }+.
+window_rect (map)::
+       The coordinates of the *actual client window* inside its container.
+       These coordinates are relative to the container and do not include the
+       window decoration (which is actually rendered on the parent container).
+       So, when using the +default+ layout, you will have a 2 pixel border on
+       each side, making the window_rect +{ "x": 2, "y": 0, "width": 632,
+       "height": 366 }+ (for example).
+geometry (map)::
+       The original geometry the window specified when i3 mapped it. Used when
+       switching a window to floating mode, for example.
+urgent (bool)::
+       Whether this container (window or workspace) has the urgency hint set.
+focused (bool)::
+       Whether this container is currently focused.
+
+Please note that in the following example, I have left out some keys/values
+which are not relevant for the type of the node. Otherwise, the example would
+be by far too long (it already is quite long, despite showing only 1 window and
+one dock window).
+
+It is useful to have an overview of the structure before taking a look at the
+JSON dump:
+
+* root
+** LVDS1
+*** topdock
+*** content
+**** workspace 1
+***** window 1
+*** bottomdock
+**** dock window 1
+** VGA1
+
+*Example:*
+-----------------------
+{
+ "id": 6875648,
+ "name": "root",
+ "rect": {
+   "x": 0,
+   "y": 0,
+   "width": 1280,
+   "height": 800
+ },
+ "nodes": [
+
+   {
+    "id": 6878320,
+    "name": "LVDS1",
+    "layout": "output",
+    "rect": {
+      "x": 0,
+      "y": 0,
+      "width": 1280,
+      "height": 800
+    },
+    "nodes": [
+
+      {
+       "id": 6878784,
+       "name": "topdock",
+       "layout": "dockarea",
+       "orientation": "vertical",
+       "rect": {
+         "x": 0,
+        "y": 0,
+        "width": 1280,
+        "height": 0
+       },
+      },
+
+      {
+       "id": 6879344,
+       "name": "content",
+       "rect": {
+         "x": 0,
+        "y": 0,
+        "width": 1280,
+        "height": 782
+       },
+       "nodes": [
+
+         {
+          "id": 6880464,
+         "name": "1",
+         "orientation": "horizontal",
+         "rect": {
+            "x": 0,
+           "y": 0,
+           "width": 1280,
+           "height": 782
+         },
+         "floating_nodes": [],
+         "nodes": [
+
+            {
+             "id": 6929968,
+            "name": "#aa0000",
+            "border": "normal",
+            "percent": 1,
+            "rect": {
+               "x": 0,
+              "y": 18,
+              "width": 1280,
+              "height": 782
+            }
+           }
+
+         ]
+        }
+
+       ]
+      },
+
+      {
+       "id": 6880208,
+       "name": "bottomdock",
+       "layout": "dockarea",
+       "orientation": "vertical",
+       "rect": {
+         "x": 0,
+        "y": 782,
+        "width": 1280,
+        "height": 18
+       },
+       "nodes": [
+
+         {
+          "id": 6931312,
+         "name": "#00aa00",
+         "percent": 1,
+         "rect": {
+            "x": 0,
+           "y": 782,
+           "width": 1280,
+           "height": 18
+         }
+        }
+
+       ]
+      }
+    ]
+   }
+ ]
+}
+------------------------
+
+
 == Events
 
 [[events]]
diff --git a/_docs/tree-migrating b/_docs/tree-migrating
deleted file mode 100644 (file)
index 15ea54e..0000000
+++ /dev/null
@@ -1,192 +0,0 @@
-Tree branch: Migrating
-======================
-Michael Stapelberg <michael+i3@stapelberg.de>
-November 2010
-
-== Introduction
-
-The tree branch (referring to a branch of i3 in the git repository) is the new
-version of i3. Due to the very deep changes and heavy refactoring of the source
-source, we decided to develop it in a seperate branch (instead of using the
-next/master-branch system like before).
-
-== Current status
-
-Currently, the code is mostly working. Some of the i3 core developers have been
-using the tree branch version for a few weeks now. So, if you are eager to try
-out the new features and help us find bugs, give it a try!
-
-At the same time, a word of warning is appropriate: This version of i3 might
-crash unexpectedly, so please be careful with important data (do not work for
-two days without saving…).
-
-== Getting the latest tree branch version
-
-Check out the latest version:
----------------------------------------------
-$ git clone -b tree git://code.stapelberg.de/i3
----------------------------------------------
-
-Then build and install it (has the same dependencies as the latest stable i3
-version):
------------------------------
-$ cd i3
-$ make
-$ sudo cp i3 /usr/bin/i3-tree
------------------------------
-
-…and execute +i3-tree+ instead of +i3+ in your Xsession.
-
-*IMPORTANT:* Please note that configuration file compatibility is not yet done.
-So, make sure you use/customize the provided +i3.config+ file.
-
-== Tree
-
-The most important change and reason for the name is that i3 stores all
-information about the X11 outputs, workspaces and layout of the windows on them
-in a tree. The root node is the X11 root window, followed by the X11 outputs,
-then workspaces and finally the windows themselve. In previous versions of i3
-we had multiple lists (of outputs, workspaces) and a table for each workspace.
-That approach turned out to be complicated to use (snapping), understand and
-implement.
-
-=== The tree consists of Containers
-
-The building blocks of our tree are so called +Containers+. A +Container+ can
-host a window (meaning an X11 window, one that you can actually see and use,
-like a browser). Alternatively, it could contain one or more +Containers+. A
-simple example is the workspace: When you start i3 with a single monitor, a
-single workspace and you open two terminal windows, you will end up with a tree
-like this:
-
-image::tree-layout2.png["layout2",float="right"]
-image::tree-shot4.png["shot4",title="Two terminals on standard workspace"]
-
-=== Orientation and Split Containers
-
-[[OrientationSplit]]
-
-It is only natural to use so-called +Split Containers+ in order to build a
-layout when using a tree as data structure. In i3, every +Container+ has an
-orientation (horizontal, vertical or unspecified). So, in our example with the
-workspace, the default orientation of the workspace +Container+ is horizontal
-(most monitors are widescreen nowadays). If you change the orientation to
-vertical (+Alt+v+ in the default config) and *then* open two terminals, i3 will
-configure your windows like this:
-
-image::tree-shot2.png["shot2",title="Vertical Workspace Orientation"]
-
-An interesting new feature of the tree branch is the ability to split anything:
-Let’s assume you have two terminals on a workspace (with horizontal
-orientation), focus is on the right terminal. Now you want to open another
-terminal window below the current one. If you would just open a new terminal
-window, it would show up to the right due to the horizontal workspace
-orientation. Instead, press +Alt+v+ to create a +Vertical Split Container+ (to
-open a +Horizontal Split Container+, use +Alt+h+). Now you can open a new
-terminal and it will open below the current one:
-
-image::tree-layout1.png["Layout",float="right"]
-image::tree-shot1.png["shot",title="Vertical Split Container"]
-
-unfloat::[]
-
-You probably guessed it already: There is no limit on how deep your hierarchy
-of splits can be.
-
-=== Level up
-
-Let’s stay with our example from above. We have a terminal on the left and two
-vertically split terminals on the right, focus is on the bottom right one. When
-you open a new terminal, it will open below the current one.
-
-So, how can you open a new terminal window to the *right* of the current one?
-The solution is to use +level up+, which will focus the +Parent Container+ of
-the current +Container+. In this case, you would focus the +Vertical Split
-Container+ which is *inside* the horizontally oriented workspace. Thus, now new
-windows will be opened to the right of the +Vertical Split Container+:
-
-image::tree-shot3.png["shot3",title="Level Up, then open new terminal"]
-
-== Commands
-
-The authoritive reference for commands is +src/cmdparse.y+. You can also find
-most commands in +i3.config+. Here comes a short overview over the important
-commands:
-
-=== Manipulating layout
-
--------------------------------
-layout <default|stacked|tabbed>
--------------------------------
-
-=== Changing Focus
-
---------------------------
-next <horizontal|vertical>
-prev <horizontal|vertical>
---------------------------
-
-.Examples:
--------------------------
-bindsym Mod1+Left prev h
-bindsym Mod1+Right next h
-bindsym Mod1+Down next v
-bindsym Mod1+Up prev v
--------------------------
-
-=== Moving
-
------------------------------------------
-move <before|after> <horizontal|vertical>
------------------------------------------
-
-.Examples:
------------------------------------------
-bindsym Mod1+Shift+Left move before h
-bindsym Mod1+Shift+Right move after h
-bindsym Mod1+Shift+Down move before v
-bindsym Mod1+Shift+Up move after v
------------------------------------------
-
-=== Changing workspace
-
----------------------------
-workspace <name>
----------------------------
-
-.Examples:
----------------------------
-bindsym Mod1+1 workspace 1
-bindsym Mod1+2 workspace 2
-…
----------------------------
-
-=== Moving Containers to workspaces
-
----------------------
-move workspace <name>
----------------------
-
--------------------------------------
-bindsym Mod1+Shift+1 move workspace 1
-bindsym Mod1+Shift+2 move workspace 2
-…
--------------------------------------
-
-=== Changing border style
-
----------------------------
-border <normal|none|1pixel>
----------------------------
-
-=== Changing container mode
-
------------------------------
-mode <tiling|floating|toggle>
------------------------------
-
-== The rest
-
-What is not mentioned here explicitly is either unchanged and can be read in
-the http://i3.zekjur.net/docs/userguide.html[i3 User’s Guide] or it is not yet
-implemented.
index 42599cab1e1a296ac1e7bc566d9841ee21d6ab7e..6941af91cf92af53d4a9ecf2e4edb265baf1dba9 100644 (file)
@@ -1,71 +1,72 @@
 i3 User’s Guide
 ===============
 Michael Stapelberg <michael+i3@stapelberg.de>
-March 2010
+July 2011
 
 This document contains all the information you need to configure and use the i3
-window manager. If it does not, please contact me on IRC, Jabber or E-Mail and
-I’ll help you out.
+window manager. If it does not, please contact us on IRC (preferred) or post your
+question(s) on the mailing list.
 
 == Default keybindings
 
 For the "too long; didn’t read" people, here is an overview of the default
 keybindings (click to see the full size image):
 
-*Keys to use with Mod1 (alt):*
+*Keys to use with mod (alt):*
 
-image:keyboard-layer1.png["Keys to use with Mod1 (alt)",width=600,link="keyboard-layer1.png"]
+image:keyboard-layer1.png["Keys to use with mod (alt)",width=600,link="keyboard-layer1.png"]
 
-*Keys to use with Shift+Mod1:*
+*Keys to use with Shift+mod:*
 
-image:keyboard-layer2.png["Keys to use with Shift+Mod1",width=600,link="keyboard-layer2.png"]
-
-As i3 uses keycodes in the default configuration, it does not matter which
-keyboard layout you actually use. The key positions are what matters (of course
-you can also use keysymbols, see <<keybindings>>).
+image:keyboard-layer2.png["Keys to use with Shift+mod",width=600,link="keyboard-layer2.png"]
 
 The red keys are the modifiers you need to press (by default), the blue keys
 are your homerow.
 
 == Using i3
 
+Throughout this guide, the keyword +mod+ will be used to refer to the
+configured modifier. This is the alt key (Mod1) by default, with windows (Mod4)
+being a popular alternative.
+
 === Opening terminals and moving around
 
 One very basic operation is opening a new terminal. By default, the keybinding
-for this is Mod1+Enter, that is Alt+Enter in the default configuration. By
-pressing Mod1+Enter, a new terminal will be opened.  It will fill the whole
+for this is mod+Enter, that is Alt+Enter in the default configuration. By
+pressing mod+Enter, a new terminal will be opened.  It will fill the whole
 space available on your screen.
 
 image:single_terminal.png[Single terminal]
 
-It is important to keep in mind that i3 uses a table to manage your windows. At
-the moment, you have exactly one column and one row which leaves you with one
-cell. In this cell there is a container, which is where your new terminal is
-opened.
-
-If you now open another terminal, you still have only one cell. However, the
-container in that cell holds both of your terminals. So, a container is just a
-group of clients with a specific layout. Containers can be resized by adjusting
-the size of the cell that holds them.
+If you now open another terminal, i3 will place it next to the current one,
+splitting the screen size in half. Depending on your monitor, i3 will put the
+created window beside the existing window (on wide displays) or below the
+existing window (rotated displays).
 
 image:two_terminals.png[Two terminals]
 
-To move the focus between the two terminals, you use the direction keys which
-you may know from the editor +vi+. However, in i3, your homerow is used for
-these keys (in +vi+, the keys are shifted to the left by one for compatibility
-with most keyboard layouts). Therefore, +Mod1+J+ is left, +Mod1+K+ is down,
-+Mod1+L+ is up and `Mod1+;` is right. So, to switch between the terminals,
-use +Mod1+K+ or +Mod1+L+.
+To move the focus between the two terminals, you can use the direction keys
+which you may know from the editor +vi+. However, in i3, your homerow is used
+for these keys (in +vi+, the keys are shifted to the left by one for
+compatibility with most keyboard layouts). Therefore, +mod+J+ is left, +mod+K+
+is down, +mod+L+ is up and `mod+;` is right. So, to switch between the
+terminals, use +mod+K+ or +mod+L+. Of course, you can also use the arrow keys.
+
+At the moment, your workspace is split (it contains two terminals) in a
+specific direction (horizontal by default). Every window can be split
+horizontally or vertically again, just like the workspace. The terminology is
+"window" for a container that actually contains an X11 window (like a terminal
+or browser) and "split container" for containers that consist of one or more
+windows.
 
-To create a new row/column (and a new cell), you can simply move a terminal (or
-any other window) in the direction you want to expand your table. So, let’s
-expand the table to the right by pressing `Mod1+Shift+;`.
+TODO: picture of the tree
 
-image:two_columns.png[Two columns]
+To split a window vertically, press +mod+v+. To split it horizontally, press
++mod+h+.
 
-=== Changing container modes
+=== Changing the container layout
 
-A container can have the following modes:
+A split container can have one of the following layouts:
 
 default::
 Windows are sized so that every window gets an equal amount of space in the
@@ -77,35 +78,35 @@ tabbed::
 The same principle as +stacking+, but the list of windows at the top is only
 a single line which is vertically split.
 
-To switch modes, press +Mod1+e+ for default, +Mod1+h+ for stacking and
-+Mod1+w+ for tabbed.
+To switch modes, press +mod+e+ for default, +mod+h+ for stacking and
++mod+w+ for tabbed.
 
 image:modes.png[Container modes]
 
 === Toggling fullscreen mode for a window
 
-To display a window fullscreen or to go out of fullscreen mode again, press
-+Mod1+f+.
+To display a window in fullscreen mode or to go out of fullscreen mode again,
+press +mod+f+.
 
-There is also a global fullscreen mode in i3 in which the client will use all
-available outputs. To use it, or to get out of it again, press +Mod1+Shift+f+.
+There is also a global fullscreen mode in i3 in which the client will span all
+available outputs.
 
 === Opening other applications
 
 Aside from opening applications from a terminal, you can also use the handy
-+dmenu+ which is opened by pressing +Mod1+v+ by default. Just type the name
-(or a part of it) of the application which you want to open. The application
-typed has to be in your +$PATH+ for this to work.
++dmenu+ which is opened by pressing +mod+d+ by default. Just type the name
+(or a part of it) of the application which you want to open. The corresponding
+application has to be in your +$PATH+ for this to work.
 
 Additionally, if you have applications you open very frequently, you can
 create a keybinding for starting the application directly. See the section
-"Configuring i3" for details.
+<<configuring>> for details.
 
 === Closing windows
 
 If an application does not provide a mechanism for closing (most applications
 provide a menu, the escape key or a shortcut like +Control+W+ to close), you
-can press +Mod1+Shift+q+ to kill a window. For applications which support
+can press +mod+Shift+q+ to kill a window. For applications which support
 the WM_DELETE protocol, this will correctly close the application (saving
 any modifications or doing other cleanup). If the application doesn’t support
 the WM_DELETE protocol your X server will kill the window and the behaviour
@@ -115,7 +116,7 @@ depends on the application.
 
 Workspaces are an easy way to group a set of windows. By default, you are on
 the first workspace, as the bar on the bottom left indicates. To switch to
-another workspace, press +Mod1+num+ where +num+ is the number of the workspace
+another workspace, press +mod+num+ where +num+ is the number of the workspace
 you want to use. If the workspace does not exist yet, it will be created.
 
 A common paradigm is to put the web browser on one workspace, communication
@@ -129,18 +130,15 @@ focus to that screen.
 
 === Moving windows to workspaces
 
-To move a window to another workspace, simply press +Mod1+Shift+num+ where
+To move a window to another workspace, simply press +mod+Shift+num+ where
 +num+ is (like when switching workspaces) the number of the target workspace.
 Similarly to switching workspaces, the target workspace will be created if
 it does not yet exist.
 
-=== Resizing columns/rows
+=== Resizing
 
-To resize columns or rows, just grab the border between the two columns/rows
-and move it to the wanted size. Please keep in mind that each cell of the table
-holds a +container+ and thus you cannot horizontally resize single windows.  If
-you need applications with different horizontal sizes, place them in seperate
-cells one above the other.
+The easiest way to resize a container is by using the mouse: Grab the border
+and move it to the wanted size.
 
 See <<resizingconfig>> for how to configure i3 to be able to resize
 columns/rows with your keyboard.
@@ -148,35 +146,21 @@ columns/rows with your keyboard.
 === Restarting i3 inplace
 
 To restart i3 inplace (and thus get into a clean state if there is a bug, or
-to upgrade to a newer version of i3) you can use +Mod1+Shift+r+. Be aware,
-though, that this kills your current layout and all the windows you have opened
-will be put in a default container in only one cell. Saving layouts will be
-implemented in a later version.
+to upgrade to a newer version of i3) you can use +mod+Shift+r+.
 
 === Exiting i3
 
-To cleanly exit i3 without killing your X server, you can use +Mod1+Shift+e+.
-
-=== Snapping
-
-Snapping is a mechanism to increase/decrease the colspan/rowspan of a container.
-Colspan/rowspan is the number of columns/rows a specific cell of the table
-consumes. This is easier explained by giving an example, so take the following
-layout:
-
-image:snapping.png[Snapping example]
-
-To use the full size of your screen, you can now snap container 3 downwards
-by pressing +Mod1+Control+k+ (or snap container 2 rightwards).
+To cleanly exit i3 without killing your X server, you can use +mod+Shift+e+.
 
 === Floating
 
 Floating mode is the opposite of tiling mode. The position and size of a window
 are not managed by i3, but by you. Using this mode violates the tiling
 paradigm but can be useful for some corner cases like "Save as" dialog
-windows, or toolbar windows (GIMP or similar).
+windows, or toolbar windows (GIMP or similar). Those windows usually set the
+appropriate hint and are opened in floating mode by default.
 
-You can enable floating mode for a window by pressing +Mod1+Shift+Space+. By
+You can enable floating mode for a window by pressing +mod+Shift+Space+. By
 dragging the window’s titlebar with your mouse you can move the window
 around. By grabbing the borders and moving them you can resize the window. You
 can also do that by using the <<floating_modifier>>.
@@ -185,6 +169,73 @@ For resizing floating windows with your keyboard, see <<resizingconfig>>.
 
 Floating windows are always on top of tiling windows.
 
+== Tree
+
+i3 stores all information about the X11 outputs, workspaces and layout of the
+windows on them in a tree. The root node is the X11 root window, followed by
+the X11 outputs, then dock areas and a content container, then workspaces and
+finally the windows themselve. In previous versions of i3 we had multiple lists
+(of outputs, workspaces) and a table for each workspace. That approach turned
+out to be complicated to use (snapping), understand and implement.
+
+=== The tree consists of Containers
+
+The building blocks of our tree are so called +Containers+. A +Container+ can
+host a window (meaning an X11 window, one that you can actually see and use,
+like a browser). Alternatively, it could contain one or more +Containers+. A
+simple example is the workspace: When you start i3 with a single monitor, a
+single workspace and you open two terminal windows, you will end up with a tree
+like this:
+
+image::tree-layout2.png["layout2",float="right"]
+image::tree-shot4.png["shot4",title="Two terminals on standard workspace"]
+
+=== Orientation and Split Containers
+
+[[OrientationSplit]]
+
+It is only natural to use so-called +Split Containers+ in order to build a
+layout when using a tree as data structure. In i3, every +Container+ has an
+orientation (horizontal, vertical or unspecified). So, in our example with the
+workspace, the default orientation of the workspace +Container+ is horizontal
+(most monitors are widescreen nowadays). If you change the orientation to
+vertical (+mod+v+ in the default config) and *then* open two terminals, i3 will
+configure your windows like this:
+
+image::tree-shot2.png["shot2",title="Vertical Workspace Orientation"]
+
+An interesting new feature of the tree branch is the ability to split anything:
+Let’s assume you have two terminals on a workspace (with horizontal
+orientation), focus is on the right terminal. Now you want to open another
+terminal window below the current one. If you would just open a new terminal
+window, it would show up to the right due to the horizontal workspace
+orientation. Instead, press +mod+v+ to create a +Vertical Split Container+ (to
+open a +Horizontal Split Container+, use +mod+h+). Now you can open a new
+terminal and it will open below the current one:
+
+image::tree-layout1.png["Layout",float="right"]
+image::tree-shot1.png["shot",title="Vertical Split Container"]
+
+unfloat::[]
+
+You probably guessed it already: There is no limit on how deep your hierarchy
+of splits can be.
+
+=== Focus parent
+
+Let’s stay with our example from above. We have a terminal on the left and two
+vertically split terminals on the right, focus is on the bottom right one. When
+you open a new terminal, it will open below the current one.
+
+So, how can you open a new terminal window to the *right* of the current one?
+The solution is to use +focus parent+, which will focus the +Parent Container+ of
+the current +Container+. In this case, you would focus the +Vertical Split
+Container+ which is *inside* the horizontally oriented workspace. Thus, now new
+windows will be opened to the right of the +Vertical Split Container+:
+
+image::tree-shot3.png["shot3",title="Focus parent, then open new terminal"]
+
+[[configuring]]
 == Configuring i3
 
 This is where the real fun begins ;-). Most things are very dependant on your
@@ -203,6 +254,14 @@ To change the configuration of i3, copy +/etc/i3/config+ to +\~/.i3/config+
 (or +~/.config/i3/config+ if you like the XDG directory scheme) and edit it
 with a text editor.
 
+On first start (and on all following starts, unless you have a configuration
+file), i3 will offer you to create a configuration file. You can tell the
+wizard to use either Alt (Mod1) or Windows (Mod4) as modifier in the config
+file. Also, the created config file will use the key symbols of your current
+keyboard layout. To start the wizard, use the command +i3-config-wizard+.
+Please note that you must not have +~/.i3/config+, otherwise the wizard will
+exit.
+
 === Comments
 
 It is possible and recommended to use comments in your configuration file to
@@ -216,10 +275,12 @@ a # and can only be used at the beginning of a line:
 
 === Fonts
 
-i3 uses X core fonts (not Xft) for rendering window titles and the internal
-workspace bar. You can use +xfontsel(1)+ to generate such a font description.
-To see special characters (Unicode), you need to use a font which supports
-the ISO-10646 encoding.
+i3 uses X core fonts (not Xft) for rendering window titles. You can use
++xfontsel(1)+ to generate such a font description. To see special characters
+(Unicode), you need to use a font which supports the ISO-10646 encoding.
+
+If i3 cannot open the configured font, it will output an error in the logfile
+and fall back to a working font.
 
 *Syntax*:
 ------------------------------
@@ -244,9 +305,9 @@ also mix your bindings, though i3 will not protect you from overlapping ones).
   are the ones you use in Xmodmap to remap your keys. To get the current
   mapping of your keys, use +xmodmap -pke+.
 
-* Keycodes do not need to have a symbol assigned (handy for some hotkeys
-  on some notebooks) and they will not change their meaning as you switch to a
-  different keyboard layout (when using +xmodmap+).
+* Keycodes do not need to have a symbol assigned (handy for custom vendor
+  hotkeys on some notebooks) and they will not change their meaning as you
+  switch to a different keyboard layout (when using +xmodmap+).
 
 My recommendation is: If you often switch keyboard layouts but you want to keep
 your bindings in the same physical location on the keyboard, use keycodes.
@@ -256,19 +317,19 @@ keysyms.
 *Syntax*:
 ----------------------------------
 bindsym [Modifiers+]keysym command
-bind [Modifiers+]keycode command
+bindcode [Modifiers+]keycode command
 ----------------------------------
 
 *Examples*:
 --------------------------------
 # Fullscreen
-bindsym Mod1+f f
+bindsym mod+f f
 
 # Restart
-bindsym Mod1+Shift+r restart
+bindsym mod+Shift+r restart
 
 # Notebook-specific hotkeys
-bind 214 exec /home/michael/toggle_beamer.sh
+bindcode 214 exec /home/michael/toggle_beamer.sh
 --------------------------------
 
 Available Modifiers:
@@ -303,25 +364,49 @@ you hold the shift button as well, the resize will be proportional.
 floating_modifier <Modifiers>
 --------------------------------
 
-*Examples*:
+*Example*:
 --------------------------------
 floating_modifier Mod1
 --------------------------------
 
+=== Orientation for new workspaces
+
+New workspaces get a reasonable default orientation: Wide-screen monitors
+(anything wider than high) get horizontal orientation, rotated monitors
+(anything higher than wide) get vertical orientation.
+
+With the +default_orientation+ configuration directive, you can override that
+behaviour.
+
+*Syntax*:
+----------------------------------------------
+default_orientation <horizontal|vertical|auto>
+----------------------------------------------
+
+*Example*:
+----------------------------
+default_orientation vertical
+----------------------------
+
 === Layout mode for new containers
 
-This option determines in which mode new containers will start. See also
-<<stack-limit>>.
+This option determines in which mode new containers on workspace level will
+start.
+///////////////////////////////
+See also <<stack-limit>>.
+//////////////////////////////
 
 *Syntax*:
 ---------------------------------------------
-new_container <default|stacking|tabbed>
-new_container stack-limit <cols|rows> <value>
+workspace_layout <default|stacking|tabbed>
 ---------------------------------------------
+/////////////////////////////////////////////
+new_container stack-limit <cols|rows> <value>
+/////////////////////////////////////////////
 
-*Examples*:
+*Example*:
 ---------------------
-new_container tabbed
+workspace_layout tabbed
 ---------------------
 
 === Border style for new windows
@@ -330,14 +415,39 @@ This option determines which border style new windows will have.
 
 *Syntax*:
 ---------------------------------------------
-new_window <bp|bn|bb>
+new_window <normal|1pixel|borderless>
 ---------------------------------------------
 
-*Examples*:
+*Example*:
 ---------------------
-new_window bp
+new_window 1pixel
 ---------------------
 
+=== Arbitrary commands for specific windows (for_window)
+
+With the +for_window+ command, you can let i3 execute any command when it
+encounters a specific window. This can be used to set windows to floating or to
+change their border style, for example.
+
+*Syntax*:
+-----------------------------
+for_window [criteria] command
+-----------------------------
+
+*Examples*:
+------------------------------------------------
+# enable floating mode for all XTerm windows
+for_window [class="XTerm"] mode floating
+
+# Make all urxvts use a 1-pixel border:
+for_window [class="urxvt"] border 1pixel
+
+# A less useful, but rather funny example:
+# makes the window floating as soon as I change
+# directory to ~/work
+for_window [title="x200: ~/work"] mode floating
+------------------------------------------------
+
 === Variables
 
 As you learned in the section about keyboard bindings, you will have
@@ -347,10 +457,10 @@ variables can be handy.
 
 *Syntax*:
 --------------
-set name value
+set $name value
 --------------
 
-*Examples*:
+*Example*:
 ------------------------
 set $m Mod1
 bindsym $m+Shift+r restart
@@ -360,19 +470,20 @@ Variables are directly replaced in the file when parsing. There is no fancy
 handling and there are absolutely no plans to change this. If you need a more
 dynamic configuration you should create a little script which generates a
 configuration file and run it before starting i3 (for example in your
-+.xsession+ file).
++~/.xsession+ file).
 
 === Automatically putting clients on specific workspaces
 
 [[assign_workspace]]
 
-It is recommended that you match on window classes wherever possible because
-some applications first create their window, and then worry about setting the
-correct title. Firefox with Vimperator comes to mind. The window starts up
-being named Firefox, and only when Vimperator is loaded does the title change.
-As i3 will get the title as soon as the application maps the window (mapping
-means actually displaying it on the screen), you’d need to have to match on
-'Firefox' in this case.
+Specific windows can be matched by window class and/or window title. It is
+recommended that you match on window classes instead of window titles whenever
+possible because some applications first create their window, and then worry
+about setting the correct title. Firefox with Vimperator comes to mind. The
+window starts up being named Firefox, and only when Vimperator is loaded does
+the title change. As i3 will get the title as soon as the application maps the
+window (mapping means actually displaying it on the screen), you’d need to have
+to match on 'Firefox' in this case.
 
 You can prefix or suffix workspaces with a `~` to specify that matching clients
 should be put into floating mode. If you specify only a `~`, the client will
@@ -380,36 +491,40 @@ not be put onto any workspace, but will be set floating on the current one.
 
 *Syntax*:
 ------------------------------------------------------------
-assign ["]window class[/window title]["] [→] [~ | workspace]
+assign ["]window class[/window title]["] [→] [workspace]
 ------------------------------------------------------------
 
 *Examples*:
 ----------------------
 assign urxvt 2
 assign urxvt → 2
+assign urxvt → work
 assign "urxvt" → 2
 assign "urxvt/VIM" → 3
-assign "gecko" → ~4
-assign "xv/MPlayer" → ~
+assign "gecko" → 4
 ----------------------
 
 Note that the arrow is not required, it just looks good :-). If you decide to
-use it, it has to be a UTF-8 encoded arrow, not "->" or something like that.
+use it, it has to be a UTF-8 encoded arrow, not `->` or something like that.
 
 === Automatically starting applications on i3 startup
 
-By using the +exec+ keyword outside a keybinding, you can configure which
-commands will be performed by i3 on initial startup (not when restarting i3
-in-place however). These commands will be run in order.
+By using the +exec+ keyword outside a keybinding, you can configure
+which commands will be performed by i3 on initial startup. +exec+
+commands will not run when restarting i3, if you need a command to run
+also when restarting i3 you should use the +exec_always+
+keyword. These commands will be run in order.
 
 *Syntax*:
-------------
+-------------------
 exec command
-------------
+exec_always command
+-------------------
 
 *Examples*:
 --------------------------------
-exec sudo i3status | dzen2 -dock
+exec i3status | dzen2 -dock
+exec_always ~/my_script.sh
 --------------------------------
 
 [[workspace_screen]]
@@ -437,30 +552,9 @@ workspace 1 output LVDS1
 workspace 5 output VGA1
 ---------------------------
 
-=== Named workspaces
-
-If you always have a certain arrangement of workspaces, you might want to give
-them names (of course UTF-8 is supported):
-
-*Syntax*:
----------------------------------------
-workspace <number> <name>
-workspace <number> output <output> name
----------------------------------------
-
-For more details about the 'output' part of this command, see above.
-
-*Examples*:
---------------------------
-workspace 1 www
-workspace 2 work
-workspace 3 i ♥ workspaces
---------------------------
-
 === Changing colors
 
-You can change all colors which i3 uses to draw the window decorations and the
-bottom bar.
+You can change all colors which i3 uses to draw the window decorations.
 
 *Syntax*:
 --------------------------------------------
@@ -518,18 +612,22 @@ i3 uses unix sockets to provide an IPC interface. This allows third-party
 programs to get information from i3, such as the current workspaces
 (to display a workspace bar), and to control i3.
 
-To enable it, you have to configure a path where the unix socket will be
-stored. The default path is +~/.i3/ipc.sock+.
+The IPC socket is enabled by default and will be created in
++/tmp/i3-%u/ipc-socket.%p+ where +%u+ is your UNIX username and +%p+ is the PID
+of i3.
+
+You can override the default path through the environment-variable +I3SOCK+ or
+by specifying the +ipc-socket+ directive.
 
 *Examples*:
 ----------------------------
-ipc-socket ~/.i3/ipc.sock
+ipc-socket /tmp/i3-ipc.sock
 ----------------------------
 
 You can then use the +i3-msg+ application to perform any command listed in
 the next section.
 
-=== Disable focus follows mouse
+=== Focus follows mouse
 
 If you have a setup where your mouse usually is in your way (like a touchpad
 on your laptop which you do not want to disable completely), you might want
@@ -542,119 +640,146 @@ to click on links in your browser window).
 focus_follows_mouse <yes|no>
 ----------------------------
 
-*Examples*:
+*Example*:
 ----------------------
 focus_follows_mouse no
 ----------------------
 
-=== Internal workspace bar
+=== Popups during fullscreen mode
 
-The internal workspace bar (the thing at the bottom of your screen) is very
-simple -- it does not provide a way to display custom text and it does not
-offer advanced customization features. This is intended because we do not
-want to duplicate functionality of tools like +dzen2+, +xmobar+ and so on
-(they render bars, we manage windows). Instead, there is an option which will
-turn off the internal bar completely, so that you can use a separate program to
-display it (see +i3-wsbar+, a sample implementation of such a program):
+When you are in fullscreen mode, some applications still open popup windows
+(take Xpdf for example). This is because these applications may not be aware
+that they are in fullscreen mode (they do not check the corresponding hint).
+There are two things which are possible to do in this situation:
+
+1. Just ignore the popup (don’t map it). This won’t interrupt you while you are
+   in fullscreen. However, some apps might react badly to this (deadlock until
+   you go out of fullscreen).
+2. Leave fullscreen mode. This is the default.
 
 *Syntax*:
-----------------------
-workspace_bar <yes|no>
-----------------------
+-------------------------------------------------
+popup_during_fullscreen <ignore|leave_fullscreen>
+-------------------------------------------------
 
-*Examples*:
-----------------
-workspace_bar no
-----------------
+*Example*:
+------------------------------
+popup_during_fullscreen ignore
+------------------------------
 
 == List of commands
 
+=== Splitting containers
+
+The split command makes the current window a split container. Split containers
+can contain multiple windows. Every split container has an orientation, it is
+either split horizontally (a new window gets placed to the right of the current
+one) or vertically (a new window gets placed below the current one).
+
+If you apply this command to a split container with the same orientation,
+nothing will happen. If you use a different orientation, the split container’s
+orientation will be changed (if it does not have more than one window).
+
+*Syntax*:
+---------------------------
+split <vertical|horizontal>
+---------------------------
+
+*Example*:
+--------------
+split vertical
+--------------
+
 === Manipulating layout
 
-To change the layout of the current container to stacking, use +s+, for default
-use +d+ and for tabbed, use +T+. To make the current client (!) fullscreen,
-use +f+, to make it span all outputs, use +fg+, to make it floating (or
-tiling again) use +t+:
+Use +layout default+, +layout stacking+ or +layout tabbed+ to change the
+current container layout to default, stacking or tabbed layout, respectively.
+
+To make the current window (!) fullscreen, use +fullscreen+, to make
+it floating (or tiling again) use +floating enable+ respectively +floating disable+
+(or +floating toggle+):
 
 *Examples*:
 --------------
-bindsym Mod1+s s
-bindsym Mod1+l d
-bindsym Mod1+w T
+bindsym mod+s layout stacking
+bindsym mod+l layout default
+bindsym mod+w layout tabbed
 
 # Toggle fullscreen
-bindsym Mod1+f f
-
-# Toggle global fullscreen
-bindsym Mod1+Shift+f fg
+bindsym mod+f fullscreen
 
 # Toggle floating/tiling
-bindsym Mod1+t t
+bindsym mod+t floating toggle
 --------------
 
-=== Focusing/Moving/Snapping clients/containers/screens
+=== Focusing/Moving containers
+
+To change the focus, use the focus command: +focus left+, +focus right+, +focus down+ and +focus up+.
+
+There are a few special parameters you can use for the focus command:
 
-To change the focus, use one of the +h+, +j+, +k+ and +l+ commands, meaning
-left, down, up, right (respectively). To focus a container, prefix it with
-+wc+. To focus a screen, prefix it with +ws+.
+parent::
+       Sets focus to the +Parent Container+ of the current +Container+.
+child::
+       The opposite of +focus parent+, sets the focus to the last focused
+       child container.
+floating::
+       Sets focus to the last focused floating container.
+tiling::
+       Sets focus to the last focused tiling container.
+mode_toggle::
+       Toggles between floating/tiling containers.
 
-The same principle applies for moving and snapping: just prefix the command
-with +m+ when moving and with +s+ when snapping:
+For moving, use +move left+, +move right+, +move down+ and +move up+.
 
 *Examples*:
 ----------------------
 # Focus clients on the left, bottom, top, right:
-bindsym Mod1+j h
-bindsym Mod1+k j
-bindsym Mod1+j k
-bindsym Mod1+semicolon l
+bindsym mod+j focus left
+bindsym mod+k focus down
+bindsym mod+l focus up
+bindsym mod+semicolon focus right
+
+# Focus parent container
+bindsym mod+u focus parent
+
+# Focus last floating/tiling container
+bindsym mod+g focus mode_toggle
 
 # Move client to the left, bottom, top, right:
-bindsym Mod1+j mh
-bindsym Mod1+k mj
-bindsym Mod1+j mk
-bindsym Mod1+semicolon ml
-
-# Snap client to the left, bottom, top, right:
-bindsym Mod1+j sh
-bindsym Mod1+k sj
-bindsym Mod1+j sk
-bindsym Mod1+semicolon sl
-
-# Focus container on the left, bottom, top, right:
-bindsym Mod3+j wch
-…
+bindsym mod+j move left
+bindsym mod+k move down
+bindsym mod+l move up
+bindsym mod+semicolon move right
 ----------------------
 
-=== Changing workspaces/moving clients to workspaces
+=== Changing workspaces/moving containers to workspaces
 
-To change to a specific workspace, the command is just the number of the
-workspace, e.g. +1+ or +3+. To move the current client to a specific workspace,
-prefix the number with an +m+.
+To change to a specific workspace, use the +workspace+ command, followed by the
+number or name of the workspace. To move containers to specific workspaces, use
++move workspace+.
 
-You can also switch to the next and previous workspace with the commands +nw+
-and +pw+, which is handy, for example, if you have workspace 1, 3, 4 and 9 and
-you want to cycle through them with a single key combination.
+You can also switch to the next and previous workspace with the commands
++workspace next+ and +workspace prev+, which is handy, for example, if you have
+workspace 1, 3, 4 and 9 and you want to cycle through them with a single key
+combination.
 
 *Examples*:
 -------------------------
-bindsym Mod1+1 1
-bindsym Mod1+2 2
+bindsym mod+1 workspace 1
+bindsym mod+2 workspace 2
 ...
 
-bindsym Mod1+Shift+1 m1
-bindsym Mod1+Shift+2 m2
+bindsym mod+Shift+1 move workspace 1
+bindsym mod+Shift+2 move workspace 2
 ...
-
-bindsym Mod1+o nw
-bindsym Mod1+p pw
 -------------------------
 
 [[resizingconfig]]
 
-=== Resizing columns/rows
+=== Resizing containers/windows
 
-If you want to resize columns/rows using your keyboard, you can use the
+If you want to resize containers/windows using your keyboard, you can use the
 +resize+ command, I recommend using it inside a so called +mode+:
 
 .Example: Configuration file, defining a mode for resizing
@@ -666,23 +791,23 @@ mode "resize" {
         # when pressing left, the window is resized so that it has
         # more space on its left
 
-        bindsym n resize left -10
-        bindsym Shift+n resize left +10
+        bindsym j resize shrink left
+        bindsym Shift+j resize grow left
 
-        bindsym r resize bottom +10
-        bindsym Shift+r resize bottom -10
+        bindsym k resize grow bottom
+        bindsym Shift+k resize shrink bottom
 
-        bindsym t resize top -10
-        bindsym Shift+t resize top +10
+        bindsym l resize shrink top
+        bindsym Shift+l resize grow top
 
-        bindsym d resize right +10
-        bindsym Shift+d resize right -10
+        bindsym semicolon resize grow right
+        bindsym Shift+semicolon resize shrink right
 
-        bind 36 mode default
+        bindcode 36 mode default
 }
 
 # Enter resize mode
-bindsym Mod1+r mode resize
+bindsym mod+r mode "resize"
 ----------------------------------------------------------------------
 
 === Jumping to specific windows
@@ -691,23 +816,20 @@ Often when in a multi-monitor environment, you want to quickly jump to a
 specific window. For example, while working on workspace 3 you may want to
 jump to your mail client to email your boss that you’ve achieved some
 important goal. Instead of figuring out how to navigate to your mailclient,
-it would be more convenient to have a shortcut.
+it would be more convenient to have a shortcut. You can use the +focus+ command
+with criteria for that.
 
 *Syntax*:
 ----------------------------------------------------
-jump ["]window class[/window title]["]
-jump workspace [ column row ]
+[class="class"] focus
+[title="title"] focus
 ----------------------------------------------------
 
-You can either use the same matching algorithm as in the +assign+ command
-(see above) or you can specify the position of the client if you always use
-the same layout.
-
 *Examples*:
---------------------------------------
+------------------------------------------------
 # Get me to the next open VIM instance
-bindsym Mod1+a jump "urxvt/VIM"
---------------------------------------
+bindsym mod+a [class="urxvt" title="VIM"] focus
+------------------------------------------------
 
 === VIM-like marks (mark/goto)
 
@@ -726,68 +848,57 @@ for this purpose: It lets you input a command and sends the command to i3. It
 can also prefix this command and display a custom prompt for the input dialog.
 
 *Syntax*:
------------------
-mark <identifier>
-goto <identifier>
------------------
+------------------------------
+mark identifier
+[con_mark="identifier"] focus
+------------------------------
 
+*Example (in a terminal)*:
+------------------------------
+$ i3-msg mark irssi
+$ i3-msg '[con_mark="irssi"] focus'
+------------------------------
+
+///////////////////////////////////////////////////////////////////
+TODO: make i3-input replace %s
 *Examples*:
 ---------------------------------------
 # Read 1 character and mark the current window with this character
-bindsym Mod1+m exec i3-input -p 'mark ' -l 1 -P 'Mark: '
+bindsym mod+m exec i3-input -p 'mark ' -l 1 -P 'Mark: '
 
 # Read 1 character and go to the window with the character
-bindsym Mod1+g exec i3-input -p 'goto ' -l 1 -P 'Goto: '
+bindsym mod+g exec i3-input -p 'goto ' -l 1 -P 'Goto: '
 ---------------------------------------
 
 Alternatively, if you do not want to mess with +i3-input+, you could create
 seperate bindings for a specific set of labels and then only use those labels.
-
-=== Traveling the focus stack
-
-This mechanism can be thought of as the opposite of the +jump+ command.
-It travels the focus stack and jumps to the window which had focus previously.
-
-*Syntax*:
---------------
-focus [number] | floating | tiling | ft
---------------
-
-Where +number+ by default is 1 meaning that the next client in the focus stack
-will be selected.
-
-The special values have the following meaning:
-
-floating::
-       The next floating window is selected.
-tiling::
-       The next tiling window is selected.
-ft::
-       If the current window is floating, the next tiling window will be
-       selected; and vice-versa.
+///////////////////////////////////////////////////////////////////
 
 === Changing border style
 
-To change the border of the current client, you can use +bn+ to use the normal
-border (including window title), +bp+ to use a 1-pixel border (no window title)
-and +bb+ to make the client borderless. There is also +bt+ which will toggle
-the different border styles.
+To change the border of the current client, you can use +border normal+ to use the normal
+border (including window title), +border 1pixel+ to use a 1-pixel border (no window title)
+and +border none+ to make the client borderless.
+
+There is also +border toggle+ which will toggle the different border styles.
 
 *Examples*:
-------------------
-bindsym Mod1+t bn
-bindsym Mod1+y bp
-bindsym Mod1+u bb
-------------------
+----------------------------
+bindsym mod+t border normal
+bindsym mod+y border 1pixel
+bindsym mod+u border none
+----------------------------
 
 [[stack-limit]]
 
+///////////////////////////////////////////////////////////////////////////////
+TODO: not yet implemented
 === Changing the stack-limit of a container
 
 If you have a single container with a lot of windows inside it (say, more than
 10), the default layout of a stacking container can get a little unhandy.
-Depending on your screen’s size, you might end up seeing only half of the
-titlebars for each window in the container.
+Depending on your screen’s size, you might end up with only half of the title
+lines being actually used, wasting a lot of screen space.
 
 Using the +stack-limit+ command, you can limit the number of rows or columns
 in a stacking container. i3 will create columns or rows (depending on what
@@ -808,22 +919,21 @@ stack-limit rows 5
 -------------------
 
 image:stacklimit.png[Container limited to two columns]
+///////////////////////////////////////////////////////////////////////////////
 
 === Reloading/Restarting/Exiting
 
 You can make i3 reload its configuration file with +reload+. You can also
 restart i3 inplace with the +restart+ command to get it out of some weird state
 (if that should ever happen) or to perform an upgrade without having to restart
-your X session. However, your layout is not preserved at the moment, meaning
-that all open windows will end up in a single container in default layout
-after the restart. To exit i3 properly, you can use the +exit+ command,
+your X session. To exit i3 properly, you can use the +exit+ command,
 however you don’t need to (simply killing your X session is fine as well).
 
 *Examples*:
 ----------------------------
-bindsym Mod1+Shift+r restart
-bindsym Mod1+Shift+w reload
-bindsym Mod1+Shift+e exit
+bindsym mod+Shift+r restart
+bindsym mod+Shift+w reload
+bindsym mod+Shift+e exit
 ----------------------------
 
 [[multi_monitor]]
@@ -945,24 +1055,16 @@ approach you have in the task bar of a traditional desktop environment.
 If you don’t already have your favorite way of generating such a status line
 (self-written scripts, conky, …), then i3status is the recommended tool for
 this task. It was written in C with the goal of using as few syscalls as
-possible to reduce the time your CPU is woken up from sleep states.
-
-Regardless of which application you use to generate the status line, you
-want to make sure that the application does one of the following things:
-
-1. Register as a dock window using EWMH hints. This will make i3 position the
-   window above the workspace bar but below every other client. This is the
-   recommended way, but in case of dzen2, for example, you need to check out
-   the source of dzen2 from subversion, as the -dock option is not present
-   in the released versions.
-2. Overlay the internal workspace bar. This method will not waste any space
-   on the workspace bar, however, it is rather hackish. Just configure
-   the output window to be over the workspace bar (say -x 200 and -y 780 if
-   your screen is 800 px height).
-
-The planned solution for this problem is to make the workspace bar optional
-and switch to a third party application completely (dzen2 for example)
-which will then contain the workspace bar.
+possible to reduce the time your CPU is woken up from sleep states. Because
+i3status only spits out text, you need to combine it with some other tool, like
+i3bar. Use a pipe to connect them: +i3status | i3bar -d+.
+
+Regardless of which application you use to display the status line, you
+want to make sure that it registers as a dock window using EWMH hints. i3 will
+position the window either at the top or at the bottom of the screen, depending
+on which hint the application sets. With i3bar, you can use +-d+ or +-dbottom+
+for positioning it at the bottom and +-dtop+ to position it at the top of the
+screen.
 
 === Giving presentations (multi-monitor)
 
index 30d413dad7ae7161e354a19341cd26610a794b81..95ff56a1cd96b35d8609cb9f8ee97b66ab91e408 100644 (file)
@@ -343,6 +343,27 @@ img {
     padding-left: 1em;
 }
 
+.docs strong {
+    margin-right: 1em;
+}
+
+.docversion {
+    margin: 0.25em;
+    margin-top: 0.9em;
+    padding: 0.1em;
+    padding-left: 0.25em;
+    padding-right: 0.25em;
+    background-color: #333;
+    border: 2px solid #555;
+    border-radius: 4px;
+    float: right;
+}
+
+.docversion a, .docversion a:visited {
+    color: white;
+    text-decoration: none;
+}
+
 /* clearfix */
 .clearfix:after {
     content: ".";
diff --git a/docs/3.e/bigpicture.png b/docs/3.e/bigpicture.png
new file mode 100644 (file)
index 0000000..fc3c8db
Binary files /dev/null and b/docs/3.e/bigpicture.png differ
diff --git a/docs/3.e/debugging.html b/docs/3.e/debugging.html
new file mode 100644 (file)
index 0000000..9ff561e
--- /dev/null
@@ -0,0 +1,147 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<link rel="icon" type="image/png" href="/favicon.png">\r
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.4" />\r
+<title>i3: Debugging i3: How To</title>\r
+<link rel="stylesheet" href="/css/style.css" type="text/css" />\r
+<link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+window.onload = function(){asciidoc.footnotes();}\r
+/*]]>*/\r
+</script>\r
+<script type="text/javascript" src="/js/asciidoc-xhtml11.js"></script>\r
+</head>\r
+<body class="article">\r
+\r
+        <div id="main">\r
+            <a href="/"><h1 id="title">i3 - improved tiling WM</h1></a>\r
+                        <ul id="nav">\r
+                                <li><a style="border-bottom: 2px solid #fff" href="/docs">Docs</a></li>\r
+                                <li><a href="/screenshots">Screens</a></li>\r
+                                <li><a href="/contact">Contact</a></li>\r
+                                <li><a href="http://bugs.i3wm.org/">Bugs</a></li>\r
+                        </ul>\r
+        <br style="clear: both">\r
+<div id="content">\r
+<div id="header">\r
+<h1>Debugging i3: How To</h1>\r
+<span id="author">Michael Stapelberg</span><br />\r
+<span id="email"><tt>&lt;<a href="mailto:michael+i3@stapelberg.de">michael+i3@stapelberg.de</a>&gt;</tt></span><br />\r
+<span id="revdate">March 2010</span>\r
+</div>\r
+<div id="preamble">\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>This document describes how to debug i3 suitably for sending us useful bug\r
+reports, even if you have no clue of C programming.</p></div>\r
+<div class="paragraph"><p>First of all: Thank you for being interested in debugging i3. It really means\r
+something to us to get your bug fixed. If you have any questions about the\r
+debugging and/or need further help, do not hesitate to contact us!</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_enabling_logging">1. Enabling logging</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3 spits out much information onto stdout, if told so. To have a clearly\r
+defined place where log files will be saved, you should redirect stdout and\r
+stderr in xsession. While you’re at it, putting each run of i3 in a separate\r
+log file with date/time in it is a good idea to not get confused about the\r
+different log files later on.</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>exec /usr/bin/i3 -V -d all &gt;/home/michael/i3/i3log-$(date +'%F-%k-%M-%S') 2&gt;&amp;1</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_enabling_core_dumps">2. Enabling core dumps</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>When i3 crashes, often you have the chance of getting a <em>core dump</em> (an image\r
+of the memory of the i3 process which can be loaded into a debugger). To get a\r
+core dump, you have to make sure that the user limit for core dump files is set\r
+high enough. Many systems ship with a default value which even forbids core\r
+dumps completely. To disable the limit completely and thus enable core dumps,\r
+use the following command (in your .xsession, before starting i3):</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>ulimit -c unlimited</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Furthermore, to easily recognize core dumps and allow multiple of them, you\r
+should set a custom core dump filename pattern, using a command like the\r
+following:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>sudo sysctl -w kernel.core_pattern=core.%e.%p</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>This will generate files which have the executable’s file name (%e) and the\r
+process id (%p) in it. You can save this setting across reboots using\r
+<tt>/etc/sysctl.conf</tt>.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_compiling_with_debug_symbols">3. Compiling with debug symbols</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>To actually get useful core dumps, you should make sure that your version of i3\r
+is compiled with debug symbols, that is, that they are not stripped during the\r
+build process. You can check whether your executable contains symbols by\r
+issuing the following command:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>file $(which i3)</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>You should get an output like this:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>/usr/bin/i3: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically\r
+linked (uses shared libs), for GNU/Linux 2.6.18, not stripped</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Notice the <tt>not stripped</tt>, which is the important part. If you have a version\r
+which is stripped, please have a look if your distribution provides debug\r
+symbols (package <tt>i3-wm-dbg</tt> on Debian for example) or if you can turn off\r
+stripping. If nothing helps, please build i3 from source.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_generating_a_backtrace">4. Generating a backtrace</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Once you have made sure that your i3 is compiled with debug symbols and that\r
+core dumps are enabled, you can start making sense out of the core dumps.</p></div>\r
+<div class="paragraph"><p>Because the core dump depends on the original executable (and its debug\r
+symbols), please do this as soon as you encounter the problem. If you\r
+re-compile i3, your core dump might be useless afterwards.</p></div>\r
+<div class="paragraph"><p>Please install <tt>gdb</tt>, a debugger for C. No worries, you don’t need to learn it\r
+now.  Start gdb using the following command (replacing the actual name of the\r
+core dump of course):</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>gdb $(which i3) core.i3.3849</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Then, generate a backtrace using:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>backtrace full</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_sending_bug_reports_debugging_on_irc">5. Sending bug reports/debugging on IRC</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>When sending bug reports, please paste the relevant part of the log (if in\r
+doubt, please send us rather too much information than too less) and the whole\r
+backtrace (if there was a core dump).</p></div>\r
+<div class="paragraph"><p>When debugging with us in IRC, be prepared to use a so called nopaste service\r
+such as <a href="http://nopaste.info">http://nopaste.info</a> or <a href="http://pastebin.com">http://pastebin.com</a> because pasting large\r
+amounts of text in IRC sometimes leads to incomplete lines (servers have line\r
+length limitations) or flood kicks.</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer" lang="de">\r
+© 2009-2011 Michael Stapelberg, <a href="/impress.html">Impressum</a>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/docs/3.e/hacking-howto.html b/docs/3.e/hacking-howto.html
new file mode 100644 (file)
index 0000000..90029de
--- /dev/null
@@ -0,0 +1,890 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<link rel="icon" type="image/png" href="/favicon.png">\r
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.4" />\r
+<title>i3: Hacking i3: How To</title>\r
+<link rel="stylesheet" href="/css/style.css" type="text/css" />\r
+<link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+window.onload = function(){asciidoc.footnotes(); asciidoc.toc(2);}\r
+/*]]>*/\r
+</script>\r
+<script type="text/javascript" src="/js/asciidoc-xhtml11.js"></script>\r
+</head>\r
+<body class="article">\r
+\r
+        <div id="main">\r
+            <a href="/"><h1 id="title">i3 - improved tiling WM</h1></a>\r
+                        <ul id="nav">\r
+                                <li><a style="border-bottom: 2px solid #fff" href="/docs">Docs</a></li>\r
+                                <li><a href="/screenshots">Screens</a></li>\r
+                                <li><a href="/contact">Contact</a></li>\r
+                                <li><a href="http://bugs.i3wm.org/">Bugs</a></li>\r
+                        </ul>\r
+        <br style="clear: both">\r
+<div id="content">\r
+<div id="header">\r
+<h1>Hacking i3: How To</h1>\r
+<span id="author">Michael Stapelberg</span><br />\r
+<span id="email"><tt>&lt;<a href="mailto:michael+i3@stapelberg.de">michael+i3@stapelberg.de</a>&gt;</tt></span><br />\r
+<span id="revdate">December 2009</span>\r
+<div id="toc">
+  <div id="toctitle">Table of Contents</div>
+  <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
+</div>\r
+</div>\r
+<div id="preamble">\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>This document is intended to be the first thing you read before looking and/or\r
+touching i3’s source code. It should contain all important information to help\r
+you understand why things are like they are. If it does not mention something\r
+you find necessary, please do not hesitate to contact me.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_window_managers">1. Window Managers</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>A window manager is not necessarily needed to run X, but it is usually used in\r
+combination with X to facilitate some things. The window manager&#8217;s job is to\r
+take care of the placement of windows, to provide the user with some mechanisms\r
+to change the position/size of windows and to communicate with clients to a\r
+certain extent (for example handle fullscreen requests of clients such as\r
+MPlayer).</p></div>\r
+<div class="paragraph"><p>There are no different contexts in which X11 clients run, so a window manager\r
+is just another client, like all other X11 applications. However, it handles\r
+some events which normal clients usually don’t handle.</p></div>\r
+<div class="paragraph"><p>In the case of i3, the tasks (and order of them) are the following:</p></div>\r
+<div class="olist arabic"><ol class="arabic">\r
+<li>\r
+<p>\r
+Grab the key bindings (events will be sent upon keypress/keyrelease)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Iterate through all existing windows (if the window manager is not started as\r
+  the first client of X) and manage them (reparent them, create window\r
+  decorations, etc.)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+When new windows are created, manage them\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Handle the client’s <tt>_WM_STATE</tt> property, but only the <tt>_WM_STATE_FULLSCREEN</tt>\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Handle the client’s <tt>WM_NAME</tt> property\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Handle the client’s size hints to display them proportionally\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Handle the client’s urgency hint\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Handle enter notifications (focus follows mouse)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Handle button (as in mouse buttons) presses for focus/raise on click\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Handle expose events to re-draw own windows such as decorations\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+React to the user’s commands: Change focus, Move windows, Switch workspaces,\r
+  Change the layout mode of a container (default/stacking/tabbed), start a new\r
+  application, restart the window manager\r
+</p>\r
+</li>\r
+</ol></div>\r
+<div class="paragraph"><p>In the following chapters, each of these tasks and their implementation details\r
+will be discussed.</p></div>\r
+<div class="sect2">\r
+<h3 id="_tiling_window_managers">1.1. Tiling window managers</h3>\r
+<div class="paragraph"><p>Traditionally, there are two approaches to managing windows: The most common\r
+one nowadays is floating, which means the user can freely move/resize the\r
+windows. The other approach is called tiling, which means that your window\r
+manager distributes windows to use as much space as possible while not\r
+overlapping each other.</p></div>\r
+<div class="paragraph"><p>The idea behind tiling is that you should not need to waste your time\r
+moving/resizing windows while you usually want to get some work done. After\r
+all, most users sooner or later tend to lay out their windows in a way which\r
+corresponds to tiling or stacking mode in i3. Therefore, why not let i3 do this\r
+for you? Certainly, it’s faster than you could ever do it.</p></div>\r
+<div class="paragraph"><p>The problem with most tiling window managers is that they are too unflexible.\r
+In my opinion, a window manager is just another tool, and similar to vim which\r
+can edit all kinds of text files (like source code, HTML, …) and is not limited\r
+to a specific file type, a window manager should not limit itself to a certain\r
+layout (like dwm, awesome, …) but provide mechanisms for you to easily create\r
+the layout you need at the moment.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_the_layout_table">1.2. The layout table</h3>\r
+<div class="paragraph"><p>To accomplish flexible layouts, we decided to simply use a table. The table\r
+grows and shrinks as you need it. Each cell holds a container which then holds\r
+windows (see picture below). You can use different layouts for each container\r
+(default layout and stacking layout).</p></div>\r
+<div class="paragraph"><p>So, when you open a terminal and immediately open another one, they reside in\r
+the same container, in default layout. The layout table has exactly one column,\r
+one row and therefore one cell. When you move one of the terminals to the\r
+right, the table needs to grow. It will be expanded to two columns and one row.\r
+This enables you to have different layouts for each container. The table then\r
+looks like this:</p></div>\r
+<div class="tableblock">\r
+<table rules="all"\r
+width="15%"\r
+frame="border"\r
+cellspacing="0" cellpadding="4">\r
+<col width="50%" />\r
+<col width="50%" />\r
+<tbody>\r
+<tr>\r
+<td align="center" valign="top"><p class="table">T1</p></td>\r
+<td align="center" valign="top"><p class="table">T2</p></td>\r
+</tr>\r
+</tbody>\r
+</table>\r
+</div>\r
+<div class="paragraph"><p>When moving terminal 2 to the bottom, the table will be expanded again.</p></div>\r
+<div class="tableblock">\r
+<table rules="all"\r
+width="15%"\r
+frame="border"\r
+cellspacing="0" cellpadding="4">\r
+<col width="50%" />\r
+<col width="50%" />\r
+<tbody>\r
+<tr>\r
+<td align="center" valign="top"><p class="table">T1</p></td>\r
+<td align="center" valign="top"><p class="table"></p></td>\r
+</tr>\r
+<tr>\r
+<td align="center" valign="top"><p class="table"></p></td>\r
+<td align="center" valign="top"><p class="table">T2</p></td>\r
+</tr>\r
+</tbody>\r
+</table>\r
+</div>\r
+<div class="paragraph"><p>You can really think of the layout table like a traditional HTML table, if\r
+you’ve ever designed one. Especially col- and rowspan work similarly. Below,\r
+you see an example of colspan=2 for the first container (which has T1 as\r
+window).</p></div>\r
+<div class="tableblock">\r
+<table rules="all"\r
+width="15%"\r
+frame="border"\r
+cellspacing="0" cellpadding="4">\r
+<col width="100%" />\r
+<tbody>\r
+<tr>\r
+<td align="center" valign="top"><div><div class="literalblock">\r
+<div class="content">\r
+<pre><tt>T1</tt></pre>\r
+</div></div></div></td>\r
+</tr>\r
+<tr>\r
+<td align="center" valign="top"><div><div class="tableblock">\r
+<table rules="all"\r
+width="100%"\r
+frame="void"\r
+cellspacing="0" cellpadding="4">\r
+<col width="50%" />\r
+<col width="50%" />\r
+<tbody>\r
+<tr>\r
+<td align="center" valign="top"><p class="table">T2</p></td>\r
+<td align="center" valign="top"><p class="table">T3</p></td>\r
+</tr>\r
+</tbody>\r
+</table>\r
+</div></div></td>\r
+</tr>\r
+</tbody>\r
+</table>\r
+</div>\r
+<div class="paragraph"><p>Furthermore, you can freely resize table cells.</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_files">2. Files</h2>\r
+<div class="sectionbody">\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+include/data.h\r
+</dt>\r
+<dd>\r
+<p>\r
+Contains data definitions used by nearly all files. You really need to read\r
+this first.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+include/*.h\r
+</dt>\r
+<dd>\r
+<p>\r
+Contains forward definitions for all public functions, as well as\r
+doxygen-compatible comments (so if you want to get a bit more of the big\r
+picture, either browse all header files or use doxygen if you prefer that).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/cfgparse.l\r
+</dt>\r
+<dd>\r
+<p>\r
+Contains the lexer for i3’s configuration file, written for <tt>flex(1)</tt>.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/cfgparse.y\r
+</dt>\r
+<dd>\r
+<p>\r
+Contains the parser for i3’s configuration file, written for <tt>bison(1)</tt>.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/click.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Contains all functions which handle mouse button clicks (right mouse button\r
+clicks initiate resizing and thus are relatively complex).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/client.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Contains all functions which are specific to a certain client (make it\r
+fullscreen, see if its class/name matches a pattern, kill it, …).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/commands.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Parsing commands and actually executing them (focusing, moving, …).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/config.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Parses the configuration file.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/debug.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Contains debugging functions to print unhandled X events.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/floating.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Contains functions for floating mode (mostly resizing/dragging).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/handlers.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Contains all handlers for all kinds of X events (new window title, new hints,\r
+unmapping, key presses, button presses, …).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/ipc.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Contains code for the IPC interface.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/layout.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Renders your layout (screens, workspaces, containers).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/mainx.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Initializes the window manager.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/manage.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Looks at existing or new windows and decides whether to manage them. If so, it\r
+reparents the window and inserts it into our data structures.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/resize.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Contains the functions to resize columns/rows in the table.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/table.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Manages the most important internal data structure, the design table.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/util.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Contains useful functions which are not really dependant on anything.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/workspace.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Contains all functions related to workspaces (displaying, hiding, renaming…)\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/xcb.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Contains wrappers to use xcb more easily.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/xinerama.c\r
+</dt>\r
+<dd>\r
+<p>\r
+(Re-)initializes the available screens and converts them to virtual screens\r
+(see below).\r
+</p>\r
+</dd>\r
+</dl></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_data_structures">3. Data structures</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>See include/data.h for documented data structures. The most important ones are\r
+explained right here.</p></div>\r
+<div class="paragraph"><p><span class="image">\r
+<img src="bigpicture.png" alt="The Big Picture" />\r
+</span></p></div>\r
+<div class="paragraph"><p>So, the hierarchy is:</p></div>\r
+<div class="olist arabic"><ol class="arabic">\r
+<li>\r
+<p>\r
+<strong>Virtual screens</strong> (Screen 0 in this example)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<strong>Workspaces</strong> (Workspace 1 in this example)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<strong>Table</strong> (There can only be one table per Workspace)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<strong>Container</strong> (left and right in this example)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<strong>Client</strong> (The two clients in the left container)\r
+</p>\r
+</li>\r
+</ol></div>\r
+<div class="sect2">\r
+<h3 id="_virtual_screens">3.1. Virtual screens</h3>\r
+<div class="paragraph"><p>A virtual screen (type <tt>i3Screen</tt>) is generated from the connected screens\r
+obtained through Xinerama. The difference to the raw Xinerama monitors as seen\r
+when using <tt>xrandr(1)</tt> is that it falls back to the lowest common resolution of\r
+the logical screens.</p></div>\r
+<div class="paragraph"><p>For example, if your notebook has 1280x800 and you connect a video projector\r
+with 1024x768, set up in clone mode (<tt>xrandr --output VGA --mode 1024x768\r
+--same-as LVDS</tt>), i3 will have one virtual screen.</p></div>\r
+<div class="paragraph"><p>However, if you configure it using <tt>xrandr --output VGA --mode 1024x768\r
+--right-of LVDS</tt>, i3 will generate two virtual screens. For each virtual\r
+screen, a new workspace will be assigned. New workspaces are created on the\r
+screen you are currently on.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_workspace">3.2. Workspace</h3>\r
+<div class="paragraph"><p>A workspace is identified by its number. Basically, you could think of\r
+workspaces as different desks in your office, if you like the desktop\r
+methaphor. They just contain different sets of windows and are completely\r
+separate of each other. Other window managers also call this &#8220;Virtual\r
+desktops&#8221;.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_the_layout_table_2">3.3. The layout table</h3>\r
+<div class="paragraph"><p>Each workspace has a table, which is just a two-dimensional dynamic array\r
+containing Containers (see below). This table grows and shrinks as you need it\r
+(by moving windows to the right you can create a new column in the table, by\r
+moving them to the bottom you create a new row).</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_container">3.4. Container</h3>\r
+<div class="paragraph"><p>A container is the content of a table’s cell. It holds an arbitrary amount of\r
+windows and has a specific layout (default layout, stack layout or tabbed\r
+layout). Containers can consume multiple table cells by modifying their\r
+colspan/rowspan attribute.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_client">3.5. Client</h3>\r
+<div class="paragraph"><p>A client is x11-speak for a window.</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_list_queue_macros">4. List/queue macros</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3 makes heavy use of the list macros defined in BSD operating systems. To\r
+ensure that the operating system on which i3 is compiled has all the expected\r
+features, i3 comes with <tt>include/queue.h</tt>. On BSD systems, you can use man\r
+<tt>queue(3)</tt>. On Linux, you have to use google (or read the source).</p></div>\r
+<div class="paragraph"><p>The lists used are <tt>SLIST</tt> (single linked lists), <tt>CIRCLEQ</tt> (circular\r
+queues) and TAILQ (tail queues). Usually, only forward traversal is necessary,\r
+so an <tt>SLIST</tt> works fine. If inserting elements at arbitrary positions or at\r
+the end of a list is necessary, a <tt>TAILQ</tt> is used instead. However, for the\r
+windows inside a container, a <tt>CIRCLEQ</tt> is necessary to go from the currently\r
+selected window to the window above/below.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_naming_conventions">5. Naming conventions</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>There is a row of standard variables used in many events. The following names\r
+should be chosen for those:</p></div>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+&#8220;conn&#8221; is the xcb_connection_t\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+&#8220;event&#8221; is the event of the particular type\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+&#8220;container&#8221; names a container\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+&#8220;client&#8221; names a client, for example when using a <tt>CIRCLEQ_FOREACH</tt>\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_startup_src_mainx_c_main">6. Startup (src/mainx.c, main())</h2>\r
+<div class="sectionbody">\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Establish the xcb connection\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Check for XKB extension on the separate X connection\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Check for Xinerama screens\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Grab the keycodes for which bindings exist\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Manage all existing windows\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Enter the event loop\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_keybindings">7. Keybindings</h2>\r
+<div class="sectionbody">\r
+<div class="sect2">\r
+<h3 id="_grabbing_the_bindings">7.1. Grabbing the bindings</h3>\r
+<div class="paragraph"><p>Grabbing the bindings is quite straight-forward. You pass X your combination of\r
+modifiers and the keycode you want to grab and whether you want to grab them\r
+actively or passively. Most bindings (everything except for bindings using\r
+Mode_switch) are grabbed passively, that is, just the window manager gets the\r
+event and cannot replay it.</p></div>\r
+<div class="paragraph"><p>We need to grab bindings that use Mode_switch actively because of a bug in X.\r
+When the window manager receives the keypress/keyrelease event for an actively\r
+grabbed keycode, it has to decide what to do with this event: It can either\r
+replay it so that other applications get it or it can prevent other\r
+applications from receiving it.</p></div>\r
+<div class="paragraph"><p>So, why do we need to grab keycodes actively? Because X does not set the\r
+state-property of keypress/keyrelease events properly. The Mode_switch bit is\r
+not set and we need to get it using XkbGetState. This means we cannot pass X\r
+our combination of modifiers containing Mode_switch when grabbing the key and\r
+therefore need to grab the keycode itself without any modifiers. This means,\r
+if you bind Mode_switch + keycode 38 ("a"), i3 will grab keycode 38 ("a") and\r
+check on each press of "a" if the Mode_switch bit is set using XKB. If yes, it\r
+will handle the event, if not, it will replay the event.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_handling_a_keypress">7.2. Handling a keypress</h3>\r
+<div class="paragraph"><p>As mentioned in "Grabbing the bindings", upon a keypress event, i3 first gets\r
+the correct state.</p></div>\r
+<div class="paragraph"><p>Then, it looks through all bindings and gets the one which matches the received\r
+event.</p></div>\r
+<div class="paragraph"><p>The bound command is parsed directly in command mode.</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_manage_windows_src_mainx_c_manage_window_and_reparent_window">8. Manage windows (src/mainx.c, manage_window() and reparent_window())</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p><tt>manage_window()</tt> does some checks to decide whether the window should be\r
+managed at all:</p></div>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Windows have to be mapped, that is, visible on screen\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+The override_redirect must not be set. Windows with override_redirect shall\r
+   not be managed by a window manager\r
+</p>\r
+</li>\r
+</ul></div>\r
+<div class="paragraph"><p>Afterwards, i3 gets the intial geometry and reparents the window (see\r
+<tt>reparent_window()</tt>) if it wasn’t already managed.</p></div>\r
+<div class="paragraph"><p>Reparenting means that for each window which is reparented, a new window,\r
+slightly larger than the original one, is created. The original window is then\r
+reparented to the bigger one (called "frame").</p></div>\r
+<div class="paragraph"><p>After reparenting, the window type (<tt>_NET_WM_WINDOW_TYPE</tt>) is checked to see\r
+whether this window is a dock (<tt>_NET_WM_WINDOW_TYPE_DOCK</tt>), like dzen2 for\r
+example. Docks are handled differently, they don’t have decorations and are not\r
+assigned to a specific container. Instead, they are positioned at the bottom\r
+of the screen. To get the height which needsd to be reserved for the window,\r
+the <tt>_NET_WM_STRUT_PARTIAL</tt> property is used.</p></div>\r
+<div class="paragraph"><p>Furthermore, the list of assignments (to other workspaces, which may be on\r
+other screens) is checked. If the window matches one of the user’s criteria,\r
+it may either be put in floating mode or moved to a different workspace. If the\r
+target workspace is not visible, the window will not be mapped.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_what_happens_when_an_application_is_started">9. What happens when an application is started?</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3 does not care for applications. All it notices is when new windows are\r
+mapped (see <tt>src/handlers.c</tt>, <tt>handle_map_request()</tt>). The window is then\r
+reparented (see section "Manage windows").</p></div>\r
+<div class="paragraph"><p>After reparenting the window, <tt>render_layout()</tt> is called which renders the\r
+internal layout table. The new window has been placed in the currently focused\r
+container and therefore the new window and the old windows (if any) need to be\r
+moved/resized so that the currently active layout (default/stacking/tabbed mode)\r
+is rendered correctly. To move/resize windows, a window is &#8220;configured&#8221; in\r
+X11-speak.</p></div>\r
+<div class="paragraph"><p>Some applications, such as MPlayer obviously assume the window manager is\r
+stupid and try to configure their windows by themselves. This generates an\r
+event called configurerequest. i3 handles these events and tells the window the\r
+size it had before the configurerequest (with the exception of not yet mapped\r
+windows, which get configured like they want to, and floating windows, which\r
+can reconfigure themselves).</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_net_wm_state">10. _NET_WM_STATE</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Only the _NET_WM_STATE_FULLSCREEN atom is handled. It calls\r
+&#8220;toggle_fullscreen()&#8221; for the specific client which just configures the\r
+client to use the whole screen on which it currently is. Also, it is set as\r
+fullscreen_client for the i3Screen.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_wm_name">11. WM_NAME</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>When the WM_NAME property of a window changes, its decoration (containing the\r
+title) is re-rendered. Note that WM_NAME is in COMPOUND_TEXT encoding which is\r
+totally uncommon and cumbersome. Therefore, the _NET_WM_NAME atom will be used\r
+if present.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_net_wm_name">12. _NET_WM_NAME</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Like WM_NAME, this atom contains the title of a window. However, _NET_WM_NAME\r
+is encoded in UTF-8. i3 will recode it to UCS-2 in order to be able to pass it\r
+to X. Using an appropriate font (ISO-10646), you can see most special\r
+characters (every special character contained in your font).</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_size_hints">13. Size hints</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Size hints specify the minimum/maximum size for a given window as well as its\r
+aspect ratio.  This is important for clients like mplayer, who only set the\r
+aspect ratio and resize their window to be as small as possible (but only with\r
+some video outputs, for example in Xv, while when using x11, mplayer does the\r
+necessary centering for itself).</p></div>\r
+<div class="paragraph"><p>So, when an aspect ratio was specified, i3 adjusts the height of the window\r
+until the size maintains the correct aspect ratio. For the code to do this, see\r
+src/layout.c, function resize_client().</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_rendering_src_layout_c_render_layout_and_render_container">14. Rendering (src/layout.c, render_layout() and render_container())</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>There are several entry points to rendering: <tt>render_layout()</tt>,\r
+<tt>render_workspace()</tt> and <tt>render_container()</tt>. The former one calls\r
+<tt>render_workspace()</tt> for every screen, which in turn will call\r
+<tt>render_container()</tt> for every container inside its layout table. Therefore, if\r
+you need to render only a single container, for example because a window was\r
+removed, added or changed its title, you should directly call\r
+render_container().</p></div>\r
+<div class="paragraph"><p>Rendering consists of two steps: In the first one, in <tt>render_workspace()</tt>, each\r
+container gets its position (screen offset + offset in the table) and size\r
+(container&#8217;s width times colspan/rowspan). Then, <tt>render_container()</tt> is called,\r
+which takes different approaches, depending on the mode the container is in:</p></div>\r
+<div class="sect2">\r
+<h3 id="_common_parts">14.1. Common parts</h3>\r
+<div class="paragraph"><p>On the frame (the window which was created around the client’s window for the\r
+decorations), a black rectangle is drawn as a background for windows like\r
+MPlayer, which do not completely fit into the frame.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_default_mode">14.2. Default mode</h3>\r
+<div class="paragraph"><p>Each clients gets the container’s width and an equal amount of height.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_stack_mode">14.3. Stack mode</h3>\r
+<div class="paragraph"><p>In stack mode, a window containing the decorations of all windows inside the\r
+container is placed at the top. The currently focused window is then given the\r
+whole remaining space.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_tabbed_mode">14.4. Tabbed mode</h3>\r
+<div class="paragraph"><p>Tabbed mode is like stack mode, except that the window decorations are drawn\r
+in one single line at the top of the container.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_window_decorations">14.5. Window decorations</h3>\r
+<div class="paragraph"><p>The window decorations consist of a rectangle in the appropriate color (depends\r
+on whether this window is the currently focused one, the last focused one in a\r
+not focused container or not focused at all) forming the background.\r
+Afterwards, two lighter lines are drawn and the last step is drawing the\r
+window’s title (see WM_NAME) onto it.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_fullscreen_windows">14.6. Fullscreen windows</h3>\r
+<div class="paragraph"><p>For fullscreen windows, the <tt>rect</tt> (x, y, width, height) is not changed to\r
+allow the client to easily go back to its previous position. Instead,\r
+fullscreen windows are skipped when rendering.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_resizing_containers">14.7. Resizing containers</h3>\r
+<div class="paragraph"><p>By clicking and dragging the border of a container, you can resize the whole\r
+column (respectively row) which this container is in. This is necessary to keep\r
+the table layout working and consistent.</p></div>\r
+<div class="paragraph"><p>The resizing works similarly to the resizing of floating windows or movement of\r
+floating windows:</p></div>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+A new, invisible window with the size of the root window is created\r
+  (<tt>grabwin</tt>)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Another window, 2px width and as high as your screen (or vice versa for\r
+  horizontal resizing) is created. Its background color is the border color and\r
+  it is only there to inform the user how big the container will be (it\r
+  creates the impression of dragging the border out of the container).\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+The <tt>drag_pointer</tt> function of <tt>src/floating.c</tt> is called to grab the pointer\r
+  and enter its own event loop which will pass all events (expose events) but\r
+  motion notify events. This function then calls the specified callback\r
+  (<tt>resize_callback</tt>) which does some boundary checking and moves the helper\r
+  window. As soon as the mouse button is released, this loop will be\r
+  terminated.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+The new width_factor for each involved column (respectively row) will be\r
+  calculated.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_user_commands_commandmode_src_commands_c">15. User commands / commandmode (src/commands.c)</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Like in vim, you can control i3 using commands. They are intended to be a\r
+powerful alternative to lots of shortcuts, because they can be combined. There\r
+are a few special commands, which are the following:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+exec &lt;command&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+Starts the given command by passing it to <tt>/bin/sh</tt>.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+restart\r
+</dt>\r
+<dd>\r
+<p>\r
+Restarts i3 by executing <tt>argv[0]</tt> (the path with which you started i3) without\r
+forking.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+w\r
+</dt>\r
+<dd>\r
+<p>\r
+"With". This is used to select a bunch of windows. Currently, only selecting\r
+the whole container in which the window is in, is supported by specifying "w".\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+f, s, d\r
+</dt>\r
+<dd>\r
+<p>\r
+Toggle fullscreen, stacking, default mode for the current window/container.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+<div class="paragraph"><p>The other commands are to be combined with a direction. The directions are h,\r
+j, k and l, like in vim (h = left, j = down, k = up, l = right). When you just\r
+specify the direction keys, i3 will move the focus in that direction. You can\r
+provide "m" or "s" before the direction to move a window respectively or snap.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_gotchas">16. Gotchas</h2>\r
+<div class="sectionbody">\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Forgetting to call <tt>xcb_flush(conn);</tt> after sending a request. This usually\r
+  leads to code which looks like it works fine but which does not work under\r
+  certain conditions.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_using_git_sending_patches">17. Using git / sending patches</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>For a short introduction into using git, see\r
+<a href="http://www.spheredev.org/wiki/Git_for_the_lazy">http://www.spheredev.org/wiki/Git_for_the_lazy</a> or, for more documentation, see\r
+<a href="http://git-scm.com/documentation">http://git-scm.com/documentation</a></p></div>\r
+<div class="paragraph"><p>When you want to send a patch because you fixed a bug or implemented a cool\r
+feature (please talk to us before working on features to see whether they are\r
+maybe already implemented, not possible for some some reason, or don’t fit\r
+into the concept), please use git to create a patchfile.</p></div>\r
+<div class="paragraph"><p>First of all, update your working copy to the latest version of the master\r
+branch:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>git pull</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Afterwards, make the necessary changes for your bugfix/feature. Then, review\r
+the changes using <tt>git diff</tt> (you might want to enable colors in the diff using\r
+<tt>git config diff.color auto</tt>).  When you are definitely done, use <tt>git commit\r
+-a</tt> to commit all changes you’ve made.</p></div>\r
+<div class="paragraph"><p>Then, use the following command to generate a patchfile which we can directly\r
+apply to the branch, preserving your commit message and name:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>git format-patch origin</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Just send us the generated file via email.</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer" lang="de">\r
+© 2009-2011 Michael Stapelberg, <a href="/impress.html">Impressum</a>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/docs/3.e/i3.html b/docs/3.e/i3.html
new file mode 100644 (file)
index 0000000..4a3a4e6
--- /dev/null
@@ -0,0 +1,529 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<link rel="icon" type="image/png" href="/favicon.png">\r
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.4" />\r
+<title>i3: i3(1)</title>\r
+<link rel="stylesheet" href="/css/style.css" type="text/css" />\r
+<link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+window.onload = function(){asciidoc.footnotes(); asciidoc.toc(2);}\r
+/*]]>*/\r
+</script>\r
+<script type="text/javascript" src="/js/asciidoc-xhtml11.js"></script>\r
+</head>\r
+<body class="article">\r
+\r
+        <div id="main">\r
+            <a href="/"><h1 id="title">i3 - improved tiling WM</h1></a>\r
+                        <ul id="nav">\r
+                                <li><a style="border-bottom: 2px solid #fff" href="/docs">Docs</a></li>\r
+                                <li><a href="/screenshots">Screens</a></li>\r
+                                <li><a href="/contact">Contact</a></li>\r
+                                <li><a href="http://bugs.i3wm.org/">Bugs</a></li>\r
+                        </ul>\r
+        <br style="clear: both">\r
+<div id="content">\r
+<div id="header">\r
+<h1>i3(1)</h1>\r
+<span id="author">Michael Stapelberg</span><br />\r
+<span id="email"><tt>&lt;<a href="mailto:michael+i3@stapelberg.de">michael+i3@stapelberg.de</a>&gt;</tt></span><br />\r
+<span id="revnumber">version 3.epsilon,</span>\r
+<span id="revdate">March 2010</span>\r
+<div id="toc">
+  <div id="toctitle">Table of Contents</div>
+  <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_name">1. NAME</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3 - an improved dynamic, tiling window manager</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_synopsis">2. SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3 [-a] [-c configfile] [-C] [-d &lt;loglevel&gt;] [-v] [-V]</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_options">3. OPTIONS</h2>\r
+<div class="sectionbody">\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+-a\r
+</dt>\r
+<dd>\r
+<p>\r
+Disables autostart.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+-c\r
+</dt>\r
+<dd>\r
+<p>\r
+Specifies an alternate configuration file path.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+-C\r
+</dt>\r
+<dd>\r
+<p>\r
+Check the configuration file for validity and exit.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+-d\r
+</dt>\r
+<dd>\r
+<p>\r
+Specifies the debug loglevel. To see the most output, use -d all.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+-v\r
+</dt>\r
+<dd>\r
+<p>\r
+Display version number (and date of the last commit).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+-V\r
+</dt>\r
+<dd>\r
+<p>\r
+Be verbose.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_description">4. DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<div class="sect2">\r
+<h3 id="_introduction">4.1. INTRODUCTION</h3>\r
+<div class="paragraph"><p>i3 was created because wmii, our favorite window manager at the time, didn’t\r
+provide some features we wanted (multi-monitor done right, for example), had\r
+some bugs, didn’t progress since quite some time and wasn’t easy to hack at all\r
+(source code comments/documentation completely lacking). Still, we think the\r
+wmii developers and contributors did a great job. Thank you for inspiring us to\r
+create i3.</p></div>\r
+<div class="paragraph"><p>Please be aware that i3 is primarily targeted at advanced users and developers.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_important_note_to_nvidia_binary_driver_users">4.2. IMPORTANT NOTE TO nVidia BINARY DRIVER USERS</h3>\r
+<div class="paragraph"><p>If you are using the nVidia binary graphics driver (also known as <em>blob</em>)\r
+you need to use the <tt>--force-xinerama</tt> flag (in your .xsession) when starting\r
+i3, like so:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>exec i3 --force-xinerama -V &gt;&gt;~/.i3/i3log 2&gt;&amp;1</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>See also docs/multi-monitor for the full explanation.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_terminology">4.3. TERMINOLOGY</h3>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+Client\r
+</dt>\r
+<dd>\r
+<p>\r
+A client is X11-speak for a window.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Table\r
+</dt>\r
+<dd>\r
+<p>\r
+Your workspace is managed using a table. You can move windows around and create\r
+new columns (move a client to the right) or rows (move it to the bottom)\r
+implicitly.\r
+</p>\r
+<div class="paragraph"><p>By "snapping" a client in a specific direction, you increase its colspan/rowspan.</p></div>\r
+</dd>\r
+<dt class="hdlist1">\r
+Container\r
+</dt>\r
+<dd>\r
+<p>\r
+A container contains a variable number of clients. Each cell of the table is a\r
+container.\r
+</p>\r
+<div class="paragraph"><p>Containers can be used in various modes. The default mode is called "default"\r
+and just resizes each client equally so that it fits.</p></div>\r
+</dd>\r
+<dt class="hdlist1">\r
+Workspace\r
+</dt>\r
+<dd>\r
+<p>\r
+A workspace is a set of clients (technically speaking, it’s just a table).\r
+Other window managers call this "Virtual Desktops".\r
+</p>\r
+<div class="paragraph"><p>In i3, each workspace is assigned to a specific virtual screen. By default,\r
+screen 1 has workspace 1, screen 2 has workspace 2 and so on… However, when you\r
+create a new workspace (by simply switching to it), it’ll be assigned the\r
+screen you are currently on.</p></div>\r
+</dd>\r
+<dt class="hdlist1">\r
+Output\r
+</dt>\r
+<dd>\r
+<p>\r
+Using XRandR, you can have an X11 screen spanning multiple real monitors.\r
+Furthermore, you can set them up in cloning mode or with positions (monitor 1\r
+is left of monitor 2).\r
+</p>\r
+<div class="paragraph"><p>i3 uses the RandR API to query which outputs are available and which screens\r
+are connected to these outputs.</p></div>\r
+</dd>\r
+</dl></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_keybindings">5. KEYBINDINGS</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Here is a short overview of the default keybindings:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+j/k/l/;\r
+</dt>\r
+<dd>\r
+<p>\r
+Direction keys (left, down, up, right). They are on your homerow (see the mark\r
+on your "j" key). Alternatively, you can use the cursor keys.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+&lt;direction&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+Focus window in &lt;direction&gt;.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod3+&lt;direction&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+Focus container in &lt;direction&gt;.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+Shift+&lt;direction&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+Move window to &lt;direction&gt;.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod3+Shift+&lt;direction&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+Move container to &lt;direction&gt;.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+Control+&lt;direction&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+Snap container to &lt;direction&gt;.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+&lt;number&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+Switch to workspace &lt;number&gt;.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+Shift+&lt;number&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+Move window to workspace &lt;number&gt;.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+f\r
+</dt>\r
+<dd>\r
+<p>\r
+Toggle fullscreen mode.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+h\r
+</dt>\r
+<dd>\r
+<p>\r
+Enable stacking layout for the current container.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+e\r
+</dt>\r
+<dd>\r
+<p>\r
+Enable default layout for the current container.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+Shift+Space\r
+</dt>\r
+<dd>\r
+<p>\r
+Toggle tiling/floating for the current window.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+t\r
+</dt>\r
+<dd>\r
+<p>\r
+Select the first tiling window if the current window is floating and vice-versa.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+Shift+q\r
+</dt>\r
+<dd>\r
+<p>\r
+Kills the current window. This is equivalent to "clicking on the close button",\r
+meaning a polite request to the application to close this window. For example,\r
+Firefox will save its session upon such a request. If the application does not\r
+support that, the window will be killed and it depends on the application what\r
+happens.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+Shift+r\r
+</dt>\r
+<dd>\r
+<p>\r
+Restarts i3 in place (without losing any windows, but at this time, the layout\r
+and placement of windows is not retained).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+Shift+e\r
+</dt>\r
+<dd>\r
+<p>\r
+Exits i3.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_files">6. FILES</h2>\r
+<div class="sectionbody">\r
+<div class="sect2">\r
+<h3 id="_i3_config_or_config_i3_config">6.1. ~/.i3/config (or ~/.config/i3/config)</h3>\r
+<div class="paragraph"><p>When starting, i3 looks for configuration files in the following order:</p></div>\r
+<div class="olist arabic"><ol class="arabic">\r
+<li>\r
+<p>\r
+~/.config/i3/config (or $XDG_CONFIG_HOME/i3/config if set)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+/etc/xdg/i3/config (or $XDG_CONFIG_DIRS/i3/config if set)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+~/.i3/config\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+/etc/i3/config\r
+</p>\r
+</li>\r
+</ol></div>\r
+<div class="paragraph"><p>You can specify a custom path using the -c option.</p></div>\r
+<div class="listingblock">\r
+<div class="title">Sample configuration</div>\r
+<div class="content">\r
+<pre><tt>font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1\r
+\r
+# Start terminal (Mod1+Enter)\r
+bind Mod1+36 exec /usr/bin/urxvt\r
+\r
+# Start dmenu (Mod1+v)\r
+bind Mod1+55 exec /usr/bin/dmenu_run\r
+\r
+# Kill current client (Mod1+Shift+q)\r
+bind Mod1+Shift+24 kill\r
+\r
+# Beamer on/off\r
+bind Mod1+73 exec /home/michael/toggle_beamer.sh\r
+\r
+# Screen locking\r
+bind Mod1+68 exec /usr/bin/i3lock\r
+\r
+# Restart i3 inplace (Mod1+Shift+r)\r
+bind Mod1+Shift+27 restart\r
+\r
+# Exit i3 (Mod1+Shift+e)\r
+bind Mod1+Shift+26 exit\r
+\r
+# Brightness\r
+bind Mod1+97 exec sudo sh -c "echo up &gt; /proc/acpi/ibm/brightness"\r
+bind Mod1+103 exec sudo sh -c "echo down &gt; /proc/acpi/ibm/brightness"\r
+\r
+# Fullscreen (Mod1+f)\r
+bind Mod1+41 f\r
+\r
+# Stacking (Mod1+h)\r
+bind Mod1+43 s\r
+\r
+# Default (Mod1+e)\r
+bind Mod1+26 d\r
+\r
+# Toggle tiling/floating of the current window (Mod1+Shift+Space)\r
+bind Mod1+Shift+65 t\r
+\r
+# Go into the tiling layer / floating layer, depending on whether\r
+# the current window is tiling / floating (Mod1+t)\r
+bind Mod1+28 focus ft\r
+\r
+# Focus (Mod1+j/k/l/;)\r
+bind Mod1+44 h\r
+bind Mod1+45 j\r
+bind Mod1+46 k\r
+bind Mod1+47 l\r
+\r
+# Focus Container (Mod3+j/k/l/;)\r
+bind Mod3+44 wch\r
+bind Mod3+45 wcj\r
+bind Mod3+46 wck\r
+bind Mod3+47 wcl\r
+\r
+# Snap (Mod1+Control+j/k/l/;)\r
+bind Mod1+Control+44 sh\r
+bind Mod1+Control+45 sj\r
+bind Mod1+Control+46 sk\r
+bind Mod1+Control+47 sl\r
+\r
+# Move (Mod1+Shift+j/k/l/;)\r
+bind Mod1+Shift+44 mh\r
+bind Mod1+Shift+45 mj\r
+bind Mod1+Shift+46 mk\r
+bind Mod1+Shift+47 ml\r
+\r
+# Move Container (Mod3+Shift+j/k/l/;)\r
+bind Mod3+Shift+44 wcmh\r
+bind Mod3+Shift+45 wcmj\r
+bind Mod3+Shift+46 wcmk\r
+bind Mod3+Shift+47 wcml\r
+\r
+# Workspaces\r
+bind Mod1+10 1\r
+bind Mod1+11 2\r
+...\r
+\r
+# Move to Workspace\r
+bind Mod1+Shift+10 1\r
+bind Mod1+Shift+11 2\r
+...</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_xsession">6.2. ~/.xsession</h3>\r
+<div class="paragraph"><p>This file is where you should configure your locales and start i3. It is run by\r
+your login manager (xdm, slim, gdm, …) as soon as you login.</p></div>\r
+<div class="listingblock">\r
+<div class="title">Sample xsession</div>\r
+<div class="content">\r
+<pre><tt># Disable DPMS turning off the screen\r
+xset dpms force on\r
+xset s off\r
+\r
+# Disable bell\r
+xset -b\r
+\r
+# Enable zapping (C-A-&lt;Bksp&gt; kills X)\r
+setxkbmap -option terminate:ctrl_alt_bksp\r
+\r
+# Enforce correct locales from the beginning\r
+unset LC_COLLATE\r
+export LC_CTYPE=de_DE.UTF-8\r
+export LC_TIME=de_DE.UTF-8\r
+export LC_NUMERIC=de_DE.UTF-8\r
+export LC_MONETARY=de_DE.UTF-8\r
+export LC_MESSAGES=C\r
+export LC_PAPER=de_DE.UTF-8\r
+export LC_NAME=de_DE.UTF-8\r
+export LC_ADDRESS=de_DE.UTF-8\r
+export LC_TELEPHONE=de_DE.UTF-8\r
+export LC_MEASUREMENT=de_DE.UTF-8\r
+export LC_IDENTIFICATION=de_DE.UTF-8\r
+\r
+# Use XToolkit in java applications\r
+export AWT_TOOLKIT=XToolkit\r
+\r
+# Set background color\r
+xsetroot -solid "#333333"\r
+\r
+# Enable core dumps in case something goes wrong\r
+ulimit -c unlimited\r
+\r
+# Start i3 and log to ~/.i3/logfile\r
+echo "Starting at $(date)" &gt;&gt; ~/.i3/logfile\r
+exec /usr/bin/i3 -V -d all &gt;&gt; ~/.i3/logfile</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_todo">7. TODO</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>There is still lot of work to do. Please check our bugtracker for up-to-date\r
+information about tasks which are still not finished.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_see_also">8. SEE ALSO</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>You should have a copy of the userguide (featuring nice screenshots/graphics\r
+which is why this is not integrated into this manpage), the debugging guide,\r
+and the "how to hack" guide. If you are building from source, run:\r
+ <tt>make -C docs</tt></p></div>\r
+<div class="paragraph"><p>You can also access these documents online at <a href="http://i3.zekjur.net/">http://i3.zekjur.net/</a></p></div>\r
+<div class="paragraph"><p>i3-input(1), i3-msg(1), i3-wsbar(1)</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_author">9. AUTHOR</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Michael Stapelberg and contributors</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer" lang="de">\r
+© 2009-2011 Michael Stapelberg, <a href="/impress.html">Impressum</a>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/docs/3.e/i3status.html b/docs/3.e/i3status.html
new file mode 100644 (file)
index 0000000..0860168
--- /dev/null
@@ -0,0 +1,372 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<link rel="icon" type="image/png" href="/favicon.png">\r
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.4" />\r
+<title>i3: i3status(1)</title>\r
+<link rel="stylesheet" href="/css/style.css" type="text/css" />\r
+<link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+window.onload = function(){asciidoc.footnotes(); asciidoc.toc(2);}\r
+/*]]>*/\r
+</script>\r
+<script type="text/javascript" src="/js/asciidoc-xhtml11.js"></script>\r
+</head>\r
+<body class="article">\r
+\r
+        <div id="main">\r
+            <a href="/"><h1 id="title">i3 - improved tiling WM</h1></a>\r
+                        <ul id="nav">\r
+                                <li><a style="border-bottom: 2px solid #fff" href="/docs">Docs</a></li>\r
+                                <li><a href="/screenshots">Screens</a></li>\r
+                                <li><a href="/contact">Contact</a></li>\r
+                                <li><a href="http://bugs.i3wm.org/">Bugs</a></li>\r
+                        </ul>\r
+        <br style="clear: both">\r
+<div id="content">\r
+<div id="header">\r
+<h1>i3status(1)</h1>\r
+<span id="author">Michael Stapelberg</span><br />\r
+<span id="email"><tt>&lt;<a href="mailto:michael+i3@stapelberg.de">michael+i3@stapelberg.de</a>&gt;</tt></span><br />\r
+<span id="revnumber">version 2.3,</span>\r
+<span id="revdate">July 2011</span>\r
+<div id="toc">
+  <div id="toctitle">Table of Contents</div>
+  <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_name">1. NAME</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3status - Generates a status line for dzen2 or xmobar</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_synopsis">2. SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3status [-c configfile] [-h] [-v]</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_options">3. OPTIONS</h2>\r
+<div class="sectionbody">\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+-c\r
+</dt>\r
+<dd>\r
+<p>\r
+Specifies an alternate configuration file path. By default, i3status looks for\r
+configuration files in the following order:\r
+</p>\r
+<div class="olist arabic"><ol class="arabic">\r
+<li>\r
+<p>\r
+~/.i3status.conf\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+~/.config/i3status/config (or $XDG_CONFIG_HOME/i3status/config if set)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+/etc/i3status.conf\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+/etc/xdg/i3status/config (or $XDG_CONFIG_DIRS/i3status/config if set)\r
+</p>\r
+</li>\r
+</ol></div>\r
+</dd>\r
+</dl></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_description">4. DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3status is a small program (about 1500 SLOC) for generating a status bar for\r
+i3bar, dzen2, xmobar or similar programs. It is designed to be very\r
+efficient by issuing a very small number of system calls, as one generally\r
+wants to update such a status line every second. This ensures that even under\r
+high load, your status bar is updated correctly. Also, it saves a bit of energy\r
+by not hogging your CPU as much as spawning the corresponding amount of shell\r
+commands would.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_configuration">5. CONFIGURATION</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Since version 2, the configuration file for i3status will be parsed using\r
+libconfuse. This makes configuration easier in the programmer’s point of\r
+view and more flexible for the user at the same time.</p></div>\r
+<div class="paragraph"><p>The basic idea of i3status is that you can specify which "modules" should\r
+be used (the order directive). You can then configure each module with its\r
+own section. For every module, you can specify the output format. See below\r
+for a complete reference.</p></div>\r
+<div class="listingblock">\r
+<div class="title">Sample configuration</div>\r
+<div class="content">\r
+<pre><tt>general {\r
+        output_format = "dzen2"\r
+        colors = true\r
+        interval = 5\r
+}\r
+\r
+order  = "ipv6"\r
+order += "disk /"\r
+order += "run_watch DHCP"\r
+order += "run_watch VPN"\r
+order += "wireless wlan0"\r
+order += "ethernet eth0"\r
+order += "battery 0"\r
+order += "cpu_temperature 0"\r
+order += "load"\r
+order += "time"\r
+\r
+wireless wlan0 {\r
+        format_up = "W: (%quality at %essid, %bitrate) %ip"\r
+        format_down = "W: down"\r
+}\r
+\r
+ethernet eth0 {\r
+        # if you use %speed, i3status requires the cap_net_admin capability\r
+        format_up = "E: %ip (%speed)"\r
+        format_down = "E: down"\r
+}\r
+\r
+battery 0 {\r
+        format = "%status %percentage %remaining"\r
+}\r
+\r
+run_watch DHCP {\r
+        pidfile = "/var/run/dhclient*.pid"\r
+}\r
+\r
+run_watch VPN {\r
+        pidfile = "/var/run/vpnc/pid"\r
+}\r
+\r
+time {\r
+        format = "%Y-%m-%d %H:%M:%S"\r
+}\r
+\r
+load {\r
+        format = "%5min"\r
+}\r
+\r
+cpu_temperature 0 {\r
+        format = "T: %degrees °C"\r
+        path = "/sys/devices/platform/coretemp.0/temp1_input"\r
+}\r
+\r
+disk "/" {\r
+        format = "%free"\r
+}</tt></pre>\r
+</div></div>\r
+<div class="sect2">\r
+<h3 id="_general">5.1. General</h3>\r
+<div class="paragraph"><p>The <tt>colors</tt> directive will disable all colors if you set it to <tt>false</tt>. You can\r
+also specify the colors that will be used to display "good", "degraded" or "bad"\r
+values using the <tt>color_good</tt>, <tt>color_degraded</tt> or <tt>color_bad</tt> directives,\r
+respectively. Those directives are only used if color support is not disabled by\r
+the <tt>colors</tt> directive. The input format for color values is the canonical RGB\r
+hexadecimal triplet (with no separators between the colors), prefixed by a hash\r
+character ("#").</p></div>\r
+<div class="paragraph"><p><strong>Example configuration</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>color_good = "#00FF00"</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Likewise, you can use the <tt>color_separator</tt> directive to specify the color that\r
+will be used to paint the separator bar. The separator is always output in\r
+color, even when colors are disabled by the <tt>colors</tt> directive.</p></div>\r
+<div class="paragraph"><p>The <tt>interval</tt> directive specifies the time in seconds for which i3status will\r
+sleep before printing the next status line.</p></div>\r
+<div class="paragraph"><p>Using <tt>output_format</tt> you can chose which format strings i3status should\r
+use in its output. Currently available are:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+dzen2\r
+</dt>\r
+<dd>\r
+<p>\r
+Dzen is a general purpose messaging, notification and menuing program for X11.\r
+It was designed to be scriptable in any language and integrate well with window\r
+managers like dwm, wmii and xmonad though it will work with any windowmanger\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+xmobar\r
+</dt>\r
+<dd>\r
+<p>\r
+xmobar is a minimalistic, text based, status bar. It was designed to work\r
+with the xmonad Window Manager.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+none\r
+</dt>\r
+<dd>\r
+<p>\r
+Does not use any color codes. Separates values by the pipe symbol. This should\r
+be used with i3bar and can be used for custom scripts.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_ipv6">5.2. IPv6</h3>\r
+<div class="paragraph"><p>This module gets the IPv6 address used for outgoing connections (that is, the\r
+best available public IPv6 address on your computer).</p></div>\r
+<div class="paragraph"><p><strong>Example format_up</strong>: <tt>%ip</tt></p></div>\r
+<div class="paragraph"><p><strong>Example format_down</strong> <tt>no IPv6</tt></p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_disk">5.3. Disk</h3>\r
+<div class="paragraph"><p>Gets used, free, available and total amount of bytes on the given mounted filesystem.</p></div>\r
+<div class="paragraph"><p><strong>Example order</strong>: <tt>disk /mnt/usbstick</tt></p></div>\r
+<div class="paragraph"><p><strong>Example format</strong>: <tt>%free (%avail)/ %total</tt></p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_run_watch">5.4. Run-watch</h3>\r
+<div class="paragraph"><p>Expands the given path to a pidfile and checks if the process ID found inside\r
+is valid (that is, if the process is running). You can use this to check if\r
+a specific application, such as a VPN client or your DHCP client is running.</p></div>\r
+<div class="paragraph"><p><strong>Example order</strong>: <tt>run_watch DHCP</tt></p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_wireless">5.5. Wireless</h3>\r
+<div class="paragraph"><p>Gets the link quality and ESSID of the given wireless network interface. You\r
+can specify different format strings for the network being connected or not\r
+connected.</p></div>\r
+<div class="paragraph"><p><strong>Example order</strong>: <tt>wireless wlan0</tt></p></div>\r
+<div class="paragraph"><p><strong>Example format</strong>: <tt>W: (%quality at %essid, %bitrate) %ip</tt></p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_ethernet">5.6. Ethernet</h3>\r
+<div class="paragraph"><p>Gets the IP address and (if possible) the link speed of the given ethernet\r
+interface. Getting the link speed requires the cap_net_admin capability. Set\r
+it using <tt>setcap cap_net_admin=ep $(which i3status)</tt>.</p></div>\r
+<div class="paragraph"><p><strong>Example order</strong>: <tt>ethernet eth0</tt></p></div>\r
+<div class="paragraph"><p><strong>Example format</strong>: <tt>E: %ip (%speed)</tt></p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_battery">5.7. Battery</h3>\r
+<div class="paragraph"><p>Gets the status (charging, discharging, running), percentage and remaining\r
+time of the given battery. If you want to use the last full capacity instead\r
+of the design capacity (when using the design capacity, it may happen that\r
+your battery is at 23% when fully charged because it’s old. In general, I\r
+want to see it this way, because it tells me how worn off my battery is.),\r
+just specify <tt>last_full_capacity = true</tt>.</p></div>\r
+<div class="paragraph"><p><strong>Example order</strong>: <tt>battery 0</tt></p></div>\r
+<div class="paragraph"><p><strong>Example format</strong>: <tt>%status %remaining</tt></p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_cpu_temperature">5.8. CPU-Temperature</h3>\r
+<div class="paragraph"><p>Gets the temperature of the given thermal zone.</p></div>\r
+<div class="paragraph"><p><strong>Example order</strong>: <tt>cpu_temperature 0</tt></p></div>\r
+<div class="paragraph"><p><strong>Example format</strong>: <tt>T: %degrees °C</tt></p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_cpu_usage">5.9. CPU Usage</h3>\r
+<div class="paragraph"><p>Gets the percentual CPU usage from <tt>/proc/stat</tt>.</p></div>\r
+<div class="paragraph"><p><strong>Example order</strong>: <tt>cpu_usage</tt></p></div>\r
+<div class="paragraph"><p><strong>Example format</strong>: <tt>%usage</tt></p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_load">5.10. Load</h3>\r
+<div class="paragraph"><p>Gets the system load (number of processes waiting for CPU time in the last\r
+5, 10 and 15 minutes).</p></div>\r
+<div class="paragraph"><p><strong>Example order</strong>: <tt>load</tt></p></div>\r
+<div class="paragraph"><p><strong>Example format</strong>: <tt>%5min %10min %15min</tt></p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_time">5.11. Time</h3>\r
+<div class="paragraph"><p>Formats the current system time. See <tt>strftime(3)</tt> for the format.</p></div>\r
+<div class="paragraph"><p><strong>Example order</strong>: <tt>time</tt></p></div>\r
+<div class="paragraph"><p><strong>Example format</strong>: <tt>%Y-%m-%d %H:%M:%S</tt></p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_ddate">5.12. DDate</h3>\r
+<div class="paragraph"><p>Outputs the current discordian date in user-specified format. See <tt>ddate(1)</tt> for\r
+details on the format string.\r
+<strong>Note</strong>: Neither <strong>%.</strong> nor <strong>%X</strong> are implemented yet.</p></div>\r
+<div class="paragraph"><p><strong>Example order</strong>: <tt>ddate</tt></p></div>\r
+<div class="paragraph"><p><strong>Example format</strong>: <tt>%{%a, %b %d%}, %Y%N - %H</tt></p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_volume">5.13. Volume</h3>\r
+<div class="paragraph"><p>Outputs the volume of the specified mixer on the specified device. Works only\r
+on Linux because it uses ALSA.</p></div>\r
+<div class="paragraph"><p><strong>Example order</strong>: <tt>volume master</tt></p></div>\r
+<div class="paragraph"><p><strong>Example format</strong>: <tt>♪: %volume</tt></p></div>\r
+<div class="paragraph"><p><strong>Example configuration</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>volume master {\r
+        format = "♪: %volume"\r
+        device = "default"\r
+        mixer = "Master"\r
+        mixer_idx = 0\r
+}</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_using_i3status_with_dzen2">6. Using i3status with dzen2</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>After installing dzen2, you can directly use it with i3status. Just ensure that\r
+<tt>output_format</tt> is set to <tt>dzen2</tt>.</p></div>\r
+<div class="paragraph"><p><strong>Example for usage of i3status with dzen2</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>i3status | dzen2 -fg white -ta r -w 1280 \\r
+-fn "-misc-fixed-medium-r-normal--13-120-75-75-C-70-iso8859-1"</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_using_i3status_with_xmobar">7. Using i3status with xmobar</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>To get xmobar to start, you might need to copy the default configuration\r
+file to <tt>~/.xmobarrc</tt>. Also, ensure that the <tt>output_format</tt> option for i3status\r
+is set to <tt>xmobar</tt>.</p></div>\r
+<div class="paragraph"><p><strong>Example for usage of i3status with xmobar</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>i3status | xmobar -o -t "%StdinReader%" -c "[Run StdinReader]"</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_see_also">8. SEE ALSO</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p><tt>strftime(3)</tt>, <tt>date(1)</tt>, <tt>glob(3)</tt>, <tt>dzen2(1)</tt>, <tt>xmobar(1)</tt></p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_authors">9. AUTHORS</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Michael Stapelberg and contributors</p></div>\r
+<div class="paragraph"><p>Thorsten Toepper</p></div>\r
+<div class="paragraph"><p>Baptiste Daroussin</p></div>\r
+<div class="paragraph"><p>Axel Wagner</p></div>\r
+<div class="paragraph"><p>Fernando Tarlá Cardoso Lemos</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer" lang="de">\r
+© 2009-2011 Michael Stapelberg, <a href="/impress.html">Impressum</a>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/docs/3.e/ipc.html b/docs/3.e/ipc.html
new file mode 100644 (file)
index 0000000..88b13b7
--- /dev/null
@@ -0,0 +1,529 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<link rel="icon" type="image/png" href="/favicon.png">\r
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.4" />\r
+<title>i3: IPC interface (interprocess communication)</title>\r
+<link rel="stylesheet" href="/css/style.css" type="text/css" />\r
+<link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+window.onload = function(){asciidoc.footnotes(); asciidoc.toc(2);}\r
+/*]]>*/\r
+</script>\r
+<script type="text/javascript" src="/js/asciidoc-xhtml11.js"></script>\r
+</head>\r
+<body class="article">\r
+\r
+        <div id="main">\r
+            <a href="/"><h1 id="title">i3 - improved tiling WM</h1></a>\r
+                        <ul id="nav">\r
+                                <li><a style="border-bottom: 2px solid #fff" href="/docs">Docs</a></li>\r
+                                <li><a href="/screenshots">Screens</a></li>\r
+                                <li><a href="/contact">Contact</a></li>\r
+                                <li><a href="http://bugs.i3wm.org/">Bugs</a></li>\r
+                        </ul>\r
+        <br style="clear: both">\r
+<div id="content">\r
+<div id="header">\r
+<h1>IPC interface (interprocess communication)</h1>\r
+<span id="author">Michael Stapelberg</span><br />\r
+<span id="email"><tt>&lt;<a href="mailto:michael+i3@stapelberg.de">michael+i3@stapelberg.de</a>&gt;</tt></span><br />\r
+<span id="revdate">March 2010</span>\r
+<div id="toc">
+  <div id="toctitle">Table of Contents</div>
+  <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
+</div>\r
+</div>\r
+<div id="preamble">\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>This document describes how to interface with i3 from a separate process. This\r
+is useful for example to remote-control i3 (to write test cases for example) or\r
+to get various information like the current workspaces to implement an external\r
+workspace bar.</p></div>\r
+<div class="paragraph"><p>The method of choice for IPC in our case is a unix socket because it has very\r
+little overhead on both sides and is usually available without headaches in\r
+most languages. In the default configuration file, no ipc-socket path is\r
+specified and thus no socket is created. The standard path (which <tt>i3-msg</tt> and\r
+<tt>i3-input</tt> use) is <tt>~/.i3/ipc.sock</tt>.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_establishing_a_connection">1. Establishing a connection</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>To establish a connection, simply open the IPC socket. The following code\r
+snippet illustrates this in Perl:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>use IO::Socket::UNIX;\r
+my $sock = IO::Socket::UNIX-&gt;new(Peer =&gt; '~/.i3/ipc.sock');</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_sending_messages_to_i3">2. Sending messages to i3</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>To send a message to i3, you have to format in the binary message format which\r
+i3 expects. This format specifies a magic string in the beginning to ensure\r
+the integrity of messages (to prevent follow-up errors). Following the magic\r
+string comes the length of the payload of the message as 32-bit integer, and\r
+the type of the message as 32-bit integer (the integers are not converted, so\r
+they are in native byte order).</p></div>\r
+<div class="paragraph"><p>The magic string currently is "i3-ipc" and will only be changed when a change\r
+in the IPC API is done which breaks compatibility (we hope that we don’t need\r
+to do that).</p></div>\r
+<div class="paragraph"><p>Currently implemented message types are the following:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+COMMAND (0)\r
+</dt>\r
+<dd>\r
+<p>\r
+        The payload of the message is a command for i3 (like the commands you\r
+        can bind to keys in the configuration file) and will be executed\r
+        directly after receiving it. There is no reply to this message.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+GET_WORKSPACES (1)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Gets the current workspaces. The reply will be a JSON-encoded list of\r
+        workspaces (see the reply section).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+SUBSCRIBE (2)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Subscribes your connection to certain events. See <a href="#events">[events]</a> for a\r
+        description of this message and the concept of events.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+GET_OUTPUTS (3)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Gets the current outputs. The reply will be a JSON-encoded list of outputs\r
+        (see the reply section).\r
+</p>\r
+</dd>\r
+</dl></div>\r
+<div class="paragraph"><p>So, a typical message could look like this:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>"i3-ipc" &lt;message length&gt; &lt;message type&gt; &lt;payload&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Or, as a hexdump:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>00000000  69 33 2d 69 70 63 04 00  00 00 00 00 00 00 65 78  |i3-ipc........ex|\r
+00000010  69 74 0a                                          |it.|</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>To generate and send such a message, you could use the following code in Perl:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>sub format_ipc_command {\r
+    my ($msg) = @_;\r
+    my $len;\r
+    # Get the real byte count (vs. amount of characters)\r
+    { use bytes; $len = length($msg); }\r
+    return "i3-ipc" . pack("LL", $len, 0) . $msg;\r
+}\r
+\r
+$sock-&gt;write(format_ipc_command("exit"));</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_receiving_replies_from_i3">3. Receiving replies from i3</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Replies from i3 usually consist of a simple string (the length of the string\r
+is the message_length, so you can consider them length-prefixed) which in turn\r
+contain the JSON serialization of a data structure. For example, the\r
+GET_WORKSPACES message returns an array of workspaces (each workspace is a map\r
+with certain attributes).</p></div>\r
+<div class="sect2">\r
+<h3 id="_reply_format">3.1. Reply format</h3>\r
+<div class="paragraph"><p>The reply format is identical to the normal message format. There also is\r
+the magic string, then the message length, then the message type and the\r
+payload.</p></div>\r
+<div class="paragraph"><p>The following reply types are implemented:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+COMMAND (0)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Confirmation/Error code for the COMMAND message.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+GET_WORKSPACES (1)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Reply to the GET_WORKSPACES message.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+SUBSCRIBE (2)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Confirmation/Error code for the SUBSCRIBE message.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+GET_OUTPUTS (3)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Reply to the GET_OUTPUTS message.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_command_reply">3.2. COMMAND reply</h3>\r
+<div class="paragraph"><p>The reply consists of a single serialized map. At the moment, the only\r
+property is <tt>success (bool)</tt>, but this will be expanded in future versions.</p></div>\r
+<div class="paragraph"><p><strong>Example:</strong></p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>{ "success": true }</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_get_workspaces_reply">3.3. GET_WORKSPACES reply</h3>\r
+<div class="paragraph"><p>The reply consists of a serialized list of workspaces. Each workspace has the\r
+following properties:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+num (integer)\r
+</dt>\r
+<dd>\r
+<p>\r
+        The logical number of the workspace. Corresponds to the command\r
+        to switch to this workspace.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+name (string)\r
+</dt>\r
+<dd>\r
+<p>\r
+        The name of this workspace (by default num+1), as changed by the\r
+        user. Encoded in UTF-8.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+visible (boolean)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Whether this workspace is currently visible on an output (multiple\r
+        workspaces can be visible at the same time).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+focused (boolean)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Whether this workspace currently has the focus (only one workspace\r
+        can have the focus at the same time).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+urgent (boolean)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Whether a window on this workspace has the "urgent" flag set.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+rect (map)\r
+</dt>\r
+<dd>\r
+<p>\r
+        The rectangle of this workspace (equals the rect of the output it\r
+        is on), consists of x, y, width, height.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+output (string)\r
+</dt>\r
+<dd>\r
+<p>\r
+        The video output this workspace is on (LVDS1, VGA1, …).\r
+</p>\r
+</dd>\r
+</dl></div>\r
+<div class="paragraph"><p><strong>Example:</strong></p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>[\r
+ {\r
+  "num": 0,\r
+  "name": "1",\r
+  "visible": true,\r
+  "focused": true,\r
+  "urgent": false,\r
+  "rect": {\r
+   "x": 0,\r
+   "y": 0,\r
+   "width": 1280,\r
+   "height": 800\r
+  },\r
+  "output": "LVDS1"\r
+ },\r
+ {\r
+  "num": 1,\r
+  "name": "2",\r
+  "visible": false,\r
+  "focused": false,\r
+  "urgent": false,\r
+  "rect": {\r
+   "x": 0,\r
+   "y": 0,\r
+   "width": 1280,\r
+   "height": 800\r
+  },\r
+  "output": "LVDS1"\r
+ }\r
+]</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_subscribe_reply">3.4. SUBSCRIBE reply</h3>\r
+<div class="paragraph"><p>The reply consists of a single serialized map. The only property is\r
+<tt>success (bool)</tt>, indicating whether the subscription was successful (the\r
+default) or whether a JSON parse error occurred.</p></div>\r
+<div class="paragraph"><p><strong>Example:</strong></p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>{ "success": true }</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_get_outputs_reply">3.5. GET_OUTPUTS reply</h3>\r
+<div class="paragraph"><p>The reply consists of a serialized list of outputs. Each output has the\r
+following properties:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+name (string)\r
+</dt>\r
+<dd>\r
+<p>\r
+        The name of this output (as seen in <tt>xrandr(1)</tt>). Encoded in UTF-8.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+active (boolean)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Whether this output is currently active (has a valid mode).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+current_workspace (integer)\r
+</dt>\r
+<dd>\r
+<p>\r
+        The current workspace which is visible on this output. <tt>null</tt> if the\r
+        output is not active.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+rect (map)\r
+</dt>\r
+<dd>\r
+<p>\r
+        The rectangle of this output (equals the rect of the output it\r
+        is on), consists of x, y, width, height.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+<div class="paragraph"><p><strong>Example:</strong></p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>[\r
+ {\r
+  "name": "LVDS1",\r
+  "active": true,\r
+  "current_workspace": 4,\r
+  "rect": {\r
+   "x": 0,\r
+   "y": 0,\r
+   "width": 1280,\r
+   "height": 800\r
+  }\r
+ },\r
+ {\r
+  "name": "VGA1",\r
+  "active": true,\r
+  "current_workspace": 1,\r
+  "rect": {\r
+   "x": 1280,\r
+   "y": 0,\r
+   "width": 1280,\r
+   "height": 1024\r
+  },\r
+ }\r
+]</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_events">4. Events</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph" id="events"><p>To get informed when certain things happen in i3, clients can subscribe to\r
+events. Events consist of a name (like "workspace") and an event reply type\r
+(like I3_IPC_EVENT_WORKSPACE). The events sent by i3 are in the same format\r
+as replies to specific commands. However, the highest bit of the message type\r
+is set to 1 to indicate that this is an event reply instead of a normal reply.</p></div>\r
+<div class="paragraph"><p>Caveat: As soon as you subscribe to an event, it is not guaranteed any longer\r
+that the requests to i3 are processed in order. This means, the following\r
+situation can happen: You send a GET_WORKSPACES request but you receive a\r
+"workspace" event before receiving the reply to GET_WORKSPACES. If your\r
+program does not want to cope which such kinds of race conditions (an\r
+event based library may not have a problem here), I suggest you create a\r
+separate connection to receive events.</p></div>\r
+<div class="sect2">\r
+<h3 id="_subscribing_to_events">4.1. Subscribing to events</h3>\r
+<div class="paragraph"><p>By sending a message of type SUBSCRIBE with a JSON-encoded array as payload\r
+you can register to an event.</p></div>\r
+<div class="paragraph"><p><strong>Example:</strong></p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>type: SUBSCRIBE\r
+payload: [ "workspace", "focus" ]</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_available_events">4.2. Available events</h3>\r
+<div class="paragraph"><p>The numbers in parenthesis is the event type (keep in mind that you need to\r
+strip the highest bit first).</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+workspace (0)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Sent when the user switches to a different workspace, when a new\r
+        workspace is initialized or when a workspace is removed (because the\r
+        last client vanished).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+output (1)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Sent when RandR issues a change notification (of either screens,\r
+        outputs, CRTCs or output properties).\r
+</p>\r
+</dd>\r
+</dl></div>\r
+<div class="paragraph"><p><strong>Example:</strong></p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># the appropriate 4 bytes read from the socket are stored in $input\r
+\r
+# unpack a 32-bit unsigned integer\r
+my $message_type = unpack("L", $input);\r
+\r
+# check if the highest bit is 1\r
+my $is_event = (($message_type &gt;&gt; 31) == 1);\r
+\r
+# use the other bits\r
+my $event_type = ($message_type &amp; 0x7F);\r
+\r
+if ($is_event) {\r
+  say "Received event of type $event_type";\r
+}</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_workspace_event">4.3. workspace event</h3>\r
+<div class="paragraph"><p>This event consists of a single serialized map containing a property\r
+<tt>change (string)</tt> which indicates the type of the change ("focus", "init",\r
+"empty", "urgent").</p></div>\r
+<div class="paragraph"><p><strong>Example:</strong></p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>{ "change": "focus" }</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_output_event">4.4. output event</h3>\r
+<div class="paragraph"><p>This event consists of a single serialized map containing a property\r
+<tt>change (string)</tt> which indicates the type of the change (currently only\r
+"unspecified").</p></div>\r
+<div class="paragraph"><p><strong>Example:</strong></p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>{ "change": "unspecified" }</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_see_also">5. See also</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>For some languages, libraries are available (so you don’t have to implement\r
+all this on your own). This list names some (if you wrote one, please let me\r
+know):</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+C\r
+</dt>\r
+<dd>\r
+<p>\r
+        i3 includes a headerfile <tt>i3/ipc.h</tt> which provides you all constants.\r
+        However, there is no library yet.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Ruby\r
+</dt>\r
+<dd>\r
+<p>\r
+        <a href="http://github.com/badboy/i3-ipc">http://github.com/badboy/i3-ipc</a>\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Perl\r
+</dt>\r
+<dd>\r
+<p>\r
+        <a href="http://search.cpan.org/search?query=AnyEvent::I3">http://search.cpan.org/search?query=AnyEvent::I3</a>\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Python\r
+</dt>\r
+<dd>\r
+<p>\r
+        <a href="http://github.com/thepub/i3ipc">http://github.com/thepub/i3ipc</a>\r
+</p>\r
+</dd>\r
+</dl></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer" lang="de">\r
+© 2009-2011 Michael Stapelberg, <a href="/impress.html">Impressum</a>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/docs/3.e/keyboard-layer1.png b/docs/3.e/keyboard-layer1.png
new file mode 100644 (file)
index 0000000..88268f7
Binary files /dev/null and b/docs/3.e/keyboard-layer1.png differ
diff --git a/docs/3.e/keyboard-layer2.png b/docs/3.e/keyboard-layer2.png
new file mode 100644 (file)
index 0000000..85a7d21
Binary files /dev/null and b/docs/3.e/keyboard-layer2.png differ
diff --git a/docs/3.e/manpage.html b/docs/3.e/manpage.html
new file mode 100644 (file)
index 0000000..80fa2ec
--- /dev/null
@@ -0,0 +1,528 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.4" />\r
+<title>i3: i3(1)</title>\r
+<link rel="stylesheet" href="/css/style.css" type="text/css" />\r
+<link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+window.onload = function(){asciidoc.footnotes(); asciidoc.toc(2);}\r
+/*]]>*/\r
+</script>\r
+<script type="text/javascript" src="/js/asciidoc-xhtml11.js"></script>\r
+</head>\r
+<body class="article">\r
+\r
+        <div id="main">\r
+            <a href="/"><h1 id="title">i3 - improved tiling WM</h1></a>\r
+                        <ul id="nav">\r
+                                <li><a style="border-bottom: 2px solid #fff" href="/docs">Docs</a></li>\r
+                                <li><a href="/screenshots">Screens</a></li>\r
+                                <li><a href="/contact">Contact</a></li>\r
+                                <li><a href="http://bugs.i3wm.org/">Bugs</a></li>\r
+                        </ul>\r
+        <br style="clear: both">\r
+<div id="content">\r
+<div id="header">\r
+<h1>i3(1)</h1>\r
+<span id="author">Michael Stapelberg</span><br />\r
+<span id="email"><tt>&lt;<a href="mailto:michael+i3@stapelberg.de">michael+i3@stapelberg.de</a>&gt;</tt></span><br />\r
+<span id="revnumber">version 3.epsilon,</span>\r
+<span id="revdate">March 2010</span>\r
+<div id="toc">
+  <div id="toctitle">Table of Contents</div>
+  <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_name">1. NAME</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3 - an improved dynamic, tiling window manager</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_synopsis">2. SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3 [-a] [-c configfile] [-C] [-d &lt;loglevel&gt;] [-v] [-V]</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_options">3. OPTIONS</h2>\r
+<div class="sectionbody">\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+-a\r
+</dt>\r
+<dd>\r
+<p>\r
+Disables autostart.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+-c\r
+</dt>\r
+<dd>\r
+<p>\r
+Specifies an alternate configuration file path.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+-C\r
+</dt>\r
+<dd>\r
+<p>\r
+Check the configuration file for validity and exit.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+-d\r
+</dt>\r
+<dd>\r
+<p>\r
+Specifies the debug loglevel. To see the most output, use -d all.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+-v\r
+</dt>\r
+<dd>\r
+<p>\r
+Display version number (and date of the last commit).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+-V\r
+</dt>\r
+<dd>\r
+<p>\r
+Be verbose.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_description">4. DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<div class="sect2">\r
+<h3 id="_introduction">4.1. INTRODUCTION</h3>\r
+<div class="paragraph"><p>i3 was created because wmii, our favorite window manager at the time, didn’t\r
+provide some features we wanted (multi-monitor done right, for example), had\r
+some bugs, didn’t progress since quite some time and wasn’t easy to hack at all\r
+(source code comments/documentation completely lacking). Still, we think the\r
+wmii developers and contributors did a great job. Thank you for inspiring us to\r
+create i3.</p></div>\r
+<div class="paragraph"><p>Please be aware that i3 is primarily targeted at advanced users and developers.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_important_note_to_nvidia_binary_driver_users">4.2. IMPORTANT NOTE TO nVidia BINARY DRIVER USERS</h3>\r
+<div class="paragraph"><p>If you are using the nVidia binary graphics driver (also known as <em>blob</em>)\r
+you need to use the <tt>--force-xinerama</tt> flag (in your .xsession) when starting\r
+i3, like so:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>exec i3 --force-xinerama -V &gt;&gt;~/.i3/i3log 2&gt;&amp;1</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>See also docs/multi-monitor for the full explanation.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_terminology">4.3. TERMINOLOGY</h3>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+Client\r
+</dt>\r
+<dd>\r
+<p>\r
+A client is X11-speak for a window.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Table\r
+</dt>\r
+<dd>\r
+<p>\r
+Your workspace is managed using a table. You can move windows around and create\r
+new columns (move a client to the right) or rows (move it to the bottom)\r
+implicitly.\r
+</p>\r
+<div class="paragraph"><p>By "snapping" a client in a specific direction, you increase its colspan/rowspan.</p></div>\r
+</dd>\r
+<dt class="hdlist1">\r
+Container\r
+</dt>\r
+<dd>\r
+<p>\r
+A container contains a variable number of clients. Each cell of the table is a\r
+container.\r
+</p>\r
+<div class="paragraph"><p>Containers can be used in various modes. The default mode is called "default"\r
+and just resizes each client equally so that it fits.</p></div>\r
+</dd>\r
+<dt class="hdlist1">\r
+Workspace\r
+</dt>\r
+<dd>\r
+<p>\r
+A workspace is a set of clients (technically speaking, it’s just a table).\r
+Other window managers call this "Virtual Desktops".\r
+</p>\r
+<div class="paragraph"><p>In i3, each workspace is assigned to a specific virtual screen. By default,\r
+screen 1 has workspace 1, screen 2 has workspace 2 and so on… However, when you\r
+create a new workspace (by simply switching to it), it’ll be assigned the\r
+screen you are currently on.</p></div>\r
+</dd>\r
+<dt class="hdlist1">\r
+Output\r
+</dt>\r
+<dd>\r
+<p>\r
+Using XRandR, you can have an X11 screen spanning multiple real monitors.\r
+Furthermore, you can set them up in cloning mode or with positions (monitor 1\r
+is left of monitor 2).\r
+</p>\r
+<div class="paragraph"><p>i3 uses the RandR API to query which outputs are available and which screens\r
+are connected to these outputs.</p></div>\r
+</dd>\r
+</dl></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_keybindings">5. KEYBINDINGS</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Here is a short overview of the default keybindings:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+j/k/l/;\r
+</dt>\r
+<dd>\r
+<p>\r
+Direction keys (left, down, up, right). They are on your homerow (see the mark\r
+on your "j" key). Alternatively, you can use the cursor keys.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+&lt;direction&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+Focus window in &lt;direction&gt;.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod3+&lt;direction&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+Focus container in &lt;direction&gt;.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+Shift+&lt;direction&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+Move window to &lt;direction&gt;.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod3+Shift+&lt;direction&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+Move container to &lt;direction&gt;.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+Control+&lt;direction&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+Snap container to &lt;direction&gt;.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+&lt;number&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+Switch to workspace &lt;number&gt;.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+Shift+&lt;number&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+Move window to workspace &lt;number&gt;.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+f\r
+</dt>\r
+<dd>\r
+<p>\r
+Toggle fullscreen mode.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+h\r
+</dt>\r
+<dd>\r
+<p>\r
+Enable stacking layout for the current container.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+e\r
+</dt>\r
+<dd>\r
+<p>\r
+Enable default layout for the current container.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+Shift+Space\r
+</dt>\r
+<dd>\r
+<p>\r
+Toggle tiling/floating for the current window.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+t\r
+</dt>\r
+<dd>\r
+<p>\r
+Select the first tiling window if the current window is floating and vice-versa.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+Shift+q\r
+</dt>\r
+<dd>\r
+<p>\r
+Kills the current window. This is equivalent to "clicking on the close button",\r
+meaning a polite request to the application to close this window. For example,\r
+Firefox will save its session upon such a request. If the application does not\r
+support that, the window will be killed and it depends on the application what\r
+happens.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+Shift+r\r
+</dt>\r
+<dd>\r
+<p>\r
+Restarts i3 in place (without losing any windows, but at this time, the layout\r
+and placement of windows is not retained).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+Shift+e\r
+</dt>\r
+<dd>\r
+<p>\r
+Exits i3.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_files">6. FILES</h2>\r
+<div class="sectionbody">\r
+<div class="sect2">\r
+<h3 id="_i3_config_or_config_i3_config">6.1. ~/.i3/config (or ~/.config/i3/config)</h3>\r
+<div class="paragraph"><p>When starting, i3 looks for configuration files in the following order:</p></div>\r
+<div class="olist arabic"><ol class="arabic">\r
+<li>\r
+<p>\r
+~/.config/i3/config (or $XDG_CONFIG_HOME/i3/config if set)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+/etc/xdg/i3/config (or $XDG_CONFIG_DIRS/i3/config if set)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+~/.i3/config\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+/etc/i3/config\r
+</p>\r
+</li>\r
+</ol></div>\r
+<div class="paragraph"><p>You can specify a custom path using the -c option.</p></div>\r
+<div class="listingblock">\r
+<div class="title">Sample configuration</div>\r
+<div class="content">\r
+<pre><tt>font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1\r
+\r
+# Start terminal (Mod1+Enter)\r
+bind Mod1+36 exec /usr/bin/urxvt\r
+\r
+# Start dmenu (Mod1+v)\r
+bind Mod1+55 exec /usr/bin/dmenu_run\r
+\r
+# Kill current client (Mod1+Shift+q)\r
+bind Mod1+Shift+24 kill\r
+\r
+# Beamer on/off\r
+bind Mod1+73 exec /home/michael/toggle_beamer.sh\r
+\r
+# Screen locking\r
+bind Mod1+68 exec /usr/bin/i3lock\r
+\r
+# Restart i3 inplace (Mod1+Shift+r)\r
+bind Mod1+Shift+27 restart\r
+\r
+# Exit i3 (Mod1+Shift+e)\r
+bind Mod1+Shift+26 exit\r
+\r
+# Brightness\r
+bind Mod1+97 exec sudo sh -c "echo up &gt; /proc/acpi/ibm/brightness"\r
+bind Mod1+103 exec sudo sh -c "echo down &gt; /proc/acpi/ibm/brightness"\r
+\r
+# Fullscreen (Mod1+f)\r
+bind Mod1+41 f\r
+\r
+# Stacking (Mod1+h)\r
+bind Mod1+43 s\r
+\r
+# Default (Mod1+e)\r
+bind Mod1+26 d\r
+\r
+# Toggle tiling/floating of the current window (Mod1+Shift+Space)\r
+bind Mod1+Shift+65 t\r
+\r
+# Go into the tiling layer / floating layer, depending on whether\r
+# the current window is tiling / floating (Mod1+t)\r
+bind Mod1+28 focus ft\r
+\r
+# Focus (Mod1+j/k/l/;)\r
+bind Mod1+44 h\r
+bind Mod1+45 j\r
+bind Mod1+46 k\r
+bind Mod1+47 l\r
+\r
+# Focus Container (Mod3+j/k/l/;)\r
+bind Mod3+44 wch\r
+bind Mod3+45 wcj\r
+bind Mod3+46 wck\r
+bind Mod3+47 wcl\r
+\r
+# Snap (Mod1+Control+j/k/l/;)\r
+bind Mod1+Control+44 sh\r
+bind Mod1+Control+45 sj\r
+bind Mod1+Control+46 sk\r
+bind Mod1+Control+47 sl\r
+\r
+# Move (Mod1+Shift+j/k/l/;)\r
+bind Mod1+Shift+44 mh\r
+bind Mod1+Shift+45 mj\r
+bind Mod1+Shift+46 mk\r
+bind Mod1+Shift+47 ml\r
+\r
+# Move Container (Mod3+Shift+j/k/l/;)\r
+bind Mod3+Shift+44 wcmh\r
+bind Mod3+Shift+45 wcmj\r
+bind Mod3+Shift+46 wcmk\r
+bind Mod3+Shift+47 wcml\r
+\r
+# Workspaces\r
+bind Mod1+10 1\r
+bind Mod1+11 2\r
+...\r
+\r
+# Move to Workspace\r
+bind Mod1+Shift+10 1\r
+bind Mod1+Shift+11 2\r
+...</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_xsession">6.2. ~/.xsession</h3>\r
+<div class="paragraph"><p>This file is where you should configure your locales and start i3. It is run by\r
+your login manager (xdm, slim, gdm, …) as soon as you login.</p></div>\r
+<div class="listingblock">\r
+<div class="title">Sample xsession</div>\r
+<div class="content">\r
+<pre><tt># Disable DPMS turning off the screen\r
+xset dpms force on\r
+xset s off\r
+\r
+# Disable bell\r
+xset -b\r
+\r
+# Enable zapping (C-A-&lt;Bksp&gt; kills X)\r
+setxkbmap -option terminate:ctrl_alt_bksp\r
+\r
+# Enforce correct locales from the beginning\r
+unset LC_COLLATE\r
+export LC_CTYPE=de_DE.UTF-8\r
+export LC_TIME=de_DE.UTF-8\r
+export LC_NUMERIC=de_DE.UTF-8\r
+export LC_MONETARY=de_DE.UTF-8\r
+export LC_MESSAGES=C\r
+export LC_PAPER=de_DE.UTF-8\r
+export LC_NAME=de_DE.UTF-8\r
+export LC_ADDRESS=de_DE.UTF-8\r
+export LC_TELEPHONE=de_DE.UTF-8\r
+export LC_MEASUREMENT=de_DE.UTF-8\r
+export LC_IDENTIFICATION=de_DE.UTF-8\r
+\r
+# Use XToolkit in java applications\r
+export AWT_TOOLKIT=XToolkit\r
+\r
+# Set background color\r
+xsetroot -solid "#333333"\r
+\r
+# Enable core dumps in case something goes wrong\r
+ulimit -c unlimited\r
+\r
+# Start i3 and log to ~/.i3/logfile\r
+echo "Starting at $(date)" &gt;&gt; ~/.i3/logfile\r
+exec /usr/bin/i3 -V -d all &gt;&gt; ~/.i3/logfile</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_todo">7. TODO</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>There is still lot of work to do. Please check our bugtracker for up-to-date\r
+information about tasks which are still not finished.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_see_also">8. SEE ALSO</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>You should have a copy of the userguide (featuring nice screenshots/graphics\r
+which is why this is not integrated into this manpage), the debugging guide,\r
+and the "how to hack" guide. If you are building from source, run:\r
+ <tt>make -C docs</tt></p></div>\r
+<div class="paragraph"><p>You can also access these documents online at <a href="http://i3.zekjur.net/">http://i3.zekjur.net/</a></p></div>\r
+<div class="paragraph"><p>i3-input(1), i3-msg(1), i3-wsbar(1)</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_author">9. AUTHOR</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Michael Stapelberg and contributors</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer" lang="de">\r
+© 2009-2011 Michael Stapelberg, <a href="/impress.html">Impressum</a>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/docs/3.e/modes.png b/docs/3.e/modes.png
new file mode 100644 (file)
index 0000000..656a6db
Binary files /dev/null and b/docs/3.e/modes.png differ
diff --git a/docs/3.e/multi-monitor.html b/docs/3.e/multi-monitor.html
new file mode 100644 (file)
index 0000000..ee42703
--- /dev/null
@@ -0,0 +1,108 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<link rel="icon" type="image/png" href="/favicon.png">\r
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.4" />\r
+<title>i3: The multi-monitor situation</title>\r
+<link rel="stylesheet" href="/css/style.css" type="text/css" />\r
+<link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+window.onload = function(){asciidoc.footnotes(); asciidoc.toc(2);}\r
+/*]]>*/\r
+</script>\r
+<script type="text/javascript" src="/js/asciidoc-xhtml11.js"></script>\r
+</head>\r
+<body class="article">\r
+\r
+        <div id="main">\r
+            <a href="/"><h1 id="title">i3 - improved tiling WM</h1></a>\r
+                        <ul id="nav">\r
+                                <li><a style="border-bottom: 2px solid #fff" href="/docs">Docs</a></li>\r
+                                <li><a href="/screenshots">Screens</a></li>\r
+                                <li><a href="/contact">Contact</a></li>\r
+                                <li><a href="http://bugs.i3wm.org/">Bugs</a></li>\r
+                        </ul>\r
+        <br style="clear: both">\r
+<div id="content">\r
+<div id="header">\r
+<h1>The multi-monitor situation</h1>\r
+<span id="author">Michael Stapelberg</span><br />\r
+<span id="email"><tt>&lt;<a href="mailto:michael+i3@stapelberg.de">michael+i3@stapelberg.de</a>&gt;</tt></span><br />\r
+<span id="revdate">March 2010</span>\r
+<div id="toc">
+  <div id="toctitle">Table of Contents</div>
+  <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
+</div>\r
+</div>\r
+<div id="preamble">\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>…or: oh no, I have an nVidia graphics card!</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_the_quick_fix">1. The quick fix</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>If you are using the nVidia binary graphics driver (also known as <em>blob</em>)\r
+you need to use the <tt>--force-xinerama</tt> flag (in your .xsession) when starting\r
+i3, like so:</p></div>\r
+<div class="listingblock">\r
+<div class="title">Example:</div>\r
+<div class="content">\r
+<pre><tt>exec i3 --force-xinerama -V &gt;&gt;~/.i3/i3log 2&gt;&amp;1</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_the_explanation">2. The explanation</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Starting with version 3.ε, i3 uses the RandR (Rotate and Resize) API instead\r
+of Xinerama. The reason for this, is that RandR provides more information\r
+about your outputs and connected screens than Xinerama does. To be specific,\r
+the code which handled on-the-fly screen reconfiguration (meaning without\r
+restarting the X server) was a very messy heuristic and most of the time did\r
+not work correctly&#8201;&#8212;&#8201;that is just not possible with the little information\r
+Xinerama offers (just a list of screen resolutions, no identifiers for the\r
+screens or any additional information). Xinerama simply was not designed\r
+for dynamic configuration.</p></div>\r
+<div class="paragraph"><p>So RandR came along, as a more powerful alternative (RandR 1.2 to be specific).\r
+It offers all of Xinerama’s possibilities and lots more. Using the RandR API\r
+made our code much more robust and clean. Also, you can now reliably assign\r
+workspaces to output names instead of some rather unreliable screen identifier\r
+(position inside the list of screens, which could change, and so on…).</p></div>\r
+<div class="paragraph"><p>As RandR has been around for about three years as of this writing, it seemed\r
+like a very good idea to us, and it still is a very good one. What we did not\r
+expect, however, was the nVidia binary driver. It still does not support RandR\r
+(as of March 2010), even though nVidia has announced that it will support RandR\r
+eventually. What does this mean for you, if you are stuck with the binary\r
+driver for some reason (say the free drivers don’t work with your card)? First\r
+of all, you are stuck with TwinView and cannot use <tt>xrandr</tt>. While this ruins\r
+the user experience, the more grave problem is that the nVidia driver not only\r
+does not support dynamic configuration using RandR, it also does not expose\r
+correct multi-monitor information via the RandR API. So, in some setups, i3\r
+will not find any screens; in others, it will find one large screen which\r
+actually contains both of your physical screens (but it will not know that\r
+these are two screens).</p></div>\r
+<div class="paragraph"><p>For this very reason, we decided to implement the following workaround: As\r
+long as the nVidia driver does not support RandR, an option called\r
+<tt>--force-xinerama</tt> is available in i3. This option gets the list of screens\r
+<strong>once</strong> when starting, and never updates it. As the nVidia driver cannot do\r
+dynamic configuration anyways, this is not a big deal.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_see_also">3. See also</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>For more information on how to use multi-monitor setups, see the i3 User’s\r
+Guide.</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer" lang="de">\r
+© 2009-2011 Michael Stapelberg, <a href="/impress.html">Impressum</a>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/docs/3.e/refcard.pdf b/docs/3.e/refcard.pdf
new file mode 100644 (file)
index 0000000..f1bb36f
Binary files /dev/null and b/docs/3.e/refcard.pdf differ
diff --git a/docs/3.e/repositories.html b/docs/3.e/repositories.html
new file mode 100644 (file)
index 0000000..db62780
--- /dev/null
@@ -0,0 +1,120 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<link rel="icon" type="image/png" href="/favicon.png">\r
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.4" />\r
+<title>i3: Debian and Ubuntu repositories</title>\r
+<link rel="stylesheet" href="/css/style.css" type="text/css" />\r
+<link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+window.onload = function(){asciidoc.footnotes();}\r
+/*]]>*/\r
+</script>\r
+<script type="text/javascript" src="/js/asciidoc-xhtml11.js"></script>\r
+</head>\r
+<body class="article">\r
+\r
+        <div id="main">\r
+            <a href="/"><h1 id="title">i3 - improved tiling WM</h1></a>\r
+                        <ul id="nav">\r
+                                <li><a style="border-bottom: 2px solid #fff" href="/docs">Docs</a></li>\r
+                                <li><a href="/screenshots">Screens</a></li>\r
+                                <li><a href="/contact">Contact</a></li>\r
+                                <li><a href="http://bugs.i3wm.org/">Bugs</a></li>\r
+                        </ul>\r
+        <br style="clear: both">\r
+<div id="content">\r
+<div id="header">\r
+<h1>Debian and Ubuntu repositories</h1>\r
+<span id="author">Michael Stapelberg</span><br />\r
+<span id="email"><tt>&lt;<a href="mailto:michael+i3@stapelberg.de">michael+i3@stapelberg.de</a>&gt;</tt></span><br />\r
+<span id="revdate">July 2011</span>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_when_should_you_use_our_repositories">1. When should you use our repositories?</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>In general, you should use the repositories of your distribution. Adding\r
+third-party repositories to your <tt>/etc/sources.list</tt> has security implications\r
+and makes your <tt>apt-get update</tt> take longer. However, in some cases, using our\r
+repositories makes sense:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+You are using Debian stable\r
+</dt>\r
+<dd>\r
+<p>\r
+    The latest version of i3 will be in Debian testing quite soon. The version\r
+    in Debian stable can be old, however (we cannot update it after stable has\r
+    been released). The best way is to add Debian testing and tell <tt>apt</tt> to\r
+    prefer Debian stable. You should <strong>not</strong> use our repository.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+You are using Ubuntu\r
+</dt>\r
+<dd>\r
+<p>\r
+    Only a handful of packages are maintained by Ubuntu developers. The rest is\r
+    synchronized periodically from Debian, every 6 months. Therefore, Ubuntu\r
+    often includes old versions of i3. You should use our Ubuntu repository.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+You want the latest i3 development version\r
+</dt>\r
+<dd>\r
+<p>\r
+    If you are using Debian (Debian-derived systems might work, too) and want\r
+    the latest development version of i3, you should use our Debian repository.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_ubuntu_repository">2. Ubuntu repository</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>The Ubuntu repository is provided by sur5r and contains the latest stable release\r
+of i3. To use it, run the following commands:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># echo 'deb http://debian.sur5r.net/i3/ natty universe' &gt;&gt; /etc/apt/sources.list\r
+# apt-get update\r
+# apt-get install i3</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>The following Ubuntu versions are currently available: lucid, maverick, natty.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_debian_repository">3. Debian repository</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Our Debian repository contains packages which are automatically built a few\r
+minutes after every commit. To use it, run the following commands:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># echo 'deb http://build.i3wm.org/debian/i3-wm sid main' &gt;&gt; /etc/apt/sources.list\r
+# apt-get update\r
+# apt-get install i3-wm</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>To ensure that the autobuilt i3 packages will be preferred to the packages of\r
+your distribution, put the following entry <strong>at the beginning</strong> of your\r
+<tt>/etc/apt/preferences</tt>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>Package: *\r
+Pin: origin "build.i3wm.org"\r
+Pin-Priority: 1001</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Then, install <tt>i3-wm</tt>.</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer" lang="de">\r
+© 2009-2011 Michael Stapelberg, <a href="/impress.html">Impressum</a>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/docs/3.e/single_terminal.png b/docs/3.e/single_terminal.png
new file mode 100644 (file)
index 0000000..4fe918c
Binary files /dev/null and b/docs/3.e/single_terminal.png differ
diff --git a/docs/3.e/snapping.png b/docs/3.e/snapping.png
new file mode 100644 (file)
index 0000000..65fe6e4
Binary files /dev/null and b/docs/3.e/snapping.png differ
diff --git a/docs/3.e/stacklimit.png b/docs/3.e/stacklimit.png
new file mode 100644 (file)
index 0000000..ab5bed7
Binary files /dev/null and b/docs/3.e/stacklimit.png differ
diff --git a/docs/3.e/tree-layout1.png b/docs/3.e/tree-layout1.png
new file mode 100644 (file)
index 0000000..ee69f1a
Binary files /dev/null and b/docs/3.e/tree-layout1.png differ
diff --git a/docs/3.e/tree-layout2.png b/docs/3.e/tree-layout2.png
new file mode 100644 (file)
index 0000000..5cbadde
Binary files /dev/null and b/docs/3.e/tree-layout2.png differ
diff --git a/docs/3.e/tree-migrating.html b/docs/3.e/tree-migrating.html
new file mode 100644 (file)
index 0000000..9949384
--- /dev/null
@@ -0,0 +1,269 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<link rel="icon" type="image/png" href="/favicon.png">\r
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.4" />\r
+<title>i3: Tree branch: Migrating</title>\r
+<link rel="stylesheet" href="/css/style.css" type="text/css" />\r
+<link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+window.onload = function(){asciidoc.footnotes(); asciidoc.toc(2);}\r
+/*]]>*/\r
+</script>\r
+<script type="text/javascript" src="/js/asciidoc-xhtml11.js"></script>\r
+</head>\r
+<body class="article">\r
+\r
+        <div id="main">\r
+            <a href="/"><h1 id="title">i3 - improved tiling WM</h1></a>\r
+                        <ul id="nav">\r
+                                <li><a style="border-bottom: 2px solid #fff" href="/docs">Docs</a></li>\r
+                                <li><a href="/screenshots">Screens</a></li>\r
+                                <li><a href="/contact">Contact</a></li>\r
+                                <li><a href="http://bugs.i3wm.org/">Bugs</a></li>\r
+                        </ul>\r
+        <br style="clear: both">\r
+<div id="content">\r
+<div id="header">\r
+<h1>Tree branch: Migrating</h1>\r
+<span id="author">Michael Stapelberg</span><br />\r
+<span id="email"><tt>&lt;<a href="mailto:michael+i3@stapelberg.de">michael+i3@stapelberg.de</a>&gt;</tt></span><br />\r
+<span id="revdate">November 2010</span>\r
+<div id="toc">
+  <div id="toctitle">Table of Contents</div>
+  <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_introduction">1. Introduction</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>The tree branch (referring to a branch of i3 in the git repository) is the new\r
+version of i3. Due to the very deep changes and heavy refactoring of the source\r
+source, we decided to develop it in a seperate branch (instead of using the\r
+next/master-branch system like before).</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_current_status">2. Current status</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Currently, the code is mostly working. Some of the i3 core developers have been\r
+using the tree branch version for a few weeks now. So, if you are eager to try\r
+out the new features and help us find bugs, give it a try!</p></div>\r
+<div class="paragraph"><p>At the same time, a word of warning is appropriate: This version of i3 might\r
+crash unexpectedly, so please be careful with important data (do not work for\r
+two days without saving…).</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_getting_the_latest_tree_branch_version">3. Getting the latest tree branch version</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Check out the latest version:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git clone -b tree git://code.stapelberg.de/i3</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Then build and install it (has the same dependencies as the latest stable i3\r
+version):</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ cd i3\r
+$ make\r
+$ sudo cp i3 /usr/bin/i3-tree</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>…and execute <tt>i3-tree</tt> instead of <tt>i3</tt> in your Xsession.</p></div>\r
+<div class="paragraph"><p><strong>IMPORTANT:</strong> Please note that configuration file compatibility is not yet done.\r
+So, make sure you use/customize the provided <tt>i3.config</tt> file.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_tree">4. Tree</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>The most important change and reason for the name is that i3 stores all\r
+information about the X11 outputs, workspaces and layout of the windows on them\r
+in a tree. The root node is the X11 root window, followed by the X11 outputs,\r
+then workspaces and finally the windows themselve. In previous versions of i3\r
+we had multiple lists (of outputs, workspaces) and a table for each workspace.\r
+That approach turned out to be complicated to use (snapping), understand and\r
+implement.</p></div>\r
+<div class="sect2">\r
+<h3 id="_the_tree_consists_of_containers">4.1. The tree consists of Containers</h3>\r
+<div class="paragraph"><p>The building blocks of our tree are so called <tt>Containers</tt>. A <tt>Container</tt> can\r
+host a window (meaning an X11 window, one that you can actually see and use,\r
+like a browser). Alternatively, it could contain one or more <tt>Containers</tt>. A\r
+simple example is the workspace: When you start i3 with a single monitor, a\r
+single workspace and you open two terminal windows, you will end up with a tree\r
+like this:</p></div>\r
+<div class="imageblock" style="float:right;">\r
+<div class="content">\r
+<img src="tree-layout2.png" alt="layout2" />\r
+</div>\r
+</div>\r
+<div class="imageblock">\r
+<div class="content">\r
+<img src="tree-shot4.png" alt="shot4" />\r
+</div>\r
+<div class="title">Figure 1. Two terminals on standard workspace</div>\r
+</div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_orientation_and_split_containers">4.2. Orientation and Split Containers</h3>\r
+<div class="paragraph" id="OrientationSplit"><p>It is only natural to use so-called <tt>Split Containers</tt> in order to build a\r
+layout when using a tree as data structure. In i3, every <tt>Container</tt> has an\r
+orientation (horizontal, vertical or unspecified). So, in our example with the\r
+workspace, the default orientation of the workspace <tt>Container</tt> is horizontal\r
+(most monitors are widescreen nowadays). If you change the orientation to\r
+vertical (<tt>Alt+v</tt> in the default config) and <strong>then</strong> open two terminals, i3 will\r
+configure your windows like this:</p></div>\r
+<div class="imageblock">\r
+<div class="content">\r
+<img src="tree-shot2.png" alt="shot2" />\r
+</div>\r
+<div class="title">Figure 2. Vertical Workspace Orientation</div>\r
+</div>\r
+<div class="paragraph"><p>An interesting new feature of the tree branch is the ability to split anything:\r
+Let’s assume you have two terminals on a workspace (with horizontal\r
+orientation), focus is on the right terminal. Now you want to open another\r
+terminal window below the current one. If you would just open a new terminal\r
+window, it would show up to the right due to the horizontal workspace\r
+orientation. Instead, press <tt>Alt+v</tt> to create a <tt>Vertical Split Container</tt> (to\r
+open a <tt>Horizontal Split Container</tt>, use <tt>Alt+h</tt>). Now you can open a new\r
+terminal and it will open below the current one:</p></div>\r
+<div class="imageblock" style="float:right;">\r
+<div class="content">\r
+<img src="tree-layout1.png" alt="Layout" />\r
+</div>\r
+</div>\r
+<div class="imageblock">\r
+<div class="content">\r
+<img src="tree-shot1.png" alt="shot" />\r
+</div>\r
+<div class="title">Figure 3. Vertical Split Container</div>\r
+</div>\r
+<div style="clear:both;"></div>\r
+<div class="paragraph"><p>You probably guessed it already: There is no limit on how deep your hierarchy\r
+of splits can be.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_level_up">4.3. Level up</h3>\r
+<div class="paragraph"><p>Let’s stay with our example from above. We have a terminal on the left and two\r
+vertically split terminals on the right, focus is on the bottom right one. When\r
+you open a new terminal, it will open below the current one.</p></div>\r
+<div class="paragraph"><p>So, how can you open a new terminal window to the <strong>right</strong> of the current one?\r
+The solution is to use <tt>level up</tt>, which will focus the <tt>Parent Container</tt> of\r
+the current <tt>Container</tt>. In this case, you would focus the <tt>Vertical Split\r
+Container</tt> which is <strong>inside</strong> the horizontally oriented workspace. Thus, now new\r
+windows will be opened to the right of the <tt>Vertical Split Container</tt>:</p></div>\r
+<div class="imageblock">\r
+<div class="content">\r
+<img src="tree-shot3.png" alt="shot3" />\r
+</div>\r
+<div class="title">Figure 4. Level Up, then open new terminal</div>\r
+</div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_commands">5. Commands</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>The authoritive reference for commands is <tt>src/cmdparse.y</tt>. You can also find\r
+most commands in <tt>i3.config</tt>. Here comes a short overview over the important\r
+commands:</p></div>\r
+<div class="sect2">\r
+<h3 id="_manipulating_layout">5.1. Manipulating layout</h3>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>layout &lt;default|stacked|tabbed&gt;</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_changing_focus">5.2. Changing Focus</h3>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>next &lt;horizontal|vertical&gt;\r
+prev &lt;horizontal|vertical&gt;</tt></pre>\r
+</div></div>\r
+<div class="listingblock">\r
+<div class="title">Examples:</div>\r
+<div class="content">\r
+<pre><tt>bindsym Mod1+Left prev h\r
+bindsym Mod1+Right next h\r
+bindsym Mod1+Down next v\r
+bindsym Mod1+Up prev v</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_moving">5.3. Moving</h3>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>move &lt;before|after&gt; &lt;horizontal|vertical&gt;</tt></pre>\r
+</div></div>\r
+<div class="listingblock">\r
+<div class="title">Examples:</div>\r
+<div class="content">\r
+<pre><tt>bindsym Mod1+Shift+Left move before h\r
+bindsym Mod1+Shift+Right move after h\r
+bindsym Mod1+Shift+Down move before v\r
+bindsym Mod1+Shift+Up move after v</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_changing_workspace">5.4. Changing workspace</h3>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>workspace &lt;name&gt;</tt></pre>\r
+</div></div>\r
+<div class="listingblock">\r
+<div class="title">Examples:</div>\r
+<div class="content">\r
+<pre><tt>bindsym Mod1+1 workspace 1\r
+bindsym Mod1+2 workspace 2\r
+…</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_moving_containers_to_workspaces">5.5. Moving Containers to workspaces</h3>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>move workspace &lt;name&gt;</tt></pre>\r
+</div></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>bindsym Mod1+Shift+1 move workspace 1\r
+bindsym Mod1+Shift+2 move workspace 2\r
+…</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_changing_border_style">5.6. Changing border style</h3>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>border &lt;normal|none|1pixel&gt;</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_changing_container_mode">5.7. Changing container mode</h3>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>mode &lt;tiling|floating|toggle&gt;</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_the_rest">6. The rest</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>What is not mentioned here explicitly is either unchanged and can be read in\r
+the <a href="http://i3.zekjur.net/docs/userguide.html">i3 User’s Guide</a> or it is not yet\r
+implemented.</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer" lang="de">\r
+© 2009-2011 Michael Stapelberg, <a href="/impress.html">Impressum</a>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/docs/3.e/tree-shot1.png b/docs/3.e/tree-shot1.png
new file mode 100644 (file)
index 0000000..3bbeae1
Binary files /dev/null and b/docs/3.e/tree-shot1.png differ
diff --git a/docs/3.e/tree-shot2.png b/docs/3.e/tree-shot2.png
new file mode 100644 (file)
index 0000000..f003264
Binary files /dev/null and b/docs/3.e/tree-shot2.png differ
diff --git a/docs/3.e/tree-shot3.png b/docs/3.e/tree-shot3.png
new file mode 100644 (file)
index 0000000..fe4c11e
Binary files /dev/null and b/docs/3.e/tree-shot3.png differ
diff --git a/docs/3.e/tree-shot4.png b/docs/3.e/tree-shot4.png
new file mode 100644 (file)
index 0000000..61e8c91
Binary files /dev/null and b/docs/3.e/tree-shot4.png differ
diff --git a/docs/3.e/two_columns.png b/docs/3.e/two_columns.png
new file mode 100644 (file)
index 0000000..6dc8c40
Binary files /dev/null and b/docs/3.e/two_columns.png differ
diff --git a/docs/3.e/two_terminals.png b/docs/3.e/two_terminals.png
new file mode 100644 (file)
index 0000000..20b45ac
Binary files /dev/null and b/docs/3.e/two_terminals.png differ
diff --git a/docs/3.e/userguide.html b/docs/3.e/userguide.html
new file mode 100644 (file)
index 0000000..bfb4d63
--- /dev/null
@@ -0,0 +1,1128 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<link rel="icon" type="image/png" href="/favicon.png">\r
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.4" />\r
+<title>i3: i3 User’s Guide</title>\r
+<link rel="stylesheet" href="/css/style.css" type="text/css" />\r
+<link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+window.onload = function(){asciidoc.footnotes(); asciidoc.toc(2);}\r
+/*]]>*/\r
+</script>\r
+<script type="text/javascript" src="/js/asciidoc-xhtml11.js"></script>\r
+</head>\r
+<body class="article">\r
+\r
+        <div id="main">\r
+            <a href="/"><h1 id="title">i3 - improved tiling WM</h1></a>\r
+                        <ul id="nav">\r
+                                <li><a style="border-bottom: 2px solid #fff" href="/docs">Docs</a></li>\r
+                                <li><a href="/screenshots">Screens</a></li>\r
+                                <li><a href="/contact">Contact</a></li>\r
+                                <li><a href="http://bugs.i3wm.org/">Bugs</a></li>\r
+                        </ul>\r
+        <br style="clear: both">\r
+<div id="content">\r
+<div id="header">\r
+<h1>i3 User’s Guide</h1>\r
+<span id="author">Michael Stapelberg</span><br />\r
+<span id="email"><tt>&lt;<a href="mailto:michael+i3@stapelberg.de">michael+i3@stapelberg.de</a>&gt;</tt></span><br />\r
+<span id="revdate">March 2010</span>\r
+<div id="toc">
+  <div id="toctitle">Table of Contents</div>
+  <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
+</div>\r
+</div>\r
+<div id="preamble">\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>This document contains all the information you need to configure and use the i3\r
+window manager. If it does not, please contact me on IRC, Jabber or E-Mail and\r
+I’ll help you out.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_default_keybindings">1. Default keybindings</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>For the "too long; didn’t read" people, here is an overview of the default\r
+keybindings (click to see the full size image):</p></div>\r
+<div class="paragraph"><p><strong>Keys to use with Mod1 (alt):</strong></p></div>\r
+<div class="paragraph"><p><span class="image">\r
+<a class="image" href="keyboard-layer1.png">\r
+<img src="keyboard-layer1.png" alt="Keys to use with Mod1 (alt)" width="600" />\r
+</a>\r
+</span></p></div>\r
+<div class="paragraph"><p><strong>Keys to use with Shift+Mod1:</strong></p></div>\r
+<div class="paragraph"><p><span class="image">\r
+<a class="image" href="keyboard-layer2.png">\r
+<img src="keyboard-layer2.png" alt="Keys to use with Shift+Mod1" width="600" />\r
+</a>\r
+</span></p></div>\r
+<div class="paragraph"><p>As i3 uses keycodes in the default configuration, it does not matter which\r
+keyboard layout you actually use. The key positions are what matters (of course\r
+you can also use keysymbols, see <a href="#keybindings">[keybindings]</a>).</p></div>\r
+<div class="paragraph"><p>The red keys are the modifiers you need to press (by default), the blue keys\r
+are your homerow.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_using_i3">2. Using i3</h2>\r
+<div class="sectionbody">\r
+<div class="sect2">\r
+<h3 id="_opening_terminals_and_moving_around">2.1. Opening terminals and moving around</h3>\r
+<div class="paragraph"><p>One very basic operation is opening a new terminal. By default, the keybinding\r
+for this is Mod1+Enter, that is Alt+Enter in the default configuration. By\r
+pressing Mod1+Enter, a new terminal will be opened.  It will fill the whole\r
+space available on your screen.</p></div>\r
+<div class="paragraph"><p><span class="image">\r
+<img src="single_terminal.png" alt="Single terminal" />\r
+</span></p></div>\r
+<div class="paragraph"><p>It is important to keep in mind that i3 uses a table to manage your windows. At\r
+the moment, you have exactly one column and one row which leaves you with one\r
+cell. In this cell there is a container, which is where your new terminal is\r
+opened.</p></div>\r
+<div class="paragraph"><p>If you now open another terminal, you still have only one cell. However, the\r
+container in that cell holds both of your terminals. So, a container is just a\r
+group of clients with a specific layout. Containers can be resized by adjusting\r
+the size of the cell that holds them.</p></div>\r
+<div class="paragraph"><p><span class="image">\r
+<img src="two_terminals.png" alt="Two terminals" />\r
+</span></p></div>\r
+<div class="paragraph"><p>To move the focus between the two terminals, you use the direction keys which\r
+you may know from the editor <tt>vi</tt>. However, in i3, your homerow is used for\r
+these keys (in <tt>vi</tt>, the keys are shifted to the left by one for compatibility\r
+with most keyboard layouts). Therefore, <tt>Mod1+J</tt> is left, <tt>Mod1+K</tt> is down,\r
+<tt>Mod1+L</tt> is up and <tt>Mod1+;</tt> is right. So, to switch between the terminals,\r
+use <tt>Mod1+K</tt> or <tt>Mod1+L</tt>.</p></div>\r
+<div class="paragraph"><p>To create a new row/column (and a new cell), you can simply move a terminal (or\r
+any other window) in the direction you want to expand your table. So, let’s\r
+expand the table to the right by pressing <tt>Mod1+Shift+;</tt>.</p></div>\r
+<div class="paragraph"><p><span class="image">\r
+<img src="two_columns.png" alt="Two columns" />\r
+</span></p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_changing_container_modes">2.2. Changing container modes</h3>\r
+<div class="paragraph"><p>A container can have the following modes:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+default\r
+</dt>\r
+<dd>\r
+<p>\r
+Windows are sized so that every window gets an equal amount of space in the\r
+container.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+stacking\r
+</dt>\r
+<dd>\r
+<p>\r
+Only the focused window in the container is displayed. You get a list of\r
+windows at the top of the container.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+tabbed\r
+</dt>\r
+<dd>\r
+<p>\r
+The same principle as <tt>stacking</tt>, but the list of windows at the top is only\r
+a single line which is vertically split.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+<div class="paragraph"><p>To switch modes, press <tt>Mod1+e</tt> for default, <tt>Mod1+h</tt> for stacking and\r
+<tt>Mod1+w</tt> for tabbed.</p></div>\r
+<div class="paragraph"><p><span class="image">\r
+<img src="modes.png" alt="Container modes" />\r
+</span></p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_toggling_fullscreen_mode_for_a_window">2.3. Toggling fullscreen mode for a window</h3>\r
+<div class="paragraph"><p>To display a window fullscreen or to go out of fullscreen mode again, press\r
+<tt>Mod1+f</tt>.</p></div>\r
+<div class="paragraph"><p>There is also a global fullscreen mode in i3 in which the client will use all\r
+available outputs. To use it, or to get out of it again, press <tt>Mod1+Shift+f</tt>.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_opening_other_applications">2.4. Opening other applications</h3>\r
+<div class="paragraph"><p>Aside from opening applications from a terminal, you can also use the handy\r
+<tt>dmenu</tt> which is opened by pressing <tt>Mod1+v</tt> by default. Just type the name\r
+(or a part of it) of the application which you want to open. The application\r
+typed has to be in your <tt>$PATH</tt> for this to work.</p></div>\r
+<div class="paragraph"><p>Additionally, if you have applications you open very frequently, you can\r
+create a keybinding for starting the application directly. See the section\r
+"Configuring i3" for details.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_closing_windows">2.5. Closing windows</h3>\r
+<div class="paragraph"><p>If an application does not provide a mechanism for closing (most applications\r
+provide a menu, the escape key or a shortcut like <tt>Control+W</tt> to close), you\r
+can press <tt>Mod1+Shift+q</tt> to kill a window. For applications which support\r
+the WM_DELETE protocol, this will correctly close the application (saving\r
+any modifications or doing other cleanup). If the application doesn’t support\r
+the WM_DELETE protocol your X server will kill the window and the behaviour\r
+depends on the application.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_using_workspaces">2.6. Using workspaces</h3>\r
+<div class="paragraph"><p>Workspaces are an easy way to group a set of windows. By default, you are on\r
+the first workspace, as the bar on the bottom left indicates. To switch to\r
+another workspace, press <tt>Mod1+num</tt> where <tt>num</tt> is the number of the workspace\r
+you want to use. If the workspace does not exist yet, it will be created.</p></div>\r
+<div class="paragraph"><p>A common paradigm is to put the web browser on one workspace, communication\r
+applications (<tt>mutt</tt>, <tt>irssi</tt>, &#8230;) on another one, and the ones with which you\r
+work, on the third one. Of course, there is no need to follow this approach.</p></div>\r
+<div class="paragraph"><p>If you have multiple screens, a workspace will be created on each screen at\r
+startup. If you open a new workspace, it will be bound to the screen you\r
+created it on.  When you switch to a workspace on another screen, i3 will set\r
+focus to that screen.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_moving_windows_to_workspaces">2.7. Moving windows to workspaces</h3>\r
+<div class="paragraph"><p>To move a window to another workspace, simply press <tt>Mod1+Shift+num</tt> where\r
+<tt>num</tt> is (like when switching workspaces) the number of the target workspace.\r
+Similarly to switching workspaces, the target workspace will be created if\r
+it does not yet exist.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_resizing_columns_rows">2.8. Resizing columns/rows</h3>\r
+<div class="paragraph"><p>To resize columns or rows, just grab the border between the two columns/rows\r
+and move it to the wanted size. Please keep in mind that each cell of the table\r
+holds a <tt>container</tt> and thus you cannot horizontally resize single windows.  If\r
+you need applications with different horizontal sizes, place them in seperate\r
+cells one above the other.</p></div>\r
+<div class="paragraph"><p>See <a href="#resizingconfig">[resizingconfig]</a> for how to configure i3 to be able to resize\r
+columns/rows with your keyboard.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_restarting_i3_inplace">2.9. Restarting i3 inplace</h3>\r
+<div class="paragraph"><p>To restart i3 inplace (and thus get into a clean state if there is a bug, or\r
+to upgrade to a newer version of i3) you can use <tt>Mod1+Shift+r</tt>. Be aware,\r
+though, that this kills your current layout and all the windows you have opened\r
+will be put in a default container in only one cell. Saving layouts will be\r
+implemented in a later version.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_exiting_i3">2.10. Exiting i3</h3>\r
+<div class="paragraph"><p>To cleanly exit i3 without killing your X server, you can use <tt>Mod1+Shift+e</tt>.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_snapping">2.11. Snapping</h3>\r
+<div class="paragraph"><p>Snapping is a mechanism to increase/decrease the colspan/rowspan of a container.\r
+Colspan/rowspan is the number of columns/rows a specific cell of the table\r
+consumes. This is easier explained by giving an example, so take the following\r
+layout:</p></div>\r
+<div class="paragraph"><p><span class="image">\r
+<img src="snapping.png" alt="Snapping example" />\r
+</span></p></div>\r
+<div class="paragraph"><p>To use the full size of your screen, you can now snap container 3 downwards\r
+by pressing <tt>Mod1+Control+k</tt> (or snap container 2 rightwards).</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_floating">2.12. Floating</h3>\r
+<div class="paragraph"><p>Floating mode is the opposite of tiling mode. The position and size of a window\r
+are not managed by i3, but by you. Using this mode violates the tiling\r
+paradigm but can be useful for some corner cases like "Save as" dialog\r
+windows, or toolbar windows (GIMP or similar).</p></div>\r
+<div class="paragraph"><p>You can enable floating mode for a window by pressing <tt>Mod1+Shift+Space</tt>. By\r
+dragging the window’s titlebar with your mouse you can move the window\r
+around. By grabbing the borders and moving them you can resize the window. You\r
+can also do that by using the <a href="#floating_modifier">[floating_modifier]</a>.</p></div>\r
+<div class="paragraph"><p>For resizing floating windows with your keyboard, see <a href="#resizingconfig">[resizingconfig]</a>.</p></div>\r
+<div class="paragraph"><p>Floating windows are always on top of tiling windows.</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_configuring_i3">3. Configuring i3</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>This is where the real fun begins ;-). Most things are very dependant on your\r
+ideal working environment so we can’t make reasonable defaults for them.</p></div>\r
+<div class="paragraph"><p>While not using a programming language for the configuration, i3 stays\r
+quite flexible in regards to the things you usually want your window manager\r
+to do.</p></div>\r
+<div class="paragraph"><p>For example, you can configure bindings to jump to specific windows,\r
+you can set specific applications to start on specific workspaces, you can\r
+automatically start applications, you can change the colors of i3, and you\r
+can bind your keys to do useful things.</p></div>\r
+<div class="paragraph"><p>To change the configuration of i3, copy <tt>/etc/i3/config</tt> to <tt>~/.i3/config</tt>\r
+(or <tt>~/.config/i3/config</tt> if you like the XDG directory scheme) and edit it\r
+with a text editor.</p></div>\r
+<div class="sect2">\r
+<h3 id="_comments">3.1. Comments</h3>\r
+<div class="paragraph"><p>It is possible and recommended to use comments in your configuration file to\r
+properly document your setup for later reference. Comments are started with\r
+a # and can only be used at the beginning of a line:</p></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># This is a comment</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_fonts">3.2. Fonts</h3>\r
+<div class="paragraph"><p>i3 uses X core fonts (not Xft) for rendering window titles and the internal\r
+workspace bar. You can use <tt>xfontsel(1)</tt> to generate such a font description.\r
+To see special characters (Unicode), you need to use a font which supports\r
+the ISO-10646 encoding.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>font &lt;X core font description&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="keybindings">3.3. Keyboard bindings</h3>\r
+<div class="paragraph"><p>A keyboard binding makes i3 execute a command (see below) upon pressing a\r
+specific key. i3 allows you to bind either on keycodes or on keysyms (you can\r
+also mix your bindings, though i3 will not protect you from overlapping ones).</p></div>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+A keysym (key symbol) is a description for a specific symbol, like "a"\r
+  or "b", but also more strange ones like "underscore" instead of "_". These\r
+  are the ones you use in Xmodmap to remap your keys. To get the current\r
+  mapping of your keys, use <tt>xmodmap -pke</tt>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Keycodes do not need to have a symbol assigned (handy for some hotkeys\r
+  on some notebooks) and they will not change their meaning as you switch to a\r
+  different keyboard layout (when using <tt>xmodmap</tt>).\r
+</p>\r
+</li>\r
+</ul></div>\r
+<div class="paragraph"><p>My recommendation is: If you often switch keyboard layouts but you want to keep\r
+your bindings in the same physical location on the keyboard, use keycodes.\r
+If you don’t switch layouts, and want a clean and simple config file, use\r
+keysyms.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>bindsym [Modifiers+]keysym command\r
+bind [Modifiers+]keycode command</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># Fullscreen\r
+bindsym Mod1+f f\r
+\r
+# Restart\r
+bindsym Mod1+Shift+r restart\r
+\r
+# Notebook-specific hotkeys\r
+bind 214 exec /home/michael/toggle_beamer.sh</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Available Modifiers:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+Mod1-Mod5, Shift, Control\r
+</dt>\r
+<dd>\r
+<p>\r
+Standard modifiers, see <tt>xmodmap(1)</tt>\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mode_switch\r
+</dt>\r
+<dd>\r
+<p>\r
+Unlike other window managers, i3 can use Mode_switch as a modifier. This allows\r
+you to remap capslock (for example) to Mode_switch and use it for both: typing\r
+umlauts or special characters <em>and</em> having some comfortably reachable key\r
+bindings. For example, when typing, capslock+1 or capslock+2 for switching\r
+workspaces is totally convenient. Try it :-).\r
+</p>\r
+</dd>\r
+</dl></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="floating_modifier">3.4. The floating modifier</h3>\r
+<div class="paragraph"><p>To move floating windows with your mouse, you can either grab their titlebar\r
+or configure the so called floating modifier which you can then press and\r
+click anywhere in the window itself to move it. The most common setup is to\r
+use the same key you use for managing windows (Mod1 for example). Then\r
+you can press Mod1, click into a window using your left mouse button, and drag\r
+it to the position you want.</p></div>\r
+<div class="paragraph"><p>When holding the floating modifier, you can resize a floating window by\r
+pressing the right mouse button on it and moving around while holding it. If\r
+you hold the shift button as well, the resize will be proportional.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>floating_modifier &lt;Modifiers&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>floating_modifier Mod1</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_layout_mode_for_new_containers">3.5. Layout mode for new containers</h3>\r
+<div class="paragraph"><p>This option determines in which mode new containers will start. See also\r
+<a href="#stack-limit">[stack-limit]</a>.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>new_container &lt;default|stacking|tabbed&gt;\r
+new_container stack-limit &lt;cols|rows&gt; &lt;value&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>new_container tabbed</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_border_style_for_new_windows">3.6. Border style for new windows</h3>\r
+<div class="paragraph"><p>This option determines which border style new windows will have.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>new_window &lt;bp|bn|bb&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>new_window bp</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_variables">3.7. Variables</h3>\r
+<div class="paragraph"><p>As you learned in the section about keyboard bindings, you will have\r
+to configure lots of bindings containing modifier keys. If you want to save\r
+yourself some typing and be able to change the modifier you use later,\r
+variables can be handy.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>set name value</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>set $m Mod1\r
+bindsym $m+Shift+r restart</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Variables are directly replaced in the file when parsing. There is no fancy\r
+handling and there are absolutely no plans to change this. If you need a more\r
+dynamic configuration you should create a little script which generates a\r
+configuration file and run it before starting i3 (for example in your\r
+<tt>.xsession</tt> file).</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_automatically_putting_clients_on_specific_workspaces">3.8. Automatically putting clients on specific workspaces</h3>\r
+<div class="paragraph" id="assign_workspace"><p>It is recommended that you match on window classes wherever possible because\r
+some applications first create their window, and then worry about setting the\r
+correct title. Firefox with Vimperator comes to mind. The window starts up\r
+being named Firefox, and only when Vimperator is loaded does the title change.\r
+As i3 will get the title as soon as the application maps the window (mapping\r
+means actually displaying it on the screen), you’d need to have to match on\r
+<em>Firefox</em> in this case.</p></div>\r
+<div class="paragraph"><p>You can prefix or suffix workspaces with a <tt>~</tt> to specify that matching clients\r
+should be put into floating mode. If you specify only a <tt>~</tt>, the client will\r
+not be put onto any workspace, but will be set floating on the current one.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>assign ["]window class[/window title]["] [→] [~ | workspace]</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>assign urxvt 2\r
+assign urxvt → 2\r
+assign "urxvt" → 2\r
+assign "urxvt/VIM" → 3\r
+assign "gecko" → ~4\r
+assign "xv/MPlayer" → ~</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Note that the arrow is not required, it just looks good :-). If you decide to\r
+use it, it has to be a UTF-8 encoded arrow, not "&#8594;" or something like that.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_automatically_starting_applications_on_i3_startup">3.9. Automatically starting applications on i3 startup</h3>\r
+<div class="paragraph"><p>By using the <tt>exec</tt> keyword outside a keybinding, you can configure which\r
+commands will be performed by i3 on initial startup (not when restarting i3\r
+in-place however). These commands will be run in order.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>exec command</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>exec sudo i3status | dzen2 -dock</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="workspace_screen">3.10. Automatically putting workspaces on specific screens</h3>\r
+<div class="paragraph"><p>If you assign clients to workspaces, it might be handy to put the\r
+workspaces on specific screens. Also, the assignment of workspaces to screens\r
+will determine which workspace i3 uses for a new screen when adding screens\r
+or when starting (e.g., by default it will use 1 for the first screen, 2 for\r
+the second screen and so on).</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>workspace &lt;number&gt; output &lt;output&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>The <em>output</em> is the name of the RandR output you attach your screen to. On a\r
+laptop, you might have VGA1 and LVDS1 as output names. You can see the\r
+available outputs by running <tt>xrandr --current</tt>.</p></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>workspace 1 output LVDS1\r
+workspace 5 output VGA1</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_named_workspaces">3.11. Named workspaces</h3>\r
+<div class="paragraph"><p>If you always have a certain arrangement of workspaces, you might want to give\r
+them names (of course UTF-8 is supported):</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>workspace &lt;number&gt; &lt;name&gt;\r
+workspace &lt;number&gt; output &lt;output&gt; name</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>For more details about the <em>output</em> part of this command, see above.</p></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>workspace 1 www\r
+workspace 2 work\r
+workspace 3 i ♥ workspaces</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_changing_colors">3.12. Changing colors</h3>\r
+<div class="paragraph"><p>You can change all colors which i3 uses to draw the window decorations and the\r
+bottom bar.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>colorclass border background text</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Where colorclass can be one of:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+client.focused\r
+</dt>\r
+<dd>\r
+<p>\r
+        A client which currently has the focus.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+client.focused_inactive\r
+</dt>\r
+<dd>\r
+<p>\r
+        A client which is the focused one of its container, but it does not have\r
+        the focus at the moment.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+client.unfocused\r
+</dt>\r
+<dd>\r
+<p>\r
+        A client which is not the focused one of its container.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+client.urgent\r
+</dt>\r
+<dd>\r
+<p>\r
+        A client which has its urgency hint activated.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+bar.focused\r
+</dt>\r
+<dd>\r
+<p>\r
+        The current workspace in the bottom bar.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+bar.unfocused\r
+</dt>\r
+<dd>\r
+<p>\r
+        All other workspaces in the bottom bar.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+bar.urgent\r
+</dt>\r
+<dd>\r
+<p>\r
+        A workspace which has at least one client with an activated urgency hint.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+<div class="paragraph"><p>You can also specify the color to be used to paint the background of the client\r
+windows. This color will be used to paint the window on top of which the client\r
+will be rendered.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>client.background color</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Only clients that do not cover the whole area of this window expose the color\r
+used to paint it. If you use a color other than black for your terminals, you\r
+most likely want to set the client background color to the same color as your\r
+terminal program&#8217;s background color to avoid black gaps between the rendered\r
+area of the termianal and the i3 border.</p></div>\r
+<div class="paragraph"><p>Colors are in HTML hex format (#rrggbb), see the following example:</p></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># class        border  backgr. text\r
+client.focused #2F343A #900000 #FFFFFF</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Note that for the window decorations, the color around the child window is the\r
+background color, and the border color is only the two thin lines at the top of\r
+the window.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_interprocess_communication">3.13. Interprocess communication</h3>\r
+<div class="paragraph"><p>i3 uses unix sockets to provide an IPC interface. This allows third-party\r
+programs to get information from i3, such as the current workspaces\r
+(to display a workspace bar), and to control i3.</p></div>\r
+<div class="paragraph"><p>To enable it, you have to configure a path where the unix socket will be\r
+stored. The default path is <tt>~/.i3/ipc.sock</tt>.</p></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>ipc-socket ~/.i3/ipc.sock</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>You can then use the <tt>i3-msg</tt> application to perform any command listed in\r
+the next section.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_disable_focus_follows_mouse">3.14. Disable focus follows mouse</h3>\r
+<div class="paragraph"><p>If you have a setup where your mouse usually is in your way (like a touchpad\r
+on your laptop which you do not want to disable completely), you might want\r
+to disable <em>focus follows mouse</em> and control focus only by using your keyboard.\r
+The mouse will still be useful inside the currently active window (for example\r
+to click on links in your browser window).</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>focus_follows_mouse &lt;yes|no&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>focus_follows_mouse no</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_internal_workspace_bar">3.15. Internal workspace bar</h3>\r
+<div class="paragraph"><p>The internal workspace bar (the thing at the bottom of your screen) is very\r
+simple&#8201;&#8212;&#8201;it does not provide a way to display custom text and it does not\r
+offer advanced customization features. This is intended because we do not\r
+want to duplicate functionality of tools like <tt>dzen2</tt>, <tt>xmobar</tt> and so on\r
+(they render bars, we manage windows). Instead, there is an option which will\r
+turn off the internal bar completely, so that you can use a separate program to\r
+display it (see <tt>i3-wsbar</tt>, a sample implementation of such a program):</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>workspace_bar &lt;yes|no&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>workspace_bar no</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_list_of_commands">4. List of commands</h2>\r
+<div class="sectionbody">\r
+<div class="sect2">\r
+<h3 id="_manipulating_layout">4.1. Manipulating layout</h3>\r
+<div class="paragraph"><p>To change the layout of the current container to stacking, use <tt>s</tt>, for default\r
+use <tt>d</tt> and for tabbed, use <tt>T</tt>. To make the current client (!) fullscreen,\r
+use <tt>f</tt>, to make it span all outputs, use <tt>fg</tt>, to make it floating (or\r
+tiling again) use <tt>t</tt>:</p></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>bindsym Mod1+s s\r
+bindsym Mod1+l d\r
+bindsym Mod1+w T\r
+\r
+# Toggle fullscreen\r
+bindsym Mod1+f f\r
+\r
+# Toggle global fullscreen\r
+bindsym Mod1+Shift+f fg\r
+\r
+# Toggle floating/tiling\r
+bindsym Mod1+t t</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_focusing_moving_snapping_clients_containers_screens">4.2. Focusing/Moving/Snapping clients/containers/screens</h3>\r
+<div class="paragraph"><p>To change the focus, use one of the <tt>h</tt>, <tt>j</tt>, <tt>k</tt> and <tt>l</tt> commands, meaning\r
+left, down, up, right (respectively). To focus a container, prefix it with\r
+<tt>wc</tt>. To focus a screen, prefix it with <tt>ws</tt>.</p></div>\r
+<div class="paragraph"><p>The same principle applies for moving and snapping: just prefix the command\r
+with <tt>m</tt> when moving and with <tt>s</tt> when snapping:</p></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># Focus clients on the left, bottom, top, right:\r
+bindsym Mod1+j h\r
+bindsym Mod1+k j\r
+bindsym Mod1+j k\r
+bindsym Mod1+semicolon l\r
+\r
+# Move client to the left, bottom, top, right:\r
+bindsym Mod1+j mh\r
+bindsym Mod1+k mj\r
+bindsym Mod1+j mk\r
+bindsym Mod1+semicolon ml\r
+\r
+# Snap client to the left, bottom, top, right:\r
+bindsym Mod1+j sh\r
+bindsym Mod1+k sj\r
+bindsym Mod1+j sk\r
+bindsym Mod1+semicolon sl\r
+\r
+# Focus container on the left, bottom, top, right:\r
+bindsym Mod3+j wch\r
+…</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_changing_workspaces_moving_clients_to_workspaces">4.3. Changing workspaces/moving clients to workspaces</h3>\r
+<div class="paragraph"><p>To change to a specific workspace, the command is just the number of the\r
+workspace, e.g. <tt>1</tt> or <tt>3</tt>. To move the current client to a specific workspace,\r
+prefix the number with an <tt>m</tt>.</p></div>\r
+<div class="paragraph"><p>You can also switch to the next and previous workspace with the commands <tt>nw</tt>\r
+and <tt>pw</tt>, which is handy, for example, if you have workspace 1, 3, 4 and 9 and\r
+you want to cycle through them with a single key combination.</p></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>bindsym Mod1+1 1\r
+bindsym Mod1+2 2\r
+...\r
+\r
+bindsym Mod1+Shift+1 m1\r
+bindsym Mod1+Shift+2 m2\r
+...\r
+\r
+bindsym Mod1+o nw\r
+bindsym Mod1+p pw</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="resizingconfig">4.4. Resizing columns/rows</h3>\r
+<div class="paragraph"><p>If you want to resize columns/rows using your keyboard, you can use the\r
+<tt>resize</tt> command, I recommend using it inside a so called <tt>mode</tt>:</p></div>\r
+<div class="listingblock">\r
+<div class="title">Example: Configuration file, defining a mode for resizing</div>\r
+<div class="content">\r
+<pre><tt>mode "resize" {\r
+        # These bindings trigger as soon as you enter the resize mode\r
+\r
+        # They resize the border in the direction you pressed, e.g.\r
+        # when pressing left, the window is resized so that it has\r
+        # more space on its left\r
+\r
+        bindsym n resize left -10\r
+        bindsym Shift+n resize left +10\r
+\r
+        bindsym r resize bottom +10\r
+        bindsym Shift+r resize bottom -10\r
+\r
+        bindsym t resize top -10\r
+        bindsym Shift+t resize top +10\r
+\r
+        bindsym d resize right +10\r
+        bindsym Shift+d resize right -10\r
+\r
+        bind 36 mode default\r
+}\r
+\r
+# Enter resize mode\r
+bindsym Mod1+r mode resize</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_jumping_to_specific_windows">4.5. Jumping to specific windows</h3>\r
+<div class="paragraph"><p>Often when in a multi-monitor environment, you want to quickly jump to a\r
+specific window. For example, while working on workspace 3 you may want to\r
+jump to your mail client to email your boss that you’ve achieved some\r
+important goal. Instead of figuring out how to navigate to your mailclient,\r
+it would be more convenient to have a shortcut.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>jump ["]window class[/window title]["]\r
+jump workspace [ column row ]</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>You can either use the same matching algorithm as in the <tt>assign</tt> command\r
+(see above) or you can specify the position of the client if you always use\r
+the same layout.</p></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># Get me to the next open VIM instance\r
+bindsym Mod1+a jump "urxvt/VIM"</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_vim_like_marks_mark_goto">4.6. VIM-like marks (mark/goto)</h3>\r
+<div class="paragraph" id="vim_like_marks"><p>This feature is like the jump feature: It allows you to directly jump to a\r
+specific window (this means switching to the appropriate workspace and setting\r
+focus to the windows). However, you can directly mark a specific window with\r
+an arbitrary label and use it afterwards.  You do not need to ensure that your\r
+windows have unique classes or titles, and you do not need to change your\r
+configuration file.</p></div>\r
+<div class="paragraph"><p>As the command needs to include the label with which you want to mark the\r
+window, you cannot simply bind it to a key.  <tt>i3-input</tt> is a tool created\r
+for this purpose: It lets you input a command and sends the command to i3. It\r
+can also prefix this command and display a custom prompt for the input dialog.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>mark &lt;identifier&gt;\r
+goto &lt;identifier&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># Read 1 character and mark the current window with this character\r
+bindsym Mod1+m exec i3-input -p 'mark ' -l 1 -P 'Mark: '\r
+\r
+# Read 1 character and go to the window with the character\r
+bindsym Mod1+g exec i3-input -p 'goto ' -l 1 -P 'Goto: '</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Alternatively, if you do not want to mess with <tt>i3-input</tt>, you could create\r
+seperate bindings for a specific set of labels and then only use those labels.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_traveling_the_focus_stack">4.7. Traveling the focus stack</h3>\r
+<div class="paragraph"><p>This mechanism can be thought of as the opposite of the <tt>jump</tt> command.\r
+It travels the focus stack and jumps to the window which had focus previously.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>focus [number] | floating | tiling | ft</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Where <tt>number</tt> by default is 1 meaning that the next client in the focus stack\r
+will be selected.</p></div>\r
+<div class="paragraph"><p>The special values have the following meaning:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+floating\r
+</dt>\r
+<dd>\r
+<p>\r
+        The next floating window is selected.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+tiling\r
+</dt>\r
+<dd>\r
+<p>\r
+        The next tiling window is selected.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+ft\r
+</dt>\r
+<dd>\r
+<p>\r
+        If the current window is floating, the next tiling window will be\r
+       selected; and vice-versa.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_changing_border_style">4.8. Changing border style</h3>\r
+<div class="paragraph"><p>To change the border of the current client, you can use <tt>bn</tt> to use the normal\r
+border (including window title), <tt>bp</tt> to use a 1-pixel border (no window title)\r
+and <tt>bb</tt> to make the client borderless. There is also <tt>bt</tt> which will toggle\r
+the different border styles.</p></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>bindsym Mod1+t bn\r
+bindsym Mod1+y bp\r
+bindsym Mod1+u bb</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="stack-limit">4.9. Changing the stack-limit of a container</h3>\r
+<div class="paragraph"><p>If you have a single container with a lot of windows inside it (say, more than\r
+10), the default layout of a stacking container can get a little unhandy.\r
+Depending on your screen’s size, you might end up seeing only half of the\r
+titlebars for each window in the container.</p></div>\r
+<div class="paragraph"><p>Using the <tt>stack-limit</tt> command, you can limit the number of rows or columns\r
+in a stacking container. i3 will create columns or rows (depending on what\r
+you limited) automatically as needed.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>stack-limit &lt;cols|rows&gt; &lt;value&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># I always want to have two window titles in one line\r
+stack-limit cols 2\r
+\r
+# Not more than 5 rows in this stacking container\r
+stack-limit rows 5</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><span class="image">\r
+<img src="stacklimit.png" alt="Container limited to two columns" />\r
+</span></p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_reloading_restarting_exiting">4.10. Reloading/Restarting/Exiting</h3>\r
+<div class="paragraph"><p>You can make i3 reload its configuration file with <tt>reload</tt>. You can also\r
+restart i3 inplace with the <tt>restart</tt> command to get it out of some weird state\r
+(if that should ever happen) or to perform an upgrade without having to restart\r
+your X session. However, your layout is not preserved at the moment, meaning\r
+that all open windows will end up in a single container in default layout\r
+after the restart. To exit i3 properly, you can use the <tt>exit</tt> command,\r
+however you don’t need to (simply killing your X session is fine as well).</p></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>bindsym Mod1+Shift+r restart\r
+bindsym Mod1+Shift+w reload\r
+bindsym Mod1+Shift+e exit</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="multi_monitor">5. Multiple monitors</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>As you can see in the goal list on the website, i3 was specifically developed\r
+with support for multiple monitors in mind. This section will explain how to\r
+handle multiple monitors.</p></div>\r
+<div class="paragraph"><p>When you have only one monitor, things are simple. You usually start with\r
+workspace 1 on your monitor and open new ones as you need them.</p></div>\r
+<div class="paragraph"><p>When you have more than one monitor, each monitor will get an initial\r
+workspace.  The first monitor gets 1, the second gets 2 and a possible third\r
+would get 3. When you switch to a workspace on a different monitor, i3 will\r
+switch to that monitor and then switch to the workspace. This way, you don’t\r
+need shortcuts to switch to a specific monitor, and you don’t need to remember\r
+where you put which workspace. New workspaces will be opened on the currently\r
+active monitor.  It is not possible to have a monitor without a workspace.</p></div>\r
+<div class="paragraph"><p>The idea of making workspaces global is based on the observation that most\r
+users have a very limited set of workspaces on their additional monitors.\r
+They are often used for a specific task (browser, shell) or for monitoring\r
+several things (mail, IRC, syslog, …). Thus, using one workspace on one monitor\r
+and "the rest" on the other monitors often makes sense. However, as you can\r
+create an unlimited number of workspaces in i3 and tie them to specific\r
+screens, you can have the "traditional" approach of having X workspaces per\r
+screen by changing your configuration (using modes, for example).</p></div>\r
+<div class="sect2">\r
+<h3 id="_configuring_your_monitors">5.1. Configuring your monitors</h3>\r
+<div class="paragraph"><p>To help you get going if you have never used multiple monitors before, here is\r
+a short overview of the xrandr options which will probably be of interest to\r
+you. It is always useful to get an overview of the current screen configuration.\r
+Just run "xrandr" and you will get an output like the following:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ xrandr\r
+Screen 0: minimum 320 x 200, current 1280 x 800, maximum 8192 x 8192\r
+VGA1 disconnected (normal left inverted right x axis y axis)\r
+LVDS1 connected 1280x800+0+0 (normal left inverted right x axis y axis) 261mm x 163mm\r
+   1280x800       60.0*+   50.0\r
+   1024x768       85.0     75.0     70.1     60.0\r
+   832x624        74.6\r
+   800x600        85.1     72.2     75.0     60.3     56.2\r
+   640x480        85.0     72.8     75.0     59.9\r
+   720x400        85.0\r
+   640x400        85.1\r
+   640x350        85.1</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Several things are important here: You can see that <tt>LVDS1</tt> is connected (of\r
+course, it is the internal flat panel) but <tt>VGA1</tt> is not. If you have a monitor\r
+connected to one of the ports but xrandr still says "disconnected", you should\r
+check your cable, monitor or graphics driver.</p></div>\r
+<div class="paragraph"><p>The maximum resolution you can see at the end of the first line is the maximum\r
+combined resolution of your monitors. By default, it is usually too low and has\r
+to be increased by editing <tt>/etc/X11/xorg.conf</tt>.</p></div>\r
+<div class="paragraph"><p>So, say you connected VGA1 and want to use it as an additional screen:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>xrandr --output VGA1 --auto --left-of LVDS1</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>This command makes xrandr try to find the native resolution of the device\r
+connected to <tt>VGA1</tt> and configures it to the left of your internal flat panel.\r
+When running "xrandr" again, the output looks like this:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ xrandr\r
+Screen 0: minimum 320 x 200, current 2560 x 1024, maximum 8192 x 8192\r
+VGA1 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 338mm x 270mm\r
+   1280x1024      60.0*+   75.0\r
+   1280x960       60.0\r
+   1152x864       75.0\r
+   1024x768       75.1     70.1     60.0\r
+   832x624        74.6\r
+   800x600        72.2     75.0     60.3     56.2\r
+   640x480        72.8     75.0     66.7     60.0\r
+   720x400        70.1\r
+LVDS1 connected 1280x800+1280+0 (normal left inverted right x axis y axis) 261mm x 163mm\r
+   1280x800       60.0*+   50.0\r
+   1024x768       85.0     75.0     70.1     60.0\r
+   832x624        74.6\r
+   800x600        85.1     72.2     75.0     60.3     56.2\r
+   640x480        85.0     72.8     75.0     59.9\r
+   720x400        85.0\r
+   640x400        85.1\r
+   640x350        85.1</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Please note that i3 uses exactly the same API as xrandr does, so it will see\r
+only what you can see in xrandr.</p></div>\r
+<div class="paragraph"><p>See also <a href="#presentations">[presentations]</a> for more examples of multi-monitor setups.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_interesting_configuration_for_multi_monitor_environments">5.2. Interesting configuration for multi-monitor environments</h3>\r
+<div class="paragraph"><p>There are several things to configure in i3 which may be interesting if you\r
+have more than one monitor:</p></div>\r
+<div class="olist arabic"><ol class="arabic">\r
+<li>\r
+<p>\r
+You can specify which workspace should be put on which screen. This\r
+   allows you to have a different set of workspaces when starting than just\r
+   1 for the first monitor, 2 for the second and so on. See\r
+   <a href="#workspace_screen">[workspace_screen]</a>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+If you want some applications to generally open on the bigger screen\r
+   (MPlayer, Firefox, …), you can assign them to a specific workspace, see\r
+   <a href="#assign_workspace">[assign_workspace]</a>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+If you have many workspaces on many monitors, it might get hard to keep\r
+   track of which window you put where. Thus, you can use vim-like marks to\r
+   quickly switch between windows. See <a href="#vim_like_marks">[vim_like_marks]</a>.\r
+</p>\r
+</li>\r
+</ol></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_i3_and_the_rest_of_your_software_world">6. i3 and the rest of your software world</h2>\r
+<div class="sectionbody">\r
+<div class="sect2">\r
+<h3 id="_displaying_a_status_line">6.1. Displaying a status line</h3>\r
+<div class="paragraph"><p>A very common thing amongst users of exotic window managers is a status line at\r
+some corner of the screen. It is an often superior replacement to the widget\r
+approach you have in the task bar of a traditional desktop environment.</p></div>\r
+<div class="paragraph"><p>If you don’t already have your favorite way of generating such a status line\r
+(self-written scripts, conky, …), then i3status is the recommended tool for\r
+this task. It was written in C with the goal of using as few syscalls as\r
+possible to reduce the time your CPU is woken up from sleep states.</p></div>\r
+<div class="paragraph"><p>Regardless of which application you use to generate the status line, you\r
+want to make sure that the application does one of the following things:</p></div>\r
+<div class="olist arabic"><ol class="arabic">\r
+<li>\r
+<p>\r
+Register as a dock window using EWMH hints. This will make i3 position the\r
+   window above the workspace bar but below every other client. This is the\r
+   recommended way, but in case of dzen2, for example, you need to check out\r
+   the source of dzen2 from subversion, as the -dock option is not present\r
+   in the released versions.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Overlay the internal workspace bar. This method will not waste any space\r
+   on the workspace bar, however, it is rather hackish. Just configure\r
+   the output window to be over the workspace bar (say -x 200 and -y 780 if\r
+   your screen is 800 px height).\r
+</p>\r
+</li>\r
+</ol></div>\r
+<div class="paragraph"><p>The planned solution for this problem is to make the workspace bar optional\r
+and switch to a third party application completely (dzen2 for example)\r
+which will then contain the workspace bar.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_giving_presentations_multi_monitor">6.2. Giving presentations (multi-monitor)</h3>\r
+<div class="paragraph"><p>When giving a presentation, you typically want the audience to see what you see\r
+on your screen and then go through a series of slides (if the presentation is\r
+simple). For more complex presentations, you might want to have some notes\r
+which only you can see on your screen, while the audience can only see the\r
+slides.</p></div>\r
+<div class="sect3">\r
+<h4 id="presentations">6.2.1. Case 1: everybody gets the same output</h4>\r
+<div class="paragraph"><p>This is the simple case. You connect your computer to the video projector,\r
+turn on both (computer and video projector) and configure your X server to\r
+clone the internal flat panel of your computer to the video output:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>xrandr --output VGA1 --mode 1024x768 --same-as LVDS1</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>i3 will then use the lowest common subset of screen resolutions, the rest of\r
+your screen will be left untouched (it will show the X background). So, in\r
+our example, this would be 1024x768 (my notebook has 1280x800).</p></div>\r
+</div>\r
+<div class="sect3">\r
+<h4 id="_case_2_you_can_see_more_than_your_audience">6.2.2. Case 2: you can see more than your audience</h4>\r
+<div class="paragraph"><p>This case is a bit harder. First of all, you should configure the VGA output\r
+somewhere near your internal flat panel, say right of it:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>xrandr --output VGA1 --mode 1024x768 --right-of LVDS1</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Now, i3 will put a new workspace (depending on your settings) on the new screen\r
+and you are in multi-monitor mode (see <a href="#multi_monitor">[multi_monitor]</a>).</p></div>\r
+<div class="paragraph"><p>Because i3 is not a compositing window manager, there is no ability to\r
+display a window on two screens at the same time. Instead, your presentation\r
+software needs to do this job (that is, open a window on each screen).</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer" lang="de">\r
+© 2009-2011 Michael Stapelberg, <a href="/impress.html">Impressum</a>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/docs/3.e/wsbar.html b/docs/3.e/wsbar.html
new file mode 100644 (file)
index 0000000..7a3b822
--- /dev/null
@@ -0,0 +1,147 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<link rel="icon" type="image/png" href="/favicon.png">\r
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.4" />\r
+<title>i3: External workspace bars</title>\r
+<link rel="stylesheet" href="/css/style.css" type="text/css" />\r
+<link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+window.onload = function(){asciidoc.footnotes(); asciidoc.toc(2);}\r
+/*]]>*/\r
+</script>\r
+<script type="text/javascript" src="/js/asciidoc-xhtml11.js"></script>\r
+</head>\r
+<body class="article">\r
+\r
+        <div id="main">\r
+            <a href="/"><h1 id="title">i3 - improved tiling WM</h1></a>\r
+                        <ul id="nav">\r
+                                <li><a style="border-bottom: 2px solid #fff" href="/docs">Docs</a></li>\r
+                                <li><a href="/screenshots">Screens</a></li>\r
+                                <li><a href="/contact">Contact</a></li>\r
+                                <li><a href="http://bugs.i3wm.org/">Bugs</a></li>\r
+                        </ul>\r
+        <br style="clear: both">\r
+<div id="content">\r
+<div id="header">\r
+<h1>External workspace bars</h1>\r
+<span id="author">Michael Stapelberg</span><br />\r
+<span id="email"><tt>&lt;<a href="mailto:michael+i3@stapelberg.de">michael+i3@stapelberg.de</a>&gt;</tt></span><br />\r
+<span id="revdate">May 2010</span>\r
+<div id="toc">
+  <div id="toctitle">Table of Contents</div>
+  <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
+</div>\r
+</div>\r
+<div id="preamble">\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>This document describes why the internal workspace bar is minimal and how an\r
+external workspace bar can be used. It explains the concepts using <tt>i3-wsbar</tt>\r
+as the reference implementation.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_internal_and_external_bars">1. Internal and external bars</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>The internal workspace bar of i3 is meant to be a reasonable default so that\r
+you can use i3 without having too much hassle when setting it up. It is quite\r
+simple and intended to stay this way. So, there is no way to display your own\r
+information in this bar (unlike dwm, wmii, awesome, …).</p></div>\r
+<div class="paragraph"><p>We chose not to implement such a mechanism because that would be duplicating\r
+already existing functionality of tools such as dzen2, xmobar and similar.\r
+Instead, you should disable the internal bar and use an external workspace bar\r
+(which communicates with i3 through its IPC interface).</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_dock_mode">2. dock mode</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>You typically want to see the same workspace bar on every workspace on a\r
+specific screen. Also, you don’t want to place the workspace bar somewhere\r
+in your layout by hand. This is where dock mode comes in: When a program sets\r
+the appropriate hint (_NET_WM_WINDOW_TYPE_DOCK), it will be managed in dock\r
+mode by i3. That means it will be placed at the bottom of the screen (while\r
+other edges of the screen are possible in the NetWM standard, this is not yet\r
+implemented in i3), it will not overlap any other window and it will be on\r
+every workspace for the specific screen it was placed on initially.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_the_ipc_interface">3. The IPC interface</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>In the context of using an external workspace bar, the IPC interface needs to\r
+provide the bar program with the current workspaces and output (as in VGA-1,\r
+LVDS-1, …) configuration. In the other direction, the program has to be able\r
+to switch to specific workspaces.</p></div>\r
+<div class="paragraph"><p>By default, the IPC interface is enabled and places its UNIX socket in\r
+<tt>~/.i3/ipc.sock</tt>.</p></div>\r
+<div class="paragraph"><p>To learn more about the protocol which is used for IPC, see <tt>docs/ipc</tt>.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_output_changes_on_the_fly">4. Output changes (on-the-fly)</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3 implements the RandR API and can handle changing outputs quite well. So, an\r
+external workspace bar implementation needs to make sure that when you change\r
+the resolution of any of your screens (or enable/disable an output), the bars\r
+will be adjusted properly.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_i3_wsbar_the_reference_implementation">5. i3-wsbar, the reference implementation</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Please keep in mind that <tt>i3-wsbar</tt> is just a reference implementation. It is\r
+shipped with i3 to have a reasonable default. Thus, <tt>i3-wsbar</tt> is designed to\r
+work well with dzen2 and there are no plans to make it more generic.</p></div>\r
+<div class="sect2">\r
+<h3 id="_the_big_picture">5.1. The big picture</h3>\r
+<div class="paragraph"><p>The most common reason to use an external workspace bar is to integrate system\r
+information such as what <tt>i3status</tt> provides into the workspace bar (to save\r
+screen space). So, we have <tt>i3status</tt> or a similar program, which only provides\r
+text output (formatted in some way). To display this text nicely on the screen,\r
+there are programs such as dzen2, xmobar and similar. We will stick to dzen2\r
+from here on. So, we have the output of i3status, which needs to go into dzen2\r
+somehow. But we also want to display the list of workspaces. <tt>i3-wsbar</tt> takes\r
+input on stdin, combines it with a formatted workspace list and pipes it to\r
+dzen2.</p></div>\r
+<div class="paragraph"><p>Please note that <tt>i3-wsbar</tt> does not print its output to stdout. Instead, it\r
+launches the dzen2 instances on its own. This is necessary to handle changes\r
+in the available outputs (to place a new dzen2 on a new screen for example).</p></div>\r
+<div class="paragraph"><p><span class="image">\r
+<a class="image" href="wsbar.png">\r
+<img src="wsbar.png" alt="Overview" />\r
+</a>\r
+</span></p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_running_i3_wsbar">5.2. Running i3-wsbar</h3>\r
+<div class="paragraph"><p>The most simple usage of i3-wsbar looks like this:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>i3-wsbar -c "dzen2 -x %x -dock"</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>The <tt>%x</tt> in the command name will be replaced by the X position of the output\r
+for which this workspace bar is running. i3 will automatically place the\r
+workspace bar on the correct output when dzen2 is started in dock mode. The\r
+bar which you will see should look exactly like the internal bar of i3.</p></div>\r
+<div class="paragraph"><p>To actually get a benefit, you want to give <tt>i3-wsbar</tt> some input:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>i3status | i3-wsbar -c "dzen2 -x %x -dock"</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>It is recommended to place the above command in your i3 configuration file\r
+to start it automatically with i3.</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer" lang="de">\r
+© 2009-2011 Michael Stapelberg, <a href="/impress.html">Impressum</a>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/docs/3.e/wsbar.png b/docs/3.e/wsbar.png
new file mode 100644 (file)
index 0000000..0789dec
Binary files /dev/null and b/docs/3.e/wsbar.png differ
diff --git a/docs/4.0/bigpicture.png b/docs/4.0/bigpicture.png
new file mode 100644 (file)
index 0000000..fc3c8db
Binary files /dev/null and b/docs/4.0/bigpicture.png differ
diff --git a/docs/4.0/debugging.html b/docs/4.0/debugging.html
new file mode 100644 (file)
index 0000000..4101fc0
--- /dev/null
@@ -0,0 +1,153 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<link rel="icon" type="image/png" href="/favicon.png">\r
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.4" />\r
+<title>i3: Debugging i3: How To</title>\r
+<link rel="stylesheet" href="/css/style.css" type="text/css" />\r
+<link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+window.onload = function(){asciidoc.footnotes();}\r
+/*]]>*/\r
+</script>\r
+<script type="text/javascript" src="/js/asciidoc-xhtml11.js"></script>\r
+</head>\r
+<body class="article">\r
+\r
+        <div id="main">\r
+            <a href="/"><h1 id="title">i3 - improved tiling WM</h1></a>\r
+                        <ul id="nav">\r
+                                <li><a style="border-bottom: 2px solid #fff" href="/docs">Docs</a></li>\r
+                                <li><a href="/screenshots">Screens</a></li>\r
+                                <li><a href="/contact">Contact</a></li>\r
+                                <li><a href="http://bugs.i3wm.org/">Bugs</a></li>\r
+                        </ul>\r
+        <br style="clear: both">\r
+<div id="content">\r
+<div id="header">\r
+<h1>Debugging i3: How To</h1>\r
+<span id="author">Michael Stapelberg</span><br />\r
+<span id="email"><tt>&lt;<a href="mailto:michael+i3@stapelberg.de">michael+i3@stapelberg.de</a>&gt;</tt></span><br />\r
+<span id="revdate">July 2011</span>\r
+</div>\r
+<div id="preamble">\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>This document describes how to debug i3 suitably for sending us useful bug\r
+reports, even if you have no clue of C programming.</p></div>\r
+<div class="paragraph"><p>First of all: Thank you for being interested in debugging i3. It really means\r
+something to us to get your bug fixed. If you have any questions about the\r
+debugging and/or need further help, do not hesitate to contact us!</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_enabling_logging">1. Enabling logging</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3 logs useful information to stdout. To have a clearly defined place where log\r
+files will be saved, you should redirect stdout and stderr in your\r
+<tt>~/.xsession</tt>. While you’re at it, putting each run of i3 in a separate log\r
+file with date/time in its filename is a good idea to not get confused about\r
+the different log files later on.</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>exec /usr/bin/i3 &gt;~/i3log-$(date +'%F-%k-%M-%S') 2&gt;&amp;1</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>To enable verbose output and all levels of debug output (required when\r
+attaching logfiles to bugreports), add the parameters <tt>-V -d all</tt>, like this:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>exec /usr/bin/i3 -V -d all &gt;~/i3log-$(date +'%F-%k-%M-%S') 2&gt;&amp;1</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_enabling_core_dumps">2. Enabling core dumps</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>When i3 crashes, often you have the chance of getting a <em>core dump</em> (an image\r
+of the memory of the i3 process which can be loaded into a debugger). To get a\r
+core dump, you have to make sure that the user limit for core dump files is set\r
+high enough. Many systems ship with a default value which even forbids core\r
+dumps completely. To disable the limit completely and thus enable core dumps,\r
+use the following command (in your <tt>~/.xsession</tt>, before starting i3):</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>ulimit -c unlimited</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Furthermore, to easily recognize core dumps and allow multiple of them, you\r
+should set a custom core dump filename pattern, using a command like the\r
+following:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>sudo sysctl -w kernel.core_pattern=core.%e.%p</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>This will generate files which have the executable’s file name (%e) and the\r
+process id (%p) in it. You can save this setting across reboots using\r
+<tt>/etc/sysctl.conf</tt>.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_compiling_with_debug_symbols">3. Compiling with debug symbols</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>To actually get useful core dumps, you should make sure that your version of i3\r
+is compiled with debug symbols, that is, that the symbols are not stripped\r
+during the build process. You can check whether your executable contains\r
+symbols by issuing the following command:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>file $(which i3)</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>You should get an output like this:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>/usr/bin/i3: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically\r
+linked (uses shared libs), for GNU/Linux 2.6.18, not stripped</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Notice the <tt>not stripped</tt>, which is the important part. If you have a version\r
+which is stripped, please have a look if your distribution provides debug\r
+symbols (package <tt>i3-wm-dbg</tt> on Debian for example) or if you can turn off\r
+stripping. If nothing helps, please build i3 from source.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_generating_a_backtrace">4. Generating a backtrace</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Once you have made sure that your i3 is compiled with debug symbols and that\r
+core dumps are enabled, you can start making sense out of the core dumps.</p></div>\r
+<div class="paragraph"><p>Because the core dump depends on the original executable (and its debug\r
+symbols), please do this as soon as you encounter the problem. If you\r
+re-compile i3, your core dump might be useless afterwards.</p></div>\r
+<div class="paragraph"><p>Please install <tt>gdb</tt>, a debugger for C. No worries, you don’t need to learn it\r
+now.  Start gdb using the following command (replacing the actual name of the\r
+core dump of course):</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>gdb $(which i3) core.i3.3849</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Then, generate a backtrace using:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>backtrace full</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_sending_bug_reports_debugging_on_irc">5. Sending bug reports/debugging on IRC</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>When sending bug reports, please paste the relevant part of the log (if in\r
+doubt, please send us rather too much information than too less) and the whole\r
+backtrace (if there was a core dump).</p></div>\r
+<div class="paragraph"><p>When debugging with us in IRC, be prepared to use a so called nopaste service\r
+such as <a href="http://nopaste.info">http://nopaste.info</a> or <a href="http://pastebin.com">http://pastebin.com</a> because pasting large\r
+amounts of text in IRC sometimes leads to incomplete lines (servers have line\r
+length limitations) or flood kicks.</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer" lang="de">\r
+© 2009-2011 Michael Stapelberg, <a href="/impress.html">Impressum</a>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/docs/4.0/hacking-howto.html b/docs/4.0/hacking-howto.html
new file mode 100644 (file)
index 0000000..382b5c3
--- /dev/null
@@ -0,0 +1,1046 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<link rel="icon" type="image/png" href="/favicon.png">\r
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.4" />\r
+<title>i3: Hacking i3: How To</title>\r
+<link rel="stylesheet" href="/css/style.css" type="text/css" />\r
+<link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+window.onload = function(){asciidoc.footnotes(); asciidoc.toc(2);}\r
+/*]]>*/\r
+</script>\r
+<script type="text/javascript" src="/js/asciidoc-xhtml11.js"></script>\r
+</head>\r
+<body class="article">\r
+\r
+        <div id="main">\r
+            <a href="/"><h1 id="title">i3 - improved tiling WM</h1></a>\r
+                        <ul id="nav">\r
+                                <li><a style="border-bottom: 2px solid #fff" href="/docs">Docs</a></li>\r
+                                <li><a href="/screenshots">Screens</a></li>\r
+                                <li><a href="/contact">Contact</a></li>\r
+                                <li><a href="http://bugs.i3wm.org/">Bugs</a></li>\r
+                        </ul>\r
+        <br style="clear: both">\r
+<div id="content">\r
+<div id="header">\r
+<h1>Hacking i3: How To</h1>\r
+<span id="author">Michael Stapelberg</span><br />\r
+<span id="email"><tt>&lt;<a href="mailto:michael+i3@stapelberg.de">michael+i3@stapelberg.de</a>&gt;</tt></span><br />\r
+<span id="revdate">July 2011</span>\r
+<div id="toc">
+  <div id="toctitle">Table of Contents</div>
+  <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
+</div>\r
+</div>\r
+<div id="preamble">\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>This document is intended to be the first thing you read before looking and/or\r
+touching i3’s source code. It should contain all important information to help\r
+you understand why things are like they are. If it does not mention something\r
+you find necessary, please do not hesitate to contact me.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_window_managers">1. Window Managers</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>A window manager is not necessarily needed to run X, but it is usually used in\r
+combination with X to facilitate some things. The window manager&#8217;s job is to\r
+take care of the placement of windows, to provide the user with some mechanisms\r
+to change the position/size of windows and to communicate with clients to a\r
+certain extent (for example handle fullscreen requests of clients such as\r
+MPlayer).</p></div>\r
+<div class="paragraph"><p>There are no different contexts in which X11 clients run, so a window manager\r
+is just another client, like all other X11 applications. However, it handles\r
+some events which normal clients usually don’t handle.</p></div>\r
+<div class="paragraph"><p>In the case of i3, the tasks (and order of them) are the following:</p></div>\r
+<div class="olist arabic"><ol class="arabic">\r
+<li>\r
+<p>\r
+Grab the key bindings (events will be sent upon keypress/keyrelease)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Iterate through all existing windows (if the window manager is not started as\r
+  the first client of X) and manage them (reparent them, create window\r
+  decorations, etc.)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+When new windows are created, manage them\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Handle the client’s <tt>_WM_STATE</tt> property, but only the <tt>_WM_STATE_FULLSCREEN</tt>\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Handle the client’s <tt>WM_NAME</tt> property\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Handle the client’s size hints to display them proportionally\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Handle the client’s urgency hint\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Handle enter notifications (focus follows mouse)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Handle button (as in mouse buttons) presses for focus/raise on click\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Handle expose events to re-draw own windows such as decorations\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+React to the user’s commands: Change focus, Move windows, Switch workspaces,\r
+  Change the layout mode of a container (default/stacking/tabbed), start a new\r
+  application, restart the window manager\r
+</p>\r
+</li>\r
+</ol></div>\r
+<div class="paragraph"><p>In the following chapters, each of these tasks and their implementation details\r
+will be discussed.</p></div>\r
+<div class="sect2">\r
+<h3 id="_tiling_window_managers">1.1. Tiling window managers</h3>\r
+<div class="paragraph"><p>Traditionally, there are two approaches to managing windows: The most common\r
+one nowadays is floating, which means the user can freely move/resize the\r
+windows. The other approach is called tiling, which means that your window\r
+manager distributes windows to use as much space as possible while not\r
+overlapping each other.</p></div>\r
+<div class="paragraph"><p>The idea behind tiling is that you should not need to waste your time\r
+moving/resizing windows while you usually want to get some work done. After\r
+all, most users sooner or later tend to lay out their windows in a way which\r
+corresponds to tiling or stacking mode in i3. Therefore, why not let i3 do this\r
+for you? Certainly, it’s faster than you could ever do it.</p></div>\r
+<div class="paragraph"><p>The problem with most tiling window managers is that they are too unflexible.\r
+In my opinion, a window manager is just another tool, and similar to vim which\r
+can edit all kinds of text files (like source code, HTML, …) and is not limited\r
+to a specific file type, a window manager should not limit itself to a certain\r
+layout (like dwm, awesome, …) but provide mechanisms for you to easily create\r
+the layout you need at the moment.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_the_layout_table">1.2. The layout table</h3>\r
+<div class="sidebarblock">\r
+<div class="content">\r
+<div class="paragraph"><p>This section has not been updated for v4.0 yet, sorry! We wanted to release on\r
+time, but we will update this soon. Please talk to us on IRC if you need to\r
+know stuff <strong>NOW</strong> :).</p></div>\r
+</div></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_files">2. Files</h2>\r
+<div class="sectionbody">\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+include/atoms.xmacro\r
+</dt>\r
+<dd>\r
+<p>\r
+A file containing all X11 atoms which i3 uses. This file will be included\r
+various times (for defining, requesting and receiving the atoms), each time\r
+with a different definition of xmacro().\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+include/data.h\r
+</dt>\r
+<dd>\r
+<p>\r
+Contains data definitions used by nearly all files. You really need to read\r
+this first.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+include/*.h\r
+</dt>\r
+<dd>\r
+<p>\r
+Contains forward definitions for all public functions, as well as\r
+doxygen-compatible comments (so if you want to get a bit more of the big\r
+picture, either browse all header files or use doxygen if you prefer that).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/cfgparse.l\r
+</dt>\r
+<dd>\r
+<p>\r
+Contains the lexer for i3’s configuration file, written for <tt>flex(1)</tt>.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/cfgparse.y\r
+</dt>\r
+<dd>\r
+<p>\r
+Contains the parser for i3’s configuration file, written for <tt>bison(1)</tt>.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/click.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Contains all functions which handle mouse button clicks (right mouse button\r
+clicks initiate resizing and thus are relatively complex).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/cmdparse.l\r
+</dt>\r
+<dd>\r
+<p>\r
+Contains the lexer for i3 commands, written for <tt>flex(1)</tt>.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/cmdparse.y\r
+</dt>\r
+<dd>\r
+<p>\r
+Contains the parser for i3 commands, written for <tt>bison(1)</tt>.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/con.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Contains all functions which deal with containers directly (creating\r
+containers, searching containers, getting specific properties from containers,\r
+…).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/config.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Contains all functions handling the configuration file (calling the parser\r
+(src/cfgparse.y) with the correct path, switching key bindings mode).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/debug.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Contains debugging functions to print unhandled X events.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/ewmh.c\r
+</dt>\r
+<dd>\r
+<p>\r
+iFunctions to get/set certain EWMH properties easily.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/floating.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Contains functions for floating mode (mostly resizing/dragging).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/handlers.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Contains all handlers for all kinds of X events (new window title, new hints,\r
+unmapping, key presses, button presses, …).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/ipc.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Contains code for the IPC interface.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/load_layout.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Contains code for loading layouts from JSON files.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/log.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Handles the setting of loglevels, contains the logging functions.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/main.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Initializes the window manager.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/manage.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Looks at existing or new windows and decides whether to manage them. If so, it\r
+reparents the window and inserts it into our data structures.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/match.c\r
+</dt>\r
+<dd>\r
+<p>\r
+A "match" is a data structure which acts like a mask or expression to match\r
+certain windows or not. For example, when using commands, you can specify a\r
+command like this: [title="<strong>Firefox</strong>"] kill. The title member of the match\r
+data structure will then be filled and i3 will check each window using\r
+match_matches_window() to find the windows affected by this command.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/move.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Contains code to move a container in a specific direction.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/output.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Functions to handle CT_OUTPUT cons.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/randr.c\r
+</dt>\r
+<dd>\r
+<p>\r
+The RandR API is used to get (and re-query) the configured outputs (monitors,\r
+…).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/render.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Renders the tree data structure by assigning coordinates to every node. These\r
+values will later be pushed to X11 in <tt>src/x.c</tt>.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/resize.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Contains the functions to resize containers.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/sighandler.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Handles <tt>SIGSEGV</tt>, <tt>SIGABRT</tt> and <tt>SIGFPE</tt> by showing a dialog that i3 crashed.\r
+You can chose to let it dump core, to restart it in-place or to restart it\r
+in-place but forget about the layout.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/tree.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Contains functions which open or close containers in the tree, change focus or\r
+cleanup ("flatten") the tree. See also <tt>src/move.c</tt> for another similar\r
+function, which was moved into its own file because it is so long.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/util.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Contains useful functions which are not really dependant on anything.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/window.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Handlers to update X11 window properties like <tt>WM_CLASS</tt>, <tt>_NET_WM_NAME</tt>,\r
+<tt>CLIENT_LEADER</tt>, etc.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/workspace.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Contains all functions related to workspaces (displaying, hiding, renaming…)\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/x.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Transfers our in-memory tree (see <tt>src/render.c</tt>) to X11.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/xcb.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Contains wrappers to use xcb more easily.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/xcursor.c\r
+</dt>\r
+<dd>\r
+<p>\r
+XCursor functions (for cursor themes).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+src/xinerama.c\r
+</dt>\r
+<dd>\r
+<p>\r
+Legacy support for Xinerama. See <tt>src/randr.c</tt> for the preferred API.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_data_structures">3. Data structures</h2>\r
+<div class="sectionbody">\r
+<div class="sidebarblock">\r
+<div class="content">\r
+<div class="paragraph"><p>This section has not been updated for v4.0 yet, sorry! We wanted to release on\r
+time, but we will update this soon. Please talk to us on IRC if you need to\r
+know stuff <strong>NOW</strong> :).</p></div>\r
+</div></div>\r
+<div class="paragraph"><p>So, the hierarchy is:</p></div>\r
+<div class="olist arabic"><ol class="arabic">\r
+<li>\r
+<p>\r
+<strong>X11 root window</strong>, the root container\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<strong>Virtual screens</strong> (Screen 0 in this example)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<strong>Content container</strong> (there are also containers for dock windows)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<strong>Workspaces</strong> (Workspace 1 in this example, with horizontal orientation)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<strong>Split container</strong> (vertically split)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<strong>X11 window containers</strong>\r
+</p>\r
+</li>\r
+</ol></div>\r
+<div class="paragraph"><p>The data type is <tt>Con</tt>, in all cases.</p></div>\r
+<div class="sect2">\r
+<h3 id="_virtual_screens">3.1. Virtual screens</h3>\r
+<div class="paragraph"><p>A virtual screen (type <tt>i3Screen</tt>) is generated from the connected outputs\r
+obtained through RandR. The difference to the raw RandR outputs as seen\r
+when using <tt>xrandr(1)</tt> is that it falls back to the lowest common resolution of\r
+the actual enabled outputs.</p></div>\r
+<div class="paragraph"><p>For example, if your notebook has a screen resolution of 1280x800 px and you\r
+connect a video projector with a resolution of 1024x768 px, set it up in clone\r
+mode (<tt>xrandr --output VGA1 --mode 1024x768 --same-as LVDS1</tt>), i3 will have\r
+one virtual screen.</p></div>\r
+<div class="paragraph"><p>However, if you configure it using <tt>xrandr --output VGA1 --mode 1024x768\r
+--right-of LVDS1</tt>, i3 will generate two virtual screens. For each virtual\r
+screen, a new workspace will be assigned. New workspaces are created on the\r
+screen you are currently on.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_workspace">3.2. Workspace</h3>\r
+<div class="paragraph"><p>A workspace is identified by its name. Basically, you could think of\r
+workspaces as different desks in your office, if you like the desktop\r
+methaphor. They just contain different sets of windows and are completely\r
+separate of each other. Other window managers also call this &#8220;Virtual\r
+desktops&#8221;.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_the_layout_table_2">3.3. The layout table</h3>\r
+<div class="sidebarblock">\r
+<div class="content">\r
+<div class="paragraph"><p>This section has not been updated for v4.0 yet, sorry! We wanted to release on\r
+time, but we will update this soon. Please talk to us on IRC if you need to\r
+know stuff <strong>NOW</strong> :).</p></div>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_container">3.4. Container</h3>\r
+<div class="sidebarblock">\r
+<div class="content">\r
+<div class="paragraph"><p>This section has not been updated for v4.0 yet, sorry! We wanted to release on\r
+time, but we will update this soon. Please talk to us on IRC if you need to\r
+know stuff <strong>NOW</strong> :).</p></div>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_client">3.5. Client</h3>\r
+<div class="paragraph"><p>A client is x11-speak for a window.</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_list_queue_macros">4. List/queue macros</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3 makes heavy use of the list macros defined in BSD operating systems. To\r
+ensure that the operating system on which i3 is compiled has all the expected\r
+features, i3 comes with <tt>include/queue.h</tt>. On BSD systems, you can use man\r
+<tt>queue(3)</tt>. On Linux, you have to use google (or read the source).</p></div>\r
+<div class="paragraph"><p>The lists used are <tt>SLIST</tt> (single linked lists), <tt>CIRCLEQ</tt> (circular\r
+queues) and <tt>TAILQ</tt> (tail queues). Usually, only forward traversal is necessary,\r
+so an <tt>SLIST</tt> works fine. If inserting elements at arbitrary positions or at\r
+the end of a list is necessary, a <tt>TAILQ</tt> is used instead. However, for the\r
+windows inside a container, a <tt>CIRCLEQ</tt> is necessary to go from the currently\r
+selected window to the window above/below.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_naming_conventions">5. Naming conventions</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>There is a row of standard variables used in many events. The following names\r
+should be chosen for those:</p></div>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+&#8220;conn&#8221; is the xcb_connection_t\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+&#8220;event&#8221; is the event of the particular type\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+&#8220;con&#8221; names a container\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+&#8220;current&#8221; is a loop variable when using <tt>TAILQ_FOREACH</tt> etc.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_startup_src_mainx_c_main">6. Startup (src/mainx.c, main())</h2>\r
+<div class="sectionbody">\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Establish the xcb connection\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Check for XKB extension on the separate X connection, load Xcursor\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Check for RandR screens (with a fall-back to Xinerama)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Grab the keycodes for which bindings exist\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Manage all existing windows\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Enter the event loop\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_keybindings">7. Keybindings</h2>\r
+<div class="sectionbody">\r
+<div class="sect2">\r
+<h3 id="_grabbing_the_bindings">7.1. Grabbing the bindings</h3>\r
+<div class="paragraph"><p>Grabbing the bindings is quite straight-forward. You pass X your combination of\r
+modifiers and the keycode you want to grab and whether you want to grab them\r
+actively or passively. Most bindings (everything except for bindings using\r
+Mode_switch) are grabbed passively, that is, just the window manager gets the\r
+event and cannot replay it.</p></div>\r
+<div class="paragraph"><p>We need to grab bindings that use Mode_switch actively because of a bug in X.\r
+When the window manager receives the keypress/keyrelease event for an actively\r
+grabbed keycode, it has to decide what to do with this event: It can either\r
+replay it so that other applications get it or it can prevent other\r
+applications from receiving it.</p></div>\r
+<div class="paragraph"><p>So, why do we need to grab keycodes actively? Because X does not set the\r
+state-property of keypress/keyrelease events properly. The Mode_switch bit is\r
+not set and we need to get it using XkbGetState. This means we cannot pass X\r
+our combination of modifiers containing Mode_switch when grabbing the key and\r
+therefore need to grab the keycode itself without any modifiers. This means,\r
+if you bind Mode_switch + keycode 38 ("a"), i3 will grab keycode 38 ("a") and\r
+check on each press of "a" if the Mode_switch bit is set using XKB. If yes, it\r
+will handle the event, if not, it will replay the event.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_handling_a_keypress">7.2. Handling a keypress</h3>\r
+<div class="paragraph"><p>As mentioned in "Grabbing the bindings", upon a keypress event, i3 first gets\r
+the correct state.</p></div>\r
+<div class="paragraph"><p>Then, it looks through all bindings and gets the one which matches the received\r
+event.</p></div>\r
+<div class="paragraph"><p>The bound command is parsed by the cmdparse lexer/parser, see <tt>parse_cmd</tt> in\r
+<tt>src/cmdparse.y</tt>.</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_manage_windows_src_main_c_manage_window_and_reparent_window">8. Manage windows (src/main.c, manage_window() and reparent_window())</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p><tt>manage_window()</tt> does some checks to decide whether the window should be\r
+managed at all:</p></div>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Windows have to be mapped, that is, visible on screen\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+The override_redirect must not be set. Windows with override_redirect shall\r
+   not be managed by a window manager\r
+</p>\r
+</li>\r
+</ul></div>\r
+<div class="paragraph"><p>Afterwards, i3 gets the intial geometry and reparents the window (see\r
+<tt>reparent_window()</tt>) if it wasn’t already managed.</p></div>\r
+<div class="paragraph"><p>Reparenting means that for each window which is reparented, a new window,\r
+slightly larger than the original one, is created. The original window is then\r
+reparented to the bigger one (called "frame").</p></div>\r
+<div class="paragraph"><p>After reparenting, the window type (<tt>_NET_WM_WINDOW_TYPE</tt>) is checked to see\r
+whether this window is a dock (<tt>_NET_WM_WINDOW_TYPE_DOCK</tt>), like dzen2 for\r
+example. Docks are handled differently, they don’t have decorations and are not\r
+assigned to a specific container. Instead, they are positioned at the bottom\r
+of the screen. To get the height which needs to be reserved for the window,\r
+the <tt>_NET_WM_STRUT_PARTIAL</tt> property is used.</p></div>\r
+<div class="paragraph"><p>Furthermore, the list of assignments (to other workspaces, which may be on\r
+other screens) is checked. If the window matches one of the user’s criteria,\r
+it may either be put in floating mode or moved to a different workspace. If the\r
+target workspace is not visible, the window will not be mapped.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_what_happens_when_an_application_is_started">9. What happens when an application is started?</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3 does not care for applications. All it notices is when new windows are\r
+mapped (see <tt>src/handlers.c</tt>, <tt>handle_map_request()</tt>). The window is then\r
+reparented (see section "Manage windows").</p></div>\r
+<div class="paragraph"><p>After reparenting the window, <tt>render_tree()</tt> is called which renders the\r
+internal layout table. The new window has been placed in the currently focused\r
+container and therefore the new window and the old windows (if any) need to be\r
+moved/resized so that the currently active layout (default/stacking/tabbed mode)\r
+is rendered correctly. To move/resize windows, a window is &#8220;configured&#8221; in\r
+X11-speak.</p></div>\r
+<div class="paragraph"><p>Some applications, such as MPlayer obviously assume the window manager is\r
+stupid and try to configure their windows by themselves. This generates an\r
+event called configurerequest. i3 handles these events and tells the window the\r
+size it had before the configurerequest (with the exception of not yet mapped\r
+windows, which get configured like they want to, and floating windows, which\r
+can reconfigure themselves).</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_net_wm_state">10. _NET_WM_STATE</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Only the _NET_WM_STATE_FULLSCREEN atom is handled. It calls\r
+&#8220;toggle_fullscreen()&#8221; for the specific client which just configures the\r
+client to use the whole screen on which it currently is. Also, it is set as\r
+fullscreen_client for the i3Screen.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_wm_name">11. WM_NAME</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>When the WM_NAME property of a window changes, its decoration (containing the\r
+title) is re-rendered. Note that WM_NAME is in COMPOUND_TEXT encoding which is\r
+totally uncommon and cumbersome. Therefore, the _NET_WM_NAME atom will be used\r
+if present.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_net_wm_name">12. _NET_WM_NAME</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Like WM_NAME, this atom contains the title of a window. However, _NET_WM_NAME\r
+is encoded in UTF-8. i3 will recode it to UCS-2 in order to be able to pass it\r
+to X. Using an appropriate font (ISO-10646), you can see most special\r
+characters (every special character contained in your font).</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_size_hints">13. Size hints</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Size hints specify the minimum/maximum size for a given window as well as its\r
+aspect ratio.  This is important for clients like mplayer, who only set the\r
+aspect ratio and resize their window to be as small as possible (but only with\r
+some video outputs, for example in Xv, while when using x11, mplayer does the\r
+necessary centering for itself).</p></div>\r
+<div class="paragraph"><p>So, when an aspect ratio was specified, i3 adjusts the height of the window\r
+until the size maintains the correct aspect ratio. For the code to do this, see\r
+src/layout.c, function resize_client().</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_rendering_src_layout_c_render_layout_and_render_container">14. Rendering (src/layout.c, render_layout() and render_container())</h2>\r
+<div class="sectionbody">\r
+<div class="sidebarblock">\r
+<div class="content">\r
+<div class="paragraph"><p>This section has not been updated for v4.0 yet, sorry! We wanted to release on\r
+time, but we will update this soon. Please talk to us on IRC if you need to\r
+know stuff <strong>NOW</strong> :).</p></div>\r
+</div></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_user_commands_commandmode_src_cmdparse_l_y">15. User commands / commandmode (src/cmdparse.{l,y})</h2>\r
+<div class="sectionbody">\r
+<div class="sidebarblock">\r
+<div class="content">\r
+<div class="paragraph"><p>This section has not been updated for v4.0 yet, sorry! We wanted to release on\r
+time, but we will update this soon. Please talk to us on IRC if you need to\r
+know stuff <strong>NOW</strong> :).</p></div>\r
+</div></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_moving_containers">16. Moving containers</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>The movement code is pretty delicate. You need to consider all cases before\r
+making any changes or before being able to fully understand how it works.</p></div>\r
+<div class="sect2">\r
+<h3 id="_case_1_moving_inside_the_same_container">16.1. Case 1: Moving inside the same container</h3>\r
+<div class="paragraph"><p>The reference layout for this case is a single workspace in horizontal\r
+orientation with two containers on it. Focus is on the left container (1).</p></div>\r
+<div class="tableblock">\r
+<table rules="all"\r
+width="15%"\r
+frame="border"\r
+cellspacing="0" cellpadding="4">\r
+<col width="50%" />\r
+<col width="50%" />\r
+<tbody>\r
+<tr>\r
+<td align="center" valign="top"><p class="table">1</p></td>\r
+<td align="center" valign="top"><p class="table">2</p></td>\r
+</tr>\r
+</tbody>\r
+</table>\r
+</div>\r
+<div class="paragraph"><p>When moving the left window to the right (command <tt>move right</tt>), tree_move will\r
+look for a container with horizontal orientation and finds the parent of the\r
+left container, that is, the workspace. Afterwards, it runs the code branch\r
+commented with "the easy case": it calls TAILQ_NEXT to get the container right\r
+of the current one and swaps both containers.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_case_2_move_a_container_into_a_split_container">16.2. Case 2: Move a container into a split container</h3>\r
+<div class="paragraph"><p>The reference layout for this case is a horizontal workspace with two\r
+containers. The right container is a v-split with two containers. Focus is on\r
+the left container (1).</p></div>\r
+<div class="tableblock">\r
+<table rules="all"\r
+width="15%"\r
+frame="border"\r
+cellspacing="0" cellpadding="4">\r
+<col width="50%" />\r
+<col width="50%" />\r
+<tbody>\r
+<tr>\r
+<td rowspan="2" align="center" valign="middle"><p class="table">1</p></td>\r
+<td align="center" valign="top"><p class="table">2</p></td>\r
+</tr>\r
+<tr>\r
+<td align="center" valign="top"><p class="table">3</p></td>\r
+</tr>\r
+</tbody>\r
+</table>\r
+</div>\r
+<div class="paragraph"><p>When moving to the right (command <tt>move right</tt>), i3 will work like in case 1\r
+("the easy case"). However, as the right container is not a leaf container, but\r
+a v-split, the left container (1) will be inserted at the right position (below\r
+2, assuming that 2 is focused inside the v-split) by calling <tt>insert_con_into</tt>.</p></div>\r
+<div class="paragraph"><p><tt>insert_con_into</tt> detaches the container from its parent and inserts it\r
+before/after the given target container. Afterwards, the on_remove_child\r
+callback is called on the old parent container which will then be closed, if\r
+empty.</p></div>\r
+<div class="paragraph"><p>Afterwards, <tt>con_focus</tt> will be called to fix the focus stack and the tree will\r
+be flattened.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_case_3_moving_to_non_existant_top_bottom">16.3. Case 3: Moving to non-existant top/bottom</h3>\r
+<div class="paragraph"><p>Like in case 1, the reference layout for this case is a single workspace in\r
+horizontal orientation with two containers on it. Focus is on the left\r
+container:</p></div>\r
+<div class="tableblock">\r
+<table rules="all"\r
+width="15%"\r
+frame="border"\r
+cellspacing="0" cellpadding="4">\r
+<col width="50%" />\r
+<col width="50%" />\r
+<tbody>\r
+<tr>\r
+<td align="center" valign="top"><p class="table">1</p></td>\r
+<td align="center" valign="top"><p class="table">2</p></td>\r
+</tr>\r
+</tbody>\r
+</table>\r
+</div>\r
+<div class="paragraph"><p>This time however, the command is <tt>move up</tt> or <tt>move down</tt>. tree_move will look\r
+for a container with vertical orientation. As it will not find any,\r
+<tt>same_orientation</tt> is NULL and therefore i3 will perform a forced orientation\r
+change on the workspace by creating a new h-split container, moving the\r
+workspace contents into it and then changing the workspace orientation to\r
+vertical. Now it will again search for parent containers with vertical\r
+orientation and it will find the workspace.</p></div>\r
+<div class="paragraph"><p>This time, the easy case code path will not be run as we are not moving inside\r
+the same container. Instead, <tt>insert_con_into</tt> will be called with the focused\r
+container and the container above/below the current one (on the level of\r
+<tt>same_orientation</tt>).</p></div>\r
+<div class="paragraph"><p>Now, <tt>con_focus</tt> will be called to fix the focus stack and the tree will be\r
+flattened.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_case_4_moving_to_existant_top_bottom">16.4. Case 4: Moving to existant top/bottom</h3>\r
+<div class="paragraph"><p>The reference layout for this case is a vertical workspace with two containers.\r
+The bottom one is a h-split containing two containers (1 and 2). Focus is on\r
+the bottom left container (1).</p></div>\r
+<div class="tableblock">\r
+<table rules="all"\r
+width="15%"\r
+frame="border"\r
+cellspacing="0" cellpadding="4">\r
+<col width="50%" />\r
+<col width="50%" />\r
+<tbody>\r
+<tr>\r
+<td colspan="2" align="center" valign="top"><p class="table">3</p></td>\r
+</tr>\r
+<tr>\r
+<td align="center" valign="top"><p class="table">1</p></td>\r
+<td align="center" valign="top"><p class="table">2</p></td>\r
+</tr>\r
+</tbody>\r
+</table>\r
+</div>\r
+<div class="paragraph"><p>This case is very much like case 3, only this time the forced workspace\r
+orientation change does not need to be performed because the workspace already\r
+is in vertical orientation.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_case_5_moving_in_one_child_h_split">16.5. Case 5: Moving in one-child h-split</h3>\r
+<div class="paragraph"><p>The reference layout for this case is a horizontal workspace with two\r
+containers having a v-split on the left side with a one-child h-split on the\r
+bottom. Focus is on the bottom left container (2(h)):</p></div>\r
+<div class="tableblock">\r
+<table rules="all"\r
+width="15%"\r
+frame="border"\r
+cellspacing="0" cellpadding="4">\r
+<col width="50%" />\r
+<col width="50%" />\r
+<tbody>\r
+<tr>\r
+<td align="center" valign="top"><p class="table">1</p></td>\r
+<td rowspan="2" align="center" valign="middle"><p class="table">3</p></td>\r
+</tr>\r
+<tr>\r
+<td align="center" valign="top"><p class="table">2(h)</p></td>\r
+</tr>\r
+</tbody>\r
+</table>\r
+</div>\r
+<div class="paragraph"><p>In this case, <tt>same_orientation</tt> will be set to the h-split container around\r
+the focused container. However, when trying the easy case, the next/previous\r
+container <tt>swap</tt> will be NULL. Therefore, i3 will search again for a\r
+<tt>same_orientation</tt> container, this time starting from the parent of the h-split\r
+container.</p></div>\r
+<div class="paragraph"><p>After determining a new <tt>same_orientation</tt> container (if it is NULL, the\r
+orientation will be force-changed), this case is equivalent to case 2 or case\r
+4.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_case_6_floating_containers">16.6. Case 6: Floating containers</h3>\r
+<div class="paragraph"><p>The reference layout for this case is a horizontal workspace with two\r
+containers plus one floating h-split container. Focus is on the floating\r
+container.</p></div>\r
+<div class="paragraph"><p>TODO: nice illustration. table not possible?</p></div>\r
+<div class="paragraph"><p>When moving up/down, the container needs to leave the floating container and it\r
+needs to be placed on the workspace (at workspace level). This is accomplished\r
+by calling the function <tt>attach_to_workspace</tt>.</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_click_handling">17. Click handling</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Without much ado, here is the list of cases which need to be considered:</p></div>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+click to focus (tiling + floating) and raise (floating)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+click to focus/raise when in stacked/tabbed mode\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+floating_modifier + left mouse button to drag a floating con\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+floating_modifier + right mouse button to resize a floating con\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+click on decoration in a floating con to either initiate a resize (if there\r
+  is more than one child in the floating con) or to drag the\r
+  floating con (if it’s the one at the top).\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+click on border in a floating con to resize the floating con\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+floating_modifier + right mouse button to resize a tiling con\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+click on border/decoration to resize a tiling con\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_gotchas">18. Gotchas</h2>\r
+<div class="sectionbody">\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Forgetting to call <tt>xcb_flush(conn);</tt> after sending a request. This usually\r
+  leads to code which looks like it works fine but which does not work under\r
+  certain conditions.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_using_git_sending_patches">19. Using git / sending patches</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>For a short introduction into using git, see\r
+<a href="http://www.spheredev.org/wiki/Git_for_the_lazy">http://www.spheredev.org/wiki/Git_for_the_lazy</a> or, for more documentation, see\r
+<a href="http://git-scm.com/documentation">http://git-scm.com/documentation</a></p></div>\r
+<div class="paragraph"><p>When you want to send a patch because you fixed a bug or implemented a cool\r
+feature (please talk to us before working on features to see whether they are\r
+maybe already implemented, not possible for some some reason, or don’t fit\r
+into the concept), please use git to create a patchfile.</p></div>\r
+<div class="paragraph"><p>First of all, update your working copy to the latest version of the master\r
+branch:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>git pull</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Afterwards, make the necessary changes for your bugfix/feature. Then, review\r
+the changes using <tt>git diff</tt> (you might want to enable colors in the diff using\r
+<tt>git config diff.color auto</tt>).  When you are definitely done, use <tt>git commit\r
+-a</tt> to commit all changes you’ve made.</p></div>\r
+<div class="paragraph"><p>Then, use the following command to generate a patchfile which we can directly\r
+apply to the branch, preserving your commit message and name:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>git format-patch origin</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Just send us the generated file via email.</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer" lang="de">\r
+© 2009-2011 Michael Stapelberg, <a href="/impress.html">Impressum</a>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/docs/4.0/i3-config-wizard.html b/docs/4.0/i3-config-wizard.html
new file mode 100644 (file)
index 0000000..1389d2f
--- /dev/null
@@ -0,0 +1,96 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<link rel="icon" type="image/png" href="/favicon.png">\r
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.4" />\r
+<title>i3: i3-config-wizard(1)</title>\r
+<link rel="stylesheet" href="/css/style.css" type="text/css" />\r
+<link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+window.onload = function(){asciidoc.footnotes(); asciidoc.toc(2);}\r
+/*]]>*/\r
+</script>\r
+<script type="text/javascript" src="/js/asciidoc-xhtml11.js"></script>\r
+</head>\r
+<body class="article">\r
+\r
+        <div id="main">\r
+            <a href="/"><h1 id="title">i3 - improved tiling WM</h1></a>\r
+                        <ul id="nav">\r
+                                <li><a style="border-bottom: 2px solid #fff" href="/docs">Docs</a></li>\r
+                                <li><a href="/screenshots">Screens</a></li>\r
+                                <li><a href="/contact">Contact</a></li>\r
+                                <li><a href="http://bugs.i3wm.org/">Bugs</a></li>\r
+                        </ul>\r
+        <br style="clear: both">\r
+<div id="content">\r
+<div id="header">\r
+<h1>i3-config-wizard(1)</h1>\r
+<span id="author">Michael Stapelberg</span><br />\r
+<span id="email"><tt>&lt;<a href="mailto:michael+i3@stapelberg.de">michael+i3@stapelberg.de</a>&gt;</tt></span><br />\r
+<span id="revnumber">version 4.0,</span>\r
+<span id="revdate">July 2011</span>\r
+<div id="toc">
+  <div id="toctitle">Table of Contents</div>
+  <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_name">1. NAME</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3-config-wizard - creates a keysym based config based on your layout</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_synopsis">2. SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3-config-wizard</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_files">3. FILES</h2>\r
+<div class="sectionbody">\r
+<div class="sect2">\r
+<h3 id="_etc_i3_config_keycodes">3.1. /etc/i3/config.keycodes</h3>\r
+<div class="paragraph"><p>This file contains the default configuration with keycodes. All the bindcode\r
+lines will be transformed to bindsym and the user-specified modifier will be\r
+used.</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_description">4. DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3-config-wizard is started by i3 in its default config, unless <sub>/.i3/config\r
+exists. i3-config-wizard creates a keysym based i3 config file (based on\r
+/etc/i3/config.keycodes) in </sub>/.i3/config.</p></div>\r
+<div class="paragraph"><p>The advantage of using keysyms is that the config file is easy to read,\r
+understand and modify. However, if we shipped with a keysym based default\r
+config file, the key positions would not be consistent across different\r
+keyboard layouts (take for example the homerow for movement). Therefore, we\r
+ship with a keycode based default config and let the wizard transform it\r
+according to your current keyboard layout.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_see_also">5. SEE ALSO</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3(1)</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_author">6. AUTHOR</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Michael Stapelberg and contributors</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer" lang="de">\r
+© 2009-2011 Michael Stapelberg, <a href="/impress.html">Impressum</a>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/docs/4.0/i3-migrate-config-to-v4.html b/docs/4.0/i3-migrate-config-to-v4.html
new file mode 100644 (file)
index 0000000..e2c31b2
--- /dev/null
@@ -0,0 +1,87 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<link rel="icon" type="image/png" href="/favicon.png">\r
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.4" />\r
+<title>i3: i3-migrate-config-to-v4(1)</title>\r
+<link rel="stylesheet" href="/css/style.css" type="text/css" />\r
+<link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+window.onload = function(){asciidoc.footnotes(); asciidoc.toc(2);}\r
+/*]]>*/\r
+</script>\r
+<script type="text/javascript" src="/js/asciidoc-xhtml11.js"></script>\r
+</head>\r
+<body class="article">\r
+\r
+        <div id="main">\r
+            <a href="/"><h1 id="title">i3 - improved tiling WM</h1></a>\r
+                        <ul id="nav">\r
+                                <li><a style="border-bottom: 2px solid #fff" href="/docs">Docs</a></li>\r
+                                <li><a href="/screenshots">Screens</a></li>\r
+                                <li><a href="/contact">Contact</a></li>\r
+                                <li><a href="http://bugs.i3wm.org/">Bugs</a></li>\r
+                        </ul>\r
+        <br style="clear: both">\r
+<div id="content">\r
+<div id="header">\r
+<h1>i3-migrate-config-to-v4(1)</h1>\r
+<span id="author">Michael Stapelberg</span><br />\r
+<span id="email"><tt>&lt;<a href="mailto:michael+i3@stapelberg.de">michael+i3@stapelberg.de</a>&gt;</tt></span><br />\r
+<span id="revnumber">version 4.0,</span>\r
+<span id="revdate">July 2011</span>\r
+<div id="toc">
+  <div id="toctitle">Table of Contents</div>
+  <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_name">1. NAME</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3-migrate-config-to-v4 - migrates your i3 config file</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_synopsis">2. SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>mv ~/.i3/config ~/.i3/old.config\r
+i3-migrate-config-to-v4 ~/.i3/old.config &gt; ~/.i3/config</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_description">3. DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3-migrate-config-to-v4 is a Perl script which migrates your old (&lt; version 4)\r
+configuration files to a version 4 config file. The most significant changes\r
+are the new commands (see the release notes).</p></div>\r
+<div class="paragraph"><p>This script will automatically be run by i3 when it detects an old config file.\r
+Please migrate your config file as soon as possible. We plan to include this\r
+script in all i3 release until 2012-08-01. Afterwards, old config files will no\r
+longer be supported.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_see_also">4. SEE ALSO</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3(1)</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_author">5. AUTHOR</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Michael Stapelberg and contributors</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer" lang="de">\r
+© 2009-2011 Michael Stapelberg, <a href="/impress.html">Impressum</a>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/docs/4.0/i3-msg.html b/docs/4.0/i3-msg.html
new file mode 100644 (file)
index 0000000..2324fab
--- /dev/null
@@ -0,0 +1,100 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<link rel="icon" type="image/png" href="/favicon.png">\r
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.4" />\r
+<title>i3: i3-msg(1)</title>\r
+<link rel="stylesheet" href="/css/style.css" type="text/css" />\r
+<link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+window.onload = function(){asciidoc.footnotes(); asciidoc.toc(2);}\r
+/*]]>*/\r
+</script>\r
+<script type="text/javascript" src="/js/asciidoc-xhtml11.js"></script>\r
+</head>\r
+<body class="article">\r
+\r
+        <div id="main">\r
+            <a href="/"><h1 id="title">i3 - improved tiling WM</h1></a>\r
+                        <ul id="nav">\r
+                                <li><a style="border-bottom: 2px solid #fff" href="/docs">Docs</a></li>\r
+                                <li><a href="/screenshots">Screens</a></li>\r
+                                <li><a href="/contact">Contact</a></li>\r
+                                <li><a href="http://bugs.i3wm.org/">Bugs</a></li>\r
+                        </ul>\r
+        <br style="clear: both">\r
+<div id="content">\r
+<div id="header">\r
+<h1>i3-msg(1)</h1>\r
+<span id="author">Michael Stapelberg</span><br />\r
+<span id="email"><tt>&lt;<a href="mailto:michael+i3@stapelberg.de">michael+i3@stapelberg.de</a>&gt;</tt></span><br />\r
+<span id="revnumber">version 3.delta,</span>\r
+<span id="revdate">November 2009</span>\r
+<div id="toc">
+  <div id="toctitle">Table of Contents</div>
+  <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_name">1. NAME</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3-msg - send messages to i3 window manager</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_synopsis">2. SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3-msg "message"</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_description">3. DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3-msg is a sample implementation for a client using the unix socket IPC\r
+interface to i3. At the moment, it can only be used for sending commands\r
+(like in configuration file for key bindings), but this may change in the\r
+future (staying backwards-compatible, of course).</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_example">4. EXAMPLE</h2>\r
+<div class="sectionbody">\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>i3-msg "bp" # Use 1-px border for current client</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_environment">5. ENVIRONMENT</h2>\r
+<div class="sectionbody">\r
+<div class="sect2">\r
+<h3 id="_i3sock">5.1. I3SOCK</h3>\r
+<div class="paragraph"><p>If no ipc-socket is specified on the commandline, this variable is used\r
+to determine the path, at wich the unix domain socket is expected, on which\r
+to connect to i3.</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_see_also">6. SEE ALSO</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3(1)</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_author">7. AUTHOR</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Michael Stapelberg and contributors</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer" lang="de">\r
+© 2009-2011 Michael Stapelberg, <a href="/impress.html">Impressum</a>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/docs/4.0/i3-nagbar.html b/docs/4.0/i3-nagbar.html
new file mode 100644 (file)
index 0000000..64ee27e
--- /dev/null
@@ -0,0 +1,90 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<link rel="icon" type="image/png" href="/favicon.png">\r
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.4" />\r
+<title>i3: i3-nagbar(1)</title>\r
+<link rel="stylesheet" href="/css/style.css" type="text/css" />\r
+<link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+window.onload = function(){asciidoc.footnotes(); asciidoc.toc(2);}\r
+/*]]>*/\r
+</script>\r
+<script type="text/javascript" src="/js/asciidoc-xhtml11.js"></script>\r
+</head>\r
+<body class="article">\r
+\r
+        <div id="main">\r
+            <a href="/"><h1 id="title">i3 - improved tiling WM</h1></a>\r
+                        <ul id="nav">\r
+                                <li><a style="border-bottom: 2px solid #fff" href="/docs">Docs</a></li>\r
+                                <li><a href="/screenshots">Screens</a></li>\r
+                                <li><a href="/contact">Contact</a></li>\r
+                                <li><a href="http://bugs.i3wm.org/">Bugs</a></li>\r
+                        </ul>\r
+        <br style="clear: both">\r
+<div id="content">\r
+<div id="header">\r
+<h1>i3-nagbar(1)</h1>\r
+<span id="author">Michael Stapelberg</span><br />\r
+<span id="email"><tt>&lt;<a href="mailto:michael+i3@stapelberg.de">michael+i3@stapelberg.de</a>&gt;</tt></span><br />\r
+<span id="revnumber">version 4.0,</span>\r
+<span id="revdate">July 2011</span>\r
+<div id="toc">
+  <div id="toctitle">Table of Contents</div>
+  <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_name">1. NAME</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3-nagbar - displays an error bar on top of your screen</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_synopsis">2. SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3-nagbar -m <em>message</em> -b <em>label</em> <em>action</em></p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_description">3. DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3-nagbar is used by i3 to tell you about errors in your configuration file\r
+(for example). While these errors are logged to the logfile (if any), the past\r
+has proven that users are either not aware of their logfile or do not check it\r
+after modifying the configuration file.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_example">4. EXAMPLE</h2>\r
+<div class="sectionbody">\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>i3-nagbar -m 'You have an error in your i3 config file!' \\r
+-b 'edit config' 'xterm $EDITOR ~/.i3/config'</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_see_also">5. SEE ALSO</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3(1)</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_author">6. AUTHOR</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Michael Stapelberg and contributors</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer" lang="de">\r
+© 2009-2011 Michael Stapelberg, <a href="/impress.html">Impressum</a>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/docs/4.0/i3.html b/docs/4.0/i3.html
new file mode 100644 (file)
index 0000000..1edda79
--- /dev/null
@@ -0,0 +1,527 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<link rel="icon" type="image/png" href="/favicon.png">\r
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.4" />\r
+<title>i3: i3(1)</title>\r
+<link rel="stylesheet" href="/css/style.css" type="text/css" />\r
+<link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+window.onload = function(){asciidoc.footnotes(); asciidoc.toc(2);}\r
+/*]]>*/\r
+</script>\r
+<script type="text/javascript" src="/js/asciidoc-xhtml11.js"></script>\r
+</head>\r
+<body class="article">\r
+\r
+        <div id="main">\r
+            <a href="/"><h1 id="title">i3 - improved tiling WM</h1></a>\r
+                        <ul id="nav">\r
+                                <li><a style="border-bottom: 2px solid #fff" href="/docs">Docs</a></li>\r
+                                <li><a href="/screenshots">Screens</a></li>\r
+                                <li><a href="/contact">Contact</a></li>\r
+                                <li><a href="http://bugs.i3wm.org/">Bugs</a></li>\r
+                        </ul>\r
+        <br style="clear: both">\r
+<div id="content">\r
+<div id="header">\r
+<h1>i3(1)</h1>\r
+<span id="author">Michael Stapelberg</span><br />\r
+<span id="email"><tt>&lt;<a href="mailto:michael+i3@stapelberg.de">michael+i3@stapelberg.de</a>&gt;</tt></span><br />\r
+<span id="revnumber">version 4.0,</span>\r
+<span id="revdate">July 2011</span>\r
+<div id="toc">
+  <div id="toctitle">Table of Contents</div>
+  <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_name">1. NAME</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3 - an improved dynamic, tiling window manager</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_synopsis">2. SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3 [-a] [-c configfile] [-C] [-d &lt;loglevel&gt;] [-v] [-V]</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_options">3. OPTIONS</h2>\r
+<div class="sectionbody">\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+-a\r
+</dt>\r
+<dd>\r
+<p>\r
+Disables autostart.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+-c\r
+</dt>\r
+<dd>\r
+<p>\r
+Specifies an alternate configuration file path.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+-C\r
+</dt>\r
+<dd>\r
+<p>\r
+Check the configuration file for validity and exit.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+-d\r
+</dt>\r
+<dd>\r
+<p>\r
+Specifies the debug loglevel. To see the most output, use -d all.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+-v\r
+</dt>\r
+<dd>\r
+<p>\r
+Display version number (and date of the last commit).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+-V\r
+</dt>\r
+<dd>\r
+<p>\r
+Be verbose.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_description">4. DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<div class="sect2">\r
+<h3 id="_introduction">4.1. INTRODUCTION</h3>\r
+<div class="paragraph"><p>i3 was created because wmii, our favorite window manager at the time, didn’t\r
+provide some features we wanted (multi-monitor done right, for example), had\r
+some bugs, didn’t progress since quite some time and wasn’t easy to hack at all\r
+(source code comments/documentation completely lacking). Still, we think the\r
+wmii developers and contributors did a great job. Thank you for inspiring us to\r
+create i3.</p></div>\r
+<div class="paragraph"><p>Please be aware that i3 is primarily targeted at advanced users and developers.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_important_note_to_nvidia_binary_driver_users">4.2. IMPORTANT NOTE TO nVidia BINARY DRIVER USERS</h3>\r
+<div class="paragraph"><p>If you are using the nVidia binary graphics driver (also known as <em>blob</em>)\r
+you need to use the <tt>--force-xinerama</tt> flag (in your ~/.xsession) when starting\r
+i3, like so:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>exec i3 --force-xinerama -V &gt;&gt;~/.i3/i3log 2&gt;&amp;1</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>See also docs/multi-monitor for the full explanation.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_terminology">4.3. TERMINOLOGY</h3>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+Tree\r
+</dt>\r
+<dd>\r
+<p>\r
+i3 keeps your layout in a tree data structure.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Window\r
+</dt>\r
+<dd>\r
+<p>\r
+An X11 window, like the Firefox browser window or a terminal emulator.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Split container\r
+</dt>\r
+<dd>\r
+<p>\r
+A split container contains multiple other split containers or windows.\r
+</p>\r
+<div class="paragraph"><p>Containers can be used in various layouts. The default mode is called "default"\r
+and just resizes each client equally so that it fits.</p></div>\r
+</dd>\r
+<dt class="hdlist1">\r
+Workspace\r
+</dt>\r
+<dd>\r
+<p>\r
+A workspace is a set of containers. Other window managers call this "Virtual\r
+Desktops".\r
+</p>\r
+<div class="paragraph"><p>In i3, each workspace is assigned to a specific virtual screen. By default,\r
+screen 1 has workspace 1, screen 2 has workspace 2 and so on… However, when you\r
+create a new workspace (by simply switching to it), it’ll be assigned the\r
+screen you are currently on.</p></div>\r
+</dd>\r
+<dt class="hdlist1">\r
+Output\r
+</dt>\r
+<dd>\r
+<p>\r
+Using XRandR, you can have an X11 screen spanning multiple real monitors.\r
+Furthermore, you can set them up in cloning mode or with positions (monitor 1\r
+is left of monitor 2).\r
+</p>\r
+<div class="paragraph"><p>i3 uses the RandR API to query which outputs are available and which screens\r
+are connected to these outputs.</p></div>\r
+</dd>\r
+</dl></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_keybindings">5. KEYBINDINGS</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Here is a short overview of the default keybindings:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+j/k/l/;\r
+</dt>\r
+<dd>\r
+<p>\r
+Direction keys (left, down, up, right). They are on your homerow (see the mark\r
+on your "j" key). Alternatively, you can use the cursor keys.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+&lt;direction&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+Focus window in &lt;direction&gt;.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+Shift+&lt;direction&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+Move window to &lt;direction&gt;.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+&lt;number&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+Switch to workspace &lt;number&gt;.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+Shift+&lt;number&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+Move window to workspace &lt;number&gt;.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+f\r
+</dt>\r
+<dd>\r
+<p>\r
+Toggle fullscreen mode.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+s\r
+</dt>\r
+<dd>\r
+<p>\r
+Enable stacking layout for the current container.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+e\r
+</dt>\r
+<dd>\r
+<p>\r
+Enable default layout for the current container.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+w\r
+</dt>\r
+<dd>\r
+<p>\r
+Enable tabbed layout for the current container.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+Shift+Space\r
+</dt>\r
+<dd>\r
+<p>\r
+Toggle tiling/floating for the current container.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+Space\r
+</dt>\r
+<dd>\r
+<p>\r
+Select the first tiling container if the current container is floating and\r
+vice-versa.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+Shift+q\r
+</dt>\r
+<dd>\r
+<p>\r
+Kills the current window. This is equivalent to "clicking on the close button",\r
+meaning a polite request to the application to close this window. For example,\r
+Firefox will save its session upon such a request. If the application does not\r
+support that, the window will be killed and it depends on the application what\r
+happens.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+Shift+r\r
+</dt>\r
+<dd>\r
+<p>\r
+Restarts i3 in place. Your layout will be preserved.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mod1+Shift+e\r
+</dt>\r
+<dd>\r
+<p>\r
+Exits i3.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_files">6. FILES</h2>\r
+<div class="sectionbody">\r
+<div class="sect2">\r
+<h3 id="_i3_config_or_config_i3_config">6.1. ~/.i3/config (or ~/.config/i3/config)</h3>\r
+<div class="paragraph"><p>When starting, i3 looks for configuration files in the following order:</p></div>\r
+<div class="olist arabic"><ol class="arabic">\r
+<li>\r
+<p>\r
+~/.config/i3/config (or $XDG_CONFIG_HOME/i3/config if set)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+/etc/xdg/i3/config (or $XDG_CONFIG_DIRS/i3/config if set)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+~/.i3/config\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+/etc/i3/config\r
+</p>\r
+</li>\r
+</ol></div>\r
+<div class="paragraph"><p>You can specify a custom path using the -c option.</p></div>\r
+<div class="listingblock">\r
+<div class="title">Sample configuration</div>\r
+<div class="content">\r
+<pre><tt># i3 config file (v4)\r
+\r
+# font for window titles. ISO 10646 = Unicode\r
+font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1\r
+\r
+# use Mouse+Mod1 to drag floating windows to their wanted position\r
+floating_modifier Mod1\r
+\r
+# start a terminal\r
+bindsym Mod1+Return exec /usr/bin/urxvt\r
+\r
+# kill focused window\r
+bindsym Mod1+Shift+q kill\r
+\r
+# start dmenu (a program launcher)\r
+bindsym Mod1+d exec /usr/bin/dmenu_run\r
+\r
+# change focus\r
+bindsym Mod1+j focus left\r
+bindsym Mod1+k focus down\r
+bindsym Mod1+l focus up\r
+bindsym Mod1+semicolon focus right\r
+\r
+# alternatively, you can use the cursor keys:\r
+bindsym Mod1+Left focus left\r
+bindsym Mod1+Down focus down\r
+bindsym Mod1+Up focus up\r
+bindsym Mod1+Right focus right\r
+\r
+# move focused window\r
+bindsym Mod1+Shift+j move left\r
+bindsym Mod1+Shift+k move down\r
+bindsym Mod1+Shift+l move up\r
+bindsym Mod1+Shift+semicolon move right\r
+\r
+# alternatively, you can use the cursor keys:\r
+bindsym Mod1+Shift+Left move left\r
+bindsym Mod1+Shift+Down move down\r
+bindsym Mod1+Shift+Up move up\r
+bindsym Mod1+Shift+Right move right\r
+\r
+# split in horizontal orientation\r
+bindsym Mod1+h split h\r
+\r
+# split in vertical orientation\r
+bindsym Mod1+v split v\r
+\r
+# enter fullscreen mode for the focused container\r
+bindsym Mod1+f fullscreen\r
+\r
+# change container layout (stacked, tabbed, default)\r
+bindsym Mod1+s layout stacking\r
+bindsym Mod1+w layout tabbed\r
+bindsym Mod1+e layout default\r
+\r
+# toggle tiling / floating\r
+bindsym Mod1+Shift+space floating toggle\r
+\r
+# change focus between tiling / floating windows\r
+bindsym Mod1+space focus mode_toggle\r
+\r
+# focus the parent container\r
+bindsym Mod1+a focus parent\r
+\r
+# focus the child container\r
+#bindsym Mod1+d focus child\r
+\r
+# switch to workspace\r
+bindsym Mod1+1 workspace 1\r
+bindsym Mod1+2 workspace 2\r
+# ..\r
+\r
+# move focused container to workspace\r
+bindsym Mod1+Shift+1 move workspace 1\r
+bindsym Mod1+Shift+2 move workspace 2\r
+# ...\r
+\r
+# reload the configuration file\r
+bindsym Mod1+Shift+c reload\r
+# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)\r
+bindsym Mod1+Shift+r restart\r
+# exit i3 (logs you out of your X session)\r
+bindsym Mod1+Shift+e exit\r
+\r
+# Start i3bar to display a workspace bar (plus the system information i3status\r
+# finds out, if available)\r
+exec i3status | i3bar -d</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_xsession">6.2. ~/.xsession</h3>\r
+<div class="paragraph"><p>This file is where you should configure your locales and start i3. It is run by\r
+your login manager (xdm, slim, gdm, …) as soon as you login.</p></div>\r
+<div class="listingblock">\r
+<div class="title">Sample xsession</div>\r
+<div class="content">\r
+<pre><tt># Disable DPMS turning off the screen\r
+xset -dpms\r
+xset s off\r
+\r
+# Disable bell\r
+xset -b\r
+\r
+# Enable zapping (C-A-&lt;Bksp&gt; kills X)\r
+setxkbmap -option terminate:ctrl_alt_bksp\r
+\r
+# Enforce correct locales from the beginning\r
+unset LC_COLLATE\r
+export LC_CTYPE=de_DE.UTF-8\r
+export LC_TIME=de_DE.UTF-8\r
+export LC_NUMERIC=de_DE.UTF-8\r
+export LC_MONETARY=de_DE.UTF-8\r
+export LC_MESSAGES=C\r
+export LC_PAPER=de_DE.UTF-8\r
+export LC_NAME=de_DE.UTF-8\r
+export LC_ADDRESS=de_DE.UTF-8\r
+export LC_TELEPHONE=de_DE.UTF-8\r
+export LC_MEASUREMENT=de_DE.UTF-8\r
+export LC_IDENTIFICATION=de_DE.UTF-8\r
+\r
+# Use XToolkit in java applications\r
+export AWT_TOOLKIT=XToolkit\r
+\r
+# Set background color\r
+xsetroot -solid "#333333"\r
+\r
+# Enable core dumps in case something goes wrong\r
+ulimit -c unlimited\r
+\r
+# Start i3 and log to ~/.i3/logfile\r
+echo "Starting at $(date)" &gt;&gt; ~/.i3/logfile\r
+exec /usr/bin/i3 -V -d all &gt;&gt; ~/.i3/logfile</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_environment">7. ENVIRONMENT</h2>\r
+<div class="sectionbody">\r
+<div class="sect2">\r
+<h3 id="_i3sock">7.1. I3SOCK</h3>\r
+<div class="paragraph"><p>This variable overwrites the IPC socket path (placed in\r
+/tmp/i3-%u/ipc-socket.%p by default, where %u is replaced with your UNIX\r
+username and %p is replaced with i3’s PID). The IPC socket is used by external\r
+programs like i3-msg(1) or i3bar(1).</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_todo">8. TODO</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>There is still lot of work to do. Please check our bugtracker for up-to-date\r
+information about tasks which are still not finished.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_see_also">9. SEE ALSO</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>You should have a copy of the userguide (featuring nice screenshots/graphics\r
+which is why this is not integrated into this manpage), the debugging guide,\r
+and the "how to hack" guide. If you are building from source, run:\r
+ <tt>make -C docs</tt></p></div>\r
+<div class="paragraph"><p>You can also access these documents online at <a href="http://i3.zekjur.net/">http://i3.zekjur.net/</a></p></div>\r
+<div class="paragraph"><p>i3-input(1), i3-msg(1), i3-wsbar(1), i3-nagbar(1), i3-config-wizard(1),\r
+i3-migrate-config-to-v4(1)</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_author">10. AUTHOR</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Michael Stapelberg and contributors</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer" lang="de">\r
+© 2009-2011 Michael Stapelberg, <a href="/impress.html">Impressum</a>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/docs/4.0/i3status.html b/docs/4.0/i3status.html
new file mode 100644 (file)
index 0000000..0860168
--- /dev/null
@@ -0,0 +1,372 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<link rel="icon" type="image/png" href="/favicon.png">\r
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.4" />\r
+<title>i3: i3status(1)</title>\r
+<link rel="stylesheet" href="/css/style.css" type="text/css" />\r
+<link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+window.onload = function(){asciidoc.footnotes(); asciidoc.toc(2);}\r
+/*]]>*/\r
+</script>\r
+<script type="text/javascript" src="/js/asciidoc-xhtml11.js"></script>\r
+</head>\r
+<body class="article">\r
+\r
+        <div id="main">\r
+            <a href="/"><h1 id="title">i3 - improved tiling WM</h1></a>\r
+                        <ul id="nav">\r
+                                <li><a style="border-bottom: 2px solid #fff" href="/docs">Docs</a></li>\r
+                                <li><a href="/screenshots">Screens</a></li>\r
+                                <li><a href="/contact">Contact</a></li>\r
+                                <li><a href="http://bugs.i3wm.org/">Bugs</a></li>\r
+                        </ul>\r
+        <br style="clear: both">\r
+<div id="content">\r
+<div id="header">\r
+<h1>i3status(1)</h1>\r
+<span id="author">Michael Stapelberg</span><br />\r
+<span id="email"><tt>&lt;<a href="mailto:michael+i3@stapelberg.de">michael+i3@stapelberg.de</a>&gt;</tt></span><br />\r
+<span id="revnumber">version 2.3,</span>\r
+<span id="revdate">July 2011</span>\r
+<div id="toc">
+  <div id="toctitle">Table of Contents</div>
+  <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_name">1. NAME</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3status - Generates a status line for dzen2 or xmobar</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_synopsis">2. SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3status [-c configfile] [-h] [-v]</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_options">3. OPTIONS</h2>\r
+<div class="sectionbody">\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+-c\r
+</dt>\r
+<dd>\r
+<p>\r
+Specifies an alternate configuration file path. By default, i3status looks for\r
+configuration files in the following order:\r
+</p>\r
+<div class="olist arabic"><ol class="arabic">\r
+<li>\r
+<p>\r
+~/.i3status.conf\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+~/.config/i3status/config (or $XDG_CONFIG_HOME/i3status/config if set)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+/etc/i3status.conf\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+/etc/xdg/i3status/config (or $XDG_CONFIG_DIRS/i3status/config if set)\r
+</p>\r
+</li>\r
+</ol></div>\r
+</dd>\r
+</dl></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_description">4. DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3status is a small program (about 1500 SLOC) for generating a status bar for\r
+i3bar, dzen2, xmobar or similar programs. It is designed to be very\r
+efficient by issuing a very small number of system calls, as one generally\r
+wants to update such a status line every second. This ensures that even under\r
+high load, your status bar is updated correctly. Also, it saves a bit of energy\r
+by not hogging your CPU as much as spawning the corresponding amount of shell\r
+commands would.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_configuration">5. CONFIGURATION</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Since version 2, the configuration file for i3status will be parsed using\r
+libconfuse. This makes configuration easier in the programmer’s point of\r
+view and more flexible for the user at the same time.</p></div>\r
+<div class="paragraph"><p>The basic idea of i3status is that you can specify which "modules" should\r
+be used (the order directive). You can then configure each module with its\r
+own section. For every module, you can specify the output format. See below\r
+for a complete reference.</p></div>\r
+<div class="listingblock">\r
+<div class="title">Sample configuration</div>\r
+<div class="content">\r
+<pre><tt>general {\r
+        output_format = "dzen2"\r
+        colors = true\r
+        interval = 5\r
+}\r
+\r
+order  = "ipv6"\r
+order += "disk /"\r
+order += "run_watch DHCP"\r
+order += "run_watch VPN"\r
+order += "wireless wlan0"\r
+order += "ethernet eth0"\r
+order += "battery 0"\r
+order += "cpu_temperature 0"\r
+order += "load"\r
+order += "time"\r
+\r
+wireless wlan0 {\r
+        format_up = "W: (%quality at %essid, %bitrate) %ip"\r
+        format_down = "W: down"\r
+}\r
+\r
+ethernet eth0 {\r
+        # if you use %speed, i3status requires the cap_net_admin capability\r
+        format_up = "E: %ip (%speed)"\r
+        format_down = "E: down"\r
+}\r
+\r
+battery 0 {\r
+        format = "%status %percentage %remaining"\r
+}\r
+\r
+run_watch DHCP {\r
+        pidfile = "/var/run/dhclient*.pid"\r
+}\r
+\r
+run_watch VPN {\r
+        pidfile = "/var/run/vpnc/pid"\r
+}\r
+\r
+time {\r
+        format = "%Y-%m-%d %H:%M:%S"\r
+}\r
+\r
+load {\r
+        format = "%5min"\r
+}\r
+\r
+cpu_temperature 0 {\r
+        format = "T: %degrees °C"\r
+        path = "/sys/devices/platform/coretemp.0/temp1_input"\r
+}\r
+\r
+disk "/" {\r
+        format = "%free"\r
+}</tt></pre>\r
+</div></div>\r
+<div class="sect2">\r
+<h3 id="_general">5.1. General</h3>\r
+<div class="paragraph"><p>The <tt>colors</tt> directive will disable all colors if you set it to <tt>false</tt>. You can\r
+also specify the colors that will be used to display "good", "degraded" or "bad"\r
+values using the <tt>color_good</tt>, <tt>color_degraded</tt> or <tt>color_bad</tt> directives,\r
+respectively. Those directives are only used if color support is not disabled by\r
+the <tt>colors</tt> directive. The input format for color values is the canonical RGB\r
+hexadecimal triplet (with no separators between the colors), prefixed by a hash\r
+character ("#").</p></div>\r
+<div class="paragraph"><p><strong>Example configuration</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>color_good = "#00FF00"</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Likewise, you can use the <tt>color_separator</tt> directive to specify the color that\r
+will be used to paint the separator bar. The separator is always output in\r
+color, even when colors are disabled by the <tt>colors</tt> directive.</p></div>\r
+<div class="paragraph"><p>The <tt>interval</tt> directive specifies the time in seconds for which i3status will\r
+sleep before printing the next status line.</p></div>\r
+<div class="paragraph"><p>Using <tt>output_format</tt> you can chose which format strings i3status should\r
+use in its output. Currently available are:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+dzen2\r
+</dt>\r
+<dd>\r
+<p>\r
+Dzen is a general purpose messaging, notification and menuing program for X11.\r
+It was designed to be scriptable in any language and integrate well with window\r
+managers like dwm, wmii and xmonad though it will work with any windowmanger\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+xmobar\r
+</dt>\r
+<dd>\r
+<p>\r
+xmobar is a minimalistic, text based, status bar. It was designed to work\r
+with the xmonad Window Manager.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+none\r
+</dt>\r
+<dd>\r
+<p>\r
+Does not use any color codes. Separates values by the pipe symbol. This should\r
+be used with i3bar and can be used for custom scripts.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_ipv6">5.2. IPv6</h3>\r
+<div class="paragraph"><p>This module gets the IPv6 address used for outgoing connections (that is, the\r
+best available public IPv6 address on your computer).</p></div>\r
+<div class="paragraph"><p><strong>Example format_up</strong>: <tt>%ip</tt></p></div>\r
+<div class="paragraph"><p><strong>Example format_down</strong> <tt>no IPv6</tt></p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_disk">5.3. Disk</h3>\r
+<div class="paragraph"><p>Gets used, free, available and total amount of bytes on the given mounted filesystem.</p></div>\r
+<div class="paragraph"><p><strong>Example order</strong>: <tt>disk /mnt/usbstick</tt></p></div>\r
+<div class="paragraph"><p><strong>Example format</strong>: <tt>%free (%avail)/ %total</tt></p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_run_watch">5.4. Run-watch</h3>\r
+<div class="paragraph"><p>Expands the given path to a pidfile and checks if the process ID found inside\r
+is valid (that is, if the process is running). You can use this to check if\r
+a specific application, such as a VPN client or your DHCP client is running.</p></div>\r
+<div class="paragraph"><p><strong>Example order</strong>: <tt>run_watch DHCP</tt></p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_wireless">5.5. Wireless</h3>\r
+<div class="paragraph"><p>Gets the link quality and ESSID of the given wireless network interface. You\r
+can specify different format strings for the network being connected or not\r
+connected.</p></div>\r
+<div class="paragraph"><p><strong>Example order</strong>: <tt>wireless wlan0</tt></p></div>\r
+<div class="paragraph"><p><strong>Example format</strong>: <tt>W: (%quality at %essid, %bitrate) %ip</tt></p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_ethernet">5.6. Ethernet</h3>\r
+<div class="paragraph"><p>Gets the IP address and (if possible) the link speed of the given ethernet\r
+interface. Getting the link speed requires the cap_net_admin capability. Set\r
+it using <tt>setcap cap_net_admin=ep $(which i3status)</tt>.</p></div>\r
+<div class="paragraph"><p><strong>Example order</strong>: <tt>ethernet eth0</tt></p></div>\r
+<div class="paragraph"><p><strong>Example format</strong>: <tt>E: %ip (%speed)</tt></p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_battery">5.7. Battery</h3>\r
+<div class="paragraph"><p>Gets the status (charging, discharging, running), percentage and remaining\r
+time of the given battery. If you want to use the last full capacity instead\r
+of the design capacity (when using the design capacity, it may happen that\r
+your battery is at 23% when fully charged because it’s old. In general, I\r
+want to see it this way, because it tells me how worn off my battery is.),\r
+just specify <tt>last_full_capacity = true</tt>.</p></div>\r
+<div class="paragraph"><p><strong>Example order</strong>: <tt>battery 0</tt></p></div>\r
+<div class="paragraph"><p><strong>Example format</strong>: <tt>%status %remaining</tt></p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_cpu_temperature">5.8. CPU-Temperature</h3>\r
+<div class="paragraph"><p>Gets the temperature of the given thermal zone.</p></div>\r
+<div class="paragraph"><p><strong>Example order</strong>: <tt>cpu_temperature 0</tt></p></div>\r
+<div class="paragraph"><p><strong>Example format</strong>: <tt>T: %degrees °C</tt></p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_cpu_usage">5.9. CPU Usage</h3>\r
+<div class="paragraph"><p>Gets the percentual CPU usage from <tt>/proc/stat</tt>.</p></div>\r
+<div class="paragraph"><p><strong>Example order</strong>: <tt>cpu_usage</tt></p></div>\r
+<div class="paragraph"><p><strong>Example format</strong>: <tt>%usage</tt></p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_load">5.10. Load</h3>\r
+<div class="paragraph"><p>Gets the system load (number of processes waiting for CPU time in the last\r
+5, 10 and 15 minutes).</p></div>\r
+<div class="paragraph"><p><strong>Example order</strong>: <tt>load</tt></p></div>\r
+<div class="paragraph"><p><strong>Example format</strong>: <tt>%5min %10min %15min</tt></p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_time">5.11. Time</h3>\r
+<div class="paragraph"><p>Formats the current system time. See <tt>strftime(3)</tt> for the format.</p></div>\r
+<div class="paragraph"><p><strong>Example order</strong>: <tt>time</tt></p></div>\r
+<div class="paragraph"><p><strong>Example format</strong>: <tt>%Y-%m-%d %H:%M:%S</tt></p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_ddate">5.12. DDate</h3>\r
+<div class="paragraph"><p>Outputs the current discordian date in user-specified format. See <tt>ddate(1)</tt> for\r
+details on the format string.\r
+<strong>Note</strong>: Neither <strong>%.</strong> nor <strong>%X</strong> are implemented yet.</p></div>\r
+<div class="paragraph"><p><strong>Example order</strong>: <tt>ddate</tt></p></div>\r
+<div class="paragraph"><p><strong>Example format</strong>: <tt>%{%a, %b %d%}, %Y%N - %H</tt></p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_volume">5.13. Volume</h3>\r
+<div class="paragraph"><p>Outputs the volume of the specified mixer on the specified device. Works only\r
+on Linux because it uses ALSA.</p></div>\r
+<div class="paragraph"><p><strong>Example order</strong>: <tt>volume master</tt></p></div>\r
+<div class="paragraph"><p><strong>Example format</strong>: <tt>♪: %volume</tt></p></div>\r
+<div class="paragraph"><p><strong>Example configuration</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>volume master {\r
+        format = "♪: %volume"\r
+        device = "default"\r
+        mixer = "Master"\r
+        mixer_idx = 0\r
+}</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_using_i3status_with_dzen2">6. Using i3status with dzen2</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>After installing dzen2, you can directly use it with i3status. Just ensure that\r
+<tt>output_format</tt> is set to <tt>dzen2</tt>.</p></div>\r
+<div class="paragraph"><p><strong>Example for usage of i3status with dzen2</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>i3status | dzen2 -fg white -ta r -w 1280 \\r
+-fn "-misc-fixed-medium-r-normal--13-120-75-75-C-70-iso8859-1"</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_using_i3status_with_xmobar">7. Using i3status with xmobar</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>To get xmobar to start, you might need to copy the default configuration\r
+file to <tt>~/.xmobarrc</tt>. Also, ensure that the <tt>output_format</tt> option for i3status\r
+is set to <tt>xmobar</tt>.</p></div>\r
+<div class="paragraph"><p><strong>Example for usage of i3status with xmobar</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>i3status | xmobar -o -t "%StdinReader%" -c "[Run StdinReader]"</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_see_also">8. SEE ALSO</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p><tt>strftime(3)</tt>, <tt>date(1)</tt>, <tt>glob(3)</tt>, <tt>dzen2(1)</tt>, <tt>xmobar(1)</tt></p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_authors">9. AUTHORS</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Michael Stapelberg and contributors</p></div>\r
+<div class="paragraph"><p>Thorsten Toepper</p></div>\r
+<div class="paragraph"><p>Baptiste Daroussin</p></div>\r
+<div class="paragraph"><p>Axel Wagner</p></div>\r
+<div class="paragraph"><p>Fernando Tarlá Cardoso Lemos</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer" lang="de">\r
+© 2009-2011 Michael Stapelberg, <a href="/impress.html">Impressum</a>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/docs/4.0/ipc.html b/docs/4.0/ipc.html
new file mode 100644 (file)
index 0000000..3a3cb87
--- /dev/null
@@ -0,0 +1,844 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<link rel="icon" type="image/png" href="/favicon.png">\r
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.4" />\r
+<title>i3: IPC interface (interprocess communication)</title>\r
+<link rel="stylesheet" href="/css/style.css" type="text/css" />\r
+<link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+window.onload = function(){asciidoc.footnotes(); asciidoc.toc(2);}\r
+/*]]>*/\r
+</script>\r
+<script type="text/javascript" src="/js/asciidoc-xhtml11.js"></script>\r
+</head>\r
+<body class="article">\r
+\r
+        <div id="main">\r
+            <a href="/"><h1 id="title">i3 - improved tiling WM</h1></a>\r
+                        <ul id="nav">\r
+                                <li><a style="border-bottom: 2px solid #fff" href="/docs">Docs</a></li>\r
+                                <li><a href="/screenshots">Screens</a></li>\r
+                                <li><a href="/contact">Contact</a></li>\r
+                                <li><a href="http://bugs.i3wm.org/">Bugs</a></li>\r
+                        </ul>\r
+        <br style="clear: both">\r
+<div id="content">\r
+<div id="header">\r
+<h1>IPC interface (interprocess communication)</h1>\r
+<span id="author">Michael Stapelberg</span><br />\r
+<span id="email"><tt>&lt;<a href="mailto:michael+i3@stapelberg.de">michael+i3@stapelberg.de</a>&gt;</tt></span><br />\r
+<span id="revdate">March 2010</span>\r
+<div id="toc">
+  <div id="toctitle">Table of Contents</div>
+  <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
+</div>\r
+</div>\r
+<div id="preamble">\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>This document describes how to interface with i3 from a separate process. This\r
+is useful for example to remote-control i3 (to write test cases for example) or\r
+to get various information like the current workspaces to implement an external\r
+workspace bar.</p></div>\r
+<div class="paragraph"><p>The method of choice for IPC in our case is a unix socket because it has very\r
+little overhead on both sides and is usually available without headaches in\r
+most languages. In the default configuration file, the ipc-socket gets created\r
+in <tt>/tmp/i3-%u/ipc-socket.%p</tt> where <tt>%u</tt> is your UNIX username and <tt>%p</tt> is the\r
+PID of i3.</p></div>\r
+<div class="paragraph"><p>All i3 utilities, like <tt>i3-msg</tt> and <tt>i3-input</tt> will read the <tt>I3_SOCKET_PATH</tt>\r
+X11 property, stored on the X11 root window.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_establishing_a_connection">1. Establishing a connection</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>To establish a connection, simply open the IPC socket. The following code\r
+snippet illustrates this in Perl:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>use IO::Socket::UNIX;\r
+my $sock = IO::Socket::UNIX-&gt;new(Peer =&gt; '/tmp/i3-ipc.sock');</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_sending_messages_to_i3">2. Sending messages to i3</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>To send a message to i3, you have to format in the binary message format which\r
+i3 expects. This format specifies a magic string in the beginning to ensure\r
+the integrity of messages (to prevent follow-up errors). Following the magic\r
+string comes the length of the payload of the message as 32-bit integer, and\r
+the type of the message as 32-bit integer (the integers are not converted, so\r
+they are in native byte order).</p></div>\r
+<div class="paragraph"><p>The magic string currently is "i3-ipc" and will only be changed when a change\r
+in the IPC API is done which breaks compatibility (we hope that we don’t need\r
+to do that).</p></div>\r
+<div class="paragraph"><p>Currently implemented message types are the following:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+COMMAND (0)\r
+</dt>\r
+<dd>\r
+<p>\r
+        The payload of the message is a command for i3 (like the commands you\r
+        can bind to keys in the configuration file) and will be executed\r
+        directly after receiving it. There is no reply to this message.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+GET_WORKSPACES (1)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Gets the current workspaces. The reply will be a JSON-encoded list of\r
+        workspaces (see the reply section).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+SUBSCRIBE (2)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Subscribes your connection to certain events. See <a href="#events">[events]</a> for a\r
+        description of this message and the concept of events.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+GET_OUTPUTS (3)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Gets the current outputs. The reply will be a JSON-encoded list of outputs\r
+        (see the reply section).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+GET_TREE (4)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Gets the layout tree. i3 uses a tree as data structure which includes\r
+        every container. The reply will be the JSON-encoded tree (see the reply\r
+        section).\r
+</p>\r
+</dd>\r
+</dl></div>\r
+<div class="paragraph"><p>So, a typical message could look like this:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>"i3-ipc" &lt;message length&gt; &lt;message type&gt; &lt;payload&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Or, as a hexdump:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>00000000  69 33 2d 69 70 63 04 00  00 00 00 00 00 00 65 78  |i3-ipc........ex|\r
+00000010  69 74 0a                                          |it.|</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>To generate and send such a message, you could use the following code in Perl:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>sub format_ipc_command {\r
+    my ($msg) = @_;\r
+    my $len;\r
+    # Get the real byte count (vs. amount of characters)\r
+    { use bytes; $len = length($msg); }\r
+    return "i3-ipc" . pack("LL", $len, 0) . $msg;\r
+}\r
+\r
+$sock-&gt;write(format_ipc_command("exit"));</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_receiving_replies_from_i3">3. Receiving replies from i3</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Replies from i3 usually consist of a simple string (the length of the string\r
+is the message_length, so you can consider them length-prefixed) which in turn\r
+contain the JSON serialization of a data structure. For example, the\r
+GET_WORKSPACES message returns an array of workspaces (each workspace is a map\r
+with certain attributes).</p></div>\r
+<div class="sect2">\r
+<h3 id="_reply_format">3.1. Reply format</h3>\r
+<div class="paragraph"><p>The reply format is identical to the normal message format. There also is\r
+the magic string, then the message length, then the message type and the\r
+payload.</p></div>\r
+<div class="paragraph"><p>The following reply types are implemented:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+COMMAND (0)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Confirmation/Error code for the COMMAND message.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+GET_WORKSPACES (1)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Reply to the GET_WORKSPACES message.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+SUBSCRIBE (2)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Confirmation/Error code for the SUBSCRIBE message.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+GET_OUTPUTS (3)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Reply to the GET_OUTPUTS message.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+GET_TREE (4)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Reply to the GET_TREE message.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_command_reply">3.2. COMMAND reply</h3>\r
+<div class="paragraph"><p>The reply consists of a single serialized map. At the moment, the only\r
+property is <tt>success (bool)</tt>, but this will be expanded in future versions.</p></div>\r
+<div class="paragraph"><p><strong>Example:</strong></p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>{ "success": true }</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_get_workspaces_reply">3.3. GET_WORKSPACES reply</h3>\r
+<div class="paragraph"><p>The reply consists of a serialized list of workspaces. Each workspace has the\r
+following properties:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+num (integer)\r
+</dt>\r
+<dd>\r
+<p>\r
+        The logical number of the workspace. Corresponds to the command\r
+        to switch to this workspace.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+name (string)\r
+</dt>\r
+<dd>\r
+<p>\r
+        The name of this workspace (by default num+1), as changed by the\r
+        user. Encoded in UTF-8.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+visible (boolean)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Whether this workspace is currently visible on an output (multiple\r
+        workspaces can be visible at the same time).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+focused (boolean)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Whether this workspace currently has the focus (only one workspace\r
+        can have the focus at the same time).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+urgent (boolean)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Whether a window on this workspace has the "urgent" flag set.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+rect (map)\r
+</dt>\r
+<dd>\r
+<p>\r
+        The rectangle of this workspace (equals the rect of the output it\r
+        is on), consists of x, y, width, height.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+output (string)\r
+</dt>\r
+<dd>\r
+<p>\r
+        The video output this workspace is on (LVDS1, VGA1, …).\r
+</p>\r
+</dd>\r
+</dl></div>\r
+<div class="paragraph"><p><strong>Example:</strong></p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>[\r
+ {\r
+  "num": 0,\r
+  "name": "1",\r
+  "visible": true,\r
+  "focused": true,\r
+  "urgent": false,\r
+  "rect": {\r
+   "x": 0,\r
+   "y": 0,\r
+   "width": 1280,\r
+   "height": 800\r
+  },\r
+  "output": "LVDS1"\r
+ },\r
+ {\r
+  "num": 1,\r
+  "name": "2",\r
+  "visible": false,\r
+  "focused": false,\r
+  "urgent": false,\r
+  "rect": {\r
+   "x": 0,\r
+   "y": 0,\r
+   "width": 1280,\r
+   "height": 800\r
+  },\r
+  "output": "LVDS1"\r
+ }\r
+]</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_subscribe_reply">3.4. SUBSCRIBE reply</h3>\r
+<div class="paragraph"><p>The reply consists of a single serialized map. The only property is\r
+<tt>success (bool)</tt>, indicating whether the subscription was successful (the\r
+default) or whether a JSON parse error occurred.</p></div>\r
+<div class="paragraph"><p><strong>Example:</strong></p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>{ "success": true }</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_get_outputs_reply">3.5. GET_OUTPUTS reply</h3>\r
+<div class="paragraph"><p>The reply consists of a serialized list of outputs. Each output has the\r
+following properties:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+name (string)\r
+</dt>\r
+<dd>\r
+<p>\r
+        The name of this output (as seen in <tt>xrandr(1)</tt>). Encoded in UTF-8.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+active (boolean)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Whether this output is currently active (has a valid mode).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+current_workspace (integer)\r
+</dt>\r
+<dd>\r
+<p>\r
+        The current workspace which is visible on this output. <tt>null</tt> if the\r
+        output is not active.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+rect (map)\r
+</dt>\r
+<dd>\r
+<p>\r
+        The rectangle of this output (equals the rect of the output it\r
+        is on), consists of x, y, width, height.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+<div class="paragraph"><p><strong>Example:</strong></p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>[\r
+ {\r
+  "name": "LVDS1",\r
+  "active": true,\r
+  "current_workspace": 4,\r
+  "rect": {\r
+   "x": 0,\r
+   "y": 0,\r
+   "width": 1280,\r
+   "height": 800\r
+  }\r
+ },\r
+ {\r
+  "name": "VGA1",\r
+  "active": true,\r
+  "current_workspace": 1,\r
+  "rect": {\r
+   "x": 1280,\r
+   "y": 0,\r
+   "width": 1280,\r
+   "height": 1024\r
+  },\r
+ }\r
+]</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_get_tree_reply">3.6. GET_TREE reply</h3>\r
+<div class="paragraph"><p>The reply consists of a serialized tree. Each node in the tree (representing\r
+one container) has at least the properties listed below. While the nodes might\r
+have more properties, please do not use any properties which are not documented\r
+here. They are not yet finalized and will probably change!</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+id (integer)\r
+</dt>\r
+<dd>\r
+<p>\r
+        The internal ID (actually a C pointer value) of this container. Do not\r
+        make any assumptions about it. You can use it to (re-)identify and\r
+        address containers when talking to i3.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+name (string)\r
+</dt>\r
+<dd>\r
+<p>\r
+        The internal name of this container. For all containers which are part\r
+        of the tree structure down to the workspace contents, this is set to a\r
+        nice human-readable name of the container.\r
+        For all other containers, the content is not defined (yet).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+border (string)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Can be either "normal", "none" or "1pixel", dependending on the\r
+        container’s border style.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+layout (string)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Can be either "default", "stacked", "tabbed", "dockarea" or "output".\r
+        Other values might be possible in the future, should we add new\r
+        layouts.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+orientation (string)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Can be either "none" (for non-split containers), "horizontal" or\r
+        "vertical".\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+percent (float)\r
+</dt>\r
+<dd>\r
+<p>\r
+        The percentage which this container takes in its parent. A value of\r
+        <tt>null</tt> means that the percent property does not make sense for this\r
+        container, for example for the root container.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+rect (map)\r
+</dt>\r
+<dd>\r
+<p>\r
+        The absolute display coordinates for this container. Display\r
+        coordinates means that when you have two 1600x1200 monitors on a single\r
+        X11 Display (the standard way), the coordinates of the first window on\r
+        the second monitor are <tt>{ "x": 1600, "y": 0, "width": 1600, "height":\r
+        1200 }</tt>.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+window_rect (map)\r
+</dt>\r
+<dd>\r
+<p>\r
+        The coordinates of the <strong>actual client window</strong> inside its container.\r
+        These coordinates are relative to the container and do not include the\r
+        window decoration (which is actually rendered on the parent container).\r
+        So, when using the <tt>default</tt> layout, you will have a 2 pixel border on\r
+        each side, making the window_rect <tt>{ "x": 2, "y": 0, "width": 632,\r
+        "height": 366 }</tt> (for example).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+geometry (map)\r
+</dt>\r
+<dd>\r
+<p>\r
+        The original geometry the window specified when i3 mapped it. Used when\r
+        switching a window to floating mode, for example.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+urgent (bool)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Whether this container (window or workspace) has the urgency hint set.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+focused (bool)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Whether this container is currently focused.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+<div class="paragraph"><p>Please note that in the following example, I have left out some keys/values\r
+which are not relevant for the type of the node. Otherwise, the example would\r
+be by far too long (it already is quite long, despite showing only 1 window and\r
+one dock window).</p></div>\r
+<div class="paragraph"><p>It is useful to have an overview of the structure before taking a look at the\r
+JSON dump:</p></div>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+root\r
+</p>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+LVDS1\r
+</p>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+topdock\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+content\r
+</p>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+workspace 1\r
+</p>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+window 1\r
+</p>\r
+</li>\r
+</ul></div>\r
+</li>\r
+</ul></div>\r
+</li>\r
+<li>\r
+<p>\r
+bottomdock\r
+</p>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+dock window 1\r
+</p>\r
+</li>\r
+</ul></div>\r
+</li>\r
+</ul></div>\r
+</li>\r
+<li>\r
+<p>\r
+VGA1\r
+</p>\r
+</li>\r
+</ul></div>\r
+</li>\r
+</ul></div>\r
+<div class="paragraph"><p><strong>Example:</strong></p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>{\r
+ "id": 6875648,\r
+ "name": "root",\r
+ "rect": {\r
+   "x": 0,\r
+   "y": 0,\r
+   "width": 1280,\r
+   "height": 800\r
+ },\r
+ "nodes": [\r
+\r
+   {\r
+    "id": 6878320,\r
+    "name": "LVDS1",\r
+    "layout": "output",\r
+    "rect": {\r
+      "x": 0,\r
+      "y": 0,\r
+      "width": 1280,\r
+      "height": 800\r
+    },\r
+    "nodes": [\r
+\r
+      {\r
+       "id": 6878784,\r
+       "name": "topdock",\r
+       "layout": "dockarea",\r
+       "orientation": "vertical",\r
+       "rect": {\r
+         "x": 0,\r
+         "y": 0,\r
+         "width": 1280,\r
+         "height": 0\r
+       },\r
+      },\r
+\r
+      {\r
+       "id": 6879344,\r
+       "name": "content",\r
+       "rect": {\r
+         "x": 0,\r
+         "y": 0,\r
+         "width": 1280,\r
+         "height": 782\r
+       },\r
+       "nodes": [\r
+\r
+         {\r
+          "id": 6880464,\r
+          "name": "1",\r
+          "orientation": "horizontal",\r
+          "rect": {\r
+            "x": 0,\r
+            "y": 0,\r
+            "width": 1280,\r
+            "height": 782\r
+          },\r
+          "floating_nodes": [],\r
+          "nodes": [\r
+\r
+            {\r
+             "id": 6929968,\r
+             "name": "#aa0000",\r
+             "border": "normal",\r
+             "percent": 1,\r
+             "rect": {\r
+               "x": 0,\r
+               "y": 18,\r
+               "width": 1280,\r
+               "height": 782\r
+             }\r
+            }\r
+\r
+          ]\r
+         }\r
+\r
+       ]\r
+      },\r
+\r
+      {\r
+       "id": 6880208,\r
+       "name": "bottomdock",\r
+       "layout": "dockarea",\r
+       "orientation": "vertical",\r
+       "rect": {\r
+         "x": 0,\r
+         "y": 782,\r
+         "width": 1280,\r
+         "height": 18\r
+       },\r
+       "nodes": [\r
+\r
+         {\r
+          "id": 6931312,\r
+          "name": "#00aa00",\r
+          "percent": 1,\r
+          "rect": {\r
+            "x": 0,\r
+            "y": 782,\r
+            "width": 1280,\r
+            "height": 18\r
+          }\r
+         }\r
+\r
+       ]\r
+      }\r
+    ]\r
+   }\r
+ ]\r
+}</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_events">4. Events</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph" id="events"><p>To get informed when certain things happen in i3, clients can subscribe to\r
+events. Events consist of a name (like "workspace") and an event reply type\r
+(like I3_IPC_EVENT_WORKSPACE). The events sent by i3 are in the same format\r
+as replies to specific commands. However, the highest bit of the message type\r
+is set to 1 to indicate that this is an event reply instead of a normal reply.</p></div>\r
+<div class="paragraph"><p>Caveat: As soon as you subscribe to an event, it is not guaranteed any longer\r
+that the requests to i3 are processed in order. This means, the following\r
+situation can happen: You send a GET_WORKSPACES request but you receive a\r
+"workspace" event before receiving the reply to GET_WORKSPACES. If your\r
+program does not want to cope which such kinds of race conditions (an\r
+event based library may not have a problem here), I suggest you create a\r
+separate connection to receive events.</p></div>\r
+<div class="sect2">\r
+<h3 id="_subscribing_to_events">4.1. Subscribing to events</h3>\r
+<div class="paragraph"><p>By sending a message of type SUBSCRIBE with a JSON-encoded array as payload\r
+you can register to an event.</p></div>\r
+<div class="paragraph"><p><strong>Example:</strong></p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>type: SUBSCRIBE\r
+payload: [ "workspace", "focus" ]</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_available_events">4.2. Available events</h3>\r
+<div class="paragraph"><p>The numbers in parenthesis is the event type (keep in mind that you need to\r
+strip the highest bit first).</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+workspace (0)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Sent when the user switches to a different workspace, when a new\r
+        workspace is initialized or when a workspace is removed (because the\r
+        last client vanished).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+output (1)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Sent when RandR issues a change notification (of either screens,\r
+        outputs, CRTCs or output properties).\r
+</p>\r
+</dd>\r
+</dl></div>\r
+<div class="paragraph"><p><strong>Example:</strong></p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># the appropriate 4 bytes read from the socket are stored in $input\r
+\r
+# unpack a 32-bit unsigned integer\r
+my $message_type = unpack("L", $input);\r
+\r
+# check if the highest bit is 1\r
+my $is_event = (($message_type &gt;&gt; 31) == 1);\r
+\r
+# use the other bits\r
+my $event_type = ($message_type &amp; 0x7F);\r
+\r
+if ($is_event) {\r
+  say "Received event of type $event_type";\r
+}</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_workspace_event">4.3. workspace event</h3>\r
+<div class="paragraph"><p>This event consists of a single serialized map containing a property\r
+<tt>change (string)</tt> which indicates the type of the change ("focus", "init",\r
+"empty", "urgent").</p></div>\r
+<div class="paragraph"><p><strong>Example:</strong></p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>{ "change": "focus" }</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_output_event">4.4. output event</h3>\r
+<div class="paragraph"><p>This event consists of a single serialized map containing a property\r
+<tt>change (string)</tt> which indicates the type of the change (currently only\r
+"unspecified").</p></div>\r
+<div class="paragraph"><p><strong>Example:</strong></p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>{ "change": "unspecified" }</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_see_also">5. See also</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>For some languages, libraries are available (so you don’t have to implement\r
+all this on your own). This list names some (if you wrote one, please let me\r
+know):</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+C\r
+</dt>\r
+<dd>\r
+<p>\r
+        i3 includes a headerfile <tt>i3/ipc.h</tt> which provides you all constants.\r
+        However, there is no library yet.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Ruby\r
+</dt>\r
+<dd>\r
+<p>\r
+        <a href="http://github.com/badboy/i3-ipc">http://github.com/badboy/i3-ipc</a>\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Perl\r
+</dt>\r
+<dd>\r
+<p>\r
+        <a href="http://search.cpan.org/search?query=AnyEvent::I3">http://search.cpan.org/search?query=AnyEvent::I3</a>\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Python\r
+</dt>\r
+<dd>\r
+<p>\r
+        <a href="http://github.com/thepub/i3ipc">http://github.com/thepub/i3ipc</a>\r
+</p>\r
+</dd>\r
+</dl></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer" lang="de">\r
+© 2009-2011 Michael Stapelberg, <a href="/impress.html">Impressum</a>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/docs/4.0/keyboard-layer1.png b/docs/4.0/keyboard-layer1.png
new file mode 100644 (file)
index 0000000..52ffae0
Binary files /dev/null and b/docs/4.0/keyboard-layer1.png differ
diff --git a/docs/4.0/keyboard-layer1.svg b/docs/4.0/keyboard-layer1.svg
new file mode 100644 (file)
index 0000000..109c19a
--- /dev/null
@@ -0,0 +1,969 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="900"
+   height="300"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.48.1 r9760"
+   version="1.0"
+   sodipodi:docname="keyboard-layer1.svg"
+   inkscape:export-filename="/home/michael/i3/keyboard.png"
+   inkscape:export-xdpi="90"
+   inkscape:export-ydpi="90">
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 150 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="900 : 150 : 1"
+       inkscape:persp3d-origin="450 : 100 : 1"
+       id="perspective174" />
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;">
+      <path
+         id="path5387"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
+         transform="scale(0.8) rotate(180)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible">
+      <path
+         id="path5390"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
+         transform="scale(0.8)" />
+    </marker>
+    <marker
+       inkscape:stockid="Tail"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Tail"
+       style="overflow:visible">
+      <g
+         id="g5342"
+         transform="scale(-1.2)">
+        <path
+           id="path5344"
+           d="M -3.8048674,-3.9585227 L 0.54352094,-0.00068114835"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" />
+        <path
+           id="path5346"
+           d="M -1.2866832,-3.9585227 L 3.0617053,-0.00068114835"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" />
+        <path
+           id="path5348"
+           d="M 1.3053582,-3.9585227 L 5.6537466,-0.00068114835"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" />
+        <path
+           id="path5350"
+           d="M -3.8048674,4.1775838 L 0.54352094,0.21974226"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" />
+        <path
+           id="path5352"
+           d="M -1.2866832,4.1775838 L 3.0617053,0.21974226"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" />
+        <path
+           id="path5354"
+           d="M 1.3053582,4.1775838 L 5.6537466,0.21974226"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Mend"
+       style="overflow:visible;">
+      <path
+         id="path5363"
+         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(0.6) rotate(180) translate(-5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;">
+      <path
+         id="path5369"
+         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(-5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Send"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Send"
+       style="overflow:visible;">
+      <path
+         id="path5375"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
+         transform="scale(0.2) rotate(180)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Send"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Send"
+       style="overflow:visible;">
+      <path
+         id="path5357"
+         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(0.3) rotate(180) translate(-5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Mend"
+       style="overflow:visible;">
+      <path
+         id="path5381"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
+         transform="scale(0.4) rotate(180)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lstart"
+       style="overflow:visible">
+      <path
+         id="path5372"
+         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) translate(-5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.0437869"
+     inkscape:cx="366.05395"
+     inkscape:cy="149.64675"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:grid-points="true"
+     showgrid="true"
+     gridtolerance="15px"
+     showborder="false"
+     inkscape:window-width="956"
+     inkscape:window-height="1126"
+     inkscape:window-x="1600"
+     inkscape:window-y="54"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-to-guides="false"
+     inkscape:snap-grids="false"
+     inkscape:window-maximized="0">
+    <inkscape:grid
+       id="GridFromPre046Settings"
+       type="xygrid"
+       originx="0px"
+       originy="0px"
+       spacingx="7.5px"
+       spacingy="7.5px"
+       color="#0000ff"
+       empcolor="#0000ff"
+       opacity="0.12156863"
+       empopacity="0.25098039"
+       empspacing="4" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 0,0 L 60,0 L 60,60 L 0,60 L 0,0 z "
+       id="rect2186" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 60,0 L 120,0 L 120,60 L 60,60 L 60,0 z "
+       id="rect2218" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 120,0 L 180,0 L 180,60 L 120,60 L 120,0 z "
+       id="rect2222" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 180,0 L 240,0 L 240,60 L 180,60 L 180,0 z "
+       id="rect2228" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 240,0 L 300,0 L 300,60 L 240,60 L 240,0 z "
+       id="rect2230" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 300,0 L 360,0 L 360,60 L 300,60 L 300,0 z "
+       id="rect2232" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 360,0 L 420,0 L 420,60 L 360,60 L 360,0 z "
+       id="rect2234" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 420,0 L 480,0 L 480,60 L 420,60 L 420,0 z "
+       id="rect2236" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 480,0 L 540,0 L 540,60 L 480,60 L 480,0 z "
+       id="rect2238" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 540,0 L 600,0 L 600,60 L 540,60 L 540,0 z "
+       id="rect2240" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 600,0 L 660,0 L 660,60 L 600,60 L 600,0 z "
+       id="rect2242" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 660,0 L 720,0 L 720,60 L 660,60 L 660,0 z "
+       id="rect2244" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 720,0 L 780,0 L 780,60 L 720,60 L 720,0 z "
+       id="rect2246" />
+    <path
+       style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 780,0 L 900,0 L 900,60 L 780,60 L 780,0 z "
+       id="rect2248" />
+    <path
+       style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 0,60 L 90,60 L 90,120 L 0,120 L 0,60 z "
+       id="rect2250" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 90,60 L 150,60 L 150,120 L 90,120 L 90,60 z "
+       id="rect2252" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 150,60 L 210,60 L 210,120 L 150,120 L 150,60 z "
+       id="rect2254" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 210,60 L 270,60 L 270,120 L 210,120 L 210,60 z "
+       id="rect2256" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 270,60 L 330,60 L 330,120 L 270,120 L 270,60 z "
+       id="rect2258" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0"
+       d="m 330,60 60,0 0,60 -60,0 0,-60 z"
+       id="rect2262" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 390,60 L 450,60 L 450,120 L 390,120 L 390,60 z "
+       id="rect2264" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 450,60 L 510,60 L 510,120 L 450,120 L 450,60 z "
+       id="rect2266" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 510,60 L 570,60 L 570,120 L 510,120 L 510,60 z "
+       id="rect2270" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 570,60 L 630,60 L 630,120 L 570,120 L 570,60 z "
+       id="rect2272" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 630,60 L 690,60 L 690,120 L 630,120 L 630,60 z "
+       id="rect2274" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 690,60 L 750,60 L 750,120 L 690,120 L 690,60 z "
+       id="rect2278" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 750,60 L 810,60 L 810,120 L 750,120 L 750,60 z "
+       id="rect2280" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 810,60 L 900,60 L 900,120 L 810,120 L 810,60 z "
+       id="rect2284" />
+    <path
+       style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 0,120 L 105,120 L 105,180 L 0,180 L 0,120 z "
+       id="rect2286" />
+    <path
+       style="fill:#00adff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 105,120 L 165,120 L 165,180 L 105,180 L 105,120 z "
+       id="rect2292" />
+    <path
+       style="fill:#00adff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 165,120 L 225,120 L 225,180 L 165,180 L 165,120 z "
+       id="rect2296" />
+    <path
+       style="fill:#00adff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 225,120 L 285,120 L 285,180 L 225,180 L 225,120 z "
+       id="rect2298" />
+    <path
+       style="fill:#00adff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 285,120 L 345,120 L 345,180 L 285,180 L 285,120 z "
+       id="rect2300" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 345,120 L 405,120 L 405,180 L 345,180 L 345,120 z "
+       id="rect2302" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 405,120 L 465,120 L 465,180 L 405,180 L 405,120 z "
+       id="rect2306" />
+    <path
+       style="fill:#00adff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 465,120 L 525,120 L 525,180 L 465,180 L 465,120 z "
+       id="rect2308" />
+    <path
+       style="fill:#00adff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 525,120 L 585,120 L 585,180 L 525,180 L 525,120 z "
+       id="rect2312" />
+    <path
+       style="fill:#00adff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 585,120 L 645,120 L 645,180 L 585,180 L 585,120 z "
+       id="rect2314" />
+    <path
+       style="fill:#00adff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 645,120 L 705,120 L 705,180 L 645,180 L 645,120 z "
+       id="rect2316" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 705,120 L 765,120 L 765,180 L 705,180 L 705,120 z "
+       id="rect2318" />
+    <path
+       style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 765,120 L 900,120 L 900,180 L 765,180 L 765,120 z "
+       id="rect2320" />
+    <path
+       style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 0,180 L 135,180 L 135,240 L 0,240 L 0,180 z "
+       id="rect2322" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 135,180 L 195,180 L 195,240 L 135,240 L 135,180 z "
+       id="rect2324" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 195,180 L 255,180 L 255,240 L 195,240 L 195,180 z "
+       id="rect2326" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 255,180 L 315,180 L 315,240 L 255,240 L 255,180 z "
+       id="rect2330" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 315,180 L 375,180 L 375,240 L 315,240 L 315,180 z "
+       id="rect2334" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 375,180 L 435,180 L 435,240 L 375,240 L 375,180 z "
+       id="rect2336" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 435,180 L 495,180 L 495,240 L 435,240 L 435,180 z "
+       id="rect2338" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 495,180 L 555,180 L 555,240 L 495,240 L 495,180 z "
+       id="rect2340" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 555,180 L 615,180 L 615,240 L 555,240 L 555,180 z "
+       id="rect2342" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 615,180 L 675,180 L 675,240 L 615,240 L 615,180 z "
+       id="rect2344" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 675,180 L 735,180 L 735,240 L 675,240 L 675,180 z "
+       id="rect2346" />
+    <path
+       style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 735,180 L 900,180 L 900,240 L 735,240 L 735,180 z "
+       id="rect2348" />
+    <path
+       style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 0,240 L 90,240 L 90,300 L 0,300 L 0,240 z "
+       id="rect2350" />
+    <path
+       style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 810,240 L 900,240 L 900,300 L 810,300 L 810,240 z "
+       id="rect2352" />
+    <path
+       style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 150,240 L 240,240 L 240,300 L 150,300 L 150,240 z "
+       id="rect2354" />
+    <path
+       style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 600,240 L 690,240 L 690,300 L 600,300 L 600,240 z "
+       id="rect2360" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 240,240 L 600,240 L 600,300 L 240,300 L 240,240 z "
+       id="rect2362" />
+    <path
+       style="fill:#efefef;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 90,240 L 150,240 L 150,300 L 90,300 L 90,240 z "
+       id="rect2364" />
+    <path
+       style="fill:#efefef;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 690,240 L 750,240 L 750,300 L 690,300 L 690,240 z "
+       id="rect2366" />
+    <path
+       style="fill:#efefef;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 750,240 L 810,240 L 810,300 L 750,300 L 750,240 z "
+       id="rect2368" />
+    <path
+       style=""
+       d=""
+       id="flowRoot4146" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 75.351563,18.826172 L 74.4375,11.056641 L 74.4375,6.3691406 L 78.046875,6.3691406 L 78.046875,11.056641 L 77.132813,18.826172 L 75.351563,18.826172 M 74.484375,23.630859 L 74.484375,20.173828 L 77.964844,20.173828 L 77.964844,23.630859 L 74.484375,23.630859 M 75.351563,53.630859 L 75.351563,42.158203 L 71.34375,42.158203 L 71.34375,39.802734 L 71.601563,39.802734 C 73.062496,39.802748 74.124995,39.576186 74.789063,39.123047 C 75.460931,38.669937 75.855462,37.912125 75.972656,36.849609 L 78.65625,36.849609 L 78.65625,53.630859 L 75.351563,53.630859"
+       id="text5091" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 23.34375,14.220703 L 23.34375,16.810547 C 22.531233,17.365241 21.761702,17.775396 21.035156,18.041016 C 20.316391,18.298833 19.605455,18.42774 18.902344,18.427734 C 18.542956,18.42774 18.183581,18.39649 17.824219,18.333984 C 17.464832,18.27149 17.105457,18.181646 16.746094,18.064453 C 16.558583,18.001959 16.281239,17.904303 15.914063,17.771484 C 14.203116,17.185553 12.902336,16.892585 12.011719,16.892578 C 11.34765,16.892585 10.652339,17.041022 9.9257813,17.337891 C 9.2070275,17.626959 8.3984345,18.091802 7.5,18.732422 L 7.5,16.142578 C 8.3359346,15.580086 9.1328088,15.162118 9.890625,14.888672 C 10.648432,14.607431 11.363275,14.466806 12.035156,14.466797 C 12.949211,14.466806 14.085929,14.693368 15.445313,15.146484 C 15.46874,15.154305 15.484365,15.158212 15.492188,15.158203 C 15.632802,15.205087 15.847646,15.279305 16.136719,15.380859 C 17.347644,15.810555 18.285143,16.025398 18.949219,16.025391 C 19.613267,16.025398 20.29686,15.880867 21,15.591797 C 21.703109,15.302743 22.484358,14.845712 23.34375,14.220703 M 11.988281,35.033203 L 15.011719,35.033203 L 17.320313,39.369141 L 15.65625,39.369141 L 11.988281,35.033203"
+       id="text5103" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 136.47578,20.443359 C 136.04608,21.099612 135.54999,21.583986 134.9875,21.896484 C 134.42499,22.201173 133.76093,22.353517 132.99532,22.353516 C 131.76093,22.353517 130.81953,22.01758 130.1711,21.345703 C 129.53047,20.673831 129.21015,19.681645 129.21016,18.369141 C 129.21015,16.50196 129.75312,14.935556 130.83907,13.669922 C 131.93281,12.404308 133.27656,11.771496 134.87032,11.771484 C 135.4953,11.771496 136.03827,11.900402 136.49922,12.158203 C 136.96015,12.416027 137.33905,12.798839 137.63594,13.306641 L 138.25703,12.158203 L 140.34297,12.158203 L 138.62032,19.166016 C 138.59686,19.251958 138.57733,19.341801 138.56172,19.435547 C 138.54608,19.521488 138.53827,19.591801 138.53828,19.646484 C 138.53827,19.919926 138.63202,20.126957 138.81953,20.267578 C 139.00702,20.400394 139.28436,20.4668 139.65157,20.466797 C 139.95624,20.4668 140.27264,20.388675 140.60078,20.232422 C 140.9367,20.076175 141.2492,19.857426 141.53828,19.576172 C 142.21014,18.951177 142.71795,18.220709 143.06172,17.384766 C 143.41326,16.548835 143.58904,15.630867 143.58907,14.630859 C 143.58904,12.75587 142.86248,11.216809 141.40938,10.013672 C 139.96405,8.8027492 138.09686,8.1972811 135.80782,8.1972656 C 134.70624,8.1972811 133.6789,8.3300934 132.72578,8.5957031 C 131.78046,8.8613429 130.92109,9.2558737 130.14766,9.7792969 C 128.81953,10.669935 127.79609,11.783215 127.07735,13.119141 C 126.36641,14.455087 126.01094,15.91993 126.01094,17.513672 C 126.01094,19.912113 126.81953,21.83008 128.43672,23.267578 C 130.0539,24.697265 132.21406,25.412108 134.91719,25.412109 C 136.1828,25.412108 137.41718,25.220702 138.62032,24.837891 C 139.83124,24.455077 140.95623,23.90039 141.99532,23.173828 L 142.95625,24.544922 C 141.76092,25.443358 140.49139,26.119138 139.14766,26.572266 C 137.81171,27.025387 136.41718,27.25195 134.96407,27.251953 C 133.46405,27.25195 132.08515,27.060543 130.82735,26.677734 C 129.56953,26.302732 128.45234,25.744139 127.47578,25.001953 C 126.26484,24.05664 125.35859,22.966798 124.75703,21.732422 C 124.15547,20.49805 123.85469,19.099614 123.85469,17.537109 C 123.85469,16.232429 124.05781,14.990243 124.46407,13.810547 C 124.87813,12.623058 125.48359,11.544934 126.28047,10.576172 C 127.43672,9.1621238 128.82734,8.0918124 130.45235,7.3652344 C 132.07734,6.6386889 133.88593,6.275408 135.87813,6.2753906 C 137.19843,6.275408 138.43671,6.4550953 139.59297,6.8144531 C 140.75702,7.1660321 141.76873,7.6660316 142.62813,8.3144531 C 143.68279,9.1347801 144.46795,10.072279 144.9836,11.126953 C 145.50701,12.17384 145.76873,13.357432 145.76875,14.677734 C 145.76873,15.966805 145.51092,17.15821 144.99532,18.251953 C 144.48748,19.337895 143.75311,20.267581 142.79219,21.041016 C 142.2453,21.478518 141.64764,21.814455 140.99922,22.048828 C 140.35858,22.275392 139.69061,22.388673 138.99532,22.388672 C 138.16718,22.388673 137.54218,22.224611 137.12032,21.896484 C 136.70624,21.568361 136.4914,21.083987 136.47578,20.443359 M 137.06172,15.427734 C 136.96015,14.794931 136.73358,14.314462 136.38203,13.986328 C 136.03827,13.650401 135.58124,13.482432 135.01094,13.482422 C 134.1203,13.482432 133.34687,13.966807 132.69063,14.935547 C 132.03437,15.904305 131.70624,17.068366 131.70625,18.427734 C 131.70624,19.146489 131.86249,19.693363 132.175,20.068359 C 132.49531,20.443363 132.95624,20.630862 133.55782,20.630859 C 134.20624,20.630862 134.79608,20.384769 135.32735,19.892578 C 135.8664,19.400395 136.23358,18.75977 136.42891,17.970703 L 137.06172,15.427734 M 128.56563,53.630859 C 128.58125,52.130861 128.90156,50.861331 129.52657,49.822266 C 130.15156,48.775395 131.26094,47.716803 132.85469,46.646484 C 133.09687,46.482429 133.44844,46.255867 133.90938,45.966797 C 136.01875,44.615243 137.07343,43.314463 137.07344,42.064453 C 137.07343,41.322278 136.85078,40.736341 136.40547,40.306641 C 135.96015,39.876967 135.35078,39.662123 134.57735,39.662109 C 133.73359,39.662123 133.08125,39.927748 132.62032,40.458984 C 132.16719,40.982435 131.94062,41.732434 131.94063,42.708984 L 131.94063,42.849609 L 128.84688,42.849609 C 128.84688,40.927747 129.3625,39.44728 130.39375,38.408203 C 131.425,37.369157 132.89375,36.849626 134.8,36.849609 C 136.52656,36.849626 137.90546,37.322282 138.93672,38.267578 C 139.96796,39.205093 140.48358,40.455091 140.4836,42.017578 C 140.48358,43.134776 140.21405,44.103525 139.675,44.923828 C 139.13593,45.744149 138.09296,46.677741 136.5461,47.724609 C 136.21796,47.951178 135.76484,48.248052 135.18672,48.615234 C 133.71797,49.560551 132.88984,50.2793 132.70235,50.771484 L 140.31953,50.771484 L 140.31953,53.630859 L 128.56563,53.630859"
+       id="text5127" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 195.28125,13.693359 L 194.25,16.552734 L 197.19141,16.552734 L 198.19922,13.693359 L 195.28125,13.693359 M 195.28125,6.4746094 L 197.87109,6.4746094 L 196.16016,11.337891 L 198.99609,11.337891 L 200.73047,6.4746094 L 203.32031,6.4746094 L 201.58594,11.337891 L 204.90234,11.337891 L 204.03516,13.693359 L 200.75391,13.693359 L 199.76953,16.529297 L 203.16797,16.529297 L 202.33594,18.873047 L 198.92578,18.873047 L 197.19141,23.748047 L 194.60156,23.748047 L 196.33594,18.873047 L 193.47656,18.873047 L 191.73047,23.748047 L 189.15234,23.748047 L 190.86328,18.873047 L 187.5,18.873047 L 188.39063,16.529297 L 191.69531,16.529297 L 192.70313,13.693359 L 189.19922,13.693359 L 190.06641,11.337891 L 193.54688,11.337891 L 195.28125,6.4746094 M 190.07813,48.521484 L 193.30078,48.521484 C 193.30859,49.458989 193.53515,50.166019 193.98047,50.642578 C 194.42578,51.111331 195.08593,51.345705 195.96094,51.345703 C 196.80468,51.345705 197.45312,51.126956 197.90625,50.689453 C 198.36718,50.244144 198.59765,49.607426 198.59766,48.779297 C 198.59765,47.951178 198.32812,47.326178 197.78906,46.904297 C 197.2578,46.474617 196.46484,46.259773 195.41016,46.259766 C 195.35546,46.259773 195.26953,46.263679 195.15234,46.271484 C 195.04296,46.279304 194.96093,46.28321 194.90625,46.283203 L 194.90625,43.962891 L 195.26953,43.962891 C 196.23827,43.9629 196.95312,43.7754 197.41406,43.400391 C 197.8828,43.017589 198.11718,42.435558 198.11719,41.654297 C 198.11718,41.005872 197.91796,40.494154 197.51953,40.119141 C 197.1289,39.736342 196.59374,39.544936 195.91406,39.544922 C 195.17187,39.544936 194.59765,39.763686 194.19141,40.201172 C 193.78515,40.638685 193.58203,41.259778 193.58203,42.064453 L 193.58203,42.205078 L 190.41797,42.205078 C 190.45703,40.486341 190.96094,39.169936 191.92969,38.255859 C 192.90625,37.334001 194.28125,36.873064 196.05469,36.873047 C 197.73437,36.873064 199.0664,37.283219 200.05078,38.103516 C 201.03514,38.923843 201.52733,40.02931 201.52734,41.419922 C 201.52733,42.154308 201.35936,42.798839 201.02344,43.353516 C 200.68749,43.908213 200.18358,44.365244 199.51172,44.724609 C 200.37108,45.099618 201.01952,45.619149 201.45703,46.283203 C 201.90233,46.93946 202.12499,47.724615 202.125,48.638672 C 202.12499,50.318363 201.57421,51.650393 200.47266,52.634766 C 199.37108,53.619141 197.86718,54.111328 195.96094,54.111328 C 194.07812,54.111328 192.625,53.634766 191.60156,52.681641 C 190.58594,51.720705 190.07812,50.357425 190.07813,48.591797 L 190.07813,48.521484"
+       id="text5139" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 254.46094,21.451172 C 255.10155,21.365237 255.58984,21.134768 255.92578,20.759766 C 256.26171,20.384769 256.42968,19.884769 256.42969,19.259766 C 256.42968,18.705083 256.26952,18.248052 255.94922,17.888672 C 255.63671,17.52149 255.14062,17.236335 254.46094,17.033203 L 254.46094,21.451172 M 253.06641,13.435547 L 253.06641,9.4511719 C 252.45703,9.529311 251.99218,9.7402483 251.67188,10.083984 C 251.35156,10.419935 251.1914,10.87306 251.19141,11.443359 C 251.1914,11.919934 251.33984,12.318371 251.63672,12.638672 C 251.9414,12.958995 252.41796,13.22462 253.06641,13.435547 M 253.06641,26.267578 L 253.06641,24.017578 C 251.30078,23.908203 249.98047,23.396485 249.10547,22.482422 C 248.23047,21.568361 247.79297,20.24805 247.79297,18.521484 L 250.93359,18.521484 C 250.97265,19.365239 251.16796,20.033207 251.51953,20.525391 C 251.8789,21.009768 252.39453,21.318362 253.06641,21.451172 L 253.06641,16.599609 C 251.2539,16.138679 249.96484,15.537117 249.19922,14.794922 C 248.43359,14.052744 248.05078,13.03712 248.05078,11.748047 C 248.05078,10.318373 248.5039,9.1660301 249.41016,8.2910156 C 250.32422,7.4160318 251.54296,6.959001 253.06641,6.9199219 L 253.06641,5.4199219 L 254.46094,5.4199219 L 254.46094,6.9199219 C 255.98437,6.9980635 257.17186,7.4590005 258.02344,8.3027344 C 258.87499,9.1386864 259.34374,10.318373 259.42969,11.841797 L 256.24219,11.841797 C 256.18749,11.115247 256.01171,10.56056 255.71484,10.177734 C 255.42577,9.7871232 255.0078,9.5683734 254.46094,9.5214844 L 254.46094,13.787109 C 256.39062,14.388681 257.74999,15.07618 258.53906,15.849609 C 259.32811,16.623054 259.72264,17.642584 259.72266,18.908203 C 259.72264,20.400394 259.26171,21.591799 258.33984,22.482422 C 257.42577,23.373047 256.1328,23.892578 254.46094,24.041016 L 254.46094,26.267578 L 253.06641,26.267578 M 254.64844,47.419922 L 254.64844,40.236328 L 250.08984,47.419922 L 254.64844,47.419922 M 254.57813,53.630859 L 254.57813,50.009766 L 247.5,50.009766 L 247.5,47.056641 L 253.6875,37.330078 L 257.84766,37.330078 L 257.84766,47.337891 L 259.79297,47.337891 L 259.79297,50.009766 L 257.84766,50.009766 L 257.84766,53.630859 L 254.57813,53.630859"
+       id="text5145" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 320.42578,19.740234 C 320.42577,20.263675 320.60155,20.705081 320.95313,21.064453 C 321.30467,21.416018 321.73827,21.591799 322.25391,21.591797 C 322.75389,21.591799 323.18358,21.412112 323.54297,21.052734 C 323.90233,20.68555 324.08201,20.24805 324.08203,19.740234 C 324.08201,19.240239 323.90233,18.814458 323.54297,18.462891 C 323.19139,18.103521 322.7617,17.923834 322.25391,17.923828 C 321.73827,17.923834 321.30467,18.099615 320.95313,18.451172 C 320.60155,18.794927 320.42577,19.224614 320.42578,19.740234 M 317.88281,19.740234 C 317.8828,18.521489 318.30468,17.494147 319.14844,16.658203 C 319.99217,15.822273 321.02733,15.404305 322.25391,15.404297 C 323.45701,15.404305 324.48045,15.830086 325.32422,16.681641 C 326.17576,17.525397 326.60154,18.544927 326.60156,19.740234 C 326.60154,20.943362 326.17576,21.974611 325.32422,22.833984 C 324.47264,23.685547 323.4492,24.111328 322.25391,24.111328 C 321.02733,24.111328 319.99217,23.689453 319.14844,22.845703 C 318.30468,22.001955 317.8828,20.9668 317.88281,19.740234 M 311.07422,24.111328 L 321.08203,6.8496094 L 322.96875,6.8496094 L 312.96094,24.111328 L 311.07422,24.111328 M 310.04297,11.220703 C 310.04297,11.73634 310.21484,12.169933 310.55859,12.521484 C 310.91015,12.873058 311.34375,13.048839 311.85938,13.048828 C 312.36718,13.048839 312.79687,12.873058 313.14844,12.521484 C 313.50781,12.162121 313.68749,11.728528 313.6875,11.220703 C 313.68749,10.720716 313.50781,10.294935 313.14844,9.9433594 C 312.79687,9.5839984 312.36718,9.4043111 311.85938,9.4042969 C 311.34375,9.4043111 310.91015,9.5800922 310.55859,9.9316406 C 310.21484,10.275404 310.04297,10.705091 310.04297,11.220703 M 307.5,11.220703 C 307.5,10.001967 307.92187,8.9707178 308.76563,8.1269531 C 309.60937,7.275407 310.64062,6.8496262 311.85938,6.8496094 C 313.06249,6.8496262 314.08593,7.2793132 314.92969,8.1386719 C 315.78124,8.990249 316.20702,10.017592 316.20703,11.220703 C 316.20702,12.423839 315.78124,13.451182 314.92969,14.302734 C 314.08593,15.146493 313.06249,15.568367 311.85938,15.568359 C 310.63281,15.568367 309.59765,15.150399 308.75391,14.314453 C 307.91797,13.478526 307.5,12.447277 307.5,11.220703 M 310.85156,49.119141 L 314.13281,49.119141 C 314.1875,49.853519 314.43359,50.423831 314.87109,50.830078 C 315.30859,51.228518 315.89453,51.427737 316.62891,51.427734 C 317.53515,51.427737 318.22655,51.162112 318.70313,50.630859 C 319.18749,50.099613 319.42968,49.337895 319.42969,48.345703 C 319.42968,47.416022 319.18358,46.685554 318.69141,46.154297 C 318.19921,45.615242 317.51952,45.345711 316.65234,45.345703 C 316.16796,45.345711 315.74218,45.443368 315.375,45.638672 C 315.00781,45.833992 314.69531,46.123054 314.4375,46.505859 L 311.41406,46.330078 L 312.50391,37.330078 L 322.14844,37.330078 L 322.14844,40.166016 L 314.87109,40.166016 L 314.4375,43.529297 C 314.80468,43.240245 315.22656,43.025401 315.70313,42.884766 C 316.17968,42.736339 316.71093,42.66212 317.29688,42.662109 C 318.96874,42.66212 320.3164,43.169932 321.33984,44.185547 C 322.37108,45.20118 322.88671,46.53321 322.88672,48.181641 C 322.88671,49.986332 322.3203,51.427737 321.1875,52.505859 C 320.05468,53.576172 318.53515,54.111328 316.62891,54.111328 C 314.89453,54.111328 313.51172,53.669922 312.48047,52.787109 C 311.45703,51.896486 310.91406,50.673831 310.85156,49.119141"
+       id="text5151" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 373.13672,6.5214844 L 376.08984,6.5214844 L 381.72656,13.095703 L 378.97266,13.095703 L 374.625,8.7480469 L 370.25391,13.095703 L 367.5,13.095703 L 373.13672,6.5214844 M 372.15234,48.298828 C 372.15234,49.25977 372.39062,50.021488 372.86719,50.583984 C 373.35156,51.146487 374.00781,51.427737 374.83594,51.427734 C 375.60937,51.427737 376.21484,51.154299 376.65234,50.607422 C 377.08983,50.06055 377.30858,49.298832 377.30859,48.322266 C 377.30858,47.423834 377.08202,46.724616 376.62891,46.224609 C 376.17577,45.724617 375.53905,45.474618 374.71875,45.474609 C 373.91406,45.474618 373.28515,45.724617 372.83203,46.224609 C 372.3789,46.724616 372.15234,47.416022 372.15234,48.298828 M 372.10547,43.916016 C 372.48828,43.525401 372.94921,43.232432 373.48828,43.037109 C 374.02734,42.833995 374.6289,42.732433 375.29297,42.732422 C 376.93358,42.732433 378.24608,43.232432 379.23047,44.232422 C 380.22264,45.23243 380.71874,46.56446 380.71875,48.228516 C 380.71874,49.994144 380.17968,51.419924 379.10156,52.505859 C 378.02343,53.591797 376.60155,54.134765 374.83594,54.134766 C 372.79687,54.134765 371.24609,53.431641 370.18359,52.025391 C 369.1289,50.619144 368.60156,48.560552 368.60156,45.849609 C 368.60156,42.935558 369.16797,40.708997 370.30078,39.169922 C 371.43359,37.623063 373.0664,36.849626 375.19922,36.849609 C 376.68358,36.849626 377.8789,37.236345 378.78516,38.009766 C 379.69921,38.783218 380.19921,39.830092 380.28516,41.150391 L 376.88672,41.150391 C 376.80858,40.611341 376.59765,40.205092 376.25391,39.931641 C 375.91015,39.658217 375.42968,39.521498 374.8125,39.521484 C 373.96874,39.521498 373.32031,39.888686 372.86719,40.623047 C 372.41406,41.349622 372.16015,42.447277 372.10547,43.916016"
+       id="text5157" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 432.85547,16.095703 L 431.96484,16.740234 C 431.60546,16.990241 431.33593,17.291022 431.15625,17.642578 C 430.97656,17.994146 430.88671,18.388677 430.88672,18.826172 C 430.88671,19.490239 431.11328,20.048832 431.56641,20.501953 C 432.01953,20.955081 432.58593,21.181643 433.26563,21.181641 C 433.76562,21.181643 434.24218,21.080081 434.69531,20.876953 C 435.15624,20.666019 435.58202,20.361331 435.97266,19.962891 L 432.85547,16.095703 M 433.79297,12.404297 L 434.20313,12.111328 C 434.57812,11.853527 434.85546,11.564465 435.03516,11.244141 C 435.21483,10.923841 435.30468,10.556654 435.30469,10.142578 C 435.30468,9.7441545 435.17968,9.4277486 434.92969,9.1933594 C 434.68749,8.958999 434.35546,8.8418117 433.93359,8.8417969 C 433.5039,8.8418117 433.16406,8.9629053 432.91406,9.2050781 C 432.66406,9.4394673 432.53906,9.7597795 432.53906,10.166016 C 432.53906,10.384779 432.59765,10.62306 432.71484,10.880859 C 432.83984,11.138684 433.01562,11.412122 433.24219,11.701172 L 433.79297,12.404297 M 431.15625,13.962891 L 430.47656,13.072266 C 430.125,12.603527 429.87109,12.166027 429.71484,11.759766 C 429.5664,11.345715 429.49218,10.912122 429.49219,10.458984 C 429.49218,9.2089988 429.89062,8.2168123 430.6875,7.4824219 C 431.49218,6.7402513 432.58203,6.3691579 433.95703,6.3691406 C 435.27733,6.3691579 436.3203,6.7090013 437.08594,7.3886719 C 437.85155,8.0683749 438.23436,8.9863428 438.23438,10.142578 C 438.23436,11.017591 438.0078,11.802746 437.55469,12.498047 C 437.10936,13.185557 436.40624,13.833994 435.44531,14.443359 L 437.91797,17.490234 C 438.15233,17.107428 438.33593,16.677741 438.46875,16.201172 C 438.60936,15.724617 438.70702,15.193368 438.76172,14.607422 L 441.80859,14.607422 C 441.72264,15.623055 441.5117,16.56446 441.17578,17.431641 C 440.83983,18.298833 440.37889,19.091801 439.79297,19.810547 L 442.93359,23.630859 L 438.94922,23.630859 L 437.77734,22.189453 C 437.08983,22.822266 436.33202,23.302735 435.50391,23.630859 C 434.68359,23.951172 433.82421,24.111328 432.92578,24.111328 C 431.33203,24.111328 430.02734,23.638672 429.01172,22.693359 C 428.0039,21.748049 427.5,20.541019 427.5,19.072266 C 427.5,17.978521 427.78125,17.037116 428.34375,16.248047 C 428.90625,15.458993 429.84375,14.697275 431.15625,13.962891 M 434.66016,53.630859 L 431.15625,53.630859 C 431.28125,51.341799 431.83203,49.07227 432.80859,46.822266 C 433.79296,44.572275 435.19531,42.361339 437.01563,40.189453 L 428.76563,40.189453 L 428.76563,37.330078 L 440.66016,37.330078 L 440.66016,39.849609 C 438.8164,41.880871 437.39843,44.029306 436.40625,46.294922 C 435.42187,48.560552 434.83984,51.005862 434.66016,53.630859"
+       id="text5163" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 493.5,13.212891 L 491.4375,16.119141 L 489.44531,14.724609 L 491.69531,11.900391 L 488.41406,10.986328 L 489.17578,8.6074219 L 492.32813,9.7324219 L 492.32813,6.3691406 L 494.64844,6.3691406 L 494.64844,9.7324219 L 497.80078,8.6308594 L 498.58594,11.009766 L 495.30469,11.900391 L 497.53125,14.701172 L 495.49219,16.166016 L 493.5,13.212891 M 490.875,48.755859 C 490.875,49.576176 491.10156,50.208988 491.55469,50.654297 C 492.01562,51.099612 492.67187,51.322268 493.52344,51.322266 C 494.33593,51.322268 494.97265,51.095706 495.43359,50.642578 C 495.90233,50.189457 496.13671,49.560551 496.13672,48.755859 C 496.13671,47.982428 495.89843,47.361334 495.42188,46.892578 C 494.9453,46.423835 494.31249,46.189461 493.52344,46.189453 C 492.73437,46.189461 492.09374,46.427742 491.60156,46.904297 C 491.11718,47.380866 490.875,47.998053 490.875,48.755859 M 491.14453,41.560547 C 491.14453,42.208996 491.34765,42.708995 491.75391,43.060547 C 492.16015,43.404307 492.74218,43.576182 493.5,43.576172 C 494.2578,43.576182 494.83984,43.400401 495.24609,43.048828 C 495.66015,42.697277 495.86718,42.201183 495.86719,41.560547 C 495.86718,40.93556 495.65624,40.443373 495.23438,40.083984 C 494.81249,39.724623 494.23437,39.544936 493.5,39.544922 C 492.78124,39.544936 492.20703,39.72853 491.77734,40.095703 C 491.35546,40.462904 491.14453,40.951185 491.14453,41.560547 M 489.9375,44.818359 C 489.23437,44.427744 488.72656,43.970713 488.41406,43.447266 C 488.10156,42.923839 487.94531,42.255871 487.94531,41.443359 C 487.94531,40.005873 488.4375,38.876968 489.42188,38.056641 C 490.40625,37.236345 491.76562,36.826189 493.5,36.826172 C 495.24999,36.826189 496.61718,37.236345 497.60156,38.056641 C 498.59374,38.869155 499.08983,39.998061 499.08984,41.443359 C 499.08983,42.216808 498.92186,42.888683 498.58594,43.458984 C 498.24999,44.021494 497.74608,44.474619 497.07422,44.818359 C 497.89452,45.20118 498.51171,45.73243 498.92578,46.412109 C 499.33983,47.083991 499.54686,47.904303 499.54688,48.873047 C 499.54686,50.505862 499.0078,51.787111 497.92969,52.716797 C 496.85936,53.646484 495.3828,54.111328 493.5,54.111328 C 491.59375,54.111328 490.11328,53.650391 489.05859,52.728516 C 488.0039,51.806642 487.47656,50.521487 487.47656,48.873047 C 487.47656,47.912115 487.67187,47.107428 488.0625,46.458984 C 488.46094,45.802742 489.08594,45.255868 489.9375,44.818359"
+       id="text5169" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 557.85938,6.3691406 C 556.78124,8.1347811 555.98046,9.9316543 555.45703,11.759766 C 554.93359,13.587901 554.67187,15.505868 554.67188,17.513672 C 554.67187,19.513676 554.93359,21.427737 555.45703,23.255859 C 555.98046,25.083983 556.78124,26.880856 557.85938,28.646484 L 555.38672,28.646484 C 554.01953,26.779294 552.98046,24.904296 552.26953,23.021484 C 551.5664,21.130862 551.21484,19.294926 551.21484,17.513672 C 551.21484,15.73243 551.5664,13.896494 552.26953,12.005859 C 552.98046,10.115248 554.01953,8.2363435 555.38672,6.3691406 L 557.85938,6.3691406 M 556.06641,42.685547 C 556.0664,41.724621 555.82421,40.96681 555.33984,40.412109 C 554.86327,39.849623 554.21093,39.568373 553.38281,39.568359 C 552.60156,39.568373 551.99218,39.837904 551.55469,40.376953 C 551.125,40.916028 550.91015,41.669934 550.91016,42.638672 C 550.91015,43.544932 551.13671,44.251963 551.58984,44.759766 C 552.04296,45.267586 552.67968,45.521492 553.5,45.521484 C 554.30468,45.521492 554.93359,45.271493 555.38672,44.771484 C 555.83983,44.271494 556.0664,43.576182 556.06641,42.685547 M 556.125,47.056641 C 555.73437,47.447272 555.27343,47.74024 554.74219,47.935547 C 554.21093,48.130865 553.61327,48.228521 552.94922,48.228516 C 551.30078,48.228521 549.98047,47.732428 548.98828,46.740234 C 547.99609,45.748055 547.5,44.419931 547.5,42.755859 C 547.5,40.990247 548.03906,39.564467 549.11719,38.478516 C 550.19531,37.392594 551.61718,36.849626 553.38281,36.849609 C 555.42968,36.849626 556.98436,37.556657 558.04688,38.970703 C 559.11718,40.376966 559.65233,42.431652 559.65234,45.134766 C 559.65233,48.041021 559.08202,50.267581 557.94141,51.814453 C 556.80077,53.361328 555.16015,54.134765 553.01953,54.134766 C 551.54296,54.134765 550.35156,53.751953 549.44531,52.986328 C 548.53906,52.212892 548.04297,51.162112 547.95703,49.833984 L 551.34375,49.845703 C 551.42187,50.384769 551.63281,50.787112 551.97656,51.052734 C 552.32031,51.318362 552.80468,51.451174 553.42969,51.451172 C 554.27343,51.451174 554.91796,51.083987 555.36328,50.349609 C 555.80858,49.615238 556.06249,48.517583 556.125,47.056641"
+       id="text5175" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 609.375,6.3691406 L 611.87109,6.3691406 C 613.23046,8.228531 614.26171,10.103529 614.96484,11.994141 C 615.66796,13.876963 616.01952,15.716805 616.01953,17.513672 C 616.01952,19.302739 615.66796,21.142581 614.96484,23.033203 C 614.26171,24.923827 613.23046,26.794919 611.87109,28.646484 L 609.375,28.646484 C 610.46094,26.873044 611.26562,25.072264 611.78906,23.244141 C 612.32031,21.408205 612.58593,19.498051 612.58594,17.513672 C 612.58593,15.521492 612.32031,13.611338 611.78906,11.783203 C 611.26562,9.9550918 610.46094,8.1504061 609.375,6.3691406 M 610.98047,45.474609 C 610.98046,47.513678 611.18359,48.994145 611.58984,49.916016 C 612.0039,50.837893 612.66015,51.29883 613.55859,51.298828 C 614.45702,51.29883 615.11327,50.833987 615.52734,49.904297 C 615.9414,48.974614 616.14843,47.498053 616.14844,45.474609 C 616.14843,43.44337 615.9414,41.966809 615.52734,41.044922 C 615.11327,40.12306 614.45702,39.662123 613.55859,39.662109 C 612.66015,39.662123 612.0039,40.12306 611.58984,41.044922 C 611.18359,41.958996 610.98046,43.435557 610.98047,45.474609 M 607.5,45.474609 C 607.5,42.591808 608,40.43556 609,39.005859 C 610.00781,37.568375 611.52734,36.849626 613.55859,36.849609 C 615.58202,36.849626 617.09765,37.572282 618.10547,39.017578 C 619.12108,40.455091 619.62889,42.615245 619.62891,45.498047 C 619.62889,48.380865 619.12499,50.533206 618.11719,51.955078 C 617.11718,53.376953 615.59765,54.08789 613.55859,54.087891 C 611.52734,54.08789 610.00781,53.373047 609,51.943359 C 608,50.513675 607.5,48.357427 607.5,45.474609"
+       id="text5181" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 667.5,26.900391 L 679.5,26.900391 L 679.5,29.291016 L 667.5,29.291016 L 667.5,26.900391 M 670.20703,48.849609 L 670.20703,45.638672 L 676.79297,45.638672 L 676.79297,48.849609 L 670.20703,48.849609"
+       id="text5187" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 733.33594,9.3222656 L 735.70313,9.3222656 L 735.70313,15.298828 L 741.53906,15.298828 L 741.53906,17.630859 L 735.70313,17.630859 L 735.70313,23.630859 L 733.33594,23.630859 L 733.33594,17.630859 L 727.5,17.630859 L 727.5,15.298828 L 733.33594,15.298828 L 733.33594,9.3222656 M 727.5,47.818359 L 741.53906,47.818359 L 741.53906,50.150391 L 727.5,50.150391 L 727.5,47.818359 M 727.5,42.779297 L 741.53906,42.779297 L 741.53906,45.111328 L 727.5,45.111328 L 727.5,42.779297"
+       id="text5201" />
+    <path
+       style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 11.070313,95.601563 L 11.070313,86.148438 L 7.65625,86.148438 L 7.65625,84.09375 L 16.828125,84.09375 L 16.828125,86.148438 L 13.4375,86.148438 L 13.4375,95.601563 L 11.070313,95.601563 M 22.859375,94.546875 C 22.572911,94.989584 22.197911,95.328125 21.734375,95.5625 C 21.270829,95.791666 20.731767,95.90625 20.117188,95.90625 C 19.294269,95.90625 18.658853,95.671875 18.210938,95.203125 C 17.768228,94.734376 17.546874,94.06771 17.546875,93.203125 C 17.546874,92.401045 17.768228,91.789066 18.210938,91.367188 C 18.658853,90.945317 19.395831,90.656255 20.421875,90.5 C 20.656246,90.463547 20.963538,90.42188 21.34375,90.375 C 22.307286,90.250005 22.789057,89.97136 22.789063,89.539063 C 22.789057,89.195319 22.682286,88.950527 22.46875,88.804688 C 22.255203,88.653653 21.898433,88.578132 21.398438,88.578125 C 20.9401,88.578132 20.588538,88.669278 20.34375,88.851563 C 20.098955,89.033861 19.97656,89.294277 19.976563,89.632813 L 19.976563,89.757813 L 17.851563,89.757813 L 17.851563,89.601563 C 17.851562,88.731778 18.158853,88.049487 18.773438,87.554688 C 19.388018,87.054696 20.236976,86.804696 21.320313,86.804688 C 22.507807,86.804696 23.41666,87.010425 24.046875,87.421875 C 24.682284,87.833341 24.999992,88.427091 25,89.203125 L 25,94.03125 C 24.999992,94.385418 25.03645,94.651043 25.109375,94.828125 C 25.182283,95.000001 25.304679,95.130209 25.476563,95.21875 L 25.476563,95.601563 L 23.109375,95.601563 C 23.031244,95.455729 22.971348,95.294271 22.929688,95.117188 C 22.888015,94.940105 22.864577,94.750001 22.859375,94.546875 M 22.820313,91.421875 C 22.450515,91.593754 22.023432,91.731775 21.539063,91.835938 C 21.059892,91.940108 20.812496,91.994795 20.796875,92 C 20.39583,92.114587 20.11458,92.257816 19.953125,92.429688 C 19.796872,92.601566 19.718747,92.838544 19.71875,93.140625 C 19.718747,93.453127 19.82031,93.703127 20.023438,93.890625 C 20.226559,94.072918 20.499997,94.164064 20.84375,94.164063 C 21.458329,94.164064 21.940099,93.992189 22.289063,93.648438 C 22.643224,93.299481 22.820307,92.825524 22.820313,92.226563 L 22.820313,91.421875 M 27.039063,84.09375 L 29.25,84.09375 L 29.25,88.164063 C 29.531246,87.721362 29.882809,87.388029 30.304688,87.164063 C 30.731766,86.934905 31.216141,86.820321 31.757813,86.820313 C 32.783847,86.820321 33.622388,87.2448 34.273438,88.09375 C 34.92447,88.937507 35.249991,90.036464 35.25,91.390625 C 35.249991,92.734378 34.92447,93.820314 34.273438,94.648438 C 33.622388,95.476563 32.773431,95.890625 31.726563,95.890625 C 31.179682,95.890625 30.70312,95.776041 30.296875,95.546875 C 29.895829,95.317709 29.531246,94.953126 29.203125,94.453125 L 29.203125,95.601563 L 27.039063,95.601563 L 27.039063,84.09375 M 32.992188,91.296875 C 32.992181,90.51563 32.828118,89.903652 32.5,89.460938 C 32.171869,89.013027 31.721348,88.789069 31.148438,88.789063 C 30.544266,88.789069 30.075517,89.007819 29.742188,89.445313 C 29.414059,89.87761 29.249997,90.494797 29.25,91.296875 C 29.249997,92.161462 29.406247,92.817711 29.71875,93.265625 C 30.036454,93.713544 30.497391,93.937502 31.101563,93.9375 C 31.71614,93.937502 32.18489,93.713544 32.507813,93.265625 C 32.830722,92.812503 32.992181,92.156253 32.992188,91.296875"
+       id="text5427" />
+    <path
+       style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 789.76563,44.369141 L 792.57031,44.369141 C 793.23176,44.369143 793.71353,44.249351 794.01563,44.009766 C 794.3177,43.770185 794.46874,43.392581 794.46875,42.876953 C 794.46874,42.340499 794.3203,41.955083 794.02344,41.720703 C 793.72656,41.481125 793.23697,41.361333 792.55469,41.361328 L 789.76563,41.361328 L 789.76563,44.369141 M 789.76563,39.392578 L 792.46875,39.392578 C 793.05208,39.392585 793.47916,39.293627 793.75,39.095703 C 794.02083,38.892586 794.15624,38.574878 794.15625,38.142578 C 794.15624,37.720712 794.02343,37.416025 793.75781,37.228516 C 793.49739,37.035817 793.06249,36.939463 792.45313,36.939453 L 789.76563,36.939453 L 789.76563,39.392578 M 787.5,46.447266 L 787.5,34.939453 L 792.92188,34.939453 C 794.09895,34.939465 794.99478,35.189464 795.60938,35.689453 C 796.22916,36.184255 796.53905,36.905609 796.53906,37.853516 C 796.53905,38.436857 796.42447,38.923836 796.19531,39.314453 C 795.96614,39.705085 795.62239,40.007168 795.16406,40.220703 C 795.7578,40.460292 796.20051,40.806646 796.49219,41.259766 C 796.78905,41.707687 796.93749,42.267582 796.9375,42.939453 C 796.93749,44.059247 796.57291,44.92383 795.84375,45.533203 C 795.11457,46.142578 794.08072,46.447266 792.74219,46.447266 L 787.5,46.447266 M 803.45313,45.392578 C 803.16666,45.835287 802.79166,46.173828 802.32813,46.408203 C 801.86458,46.63737 801.32552,46.751953 800.71094,46.751953 C 799.88802,46.751953 799.2526,46.517578 798.80469,46.048828 C 798.36198,45.580079 798.14062,44.913413 798.14063,44.048828 C 798.14062,43.246748 798.36198,42.634769 798.80469,42.212891 C 799.2526,41.79102 799.98958,41.501958 801.01563,41.345703 C 801.25,41.30925 801.55729,41.267583 801.9375,41.220703 C 802.90104,41.095708 803.38281,40.817063 803.38281,40.384766 C 803.38281,40.041022 803.27604,39.796231 803.0625,39.650391 C 802.84895,39.499356 802.49218,39.423835 801.99219,39.423828 C 801.53385,39.423835 801.18229,39.514981 800.9375,39.697266 C 800.69271,39.879564 800.57031,40.13998 800.57031,40.478516 L 800.57031,40.603516 L 798.44531,40.603516 L 798.44531,40.447266 C 798.44531,39.577481 798.7526,38.89519 799.36719,38.400391 C 799.98177,37.900399 800.83073,37.650399 801.91406,37.650391 C 803.10156,37.650399 804.01041,37.856128 804.64063,38.267578 C 805.27603,38.679044 805.59374,39.272794 805.59375,40.048828 L 805.59375,44.876953 C 805.59374,45.231121 805.6302,45.496746 805.70313,45.673828 C 805.77603,45.845704 805.89843,45.975912 806.07031,46.064453 L 806.07031,46.447266 L 803.70313,46.447266 C 803.62499,46.301432 803.5651,46.139974 803.52344,45.962891 C 803.48176,45.785808 803.45833,45.595704 803.45313,45.392578 M 803.41406,42.267578 C 803.04427,42.439457 802.61718,42.577478 802.13281,42.681641 C 801.65364,42.785811 801.40625,42.840498 801.39063,42.845703 C 800.98958,42.96029 800.70833,43.103519 800.54688,43.275391 C 800.39062,43.447269 800.3125,43.684248 800.3125,43.986328 C 800.3125,44.29883 800.41406,44.54883 800.61719,44.736328 C 800.82031,44.918621 801.09375,45.009767 801.4375,45.009766 C 802.05208,45.009767 802.53385,44.837892 802.88281,44.494141 C 803.23697,44.145185 803.41406,43.671227 803.41406,43.072266 L 803.41406,42.267578 M 812.71875,43.244141 L 814.96094,43.244141 C 814.86718,44.322268 814.47395,45.173829 813.78125,45.798828 C 813.08854,46.423828 812.19791,46.736328 811.10938,46.736328 C 809.875,46.736328 808.90625,46.335287 808.20313,45.533203 C 807.50521,44.725913 807.15625,43.611331 807.15625,42.189453 C 807.15625,40.772792 807.51302,39.663418 808.22656,38.861328 C 808.94531,38.054045 809.93229,37.650399 811.1875,37.650391 C 812.28645,37.650399 813.16666,37.942066 813.82813,38.525391 C 814.49478,39.108731 814.86718,39.92123 814.94531,40.962891 L 812.6875,40.962891 C 812.62499,40.509772 812.46614,40.163418 812.21094,39.923828 C 811.95572,39.684252 811.61979,39.56446 811.20313,39.564453 C 810.64062,39.56446 810.21875,39.785814 809.9375,40.228516 C 809.66146,40.67123 809.52343,41.335292 809.52344,42.220703 C 809.52343,43.038415 809.66666,43.668623 809.95313,44.111328 C 810.24479,44.54883 810.66145,44.76758 811.20313,44.767578 C 811.62499,44.76758 811.96354,44.639976 812.21875,44.384766 C 812.47395,44.12956 812.64062,43.749352 812.71875,43.244141 M 816.44531,46.447266 L 816.44531,34.939453 L 818.65625,34.939453 L 818.65625,40.978516 L 821.35938,37.955078 L 824.09375,37.955078 L 821.13281,41.103516 L 824.27344,46.447266 L 821.54688,46.447266 L 819.51563,42.830078 L 818.65625,43.759766 L 818.65625,46.447266 L 816.44531,46.447266 M 824.79688,43.681641 L 827.0625,43.681641 C 827.08333,44.113935 827.23958,44.436851 827.53125,44.650391 C 827.82291,44.858726 828.26041,44.962892 828.84375,44.962891 C 829.28645,44.962892 829.6276,44.889976 829.86719,44.744141 C 830.11197,44.593101 830.23437,44.382164 830.23438,44.111328 C 830.23437,43.725914 829.78124,43.436852 828.875,43.244141 C 828.5052,43.166019 828.21093,43.098311 827.99219,43.041016 C 826.88802,42.759769 826.11979,42.426436 825.6875,42.041016 C 825.26042,41.655604 825.04687,41.134771 825.04688,40.478516 C 825.04687,39.608731 825.35937,38.921231 825.98438,38.416016 C 826.61458,37.905608 827.46614,37.650399 828.53906,37.650391 C 829.67447,37.650399 830.5651,37.903003 831.21094,38.408203 C 831.86197,38.913419 832.20833,39.624356 832.25,40.541016 L 830.03906,40.541016 C 830.02343,40.181647 829.88541,39.903001 829.625,39.705078 C 829.36979,39.507168 829.01302,39.40821 828.55469,39.408203 C 828.12239,39.40821 827.79948,39.473314 827.58594,39.603516 C 827.3776,39.733731 827.27343,39.929043 827.27344,40.189453 C 827.27343,40.528001 827.83854,40.82748 828.96875,41.087891 C 829.22916,41.145188 829.43489,41.192063 829.58594,41.228516 C 830.71614,41.494146 831.48697,41.814458 831.89844,42.189453 C 832.3151,42.564457 832.52343,43.093102 832.52344,43.775391 C 832.52343,44.738934 832.18228,45.473308 831.5,45.978516 C 830.82291,46.483724 829.83593,46.736328 828.53906,46.736328 C 827.36718,46.736328 826.45052,46.473307 825.78906,45.947266 C 825.1276,45.421225 824.79687,44.697267 824.79688,43.775391 L 824.79688,43.681641 M 840.02344,42.251953 C 840.02343,41.397792 839.86197,40.74675 839.53906,40.298828 C 839.21614,39.84571 838.74739,39.619147 838.13281,39.619141 C 837.52864,39.619147 837.0677,39.843106 836.75,40.291016 C 836.4375,40.738938 836.28125,41.392583 836.28125,42.251953 C 836.28125,43.05404 836.44531,43.673831 836.77344,44.111328 C 837.10677,44.54883 837.57552,44.76758 838.17969,44.767578 C 838.7526,44.76758 839.20312,44.543622 839.53125,44.095703 C 839.85937,43.647789 840.02343,43.033207 840.02344,42.251953 M 834.07031,49.853516 L 834.07031,37.955078 L 836.23438,37.955078 L 836.23438,39.103516 C 836.5625,38.603523 836.92708,38.23894 837.32813,38.009766 C 837.73437,37.780608 838.21093,37.666024 838.75781,37.666016 C 839.80468,37.666024 840.65364,38.080086 841.30469,38.908203 C 841.95572,39.731127 842.28124,40.814459 842.28125,42.158203 C 842.28124,43.517581 841.95572,44.621747 841.30469,45.470703 C 840.65364,46.314453 839.8151,46.736328 838.78906,46.736328 C 838.24739,46.736328 837.76302,46.621745 837.33594,46.392578 C 836.91406,46.163412 836.5625,45.830079 836.28125,45.392578 L 836.28125,49.853516 L 834.07031,49.853516 M 848.70313,45.392578 C 848.41666,45.835287 848.04166,46.173828 847.57813,46.408203 C 847.11458,46.63737 846.57552,46.751953 845.96094,46.751953 C 845.13802,46.751953 844.5026,46.517578 844.05469,46.048828 C 843.61198,45.580079 843.39062,44.913413 843.39063,44.048828 C 843.39062,43.246748 843.61198,42.634769 844.05469,42.212891 C 844.5026,41.79102 845.23958,41.501958 846.26563,41.345703 C 846.5,41.30925 846.80729,41.267583 847.1875,41.220703 C 848.15104,41.095708 848.63281,40.817063 848.63281,40.384766 C 848.63281,40.041022 848.52604,39.796231 848.3125,39.650391 C 848.09895,39.499356 847.74218,39.423835 847.24219,39.423828 C 846.78385,39.423835 846.43229,39.514981 846.1875,39.697266 C 845.94271,39.879564 845.82031,40.13998 845.82031,40.478516 L 845.82031,40.603516 L 843.69531,40.603516 L 843.69531,40.447266 C 843.69531,39.577481 844.0026,38.89519 844.61719,38.400391 C 845.23177,37.900399 846.08073,37.650399 847.16406,37.650391 C 848.35156,37.650399 849.26041,37.856128 849.89063,38.267578 C 850.52603,38.679044 850.84374,39.272794 850.84375,40.048828 L 850.84375,44.876953 C 850.84374,45.231121 850.8802,45.496746 850.95313,45.673828 C 851.02603,45.845704 851.14843,45.975912 851.32031,46.064453 L 851.32031,46.447266 L 848.95313,46.447266 C 848.87499,46.301432 848.8151,46.139974 848.77344,45.962891 C 848.73176,45.785808 848.70833,45.595704 848.70313,45.392578 M 848.66406,42.267578 C 848.29427,42.439457 847.86718,42.577478 847.38281,42.681641 C 846.90364,42.785811 846.65625,42.840498 846.64063,42.845703 C 846.23958,42.96029 845.95833,43.103519 845.79688,43.275391 C 845.64062,43.447269 845.5625,43.684248 845.5625,43.986328 C 845.5625,44.29883 845.66406,44.54883 845.86719,44.736328 C 846.07031,44.918621 846.34375,45.009767 846.6875,45.009766 C 847.30208,45.009767 847.78385,44.837892 848.13281,44.494141 C 848.48697,44.145185 848.66406,43.671227 848.66406,43.072266 L 848.66406,42.267578 M 857.96875,43.244141 L 860.21094,43.244141 C 860.11718,44.322268 859.72395,45.173829 859.03125,45.798828 C 858.33854,46.423828 857.44791,46.736328 856.35938,46.736328 C 855.125,46.736328 854.15625,46.335287 853.45313,45.533203 C 852.75521,44.725913 852.40625,43.611331 852.40625,42.189453 C 852.40625,40.772792 852.76302,39.663418 853.47656,38.861328 C 854.19531,38.054045 855.18229,37.650399 856.4375,37.650391 C 857.53645,37.650399 858.41666,37.942066 859.07813,38.525391 C 859.74478,39.108731 860.11718,39.92123 860.19531,40.962891 L 857.9375,40.962891 C 857.87499,40.509772 857.71614,40.163418 857.46094,39.923828 C 857.20572,39.684252 856.86979,39.56446 856.45313,39.564453 C 855.89062,39.56446 855.46875,39.785814 855.1875,40.228516 C 854.91146,40.67123 854.77343,41.335292 854.77344,42.220703 C 854.77343,43.038415 854.91666,43.668623 855.20313,44.111328 C 855.49479,44.54883 855.91145,44.76758 856.45313,44.767578 C 856.87499,44.76758 857.21354,44.639976 857.46875,44.384766 C 857.72395,44.12956 857.89062,43.749352 857.96875,43.244141 M 866.88281,43.869141 L 869.14844,43.869141 C 868.91926,44.764976 868.45572,45.4681 867.75781,45.978516 C 867.0651,46.483724 866.21874,46.736328 865.21875,46.736328 C 863.98958,46.736328 863.01562,46.32487 862.29688,45.501953 C 861.57812,44.67383 861.21875,43.554039 861.21875,42.142578 C 861.21875,40.751959 861.57292,39.655606 862.28125,38.853516 C 862.98958,38.051441 863.95833,37.650399 865.1875,37.650391 C 866.48958,37.650399 867.49478,38.046232 868.20313,38.837891 C 868.91145,39.624356 869.26562,40.74675 869.26563,42.205078 C 869.26562,42.366541 869.26301,42.488936 869.25781,42.572266 C 869.2578,42.650394 869.2526,42.725915 869.24219,42.798828 L 863.57031,42.798828 C 863.60156,43.465498 863.76302,43.968101 864.05469,44.306641 C 864.35156,44.645184 864.77604,44.814455 865.32813,44.814453 C 865.71874,44.814455 866.03906,44.738934 866.28906,44.587891 C 866.53906,44.431643 866.73697,44.19206 866.88281,43.869141 M 863.57031,41.306641 L 866.91406,41.306641 C 866.89322,40.73373 866.73958,40.298834 866.45313,40.001953 C 866.17187,39.699877 865.76562,39.548835 865.23438,39.548828 C 864.73958,39.548835 864.34895,39.699877 864.0625,40.001953 C 863.78125,40.304043 863.61718,40.738938 863.57031,41.306641"
+       id="text5207" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+       d="M 840,17.646484 L 797.02608,17.646484"
+       id="path5439" />
+    <path
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 802.5,25.146484 L 802.5,10.146484 L 787.5,17.646484 L 802.5,25.146484 z "
+       id="path5441" />
+    <g
+       id="g5459"
+       transform="translate(0,7.5)">
+      <path
+         style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:3.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 82.50003,75 L 54.020182,75"
+         id="path5453" />
+      <path
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 60,82.5 L 60,67.5 L 45,75 L 60,82.5 z "
+         id="path5455" />
+      <path
+         id="path5457"
+         d="M 45,67.5 C 45,82.5 45,82.5 45,82.5"
+         style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <g
+       id="g5464"
+       transform="matrix(-1,9.581637e-17,-9.581637e-17,-1,127.5,172.5)">
+      <path
+         id="path5466"
+         d="M 82.50003,75 L 54.020182,75"
+         style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:3.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         id="path5468"
+         d="M 60,82.5 L 60,67.5 L 45,75 L 60,82.5 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 45,67.5 C 45,82.5 45,82.5 45,82.5"
+         id="path5470" />
+    </g>
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 107.0625,80.560547 L 105.23438,78.779297 L 107.17969,76.763672 L 109.05469,78.591797 C 109.30467,78.123052 109.49608,77.587897 109.62891,76.986328 C 109.7617,76.384773 109.82811,75.728524 109.82813,75.017578 C 109.82811,73.119151 109.40233,71.646496 108.55078,70.599609 C 107.69921,69.544936 106.5078,69.017593 104.97656,69.017578 C 103.46093,69.017593 102.28124,69.54103 101.4375,70.587891 C 100.59374,71.634778 100.17187,73.111339 100.17188,75.017578 C 100.17187,76.916022 100.59374,78.392583 101.4375,79.447266 C 102.28124,80.494144 103.46093,81.017581 104.97656,81.017578 C 105.36718,81.017581 105.73436,80.978518 106.07813,80.900391 C 106.42968,80.822268 106.7578,80.708987 107.0625,80.560547 M 109.55859,82.916016 C 108.97264,83.306641 108.28905,83.603516 107.50781,83.806641 C 106.73436,84.009765 105.89061,84.111328 104.97656,84.111328 C 102.39843,84.111328 100.34765,83.291016 98.824219,81.650391 C 97.308592,80.009769 96.55078,77.798834 96.550781,75.017578 C 96.55078,72.228527 97.308592,70.017592 98.824219,68.384766 C 100.34765,66.744158 102.39843,65.923846 104.97656,65.923828 C 107.55468,65.923846 109.60545,66.744158 111.12891,68.384766 C 112.66014,70.025404 113.42576,72.23634 113.42578,75.017578 C 113.42576,76.236336 113.26951,77.353522 112.95703,78.369141 C 112.64451,79.376957 112.18358,80.259769 111.57422,81.017578 L 113.44922,82.810547 L 111.52734,84.826172 L 109.55859,82.916016"
+       id="text5474" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 407.06836,83.630859 L 403.51758,83.630859 L 403.51758,77.197266 L 397.24805,66.369141 L 401.5957,66.369141 L 405.28711,73.810547 L 408.69727,66.369141 L 412.75195,66.369141 L 407.06836,77.197266 L 407.06836,83.630859"
+       id="text5518" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 458.08594,66.105469 L 461.67188,66.105469 L 461.67188,76.933594 C 461.67187,78.269536 461.93749,79.246098 462.46875,79.863281 C 462.99999,80.472659 463.84374,80.777346 465,80.777344 C 466.17187,80.777346 467.02343,80.472659 467.55469,79.863281 C 468.09374,79.25391 468.36327,78.277349 468.36328,76.933594 L 468.36328,66.105469 L 471.91406,66.105469 L 471.91406,77.320313 C 471.91405,79.437504 471.3203,81.062502 470.13281,82.195313 C 468.95311,83.328125 467.24999,83.894531 465.02344,83.894531 C 462.78124,83.894531 461.0625,83.332031 459.86719,82.207031 C 458.67969,81.074221 458.08594,79.445316 458.08594,77.320313 L 458.08594,66.105469"
+       id="text5522" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 523.22461,83.630859 L 523.22461,66.369141 L 526.77539,66.369141 L 526.77539,83.630859 L 523.22461,83.630859"
+       id="text5526" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 580.18359,75 C 580.18359,76.898444 580.60546,78.375005 581.44922,79.429688 C 582.29296,80.476566 583.47265,81.000003 584.98828,81 C 586.51952,81.000003 587.71093,80.476566 588.5625,79.429688 C 589.41405,78.375005 589.83983,76.898444 589.83984,75 C 589.83983,73.101573 589.41405,71.628918 588.5625,70.582031 C 587.71093,69.527358 586.51952,69.000015 584.98828,69 C 583.47265,69.000015 582.29296,69.523452 581.44922,70.570313 C 580.60546,71.617199 580.18359,73.093761 580.18359,75 M 576.5625,75 C 576.5625,72.210949 577.32031,70.000014 578.83594,68.367188 C 580.35937,66.726579 582.41015,65.906268 584.98828,65.90625 C 587.56639,65.906268 589.61717,66.726579 591.14063,68.367188 C 592.67186,70.007826 593.43748,72.218761 593.4375,75 C 593.43748,77.781256 592.67186,79.992191 591.14063,81.632813 C 589.61717,83.273438 587.56639,84.09375 584.98828,84.09375 C 582.41015,84.09375 580.35937,83.273438 578.83594,81.632813 C 577.32031,79.992191 576.5625,77.781256 576.5625,75"
+       id="text5530" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 641.97656,74.361328 L 645.41016,74.361328 C 646.33983,74.361337 647.01561,74.166025 647.4375,73.775391 C 647.85936,73.376963 648.0703,72.740245 648.07031,71.865234 C 648.0703,71.044934 647.86327,70.423841 647.44922,70.001953 C 647.03515,69.580092 646.41796,69.369155 645.59766,69.369141 L 641.97656,69.369141 L 641.97656,74.361328 M 641.95313,77.490234 L 641.95313,83.630859 L 638.40234,83.630859 L 638.40234,66.369141 L 646.07813,66.369141 C 647.89061,66.369158 649.26171,66.841814 650.19141,67.787109 C 651.12889,68.724624 651.59764,70.103529 651.59766,71.923828 C 651.59764,73.705088 651.14061,75.080087 650.22656,76.048828 C 649.31249,77.009772 648.0078,77.490241 646.3125,77.490234 L 641.95313,77.490234"
+       id="text5534" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 709.24805,63.919922 L 709.24805,66.369141 C 709.17772,66.369155 709.08007,66.365249 708.95508,66.357422 C 708.83007,66.349624 708.74413,66.345718 708.69727,66.345703 C 707.90819,66.345718 707.37304,66.498062 707.0918,66.802734 C 706.81835,67.099624 706.68163,67.732435 706.68164,68.701172 L 706.68164,71.513672 C 706.68163,72.66993 706.50585,73.490242 706.1543,73.974609 C 705.80273,74.458991 705.16992,74.806647 704.25586,75.017578 C 705.16992,75.228522 705.80273,75.572271 706.1543,76.048828 C 706.50585,76.525395 706.68163,77.341801 706.68164,78.498047 L 706.68164,81.322266 C 706.68163,82.283202 706.81835,82.912108 707.0918,83.208984 C 707.36523,83.505857 707.90038,83.654294 708.69727,83.654297 C 708.74413,83.654294 708.83007,83.650388 708.95508,83.642578 C 709.08007,83.634763 709.17772,83.630857 709.24805,83.630859 L 709.24805,86.080078 C 709.13866,86.080073 708.98632,86.08398 708.79102,86.091797 C 708.59569,86.099605 708.45116,86.103511 708.35742,86.103516 C 707.57616,86.103511 706.92382,86.056636 706.40039,85.962891 C 705.87695,85.869136 705.43163,85.724605 705.06445,85.529297 C 704.61913,85.263668 704.30273,84.904293 704.11523,84.451172 C 703.93554,84.005857 703.8457,83.228514 703.8457,82.119141 L 703.8457,79.166016 C 703.8457,78.095706 703.64648,77.337895 703.24805,76.892578 C 702.84961,76.439458 702.17773,76.212896 701.23242,76.212891 C 701.18554,76.212896 701.10742,76.216802 700.99805,76.224609 C 700.88867,76.232427 700.80664,76.236333 700.75195,76.236328 L 700.75195,73.787109 C 700.80664,73.787117 700.88867,73.791023 700.99805,73.798828 C 701.10742,73.806648 701.18554,73.810554 701.23242,73.810547 C 702.16992,73.810554 702.83789,73.583992 703.23633,73.130859 C 703.64257,72.677743 703.8457,71.912119 703.8457,70.833984 L 703.8457,67.904297 C 703.8457,66.787124 703.93554,66.001968 704.11523,65.548828 C 704.30273,65.095719 704.61913,64.736345 705.06445,64.470703 C 705.43163,64.275408 705.87695,64.130876 706.40039,64.037109 C 706.92382,63.943377 707.57616,63.896502 708.35742,63.896484 C 708.45116,63.896502 708.59569,63.900408 708.79102,63.908203 C 708.98632,63.916033 709.13866,63.919939 709.24805,63.919922 M 703.0957,93.966797 L 709.01367,93.966797 L 709.01367,96.462891 L 706.25977,96.462891 L 706.25977,113.8418 L 709.01367,113.8418 L 709.01367,116.33789 L 703.0957,116.33789 L 703.0957,93.966797"
+       id="text5546" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 760.75195,63.908203 L 761.54883,63.908203 C 762.4082,63.90822 763.09961,63.955095 763.62305,64.048828 C 764.14648,64.142595 764.58398,64.291033 764.93555,64.494141 C 765.38085,64.744157 765.69335,65.103532 765.87305,65.572266 C 766.06054,66.033218 766.15429,66.806655 766.1543,67.892578 L 766.1543,70.845703 C 766.15429,71.916025 766.35351,72.677743 766.75195,73.130859 C 767.15038,73.57618 767.82226,73.798836 768.76758,73.798828 C 768.81444,73.798836 768.89257,73.794929 769.00195,73.787109 C 769.11132,73.779304 769.19335,73.775398 769.24805,73.775391 L 769.24805,76.224609 L 768.81445,76.224609 C 767.83788,76.224614 767.15038,76.443364 766.75195,76.880859 C 766.35351,77.318363 766.15429,78.076175 766.1543,79.154297 L 766.1543,82.107422 C 766.15429,83.224607 766.06054,84.009763 765.87305,84.462891 C 765.69335,84.916012 765.38085,85.267574 764.93555,85.517578 C 764.56835,85.712886 764.12304,85.857417 763.59961,85.951172 C 763.07617,86.044917 762.42382,86.091792 761.64258,86.091797 C 761.54883,86.091792 761.40429,86.087886 761.20898,86.080078 C 761.01367,86.072261 760.86133,86.068355 760.75195,86.068359 L 760.75195,83.619141 C 760.82226,83.619138 760.91992,83.623044 761.04492,83.630859 C 761.16992,83.638669 761.25586,83.642576 761.30273,83.642578 C 762.09179,83.642576 762.62304,83.490232 762.89648,83.185547 C 763.17773,82.88867 763.31836,82.263671 763.31836,81.310547 L 763.31836,78.509766 C 763.31836,77.337895 763.49414,76.513677 763.8457,76.037109 C 764.19726,75.55274 764.83007,75.20899 765.74414,75.005859 C 764.83007,74.794928 764.19726,74.447272 763.8457,73.962891 C 763.49414,73.478523 763.31836,72.658212 763.31836,71.501953 L 763.31836,68.666016 C 763.31836,67.712904 763.17773,67.087905 762.89648,66.791016 C 762.62304,66.486343 762.09179,66.333999 761.30273,66.333984 C 761.25586,66.333999 761.16992,66.337906 761.04492,66.345703 C 760.91992,66.35353 760.82226,66.357437 760.75195,66.357422 L 760.75195,63.908203 M 767.00977,93.955078 L 767.00977,116.32617 L 761.08008,116.32617 L 761.08008,113.83008 L 763.8457,113.83008 L 763.8457,96.451172 L 761.08008,96.451172 L 761.08008,93.955078 L 767.00977,93.955078"
+       id="text5554" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 823.79883,62.876953 L 826.21289,62.876953 L 826.21289,86.876953 L 823.79883,86.876953 L 823.79883,62.876953 M 827.10352,113.44336 L 821.29102,93.509766 L 822.87305,93.509766 L 828.70898,113.44336 L 827.10352,113.44336"
+       id="text5564" />
+    <g
+       id="g5770"
+       transform="translate(0,3.75)">
+      <text
+         sodipodi:linespacing="125%"
+         id="text5570"
+         y="139.30469"
+         x="52.152344"
+         style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+         xml:space="preserve"><tspan
+           y="139.30469"
+           x="52.152344"
+           id="tspan5572"
+           sodipodi:role="line">Caps Lock</tspan></text>
+      <path
+         id="path5584"
+         d="M 26.25,142.5 L 15,157.5 L 22.5,157.5 L 22.5,165 L 30,165 L 30,157.5 L 37.5,157.5 L 26.25,142.5 z M 25.21875,146.71875 L 27.25,146.71875 L 30.375,155.34375 L 28.5,155.34375 L 27.90625,153.5625 L 24.5625,153.5625 L 24,155.34375 L 22.125,155.34375 L 25.21875,146.71875 z M 26.25,148.4375 L 25.03125,152.09375 L 27.4375,152.09375 L 26.25,148.4375 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 365.17969,141.57422 C 364.53905,142.44141 363.80858,143.07813 362.98828,143.48438 C 362.17577,143.89062 361.21874,144.09375 360.11719,144.09375 C 357.70312,144.09375 355.74609,143.25781 354.24609,141.58594 C 352.7539,139.90625 352.00781,137.70313 352.00781,134.97656 C 352.00781,132.22657 352.7539,130.02736 354.24609,128.37891 C 355.73828,126.73049 357.72656,125.90627 360.21094,125.90625 C 362.37499,125.90627 364.14061,126.4258 365.50781,127.46484 C 366.87498,128.49611 367.68748,129.91798 367.94531,131.73047 L 364.32422,131.73047 C 364.10546,130.83204 363.65624,130.14845 362.97656,129.67969 C 362.30468,129.21095 361.42577,128.97658 360.33984,128.97656 C 358.89452,128.97658 357.75781,129.50783 356.92969,130.57031 C 356.10937,131.62501 355.69921,133.08595 355.69922,134.95313 C 355.69921,136.82813 356.1289,138.29688 356.98828,139.35938 C 357.84765,140.42188 359.02734,140.95313 360.52734,140.95313 C 361.65233,140.95313 362.59374,140.6211 363.35156,139.95703 C 364.10936,139.29297 364.57811,138.38282 364.75781,137.22656 L 360.84375,137.22656 L 360.84375,134.27344 L 367.99219,134.27344 L 367.99219,143.61328 L 365.61328,143.61328 L 365.17969,141.57422"
+       id="text5657" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 143.15039,203.63086 L 143.15039,200.63086 L 152.53711,189.49805 L 143.33789,189.49805 L 143.33789,186.36914 L 156.84961,186.36914 L 156.84961,189.36914 L 147.43945,200.51367 L 156.63867,200.51367 L 156.63867,203.63086 L 143.15039,203.63086"
+       id="text5679" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 202.37109,203.63086 L 207.79688,194.81836 L 202.37109,186.36914 L 206.47266,186.36914 L 210,192.4043 L 213.50391,186.36914 L 217.62891,186.36914 L 212.20313,194.79492 L 217.62891,203.63086 L 213.52734,203.63086 L 210,197.6543 L 206.47266,203.63086 L 202.37109,203.63086"
+       id="text5683" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 277.875,197.68359 C 277.74217,199.64454 276.98436,201.20313 275.60156,202.35938 C 274.22655,203.51563 272.42968,204.09375 270.21094,204.09375 C 267.65624,204.09375 265.66796,203.29688 264.24609,201.70313 C 262.83203,200.10938 262.125,197.87501 262.125,195 C 262.125,192.06251 262.84765,189.81251 264.29297,188.25 C 265.73828,186.68752 267.8164,185.90627 270.52734,185.90625 C 272.73046,185.90627 274.46874,186.44533 275.74219,187.52344 C 277.02342,188.59377 277.72655,190.10939 277.85156,192.07031 L 274.34766,192.07031 C 274.19921,191.09376 273.80077,190.35158 273.15234,189.84375 C 272.50389,189.32814 271.6289,189.07033 270.52734,189.07031 C 268.96484,189.07033 267.77734,189.57423 266.96484,190.58203 C 266.15234,191.58986 265.74609,193.06251 265.74609,195 C 265.74609,196.87501 266.14843,198.32422 266.95313,199.34766 C 267.76562,200.3711 268.91796,200.88282 270.41016,200.88281 C 271.48827,200.88282 272.37108,200.60938 273.05859,200.0625 C 273.74608,199.50782 274.19139,198.71485 274.39453,197.68359 L 277.875,197.68359"
+       id="text5687" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 386.32031,200.51367 L 390.52734,200.51367 C 391.51952,200.51367 392.24218,200.33399 392.69531,199.97461 C 393.14843,199.61524 393.37499,199.04883 393.375,198.27539 C 393.37499,197.47071 393.15233,196.89258 392.70703,196.54102 C 392.26171,196.18165 391.52733,196.00196 390.50391,196.00195 L 386.32031,196.00195 L 386.32031,200.51367 M 386.32031,193.04883 L 390.375,193.04883 C 391.24999,193.04884 391.89061,192.9004 392.29688,192.60352 C 392.70311,192.29884 392.90624,191.82228 392.90625,191.17383 C 392.90624,190.54103 392.70702,190.084 392.30859,189.80273 C 391.91796,189.51369 391.26561,189.36915 390.35156,189.36914 L 386.32031,189.36914 L 386.32031,193.04883 M 382.92188,203.63086 L 382.92188,186.36914 L 391.05469,186.36914 C 392.8203,186.36916 394.16405,186.74416 395.08594,187.49414 C 396.01561,188.23634 396.48045,189.31837 396.48047,190.74023 C 396.48045,191.61525 396.30858,192.34571 395.96484,192.93164 C 395.62108,193.51759 395.10545,193.97071 394.41797,194.29102 C 395.30858,194.6504 395.97264,195.16993 396.41016,195.84961 C 396.85545,196.52149 397.07811,197.36133 397.07813,198.36914 C 397.07811,200.04883 396.53123,201.34571 395.4375,202.25977 C 394.34374,203.17383 392.79296,203.63086 390.78516,203.63086 L 382.92188,203.63086"
+       id="text5695" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 442.88672,203.63086 L 442.88672,186.36914 L 446.60156,186.36914 L 453.60938,198.22852 L 453.60938,186.36914 L 457.11328,186.36914 L 457.11328,203.63086 L 453.44531,203.63086 L 446.39063,191.77148 L 446.39063,203.63086 L 442.88672,203.63086"
+       id="text5699" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 501.32813,203.63086 L 501.32813,186.36914 L 506.57813,186.36914 L 510.01172,199.50586 L 513.39844,186.36914 L 518.67188,186.36914 L 518.67188,203.63086 L 515.34375,203.63086 L 515.34375,189.70898 L 511.83984,203.63086 L 508.20703,203.63086 L 504.65625,189.70898 L 504.65625,203.63086 L 501.32813,203.63086"
+       id="text5703" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 720.78516,126.7793 L 723.03516,126.7793 L 723.03516,133.33008 L 720.78516,133.33008 L 720.78516,126.7793 M 716.96484,126.7793 L 719.21484,126.7793 L 719.21484,133.33008 L 716.96484,133.33008 L 716.96484,126.7793 M 718.88672,156.7793 L 721.13672,156.7793 L 721.13672,163.33008 L 718.88672,163.33008 L 718.88672,156.7793"
+       id="text5731" />
+    <g
+       id="g5790">
+      <text
+         xml:space="preserve"
+         style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+         x="31.8125"
+         y="201.19531"
+         id="text5753"
+         sodipodi:linespacing="125%"><tspan
+           sodipodi:role="line"
+           id="tspan5755"
+           x="31.8125"
+           y="201.19531">Shift</tspan></text>
+      <path
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 27.25,207.125 L 16,222.125 L 23.5,222.125 L 23.5,229.625 L 31,229.625 L 31,222.125 L 38.5,222.125 L 27.25,207.125 z "
+         id="path5757" />
+    </g>
+    <g
+       id="g5795"
+       transform="translate(727.5,0)">
+      <text
+         sodipodi:linespacing="125%"
+         id="text5797"
+         y="201.19531"
+         x="31.8125"
+         style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+         xml:space="preserve"><tspan
+           y="201.19531"
+           x="31.8125"
+           id="tspan5799"
+           sodipodi:role="line">Shift</tspan></text>
+      <path
+         id="path5801"
+         d="M 27.25,207.125 L 16,222.125 L 23.5,222.125 L 23.5,229.625 L 31,229.625 L 31,222.125 L 38.5,222.125 L 27.25,207.125 z "
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 576.90234,189.63867 L 576.90234,192.20508 L 566.4375,196.48242 L 576.90234,200.74805 L 576.90234,203.31445 L 563.09766,197.63086 L 563.09766,195.29883 L 576.90234,189.63867 M 568.21875,237.68555 L 568.21875,236.31445 C 568.875,236.12695 569.35937,235.83789 569.67188,235.44727 C 569.98437,235.05664 570.14062,234.54883 570.14063,233.92383 L 570.14063,233.63086 L 568.21875,233.63086 L 568.21875,230.10352 L 571.76953,230.10352 L 571.76953,233.49023 C 571.76953,234.6543 571.46875,235.59179 570.86719,236.30273 C 570.27343,237.01367 569.39062,237.47461 568.21875,237.68555"
+       id="text5803" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 623.09766,189.63867 L 636.90234,195.29883 L 636.90234,197.63086 L 623.09766,203.31445 L 623.09766,200.74805 L 633.58594,196.48242 L 623.09766,192.20508 L 623.09766,189.63867 M 628.21875,233.63086 L 628.21875,230.10352 L 631.74609,230.10352 L 631.74609,233.63086 L 628.21875,233.63086"
+       id="text5813" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 688.44727,198.61523 C 688.44726,198.5293 688.44335,198.41602 688.43555,198.27539 C 688.42773,198.12696 688.42382,198.01758 688.42383,197.94727 C 688.42382,197.25977 688.49804,196.68946 688.64648,196.23633 C 688.79492,195.7754 689.0332,195.34571 689.36133,194.94727 C 689.61132,194.6504 689.98242,194.31056 690.47461,193.92773 C 690.9746,193.54493 691.29882,193.26759 691.44727,193.0957 C 691.75976,192.74415 691.9746,192.42775 692.0918,192.14648 C 692.20898,191.86525 692.26757,191.55665 692.26758,191.2207 C 692.26757,190.47853 692.06054,189.9004 691.64648,189.48633 C 691.23241,189.07228 690.65429,188.86525 689.91211,188.86523 C 689.16992,188.86525 688.58398,189.11525 688.1543,189.61523 C 687.73242,190.10744 687.50195,190.80275 687.46289,191.70117 L 684.1582,191.70117 L 684.1582,191.33789 C 684.1582,189.68947 684.67773,188.37697 685.7168,187.40039 C 686.76367,186.41603 688.16992,185.92385 689.93555,185.92383 C 691.74023,185.92385 693.17382,186.38869 694.23633,187.31836 C 695.30663,188.24025 695.84178,189.47853 695.8418,191.0332 C 695.84178,191.58009 695.77928,192.07228 695.6543,192.50977 C 695.5371,192.93946 695.3535,193.33399 695.10352,193.69336 C 694.78319,194.14649 694.2871,194.63868 693.61523,195.16992 C 692.95116,195.69337 692.54882,196.01759 692.4082,196.14258 C 692.11132,196.43165 691.89648,196.73634 691.76367,197.05664 C 691.63866,197.37696 691.57616,197.75977 691.57617,198.20508 C 691.57616,198.24415 691.58007,198.31055 691.58789,198.4043 C 691.59569,198.49805 691.5996,198.56836 691.59961,198.61523 L 688.44727,198.61523 M 688.2832,203.63086 L 688.2832,200.19727 L 691.74023,200.19727 L 691.74023,203.63086 L 688.2832,203.63086 M 686.31445,235.85742 L 692.12695,215.92383 L 693.73242,215.92383 L 687.89648,235.85742 L 686.31445,235.85742"
+       id="text5819" />
+    <path
+       style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 18,271.78906 C 17.911447,273.09636 17.406239,274.13542 16.484375,274.90625 C 15.5677,275.67708 14.369784,276.0625 12.890625,276.0625 C 11.187496,276.0625 9.8619761,275.53125 8.9140625,274.46875 C 7.971353,273.40625 7.4999993,271.91667 7.5,270 C 7.4999993,268.04167 7.9817696,266.54168 8.9453125,265.5 C 9.9088511,264.45834 11.294266,263.93751 13.101563,263.9375 C 14.570305,263.93751 15.729158,264.29689 16.578125,265.01563 C 17.432281,265.72918 17.901031,266.73959 17.984375,268.04688 L 15.648438,268.04688 C 15.54947,267.39584 15.283846,266.90105 14.851563,266.5625 C 14.419263,266.21876 13.83593,266.04688 13.101563,266.04688 C 12.059891,266.04688 11.268225,266.38282 10.726563,267.05469 C 10.184892,267.72657 9.9140594,268.70834 9.9140625,270 C 9.9140594,271.25 10.182288,272.21615 10.71875,272.89844 C 11.260412,273.58073 12.028641,273.92188 13.023438,273.92188 C 13.742181,273.92188 14.330722,273.73959 14.789063,273.375 C 15.247387,273.00521 15.544262,272.47657 15.679688,271.78906 L 18,271.78906 M 23.46875,275.80469 C 23.260412,275.8099 23.010412,275.81771 22.71875,275.82813 C 22.432288,275.84375 22.249996,275.85156 22.171875,275.85156 C 21.302081,275.85156 20.705727,275.6901 20.382813,275.36719 C 20.065103,275.03906 19.906249,274.39583 19.90625,273.4375 L 19.90625,268.84375 L 18.78125,268.84375 L 18.78125,267.25 L 19.90625,267.25 L 19.90625,264.92969 L 22.15625,264.92969 L 22.15625,267.25 L 23.46875,267.25 L 23.46875,268.84375 L 22.15625,268.84375 L 22.15625,273.54688 C 22.156247,273.77084 22.205726,273.91927 22.304688,273.99219 C 22.403642,274.0599 22.606767,274.09375 22.914063,274.09375 L 23.46875,274.09375 L 23.46875,275.80469 M 24.789063,275.74219 L 24.789063,267.25 L 26.898438,267.25 L 26.898438,268.70313 C 27.195309,268.1198 27.541663,267.69272 27.9375,267.42188 C 28.333329,267.14584 28.804682,267.00782 29.351563,267.00781 C 29.440099,267.00782 29.507807,267.01043 29.554688,267.01563 C 29.606765,267.01563 29.648432,267.01824 29.679688,267.02344 L 29.6875,269.32813 L 28.929688,269.32813 C 28.309891,269.32813 27.843746,269.48959 27.53125,269.8125 C 27.218747,270.13542 27.062497,270.61459 27.0625,271.25 L 27.0625,275.74219 L 24.789063,275.74219 M 31.023438,275.74219 L 31.023438,264.23438 L 33.296875,264.23438 L 33.296875,275.74219 L 31.023438,275.74219"
+       id="text5827" />
+    <path
+       style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 612.96875,266.53906 L 611.375,271.4375 L 614.57031,271.4375 L 612.96875,266.53906 M 611.59375,264.23438 L 614.32813,264.23438 L 618.47656,275.74219 L 615.99219,275.74219 L 615.21094,273.375 L 610.75,273.375 L 609.99219,275.74219 L 607.5,275.74219 L 611.59375,264.23438 M 619.53906,275.74219 L 619.53906,264.23438 L 621.8125,264.23438 L 621.8125,275.74219 L 619.53906,275.74219 M 627.64063,275.80469 C 627.43229,275.8099 627.18229,275.81771 626.89063,275.82813 C 626.60416,275.84375 626.42187,275.85156 626.34375,275.85156 C 625.47396,275.85156 624.8776,275.6901 624.55469,275.36719 C 624.23698,275.03906 624.07812,274.39583 624.07813,273.4375 L 624.07813,268.84375 L 622.95313,268.84375 L 622.95313,267.25 L 624.07813,267.25 L 624.07813,264.92969 L 626.32813,264.92969 L 626.32813,267.25 L 627.64063,267.25 L 627.64063,268.84375 L 626.32813,268.84375 L 626.32813,273.54688 C 626.32812,273.77084 626.3776,273.91927 626.47656,273.99219 C 626.57552,274.0599 626.77864,274.09375 627.08594,274.09375 L 627.64063,274.09375 L 627.64063,275.80469"
+       id="text5835"
+       sodipodi:nodetypes="cccccccccccccccccccsssccccccccccccsccc" />
+    <path
+       style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 828,271.78906 C 827.91145,273.09636 827.40624,274.13542 826.48438,274.90625 C 825.5677,275.67708 824.36978,276.0625 822.89063,276.0625 C 821.1875,276.0625 819.86198,275.53125 818.91406,274.46875 C 817.97135,273.40625 817.5,271.91667 817.5,270 C 817.5,268.04167 817.98177,266.54168 818.94531,265.5 C 819.90885,264.45834 821.29427,263.93751 823.10156,263.9375 C 824.5703,263.93751 825.72916,264.29689 826.57813,265.01563 C 827.43228,265.72918 827.90103,266.73959 827.98438,268.04688 L 825.64844,268.04688 C 825.54947,267.39584 825.28385,266.90105 824.85156,266.5625 C 824.41926,266.21876 823.83593,266.04688 823.10156,266.04688 C 822.05989,266.04688 821.26822,266.38282 820.72656,267.05469 C 820.18489,267.72657 819.91406,268.70834 819.91406,270 C 819.91406,271.25 820.18229,272.21615 820.71875,272.89844 C 821.26041,273.58073 822.02864,273.92188 823.02344,273.92188 C 823.74218,273.92188 824.33072,273.73959 824.78906,273.375 C 825.24739,273.00521 825.54426,272.47657 825.67969,271.78906 L 828,271.78906 M 833.46875,275.80469 C 833.26041,275.8099 833.01041,275.81771 832.71875,275.82813 C 832.43229,275.84375 832.25,275.85156 832.17188,275.85156 C 831.30208,275.85156 830.70573,275.6901 830.38281,275.36719 C 830.0651,275.03906 829.90625,274.39583 829.90625,273.4375 L 829.90625,268.84375 L 828.78125,268.84375 L 828.78125,267.25 L 829.90625,267.25 L 829.90625,264.92969 L 832.15625,264.92969 L 832.15625,267.25 L 833.46875,267.25 L 833.46875,268.84375 L 832.15625,268.84375 L 832.15625,273.54688 C 832.15625,273.77084 832.20573,273.91927 832.30469,273.99219 C 832.40364,274.0599 832.60677,274.09375 832.91406,274.09375 L 833.46875,274.09375 L 833.46875,275.80469 M 834.78906,275.74219 L 834.78906,267.25 L 836.89844,267.25 L 836.89844,268.70313 C 837.19531,268.1198 837.54166,267.69272 837.9375,267.42188 C 838.33333,267.14584 838.80468,267.00782 839.35156,267.00781 C 839.4401,267.00782 839.50781,267.01043 839.55469,267.01563 C 839.60677,267.01563 839.64843,267.01824 839.67969,267.02344 L 839.6875,269.32813 L 838.92969,269.32813 C 838.30989,269.32813 837.84375,269.48959 837.53125,269.8125 C 837.21875,270.13542 837.0625,270.61459 837.0625,271.25 L 837.0625,275.74219 L 834.78906,275.74219 M 841.02344,275.74219 L 841.02344,264.23438 L 843.29688,264.23438 L 843.29688,275.74219 L 841.02344,275.74219"
+       id="text5839" />
+    <path
+       style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 108.94531,264.01953 L 105.64844,252.51172 L 108.10156,252.51172 L 110.07031,260.62891 L 111.73438,252.51172 L 114.25781,252.51172 L 115.92188,260.62891 L 117.89063,252.51172 L 120.32031,252.51172 L 117.03125,264.01953 L 114.77344,264.01953 L 112.99219,255.20703 L 111.20313,264.01953 L 108.94531,264.01953 M 121.5,254.58203 L 121.5,252.51172 L 123.77344,252.51172 L 123.77344,254.58203 L 121.5,254.58203 M 121.5,264.01953 L 121.5,255.52734 L 123.77344,255.52734 L 123.77344,264.01953 L 121.5,264.01953 M 125.79688,264.01953 L 125.79688,255.52734 L 128.02344,255.52734 L 128.02344,256.53516 C 128.34114,256.12371 128.71614,255.81641 129.14844,255.61328 C 129.58072,255.40496 130.06249,255.30079 130.59375,255.30078 C 131.53124,255.30079 132.23176,255.54558 132.69531,256.03516 C 133.16405,256.51954 133.39843,257.25131 133.39844,258.23047 L 133.39844,264.01953 L 131.125,264.01953 L 131.125,258.88672 C 131.12499,258.27735 131.02083,257.84245 130.8125,257.58203 C 130.60937,257.32162 130.27604,257.19141 129.8125,257.19141 C 129.27604,257.19141 128.85156,257.35287 128.53906,257.67578 C 128.22656,257.9935 128.07031,258.42839 128.07031,258.98047 L 128.07031,264.01953 L 125.79688,264.01953 M 106.64844,284.01953 L 106.64844,272.51172 L 109.01563,272.51172 L 109.01563,277.23828 L 113.50781,272.51172 L 116.46875,272.51172 L 111.875,277.16797 L 116.88281,284.01953 L 113.99219,284.01953 L 110.24219,278.75391 L 109.01563,279.97266 L 109.01563,284.01953 L 106.64844,284.01953 M 122.9375,281.44141 L 125.20313,281.44141 C 124.97395,282.33724 124.51041,283.04037 123.8125,283.55078 C 123.11979,284.05599 122.27343,284.30859 121.27344,284.30859 C 120.04427,284.30859 119.07031,283.89714 118.35156,283.07422 C 117.63281,282.2461 117.27344,281.1263 117.27344,279.71484 C 117.27344,278.32422 117.6276,277.22787 118.33594,276.42578 C 119.04427,275.62371 120.01302,275.22267 121.24219,275.22266 C 122.54427,275.22267 123.54947,275.6185 124.25781,276.41016 C 124.96614,277.19662 125.3203,278.31902 125.32031,279.77734 C 125.3203,279.93881 125.3177,280.0612 125.3125,280.14453 C 125.31249,280.22266 125.30728,280.29818 125.29688,280.37109 L 119.625,280.37109 C 119.65625,281.03776 119.81771,281.54037 120.10938,281.87891 C 120.40625,282.21745 120.83073,282.38672 121.38281,282.38672 C 121.77343,282.38672 122.09374,282.3112 122.34375,282.16016 C 122.59374,282.00391 122.79166,281.76433 122.9375,281.44141 M 119.625,278.87891 L 122.96875,278.87891 C 122.94791,278.306 122.79426,277.8711 122.50781,277.57422 C 122.22656,277.27214 121.82031,277.1211 121.28906,277.12109 C 120.79427,277.1211 120.40364,277.27214 120.11719,277.57422 C 119.83593,277.87631 119.67187,278.3112 119.625,278.87891 M 127.16406,287.42578 L 127.16406,285.58984 C 127.23698,285.60026 127.3125,285.60807 127.39063,285.61328 C 127.46875,285.61849 127.57031,285.62109 127.69531,285.62109 C 128.14323,285.62109 128.47916,285.51432 128.70313,285.30078 C 128.92708,285.09245 129.03906,284.77734 129.03906,284.35547 C 129.03906,284.32422 129.03385,284.28516 129.02344,284.23828 C 129.01302,284.19141 129.0026,284.15234 128.99219,284.12109 L 125.92969,275.52734 L 128.42969,275.52734 L 130.21875,281.65234 L 131.96094,275.52734 L 134.35156,275.52734 L 130.85938,285.54297 C 130.59895,286.29297 130.27343,286.80338 129.88281,287.07422 C 129.49218,287.35026 128.90625,287.48828 128.125,287.48828 C 127.98437,287.48828 127.83333,287.48307 127.67188,287.47266 C 127.51041,287.46224 127.34114,287.44661 127.16406,287.42578"
+       id="text5872" />
+    <path
+       style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 708.94531,264.01953 L 705.64844,252.51172 L 708.10156,252.51172 L 710.07031,260.62891 L 711.73438,252.51172 L 714.25781,252.51172 L 715.92188,260.62891 L 717.89063,252.51172 L 720.32031,252.51172 L 717.03125,264.01953 L 714.77344,264.01953 L 712.99219,255.20703 L 711.20313,264.01953 L 708.94531,264.01953 M 721.5,254.58203 L 721.5,252.51172 L 723.77344,252.51172 L 723.77344,254.58203 L 721.5,254.58203 M 721.5,264.01953 L 721.5,255.52734 L 723.77344,255.52734 L 723.77344,264.01953 L 721.5,264.01953 M 725.79688,264.01953 L 725.79688,255.52734 L 728.02344,255.52734 L 728.02344,256.53516 C 728.34114,256.12371 728.71614,255.81641 729.14844,255.61328 C 729.58072,255.40496 730.06249,255.30079 730.59375,255.30078 C 731.53124,255.30079 732.23176,255.54558 732.69531,256.03516 C 733.16405,256.51954 733.39843,257.25131 733.39844,258.23047 L 733.39844,264.01953 L 731.125,264.01953 L 731.125,258.88672 C 731.12499,258.27735 731.02083,257.84245 730.8125,257.58203 C 730.60937,257.32162 730.27604,257.19141 729.8125,257.19141 C 729.27604,257.19141 728.85156,257.35287 728.53906,257.67578 C 728.22656,257.9935 728.07031,258.42839 728.07031,258.98047 L 728.07031,264.01953 L 725.79688,264.01953 M 706.64844,284.01953 L 706.64844,272.51172 L 709.01563,272.51172 L 709.01563,277.23828 L 713.50781,272.51172 L 716.46875,272.51172 L 711.875,277.16797 L 716.88281,284.01953 L 713.99219,284.01953 L 710.24219,278.75391 L 709.01563,279.97266 L 709.01563,284.01953 L 706.64844,284.01953 M 722.9375,281.44141 L 725.20313,281.44141 C 724.97395,282.33724 724.51041,283.04037 723.8125,283.55078 C 723.11979,284.05599 722.27343,284.30859 721.27344,284.30859 C 720.04427,284.30859 719.07031,283.89714 718.35156,283.07422 C 717.63281,282.2461 717.27344,281.1263 717.27344,279.71484 C 717.27344,278.32422 717.6276,277.22787 718.33594,276.42578 C 719.04427,275.62371 720.01302,275.22267 721.24219,275.22266 C 722.54427,275.22267 723.54947,275.6185 724.25781,276.41016 C 724.96614,277.19662 725.3203,278.31902 725.32031,279.77734 C 725.3203,279.93881 725.3177,280.0612 725.3125,280.14453 C 725.31249,280.22266 725.30728,280.29818 725.29688,280.37109 L 719.625,280.37109 C 719.65625,281.03776 719.81771,281.54037 720.10938,281.87891 C 720.40625,282.21745 720.83073,282.38672 721.38281,282.38672 C 721.77343,282.38672 722.09374,282.3112 722.34375,282.16016 C 722.59374,282.00391 722.79166,281.76433 722.9375,281.44141 M 719.625,278.87891 L 722.96875,278.87891 C 722.94791,278.306 722.79426,277.8711 722.50781,277.57422 C 722.22656,277.27214 721.82031,277.1211 721.28906,277.12109 C 720.79427,277.1211 720.40364,277.27214 720.11719,277.57422 C 719.83593,277.87631 719.67187,278.3112 719.625,278.87891 M 727.16406,287.42578 L 727.16406,285.58984 C 727.23698,285.60026 727.3125,285.60807 727.39063,285.61328 C 727.46875,285.61849 727.57031,285.62109 727.69531,285.62109 C 728.14323,285.62109 728.47916,285.51432 728.70313,285.30078 C 728.92708,285.09245 729.03906,284.77734 729.03906,284.35547 C 729.03906,284.32422 729.03385,284.28516 729.02344,284.23828 C 729.01302,284.19141 729.0026,284.15234 728.99219,284.12109 L 725.92969,275.52734 L 728.42969,275.52734 L 730.21875,281.65234 L 731.96094,275.52734 L 734.35156,275.52734 L 730.85938,285.54297 C 730.59895,286.29297 730.27343,286.80338 729.88281,287.07422 C 729.49218,287.35026 728.90625,287.48828 728.125,287.48828 C 727.98437,287.48828 727.83333,287.48307 727.67188,287.47266 C 727.51041,287.46224 727.34114,287.44661 727.16406,287.42578"
+       id="text5878" />
+    <path
+       style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 759.98438,275.60938 L 759.98438,264.10156 L 763.48438,264.10156 L 765.77344,272.85938 L 768.03125,264.10156 L 771.54688,264.10156 L 771.54688,275.60938 L 769.32813,275.60938 L 769.32813,266.32813 L 766.99219,275.60938 L 764.57031,275.60938 L 762.20313,266.32813 L 762.20313,275.60938 L 759.98438,275.60938 M 778.99219,273.03125 L 781.25781,273.03125 C 781.02864,273.92709 780.5651,274.63021 779.86719,275.14063 C 779.17447,275.64583 778.32812,275.89844 777.32813,275.89844 C 776.09896,275.89844 775.125,275.48698 774.40625,274.66406 C 773.6875,273.83594 773.32812,272.71615 773.32813,271.30469 C 773.32812,269.91407 773.68229,268.81772 774.39063,268.01563 C 775.09896,267.21355 776.06771,266.81251 777.29688,266.8125 C 778.59895,266.81251 779.60416,267.20834 780.3125,268 C 781.02083,268.78647 781.37499,269.90886 781.375,271.36719 C 781.37499,271.52865 781.37239,271.65105 781.36719,271.73438 C 781.36718,271.8125 781.36197,271.88802 781.35156,271.96094 L 775.67969,271.96094 C 775.71093,272.62761 775.87239,273.13021 776.16406,273.46875 C 776.46093,273.80729 776.88541,273.97656 777.4375,273.97656 C 777.82812,273.97656 778.14843,273.90104 778.39844,273.75 C 778.64843,273.59375 778.84635,273.35417 778.99219,273.03125 M 775.67969,270.46875 L 779.02344,270.46875 C 779.0026,269.89584 778.84895,269.46094 778.5625,269.16406 C 778.28124,268.86199 777.87499,268.71094 777.34375,268.71094 C 776.84895,268.71094 776.45833,268.86199 776.17188,269.16406 C 775.89062,269.46615 775.72656,269.90105 775.67969,270.46875 M 782.88281,275.60938 L 782.88281,267.11719 L 785.10938,267.11719 L 785.10938,268.125 C 785.42708,267.71355 785.80208,267.40626 786.23438,267.20313 C 786.66666,266.9948 787.14843,266.89063 787.67969,266.89063 C 788.61718,266.89063 789.3177,267.13543 789.78125,267.625 C 790.24999,268.10938 790.48437,268.84115 790.48438,269.82031 L 790.48438,275.60938 L 788.21094,275.60938 L 788.21094,270.47656 C 788.21093,269.86719 788.10676,269.4323 787.89844,269.17188 C 787.69531,268.91147 787.36197,268.78126 786.89844,268.78125 C 786.36197,268.78126 785.9375,268.94272 785.625,269.26563 C 785.3125,269.58334 785.15625,270.01823 785.15625,270.57031 L 785.15625,275.60938 L 782.88281,275.60938 M 800.01563,267.11719 L 800.01563,275.60938 L 797.78906,275.60938 L 797.78906,274.60156 C 797.46614,275.01302 797.08854,275.32292 796.65625,275.53125 C 796.22916,275.73437 795.74739,275.83594 795.21094,275.83594 C 794.27864,275.83594 793.57812,275.59115 793.10938,275.10156 C 792.64583,274.61198 792.41406,273.88021 792.41406,272.90625 L 792.41406,267.11719 L 794.6875,267.11719 L 794.6875,272.25 C 794.6875,272.85417 794.78906,273.28646 794.99219,273.54688 C 795.19531,273.80209 795.53125,273.92969 796,273.92969 C 796.53124,273.92969 796.95312,273.77084 797.26563,273.45313 C 797.58333,273.13021 797.74218,272.69271 797.74219,272.14063 L 797.74219,267.11719 L 800.01563,267.11719"
+       id="text5884" />
+    <text
+       xml:space="preserve"
+       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+       x="314.20523"
+       y="144.79591"
+       id="text2980"><tspan
+         sodipodi:role="line"
+         id="tspan2982"
+         x="314.20523"
+         y="144.79591"
+         style="font-size:14px;font-weight:bold;text-align:center;text-anchor:middle;-inkscape-font-specification:Bitstream Vera Sans Bold">full</tspan><tspan
+         sodipodi:role="line"
+         x="314.20523"
+         y="162.29591"
+         id="tspan2984"
+         style="font-size:14px;font-weight:bold;text-align:center;text-anchor:middle;-inkscape-font-specification:Bitstream Vera Sans Bold">screen</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+       x="180"
+       y="86"
+       id="text2986"><tspan
+         sodipodi:role="line"
+         id="tspan2988"
+         x="180"
+         y="86"
+         style="font-size:13px;font-weight:bold;text-align:center;text-anchor:middle;-inkscape-font-specification:Bitstream Vera Sans Bold">tabbed</tspan><tspan
+         sodipodi:role="line"
+         x="180"
+         y="102.25"
+         style="font-size:13px;font-weight:bold;text-align:center;text-anchor:middle;-inkscape-font-specification:Bitstream Vera Sans Bold"
+         id="tspan3030">layout</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+       x="240"
+       y="86"
+       id="text2990"><tspan
+         sodipodi:role="line"
+         id="tspan2992"
+         x="240"
+         y="86"
+         style="font-size:13px;font-weight:bold;text-align:center;text-anchor:middle;-inkscape-font-specification:Bitstream Vera Sans Bold">default</tspan><tspan
+         sodipodi:role="line"
+         x="240"
+         y="102.25"
+         style="font-size:13px;font-weight:bold;text-align:center;text-anchor:middle;-inkscape-font-specification:Bitstream Vera Sans Bold"
+         id="tspan3028">layout</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+       x="230.73412"
+       y="154.28845"
+       id="text2994"><tspan
+         sodipodi:role="line"
+         id="tspan2996"
+         x="230.73412"
+         y="154.28845"
+         style="font-size:13px;font-weight:bold;-inkscape-font-specification:Bitstream Vera Sans Bold">dmenu</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+       x="428.51135"
+       y="272.48416"
+       id="text2998"><tspan
+         sodipodi:role="line"
+         x="428.51135"
+         y="272.48416"
+         style="font-size:13px;font-weight:bold;text-align:center;text-anchor:middle;-inkscape-font-specification:Bitstream Vera Sans Bold"
+         id="tspan3004">focus floating/tiling</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+       x="480"
+       y="154"
+       id="text3006"><tspan
+         sodipodi:role="line"
+         id="tspan3008"
+         x="480"
+         y="154"
+         style="font-size:13px;font-weight:bold;-inkscape-font-specification:Bitstream Vera Sans Bold">left</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+       x="540"
+       y="154"
+       id="text3010"><tspan
+         sodipodi:role="line"
+         id="tspan3012"
+         x="540"
+         y="154"
+         style="font-size:13px;font-weight:bold;-inkscape-font-specification:Bitstream Vera Sans Bold">down</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+       x="600"
+       y="154"
+       id="text3014"><tspan
+         sodipodi:role="line"
+         id="tspan3016"
+         x="600"
+         y="154"
+         style="font-size:13px;font-weight:bold;-inkscape-font-specification:Bitstream Vera Sans Bold">up</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+       x="660"
+       y="154"
+       id="text3018"><tspan
+         sodipodi:role="line"
+         id="tspan3020"
+         x="660"
+         y="154"
+         style="font-size:13px;font-weight:bold;-inkscape-font-specification:Bitstream Vera Sans Bold">right</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+       x="434.21317"
+       y="146.87415"
+       id="text3022"><tspan
+         sodipodi:role="line"
+         x="434.21317"
+         y="146.87415"
+         style="font-size:13px;font-weight:bold;text-align:center;text-anchor:middle;-inkscape-font-specification:Bitstream Vera Sans Bold"
+         id="tspan3026">split</tspan><tspan
+         sodipodi:role="line"
+         x="434.21317"
+         y="163.12415"
+         style="font-size:13px;font-weight:bold;text-align:center;text-anchor:middle;-inkscape-font-specification:Bitstream Vera Sans Bold"
+         id="tspan3397">horiz.</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+       x="164.78459"
+       y="277.00677"
+       id="text2996"><tspan
+         sodipodi:role="line"
+         id="tspan2998"
+         x="164.78459"
+         y="277.00677"
+         style="font-size:18px;font-weight:bold;-inkscape-font-specification:Bitstream Vera Sans Bold">Mod1</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+       x="830.84515"
+       y="144.03874"
+       id="text3022-6"><tspan
+         sodipodi:role="line"
+         x="830.84515"
+         y="144.03874"
+         style="font-size:13px;font-weight:bold;text-align:center;text-anchor:middle;-inkscape-font-specification:Bitstream Vera Sans Bold"
+         id="tspan3026-2">open</tspan><tspan
+         sodipodi:role="line"
+         x="830.84515"
+         y="160.28874"
+         style="font-size:13px;font-weight:bold;text-align:center;text-anchor:middle;-inkscape-font-specification:Bitstream Vera Sans Bold"
+         id="tspan3385">terminal</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+       x="345.9798"
+       y="205.08424"
+       id="text3022-4"><tspan
+         sodipodi:role="line"
+         x="345.9798"
+         y="205.08424"
+         style="font-size:13px;font-weight:bold;text-align:center;text-anchor:middle;-inkscape-font-specification:Bitstream Vera Sans Bold"
+         id="tspan3026-5">split</tspan><tspan
+         sodipodi:role="line"
+         x="345.9798"
+         y="221.33424"
+         style="font-size:13px;font-weight:bold;text-align:center;text-anchor:middle;-inkscape-font-specification:Bitstream Vera Sans Bold"
+         id="tspan3397-1">vert.</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+       x="194.07654"
+       y="146.9129"
+       id="text2986-0"><tspan
+         sodipodi:role="line"
+         id="tspan2988-3"
+         x="194.07654"
+         y="146.9129"
+         style="font-size:13px;font-weight:bold;text-align:center;text-anchor:middle;-inkscape-font-specification:Bitstream Vera Sans Bold">stacked</tspan><tspan
+         sodipodi:role="line"
+         x="194.07654"
+         y="163.1629"
+         style="font-size:13px;font-weight:bold;text-align:center;text-anchor:middle;-inkscape-font-specification:Bitstream Vera Sans Bold"
+         id="tspan3030-7">layout</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+       x="135.30087"
+       y="145.95485"
+       id="text2986-0-8"><tspan
+         sodipodi:role="line"
+         x="135.30087"
+         y="145.95485"
+         style="font-size:13px;font-weight:bold;text-align:center;text-anchor:middle;-inkscape-font-specification:Bitstream Vera Sans Bold"
+         id="tspan3030-7-6">focus</tspan><tspan
+         sodipodi:role="line"
+         x="135.30087"
+         y="162.20485"
+         style="font-size:13px;font-weight:bold;text-align:center;text-anchor:middle;-inkscape-font-specification:Bitstream Vera Sans Bold"
+         id="tspan3477">parent</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+       x="278.85074"
+       y="86.411041"
+       id="text2994-0"><tspan
+         sodipodi:role="line"
+         id="tspan2996-4"
+         x="278.85074"
+         y="86.411041"
+         style="font-size:13px;font-weight:bold;-inkscape-font-specification:Bitstream Vera Sans Bold">resize</tspan><tspan
+         sodipodi:role="line"
+         x="278.85074"
+         y="102.66104"
+         style="font-size:13px;font-weight:bold;-inkscape-font-specification:Bitstream Vera Sans Bold"
+         id="tspan3500">mode</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:14px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans Bold"
+       x="340.89798"
+       y="83.480705"
+       id="text3755"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan3757"
+         x="340.89798"
+         y="83.480705"
+         style="font-size:22px">T</tspan></text>
+  </g>
+</svg>
diff --git a/docs/4.0/keyboard-layer2.png b/docs/4.0/keyboard-layer2.png
new file mode 100644 (file)
index 0000000..83616d9
Binary files /dev/null and b/docs/4.0/keyboard-layer2.png differ
diff --git a/docs/4.0/keyboard-layer2.svg b/docs/4.0/keyboard-layer2.svg
new file mode 100644 (file)
index 0000000..70cc602
--- /dev/null
@@ -0,0 +1,896 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="900"
+   height="300"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.47 r22583"
+   version="1.0"
+   sodipodi:docname="keyboard-layer2.svg">
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 150 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="900 : 150 : 1"
+       inkscape:persp3d-origin="450 : 100 : 1"
+       id="perspective3385" />
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;">
+      <path
+         id="path5387"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
+         transform="scale(0.8) rotate(180)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible">
+      <path
+         id="path5390"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
+         transform="scale(0.8)" />
+    </marker>
+    <marker
+       inkscape:stockid="Tail"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Tail"
+       style="overflow:visible">
+      <g
+         id="g5342"
+         transform="scale(-1.2)">
+        <path
+           id="path5344"
+           d="M -3.8048674,-3.9585227 L 0.54352094,-0.00068114835"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" />
+        <path
+           id="path5346"
+           d="M -1.2866832,-3.9585227 L 3.0617053,-0.00068114835"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" />
+        <path
+           id="path5348"
+           d="M 1.3053582,-3.9585227 L 5.6537466,-0.00068114835"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" />
+        <path
+           id="path5350"
+           d="M -3.8048674,4.1775838 L 0.54352094,0.21974226"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" />
+        <path
+           id="path5352"
+           d="M -1.2866832,4.1775838 L 3.0617053,0.21974226"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" />
+        <path
+           id="path5354"
+           d="M 1.3053582,4.1775838 L 5.6537466,0.21974226"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Mend"
+       style="overflow:visible;">
+      <path
+         id="path5363"
+         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(0.6) rotate(180) translate(-5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;">
+      <path
+         id="path5369"
+         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(-5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Send"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Send"
+       style="overflow:visible;">
+      <path
+         id="path5375"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
+         transform="scale(0.2) rotate(180)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Send"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Send"
+       style="overflow:visible;">
+      <path
+         id="path5357"
+         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(0.3) rotate(180) translate(-5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Mend"
+       style="overflow:visible;">
+      <path
+         id="path5381"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
+         transform="scale(0.4) rotate(180)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lstart"
+       style="overflow:visible">
+      <path
+         id="path5372"
+         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) translate(-5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.0437869"
+     inkscape:cx="412.7029"
+     inkscape:cy="149.32256"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:grid-points="true"
+     showgrid="true"
+     gridtolerance="15px"
+     showborder="false"
+     inkscape:window-width="956"
+     inkscape:window-height="958"
+     inkscape:window-x="1600"
+     inkscape:window-y="221"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:window-maximized="0">
+    <inkscape:grid
+       id="GridFromPre046Settings"
+       type="xygrid"
+       originx="0px"
+       originy="0px"
+       spacingx="7.5px"
+       spacingy="7.5px"
+       color="#0000ff"
+       empcolor="#0000ff"
+       opacity="0.12156863"
+       empopacity="0.25098039"
+       empspacing="4" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 0,0 L 60,0 L 60,60 L 0,60 L 0,0 z "
+       id="rect2186" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 60,0 L 120,0 L 120,60 L 60,60 L 60,0 z "
+       id="rect2218" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 120,0 L 180,0 L 180,60 L 120,60 L 120,0 z "
+       id="rect2222" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 180,0 L 240,0 L 240,60 L 180,60 L 180,0 z "
+       id="rect2228" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 240,0 L 300,0 L 300,60 L 240,60 L 240,0 z "
+       id="rect2230" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 300,0 L 360,0 L 360,60 L 300,60 L 300,0 z "
+       id="rect2232" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 360,0 L 420,0 L 420,60 L 360,60 L 360,0 z "
+       id="rect2234" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 420,0 L 480,0 L 480,60 L 420,60 L 420,0 z "
+       id="rect2236" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 480,0 L 540,0 L 540,60 L 480,60 L 480,0 z "
+       id="rect2238" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 540,0 L 600,0 L 600,60 L 540,60 L 540,0 z "
+       id="rect2240" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 600,0 L 660,0 L 660,60 L 600,60 L 600,0 z "
+       id="rect2242" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 660,0 L 720,0 L 720,60 L 660,60 L 660,0 z "
+       id="rect2244" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 720,0 L 780,0 L 780,60 L 720,60 L 720,0 z "
+       id="rect2246" />
+    <path
+       style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 780,0 L 900,0 L 900,60 L 780,60 L 780,0 z "
+       id="rect2248" />
+    <path
+       style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 0,60 L 90,60 L 90,120 L 0,120 L 0,60 z "
+       id="rect2250" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 90,60 L 150,60 L 150,120 L 90,120 L 90,60 z "
+       id="rect2252" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 150,60 L 210,60 L 210,120 L 150,120 L 150,60 z "
+       id="rect2254" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 210,60 L 270,60 L 270,120 L 210,120 L 210,60 z "
+       id="rect2256" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 270,60 L 330,60 L 330,120 L 270,120 L 270,60 z "
+       id="rect2258" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 330,60 L 390,60 L 390,120 L 330,120 L 330,60 z "
+       id="rect2262" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 390,60 L 450,60 L 450,120 L 390,120 L 390,60 z "
+       id="rect2264" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 450,60 L 510,60 L 510,120 L 450,120 L 450,60 z "
+       id="rect2266" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 510,60 L 570,60 L 570,120 L 510,120 L 510,60 z "
+       id="rect2270" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 570,60 L 630,60 L 630,120 L 570,120 L 570,60 z "
+       id="rect2272" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 630,60 L 690,60 L 690,120 L 630,120 L 630,60 z "
+       id="rect2274" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 690,60 L 750,60 L 750,120 L 690,120 L 690,60 z "
+       id="rect2278" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 750,60 L 810,60 L 810,120 L 750,120 L 750,60 z "
+       id="rect2280" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 810,60 L 900,60 L 900,120 L 810,120 L 810,60 z "
+       id="rect2284" />
+    <path
+       style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 0,120 L 105,120 L 105,180 L 0,180 L 0,120 z "
+       id="rect2286" />
+    <path
+       style="fill:#00adff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 105,120 L 165,120 L 165,180 L 105,180 L 105,120 z "
+       id="rect2292" />
+    <path
+       style="fill:#00adff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 165,120 L 225,120 L 225,180 L 165,180 L 165,120 z "
+       id="rect2296" />
+    <path
+       style="fill:#00adff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 225,120 L 285,120 L 285,180 L 225,180 L 225,120 z "
+       id="rect2298" />
+    <path
+       style="fill:#00adff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 285,120 L 345,120 L 345,180 L 285,180 L 285,120 z "
+       id="rect2300" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 345,120 L 405,120 L 405,180 L 345,180 L 345,120 z "
+       id="rect2302" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 405,120 L 465,120 L 465,180 L 405,180 L 405,120 z "
+       id="rect2306" />
+    <path
+       style="fill:#00adff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 465,120 L 525,120 L 525,180 L 465,180 L 465,120 z "
+       id="rect2308" />
+    <path
+       style="fill:#00adff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 525,120 L 585,120 L 585,180 L 525,180 L 525,120 z "
+       id="rect2312" />
+    <path
+       style="fill:#00adff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 585,120 L 645,120 L 645,180 L 585,180 L 585,120 z "
+       id="rect2314" />
+    <path
+       style="fill:#00adff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 645,120 L 705,120 L 705,180 L 645,180 L 645,120 z "
+       id="rect2316" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 705,120 L 765,120 L 765,180 L 705,180 L 705,120 z "
+       id="rect2318" />
+    <path
+       style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 765,120 L 900,120 L 900,180 L 765,180 L 765,120 z "
+       id="rect2320" />
+    <path
+       style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 0,180 L 135,180 L 135,240 L 0,240 L 0,180 z "
+       id="rect2322" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 135,180 L 195,180 L 195,240 L 135,240 L 135,180 z "
+       id="rect2324" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 195,180 L 255,180 L 255,240 L 195,240 L 195,180 z "
+       id="rect2326" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 255,180 L 315,180 L 315,240 L 255,240 L 255,180 z "
+       id="rect2330" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 315,180 L 375,180 L 375,240 L 315,240 L 315,180 z "
+       id="rect2334" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 375,180 L 435,180 L 435,240 L 375,240 L 375,180 z "
+       id="rect2336" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 435,180 L 495,180 L 495,240 L 435,240 L 435,180 z "
+       id="rect2338" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 495,180 L 555,180 L 555,240 L 495,240 L 495,180 z "
+       id="rect2340" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 555,180 L 615,180 L 615,240 L 555,240 L 555,180 z "
+       id="rect2342" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 615,180 L 675,180 L 675,240 L 615,240 L 615,180 z "
+       id="rect2344" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 675,180 L 735,180 L 735,240 L 675,240 L 675,180 z "
+       id="rect2346" />
+    <path
+       style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 735,180 L 900,180 L 900,240 L 735,240 L 735,180 z "
+       id="rect2348" />
+    <path
+       style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 0,240 L 90,240 L 90,300 L 0,300 L 0,240 z "
+       id="rect2350" />
+    <path
+       style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 810,240 L 900,240 L 900,300 L 810,300 L 810,240 z "
+       id="rect2352" />
+    <path
+       style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 150,240 L 240,240 L 240,300 L 150,300 L 150,240 z "
+       id="rect2354" />
+    <path
+       style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 600,240 L 690,240 L 690,300 L 600,300 L 600,240 z "
+       id="rect2360" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 240,240 L 600,240 L 600,300 L 240,300 L 240,240 z "
+       id="rect2362" />
+    <path
+       style="fill:#efefef;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 90,240 L 150,240 L 150,300 L 90,300 L 90,240 z "
+       id="rect2364" />
+    <path
+       style="fill:#efefef;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 690,240 L 750,240 L 750,300 L 690,300 L 690,240 z "
+       id="rect2366" />
+    <path
+       style="fill:#efefef;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 750,240 L 810,240 L 810,300 L 750,300 L 750,240 z "
+       id="rect2368" />
+    <path
+       style=""
+       d=""
+       id="flowRoot4146" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 75.351563,18.826172 L 74.4375,11.056641 L 74.4375,6.3691406 L 78.046875,6.3691406 L 78.046875,11.056641 L 77.132813,18.826172 L 75.351563,18.826172 M 74.484375,23.630859 L 74.484375,20.173828 L 77.964844,20.173828 L 77.964844,23.630859 L 74.484375,23.630859 M 75.351563,53.630859 L 75.351563,42.158203 L 71.34375,42.158203 L 71.34375,39.802734 L 71.601563,39.802734 C 73.062496,39.802748 74.124995,39.576186 74.789063,39.123047 C 75.460931,38.669937 75.855462,37.912125 75.972656,36.849609 L 78.65625,36.849609 L 78.65625,53.630859 L 75.351563,53.630859"
+       id="text5091" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 23.34375,14.220703 L 23.34375,16.810547 C 22.531233,17.365241 21.761702,17.775396 21.035156,18.041016 C 20.316391,18.298833 19.605455,18.42774 18.902344,18.427734 C 18.542956,18.42774 18.183581,18.39649 17.824219,18.333984 C 17.464832,18.27149 17.105457,18.181646 16.746094,18.064453 C 16.558583,18.001959 16.281239,17.904303 15.914063,17.771484 C 14.203116,17.185553 12.902336,16.892585 12.011719,16.892578 C 11.34765,16.892585 10.652339,17.041022 9.9257813,17.337891 C 9.2070275,17.626959 8.3984345,18.091802 7.5,18.732422 L 7.5,16.142578 C 8.3359346,15.580086 9.1328088,15.162118 9.890625,14.888672 C 10.648432,14.607431 11.363275,14.466806 12.035156,14.466797 C 12.949211,14.466806 14.085929,14.693368 15.445313,15.146484 C 15.46874,15.154305 15.484365,15.158212 15.492188,15.158203 C 15.632802,15.205087 15.847646,15.279305 16.136719,15.380859 C 17.347644,15.810555 18.285143,16.025398 18.949219,16.025391 C 19.613267,16.025398 20.29686,15.880867 21,15.591797 C 21.703109,15.302743 22.484358,14.845712 23.34375,14.220703 M 11.988281,35.033203 L 15.011719,35.033203 L 17.320313,39.369141 L 15.65625,39.369141 L 11.988281,35.033203"
+       id="text5103" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 136.47578,20.443359 C 136.04608,21.099612 135.54999,21.583986 134.9875,21.896484 C 134.42499,22.201173 133.76093,22.353517 132.99532,22.353516 C 131.76093,22.353517 130.81953,22.01758 130.1711,21.345703 C 129.53047,20.673831 129.21015,19.681645 129.21016,18.369141 C 129.21015,16.50196 129.75312,14.935556 130.83907,13.669922 C 131.93281,12.404308 133.27656,11.771496 134.87032,11.771484 C 135.4953,11.771496 136.03827,11.900402 136.49922,12.158203 C 136.96015,12.416027 137.33905,12.798839 137.63594,13.306641 L 138.25703,12.158203 L 140.34297,12.158203 L 138.62032,19.166016 C 138.59686,19.251958 138.57733,19.341801 138.56172,19.435547 C 138.54608,19.521488 138.53827,19.591801 138.53828,19.646484 C 138.53827,19.919926 138.63202,20.126957 138.81953,20.267578 C 139.00702,20.400394 139.28436,20.4668 139.65157,20.466797 C 139.95624,20.4668 140.27264,20.388675 140.60078,20.232422 C 140.9367,20.076175 141.2492,19.857426 141.53828,19.576172 C 142.21014,18.951177 142.71795,18.220709 143.06172,17.384766 C 143.41326,16.548835 143.58904,15.630867 143.58907,14.630859 C 143.58904,12.75587 142.86248,11.216809 141.40938,10.013672 C 139.96405,8.8027492 138.09686,8.1972811 135.80782,8.1972656 C 134.70624,8.1972811 133.6789,8.3300934 132.72578,8.5957031 C 131.78046,8.8613429 130.92109,9.2558737 130.14766,9.7792969 C 128.81953,10.669935 127.79609,11.783215 127.07735,13.119141 C 126.36641,14.455087 126.01094,15.91993 126.01094,17.513672 C 126.01094,19.912113 126.81953,21.83008 128.43672,23.267578 C 130.0539,24.697265 132.21406,25.412108 134.91719,25.412109 C 136.1828,25.412108 137.41718,25.220702 138.62032,24.837891 C 139.83124,24.455077 140.95623,23.90039 141.99532,23.173828 L 142.95625,24.544922 C 141.76092,25.443358 140.49139,26.119138 139.14766,26.572266 C 137.81171,27.025387 136.41718,27.25195 134.96407,27.251953 C 133.46405,27.25195 132.08515,27.060543 130.82735,26.677734 C 129.56953,26.302732 128.45234,25.744139 127.47578,25.001953 C 126.26484,24.05664 125.35859,22.966798 124.75703,21.732422 C 124.15547,20.49805 123.85469,19.099614 123.85469,17.537109 C 123.85469,16.232429 124.05781,14.990243 124.46407,13.810547 C 124.87813,12.623058 125.48359,11.544934 126.28047,10.576172 C 127.43672,9.1621238 128.82734,8.0918124 130.45235,7.3652344 C 132.07734,6.6386889 133.88593,6.275408 135.87813,6.2753906 C 137.19843,6.275408 138.43671,6.4550953 139.59297,6.8144531 C 140.75702,7.1660321 141.76873,7.6660316 142.62813,8.3144531 C 143.68279,9.1347801 144.46795,10.072279 144.9836,11.126953 C 145.50701,12.17384 145.76873,13.357432 145.76875,14.677734 C 145.76873,15.966805 145.51092,17.15821 144.99532,18.251953 C 144.48748,19.337895 143.75311,20.267581 142.79219,21.041016 C 142.2453,21.478518 141.64764,21.814455 140.99922,22.048828 C 140.35858,22.275392 139.69061,22.388673 138.99532,22.388672 C 138.16718,22.388673 137.54218,22.224611 137.12032,21.896484 C 136.70624,21.568361 136.4914,21.083987 136.47578,20.443359 M 137.06172,15.427734 C 136.96015,14.794931 136.73358,14.314462 136.38203,13.986328 C 136.03827,13.650401 135.58124,13.482432 135.01094,13.482422 C 134.1203,13.482432 133.34687,13.966807 132.69063,14.935547 C 132.03437,15.904305 131.70624,17.068366 131.70625,18.427734 C 131.70624,19.146489 131.86249,19.693363 132.175,20.068359 C 132.49531,20.443363 132.95624,20.630862 133.55782,20.630859 C 134.20624,20.630862 134.79608,20.384769 135.32735,19.892578 C 135.8664,19.400395 136.23358,18.75977 136.42891,17.970703 L 137.06172,15.427734 M 128.56563,53.630859 C 128.58125,52.130861 128.90156,50.861331 129.52657,49.822266 C 130.15156,48.775395 131.26094,47.716803 132.85469,46.646484 C 133.09687,46.482429 133.44844,46.255867 133.90938,45.966797 C 136.01875,44.615243 137.07343,43.314463 137.07344,42.064453 C 137.07343,41.322278 136.85078,40.736341 136.40547,40.306641 C 135.96015,39.876967 135.35078,39.662123 134.57735,39.662109 C 133.73359,39.662123 133.08125,39.927748 132.62032,40.458984 C 132.16719,40.982435 131.94062,41.732434 131.94063,42.708984 L 131.94063,42.849609 L 128.84688,42.849609 C 128.84688,40.927747 129.3625,39.44728 130.39375,38.408203 C 131.425,37.369157 132.89375,36.849626 134.8,36.849609 C 136.52656,36.849626 137.90546,37.322282 138.93672,38.267578 C 139.96796,39.205093 140.48358,40.455091 140.4836,42.017578 C 140.48358,43.134776 140.21405,44.103525 139.675,44.923828 C 139.13593,45.744149 138.09296,46.677741 136.5461,47.724609 C 136.21796,47.951178 135.76484,48.248052 135.18672,48.615234 C 133.71797,49.560551 132.88984,50.2793 132.70235,50.771484 L 140.31953,50.771484 L 140.31953,53.630859 L 128.56563,53.630859"
+       id="text5127" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 195.28125,13.693359 L 194.25,16.552734 L 197.19141,16.552734 L 198.19922,13.693359 L 195.28125,13.693359 M 195.28125,6.4746094 L 197.87109,6.4746094 L 196.16016,11.337891 L 198.99609,11.337891 L 200.73047,6.4746094 L 203.32031,6.4746094 L 201.58594,11.337891 L 204.90234,11.337891 L 204.03516,13.693359 L 200.75391,13.693359 L 199.76953,16.529297 L 203.16797,16.529297 L 202.33594,18.873047 L 198.92578,18.873047 L 197.19141,23.748047 L 194.60156,23.748047 L 196.33594,18.873047 L 193.47656,18.873047 L 191.73047,23.748047 L 189.15234,23.748047 L 190.86328,18.873047 L 187.5,18.873047 L 188.39063,16.529297 L 191.69531,16.529297 L 192.70313,13.693359 L 189.19922,13.693359 L 190.06641,11.337891 L 193.54688,11.337891 L 195.28125,6.4746094 M 190.07813,48.521484 L 193.30078,48.521484 C 193.30859,49.458989 193.53515,50.166019 193.98047,50.642578 C 194.42578,51.111331 195.08593,51.345705 195.96094,51.345703 C 196.80468,51.345705 197.45312,51.126956 197.90625,50.689453 C 198.36718,50.244144 198.59765,49.607426 198.59766,48.779297 C 198.59765,47.951178 198.32812,47.326178 197.78906,46.904297 C 197.2578,46.474617 196.46484,46.259773 195.41016,46.259766 C 195.35546,46.259773 195.26953,46.263679 195.15234,46.271484 C 195.04296,46.279304 194.96093,46.28321 194.90625,46.283203 L 194.90625,43.962891 L 195.26953,43.962891 C 196.23827,43.9629 196.95312,43.7754 197.41406,43.400391 C 197.8828,43.017589 198.11718,42.435558 198.11719,41.654297 C 198.11718,41.005872 197.91796,40.494154 197.51953,40.119141 C 197.1289,39.736342 196.59374,39.544936 195.91406,39.544922 C 195.17187,39.544936 194.59765,39.763686 194.19141,40.201172 C 193.78515,40.638685 193.58203,41.259778 193.58203,42.064453 L 193.58203,42.205078 L 190.41797,42.205078 C 190.45703,40.486341 190.96094,39.169936 191.92969,38.255859 C 192.90625,37.334001 194.28125,36.873064 196.05469,36.873047 C 197.73437,36.873064 199.0664,37.283219 200.05078,38.103516 C 201.03514,38.923843 201.52733,40.02931 201.52734,41.419922 C 201.52733,42.154308 201.35936,42.798839 201.02344,43.353516 C 200.68749,43.908213 200.18358,44.365244 199.51172,44.724609 C 200.37108,45.099618 201.01952,45.619149 201.45703,46.283203 C 201.90233,46.93946 202.12499,47.724615 202.125,48.638672 C 202.12499,50.318363 201.57421,51.650393 200.47266,52.634766 C 199.37108,53.619141 197.86718,54.111328 195.96094,54.111328 C 194.07812,54.111328 192.625,53.634766 191.60156,52.681641 C 190.58594,51.720705 190.07812,50.357425 190.07813,48.591797 L 190.07813,48.521484"
+       id="text5139" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 254.46094,21.451172 C 255.10155,21.365237 255.58984,21.134768 255.92578,20.759766 C 256.26171,20.384769 256.42968,19.884769 256.42969,19.259766 C 256.42968,18.705083 256.26952,18.248052 255.94922,17.888672 C 255.63671,17.52149 255.14062,17.236335 254.46094,17.033203 L 254.46094,21.451172 M 253.06641,13.435547 L 253.06641,9.4511719 C 252.45703,9.529311 251.99218,9.7402483 251.67188,10.083984 C 251.35156,10.419935 251.1914,10.87306 251.19141,11.443359 C 251.1914,11.919934 251.33984,12.318371 251.63672,12.638672 C 251.9414,12.958995 252.41796,13.22462 253.06641,13.435547 M 253.06641,26.267578 L 253.06641,24.017578 C 251.30078,23.908203 249.98047,23.396485 249.10547,22.482422 C 248.23047,21.568361 247.79297,20.24805 247.79297,18.521484 L 250.93359,18.521484 C 250.97265,19.365239 251.16796,20.033207 251.51953,20.525391 C 251.8789,21.009768 252.39453,21.318362 253.06641,21.451172 L 253.06641,16.599609 C 251.2539,16.138679 249.96484,15.537117 249.19922,14.794922 C 248.43359,14.052744 248.05078,13.03712 248.05078,11.748047 C 248.05078,10.318373 248.5039,9.1660301 249.41016,8.2910156 C 250.32422,7.4160318 251.54296,6.959001 253.06641,6.9199219 L 253.06641,5.4199219 L 254.46094,5.4199219 L 254.46094,6.9199219 C 255.98437,6.9980635 257.17186,7.4590005 258.02344,8.3027344 C 258.87499,9.1386864 259.34374,10.318373 259.42969,11.841797 L 256.24219,11.841797 C 256.18749,11.115247 256.01171,10.56056 255.71484,10.177734 C 255.42577,9.7871232 255.0078,9.5683734 254.46094,9.5214844 L 254.46094,13.787109 C 256.39062,14.388681 257.74999,15.07618 258.53906,15.849609 C 259.32811,16.623054 259.72264,17.642584 259.72266,18.908203 C 259.72264,20.400394 259.26171,21.591799 258.33984,22.482422 C 257.42577,23.373047 256.1328,23.892578 254.46094,24.041016 L 254.46094,26.267578 L 253.06641,26.267578 M 254.64844,47.419922 L 254.64844,40.236328 L 250.08984,47.419922 L 254.64844,47.419922 M 254.57813,53.630859 L 254.57813,50.009766 L 247.5,50.009766 L 247.5,47.056641 L 253.6875,37.330078 L 257.84766,37.330078 L 257.84766,47.337891 L 259.79297,47.337891 L 259.79297,50.009766 L 257.84766,50.009766 L 257.84766,53.630859 L 254.57813,53.630859"
+       id="text5145" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 320.42578,19.740234 C 320.42577,20.263675 320.60155,20.705081 320.95313,21.064453 C 321.30467,21.416018 321.73827,21.591799 322.25391,21.591797 C 322.75389,21.591799 323.18358,21.412112 323.54297,21.052734 C 323.90233,20.68555 324.08201,20.24805 324.08203,19.740234 C 324.08201,19.240239 323.90233,18.814458 323.54297,18.462891 C 323.19139,18.103521 322.7617,17.923834 322.25391,17.923828 C 321.73827,17.923834 321.30467,18.099615 320.95313,18.451172 C 320.60155,18.794927 320.42577,19.224614 320.42578,19.740234 M 317.88281,19.740234 C 317.8828,18.521489 318.30468,17.494147 319.14844,16.658203 C 319.99217,15.822273 321.02733,15.404305 322.25391,15.404297 C 323.45701,15.404305 324.48045,15.830086 325.32422,16.681641 C 326.17576,17.525397 326.60154,18.544927 326.60156,19.740234 C 326.60154,20.943362 326.17576,21.974611 325.32422,22.833984 C 324.47264,23.685547 323.4492,24.111328 322.25391,24.111328 C 321.02733,24.111328 319.99217,23.689453 319.14844,22.845703 C 318.30468,22.001955 317.8828,20.9668 317.88281,19.740234 M 311.07422,24.111328 L 321.08203,6.8496094 L 322.96875,6.8496094 L 312.96094,24.111328 L 311.07422,24.111328 M 310.04297,11.220703 C 310.04297,11.73634 310.21484,12.169933 310.55859,12.521484 C 310.91015,12.873058 311.34375,13.048839 311.85938,13.048828 C 312.36718,13.048839 312.79687,12.873058 313.14844,12.521484 C 313.50781,12.162121 313.68749,11.728528 313.6875,11.220703 C 313.68749,10.720716 313.50781,10.294935 313.14844,9.9433594 C 312.79687,9.5839984 312.36718,9.4043111 311.85938,9.4042969 C 311.34375,9.4043111 310.91015,9.5800922 310.55859,9.9316406 C 310.21484,10.275404 310.04297,10.705091 310.04297,11.220703 M 307.5,11.220703 C 307.5,10.001967 307.92187,8.9707178 308.76563,8.1269531 C 309.60937,7.275407 310.64062,6.8496262 311.85938,6.8496094 C 313.06249,6.8496262 314.08593,7.2793132 314.92969,8.1386719 C 315.78124,8.990249 316.20702,10.017592 316.20703,11.220703 C 316.20702,12.423839 315.78124,13.451182 314.92969,14.302734 C 314.08593,15.146493 313.06249,15.568367 311.85938,15.568359 C 310.63281,15.568367 309.59765,15.150399 308.75391,14.314453 C 307.91797,13.478526 307.5,12.447277 307.5,11.220703 M 310.85156,49.119141 L 314.13281,49.119141 C 314.1875,49.853519 314.43359,50.423831 314.87109,50.830078 C 315.30859,51.228518 315.89453,51.427737 316.62891,51.427734 C 317.53515,51.427737 318.22655,51.162112 318.70313,50.630859 C 319.18749,50.099613 319.42968,49.337895 319.42969,48.345703 C 319.42968,47.416022 319.18358,46.685554 318.69141,46.154297 C 318.19921,45.615242 317.51952,45.345711 316.65234,45.345703 C 316.16796,45.345711 315.74218,45.443368 315.375,45.638672 C 315.00781,45.833992 314.69531,46.123054 314.4375,46.505859 L 311.41406,46.330078 L 312.50391,37.330078 L 322.14844,37.330078 L 322.14844,40.166016 L 314.87109,40.166016 L 314.4375,43.529297 C 314.80468,43.240245 315.22656,43.025401 315.70313,42.884766 C 316.17968,42.736339 316.71093,42.66212 317.29688,42.662109 C 318.96874,42.66212 320.3164,43.169932 321.33984,44.185547 C 322.37108,45.20118 322.88671,46.53321 322.88672,48.181641 C 322.88671,49.986332 322.3203,51.427737 321.1875,52.505859 C 320.05468,53.576172 318.53515,54.111328 316.62891,54.111328 C 314.89453,54.111328 313.51172,53.669922 312.48047,52.787109 C 311.45703,51.896486 310.91406,50.673831 310.85156,49.119141"
+       id="text5151" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 373.13672,6.5214844 L 376.08984,6.5214844 L 381.72656,13.095703 L 378.97266,13.095703 L 374.625,8.7480469 L 370.25391,13.095703 L 367.5,13.095703 L 373.13672,6.5214844 M 372.15234,48.298828 C 372.15234,49.25977 372.39062,50.021488 372.86719,50.583984 C 373.35156,51.146487 374.00781,51.427737 374.83594,51.427734 C 375.60937,51.427737 376.21484,51.154299 376.65234,50.607422 C 377.08983,50.06055 377.30858,49.298832 377.30859,48.322266 C 377.30858,47.423834 377.08202,46.724616 376.62891,46.224609 C 376.17577,45.724617 375.53905,45.474618 374.71875,45.474609 C 373.91406,45.474618 373.28515,45.724617 372.83203,46.224609 C 372.3789,46.724616 372.15234,47.416022 372.15234,48.298828 M 372.10547,43.916016 C 372.48828,43.525401 372.94921,43.232432 373.48828,43.037109 C 374.02734,42.833995 374.6289,42.732433 375.29297,42.732422 C 376.93358,42.732433 378.24608,43.232432 379.23047,44.232422 C 380.22264,45.23243 380.71874,46.56446 380.71875,48.228516 C 380.71874,49.994144 380.17968,51.419924 379.10156,52.505859 C 378.02343,53.591797 376.60155,54.134765 374.83594,54.134766 C 372.79687,54.134765 371.24609,53.431641 370.18359,52.025391 C 369.1289,50.619144 368.60156,48.560552 368.60156,45.849609 C 368.60156,42.935558 369.16797,40.708997 370.30078,39.169922 C 371.43359,37.623063 373.0664,36.849626 375.19922,36.849609 C 376.68358,36.849626 377.8789,37.236345 378.78516,38.009766 C 379.69921,38.783218 380.19921,39.830092 380.28516,41.150391 L 376.88672,41.150391 C 376.80858,40.611341 376.59765,40.205092 376.25391,39.931641 C 375.91015,39.658217 375.42968,39.521498 374.8125,39.521484 C 373.96874,39.521498 373.32031,39.888686 372.86719,40.623047 C 372.41406,41.349622 372.16015,42.447277 372.10547,43.916016"
+       id="text5157" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 432.85547,16.095703 L 431.96484,16.740234 C 431.60546,16.990241 431.33593,17.291022 431.15625,17.642578 C 430.97656,17.994146 430.88671,18.388677 430.88672,18.826172 C 430.88671,19.490239 431.11328,20.048832 431.56641,20.501953 C 432.01953,20.955081 432.58593,21.181643 433.26563,21.181641 C 433.76562,21.181643 434.24218,21.080081 434.69531,20.876953 C 435.15624,20.666019 435.58202,20.361331 435.97266,19.962891 L 432.85547,16.095703 M 433.79297,12.404297 L 434.20313,12.111328 C 434.57812,11.853527 434.85546,11.564465 435.03516,11.244141 C 435.21483,10.923841 435.30468,10.556654 435.30469,10.142578 C 435.30468,9.7441545 435.17968,9.4277486 434.92969,9.1933594 C 434.68749,8.958999 434.35546,8.8418117 433.93359,8.8417969 C 433.5039,8.8418117 433.16406,8.9629053 432.91406,9.2050781 C 432.66406,9.4394673 432.53906,9.7597795 432.53906,10.166016 C 432.53906,10.384779 432.59765,10.62306 432.71484,10.880859 C 432.83984,11.138684 433.01562,11.412122 433.24219,11.701172 L 433.79297,12.404297 M 431.15625,13.962891 L 430.47656,13.072266 C 430.125,12.603527 429.87109,12.166027 429.71484,11.759766 C 429.5664,11.345715 429.49218,10.912122 429.49219,10.458984 C 429.49218,9.2089988 429.89062,8.2168123 430.6875,7.4824219 C 431.49218,6.7402513 432.58203,6.3691579 433.95703,6.3691406 C 435.27733,6.3691579 436.3203,6.7090013 437.08594,7.3886719 C 437.85155,8.0683749 438.23436,8.9863428 438.23438,10.142578 C 438.23436,11.017591 438.0078,11.802746 437.55469,12.498047 C 437.10936,13.185557 436.40624,13.833994 435.44531,14.443359 L 437.91797,17.490234 C 438.15233,17.107428 438.33593,16.677741 438.46875,16.201172 C 438.60936,15.724617 438.70702,15.193368 438.76172,14.607422 L 441.80859,14.607422 C 441.72264,15.623055 441.5117,16.56446 441.17578,17.431641 C 440.83983,18.298833 440.37889,19.091801 439.79297,19.810547 L 442.93359,23.630859 L 438.94922,23.630859 L 437.77734,22.189453 C 437.08983,22.822266 436.33202,23.302735 435.50391,23.630859 C 434.68359,23.951172 433.82421,24.111328 432.92578,24.111328 C 431.33203,24.111328 430.02734,23.638672 429.01172,22.693359 C 428.0039,21.748049 427.5,20.541019 427.5,19.072266 C 427.5,17.978521 427.78125,17.037116 428.34375,16.248047 C 428.90625,15.458993 429.84375,14.697275 431.15625,13.962891 M 434.66016,53.630859 L 431.15625,53.630859 C 431.28125,51.341799 431.83203,49.07227 432.80859,46.822266 C 433.79296,44.572275 435.19531,42.361339 437.01563,40.189453 L 428.76563,40.189453 L 428.76563,37.330078 L 440.66016,37.330078 L 440.66016,39.849609 C 438.8164,41.880871 437.39843,44.029306 436.40625,46.294922 C 435.42187,48.560552 434.83984,51.005862 434.66016,53.630859"
+       id="text5163" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 493.5,13.212891 L 491.4375,16.119141 L 489.44531,14.724609 L 491.69531,11.900391 L 488.41406,10.986328 L 489.17578,8.6074219 L 492.32813,9.7324219 L 492.32813,6.3691406 L 494.64844,6.3691406 L 494.64844,9.7324219 L 497.80078,8.6308594 L 498.58594,11.009766 L 495.30469,11.900391 L 497.53125,14.701172 L 495.49219,16.166016 L 493.5,13.212891 M 490.875,48.755859 C 490.875,49.576176 491.10156,50.208988 491.55469,50.654297 C 492.01562,51.099612 492.67187,51.322268 493.52344,51.322266 C 494.33593,51.322268 494.97265,51.095706 495.43359,50.642578 C 495.90233,50.189457 496.13671,49.560551 496.13672,48.755859 C 496.13671,47.982428 495.89843,47.361334 495.42188,46.892578 C 494.9453,46.423835 494.31249,46.189461 493.52344,46.189453 C 492.73437,46.189461 492.09374,46.427742 491.60156,46.904297 C 491.11718,47.380866 490.875,47.998053 490.875,48.755859 M 491.14453,41.560547 C 491.14453,42.208996 491.34765,42.708995 491.75391,43.060547 C 492.16015,43.404307 492.74218,43.576182 493.5,43.576172 C 494.2578,43.576182 494.83984,43.400401 495.24609,43.048828 C 495.66015,42.697277 495.86718,42.201183 495.86719,41.560547 C 495.86718,40.93556 495.65624,40.443373 495.23438,40.083984 C 494.81249,39.724623 494.23437,39.544936 493.5,39.544922 C 492.78124,39.544936 492.20703,39.72853 491.77734,40.095703 C 491.35546,40.462904 491.14453,40.951185 491.14453,41.560547 M 489.9375,44.818359 C 489.23437,44.427744 488.72656,43.970713 488.41406,43.447266 C 488.10156,42.923839 487.94531,42.255871 487.94531,41.443359 C 487.94531,40.005873 488.4375,38.876968 489.42188,38.056641 C 490.40625,37.236345 491.76562,36.826189 493.5,36.826172 C 495.24999,36.826189 496.61718,37.236345 497.60156,38.056641 C 498.59374,38.869155 499.08983,39.998061 499.08984,41.443359 C 499.08983,42.216808 498.92186,42.888683 498.58594,43.458984 C 498.24999,44.021494 497.74608,44.474619 497.07422,44.818359 C 497.89452,45.20118 498.51171,45.73243 498.92578,46.412109 C 499.33983,47.083991 499.54686,47.904303 499.54688,48.873047 C 499.54686,50.505862 499.0078,51.787111 497.92969,52.716797 C 496.85936,53.646484 495.3828,54.111328 493.5,54.111328 C 491.59375,54.111328 490.11328,53.650391 489.05859,52.728516 C 488.0039,51.806642 487.47656,50.521487 487.47656,48.873047 C 487.47656,47.912115 487.67187,47.107428 488.0625,46.458984 C 488.46094,45.802742 489.08594,45.255868 489.9375,44.818359"
+       id="text5169" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 557.85938,6.3691406 C 556.78124,8.1347811 555.98046,9.9316543 555.45703,11.759766 C 554.93359,13.587901 554.67187,15.505868 554.67188,17.513672 C 554.67187,19.513676 554.93359,21.427737 555.45703,23.255859 C 555.98046,25.083983 556.78124,26.880856 557.85938,28.646484 L 555.38672,28.646484 C 554.01953,26.779294 552.98046,24.904296 552.26953,23.021484 C 551.5664,21.130862 551.21484,19.294926 551.21484,17.513672 C 551.21484,15.73243 551.5664,13.896494 552.26953,12.005859 C 552.98046,10.115248 554.01953,8.2363435 555.38672,6.3691406 L 557.85938,6.3691406 M 556.06641,42.685547 C 556.0664,41.724621 555.82421,40.96681 555.33984,40.412109 C 554.86327,39.849623 554.21093,39.568373 553.38281,39.568359 C 552.60156,39.568373 551.99218,39.837904 551.55469,40.376953 C 551.125,40.916028 550.91015,41.669934 550.91016,42.638672 C 550.91015,43.544932 551.13671,44.251963 551.58984,44.759766 C 552.04296,45.267586 552.67968,45.521492 553.5,45.521484 C 554.30468,45.521492 554.93359,45.271493 555.38672,44.771484 C 555.83983,44.271494 556.0664,43.576182 556.06641,42.685547 M 556.125,47.056641 C 555.73437,47.447272 555.27343,47.74024 554.74219,47.935547 C 554.21093,48.130865 553.61327,48.228521 552.94922,48.228516 C 551.30078,48.228521 549.98047,47.732428 548.98828,46.740234 C 547.99609,45.748055 547.5,44.419931 547.5,42.755859 C 547.5,40.990247 548.03906,39.564467 549.11719,38.478516 C 550.19531,37.392594 551.61718,36.849626 553.38281,36.849609 C 555.42968,36.849626 556.98436,37.556657 558.04688,38.970703 C 559.11718,40.376966 559.65233,42.431652 559.65234,45.134766 C 559.65233,48.041021 559.08202,50.267581 557.94141,51.814453 C 556.80077,53.361328 555.16015,54.134765 553.01953,54.134766 C 551.54296,54.134765 550.35156,53.751953 549.44531,52.986328 C 548.53906,52.212892 548.04297,51.162112 547.95703,49.833984 L 551.34375,49.845703 C 551.42187,50.384769 551.63281,50.787112 551.97656,51.052734 C 552.32031,51.318362 552.80468,51.451174 553.42969,51.451172 C 554.27343,51.451174 554.91796,51.083987 555.36328,50.349609 C 555.80858,49.615238 556.06249,48.517583 556.125,47.056641"
+       id="text5175" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 609.375,6.3691406 L 611.87109,6.3691406 C 613.23046,8.228531 614.26171,10.103529 614.96484,11.994141 C 615.66796,13.876963 616.01952,15.716805 616.01953,17.513672 C 616.01952,19.302739 615.66796,21.142581 614.96484,23.033203 C 614.26171,24.923827 613.23046,26.794919 611.87109,28.646484 L 609.375,28.646484 C 610.46094,26.873044 611.26562,25.072264 611.78906,23.244141 C 612.32031,21.408205 612.58593,19.498051 612.58594,17.513672 C 612.58593,15.521492 612.32031,13.611338 611.78906,11.783203 C 611.26562,9.9550918 610.46094,8.1504061 609.375,6.3691406 M 610.98047,45.474609 C 610.98046,47.513678 611.18359,48.994145 611.58984,49.916016 C 612.0039,50.837893 612.66015,51.29883 613.55859,51.298828 C 614.45702,51.29883 615.11327,50.833987 615.52734,49.904297 C 615.9414,48.974614 616.14843,47.498053 616.14844,45.474609 C 616.14843,43.44337 615.9414,41.966809 615.52734,41.044922 C 615.11327,40.12306 614.45702,39.662123 613.55859,39.662109 C 612.66015,39.662123 612.0039,40.12306 611.58984,41.044922 C 611.18359,41.958996 610.98046,43.435557 610.98047,45.474609 M 607.5,45.474609 C 607.5,42.591808 608,40.43556 609,39.005859 C 610.00781,37.568375 611.52734,36.849626 613.55859,36.849609 C 615.58202,36.849626 617.09765,37.572282 618.10547,39.017578 C 619.12108,40.455091 619.62889,42.615245 619.62891,45.498047 C 619.62889,48.380865 619.12499,50.533206 618.11719,51.955078 C 617.11718,53.376953 615.59765,54.08789 613.55859,54.087891 C 611.52734,54.08789 610.00781,53.373047 609,51.943359 C 608,50.513675 607.5,48.357427 607.5,45.474609"
+       id="text5181" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 667.5,26.900391 L 679.5,26.900391 L 679.5,29.291016 L 667.5,29.291016 L 667.5,26.900391 M 670.20703,48.849609 L 670.20703,45.638672 L 676.79297,45.638672 L 676.79297,48.849609 L 670.20703,48.849609"
+       id="text5187" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 733.33594,9.3222656 L 735.70313,9.3222656 L 735.70313,15.298828 L 741.53906,15.298828 L 741.53906,17.630859 L 735.70313,17.630859 L 735.70313,23.630859 L 733.33594,23.630859 L 733.33594,17.630859 L 727.5,17.630859 L 727.5,15.298828 L 733.33594,15.298828 L 733.33594,9.3222656 M 727.5,47.818359 L 741.53906,47.818359 L 741.53906,50.150391 L 727.5,50.150391 L 727.5,47.818359 M 727.5,42.779297 L 741.53906,42.779297 L 741.53906,45.111328 L 727.5,45.111328 L 727.5,42.779297"
+       id="text5201" />
+    <path
+       style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 11.070313,95.601563 L 11.070313,86.148438 L 7.65625,86.148438 L 7.65625,84.09375 L 16.828125,84.09375 L 16.828125,86.148438 L 13.4375,86.148438 L 13.4375,95.601563 L 11.070313,95.601563 M 22.859375,94.546875 C 22.572911,94.989584 22.197911,95.328125 21.734375,95.5625 C 21.270829,95.791666 20.731767,95.90625 20.117188,95.90625 C 19.294269,95.90625 18.658853,95.671875 18.210938,95.203125 C 17.768228,94.734376 17.546874,94.06771 17.546875,93.203125 C 17.546874,92.401045 17.768228,91.789066 18.210938,91.367188 C 18.658853,90.945317 19.395831,90.656255 20.421875,90.5 C 20.656246,90.463547 20.963538,90.42188 21.34375,90.375 C 22.307286,90.250005 22.789057,89.97136 22.789063,89.539063 C 22.789057,89.195319 22.682286,88.950527 22.46875,88.804688 C 22.255203,88.653653 21.898433,88.578132 21.398438,88.578125 C 20.9401,88.578132 20.588538,88.669278 20.34375,88.851563 C 20.098955,89.033861 19.97656,89.294277 19.976563,89.632813 L 19.976563,89.757813 L 17.851563,89.757813 L 17.851563,89.601563 C 17.851562,88.731778 18.158853,88.049487 18.773438,87.554688 C 19.388018,87.054696 20.236976,86.804696 21.320313,86.804688 C 22.507807,86.804696 23.41666,87.010425 24.046875,87.421875 C 24.682284,87.833341 24.999992,88.427091 25,89.203125 L 25,94.03125 C 24.999992,94.385418 25.03645,94.651043 25.109375,94.828125 C 25.182283,95.000001 25.304679,95.130209 25.476563,95.21875 L 25.476563,95.601563 L 23.109375,95.601563 C 23.031244,95.455729 22.971348,95.294271 22.929688,95.117188 C 22.888015,94.940105 22.864577,94.750001 22.859375,94.546875 M 22.820313,91.421875 C 22.450515,91.593754 22.023432,91.731775 21.539063,91.835938 C 21.059892,91.940108 20.812496,91.994795 20.796875,92 C 20.39583,92.114587 20.11458,92.257816 19.953125,92.429688 C 19.796872,92.601566 19.718747,92.838544 19.71875,93.140625 C 19.718747,93.453127 19.82031,93.703127 20.023438,93.890625 C 20.226559,94.072918 20.499997,94.164064 20.84375,94.164063 C 21.458329,94.164064 21.940099,93.992189 22.289063,93.648438 C 22.643224,93.299481 22.820307,92.825524 22.820313,92.226563 L 22.820313,91.421875 M 27.039063,84.09375 L 29.25,84.09375 L 29.25,88.164063 C 29.531246,87.721362 29.882809,87.388029 30.304688,87.164063 C 30.731766,86.934905 31.216141,86.820321 31.757813,86.820313 C 32.783847,86.820321 33.622388,87.2448 34.273438,88.09375 C 34.92447,88.937507 35.249991,90.036464 35.25,91.390625 C 35.249991,92.734378 34.92447,93.820314 34.273438,94.648438 C 33.622388,95.476563 32.773431,95.890625 31.726563,95.890625 C 31.179682,95.890625 30.70312,95.776041 30.296875,95.546875 C 29.895829,95.317709 29.531246,94.953126 29.203125,94.453125 L 29.203125,95.601563 L 27.039063,95.601563 L 27.039063,84.09375 M 32.992188,91.296875 C 32.992181,90.51563 32.828118,89.903652 32.5,89.460938 C 32.171869,89.013027 31.721348,88.789069 31.148438,88.789063 C 30.544266,88.789069 30.075517,89.007819 29.742188,89.445313 C 29.414059,89.87761 29.249997,90.494797 29.25,91.296875 C 29.249997,92.161462 29.406247,92.817711 29.71875,93.265625 C 30.036454,93.713544 30.497391,93.937502 31.101563,93.9375 C 31.71614,93.937502 32.18489,93.713544 32.507813,93.265625 C 32.830722,92.812503 32.992181,92.156253 32.992188,91.296875"
+       id="text5427" />
+    <path
+       style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 789.76563,44.369141 L 792.57031,44.369141 C 793.23176,44.369143 793.71353,44.249351 794.01563,44.009766 C 794.3177,43.770185 794.46874,43.392581 794.46875,42.876953 C 794.46874,42.340499 794.3203,41.955083 794.02344,41.720703 C 793.72656,41.481125 793.23697,41.361333 792.55469,41.361328 L 789.76563,41.361328 L 789.76563,44.369141 M 789.76563,39.392578 L 792.46875,39.392578 C 793.05208,39.392585 793.47916,39.293627 793.75,39.095703 C 794.02083,38.892586 794.15624,38.574878 794.15625,38.142578 C 794.15624,37.720712 794.02343,37.416025 793.75781,37.228516 C 793.49739,37.035817 793.06249,36.939463 792.45313,36.939453 L 789.76563,36.939453 L 789.76563,39.392578 M 787.5,46.447266 L 787.5,34.939453 L 792.92188,34.939453 C 794.09895,34.939465 794.99478,35.189464 795.60938,35.689453 C 796.22916,36.184255 796.53905,36.905609 796.53906,37.853516 C 796.53905,38.436857 796.42447,38.923836 796.19531,39.314453 C 795.96614,39.705085 795.62239,40.007168 795.16406,40.220703 C 795.7578,40.460292 796.20051,40.806646 796.49219,41.259766 C 796.78905,41.707687 796.93749,42.267582 796.9375,42.939453 C 796.93749,44.059247 796.57291,44.92383 795.84375,45.533203 C 795.11457,46.142578 794.08072,46.447266 792.74219,46.447266 L 787.5,46.447266 M 803.45313,45.392578 C 803.16666,45.835287 802.79166,46.173828 802.32813,46.408203 C 801.86458,46.63737 801.32552,46.751953 800.71094,46.751953 C 799.88802,46.751953 799.2526,46.517578 798.80469,46.048828 C 798.36198,45.580079 798.14062,44.913413 798.14063,44.048828 C 798.14062,43.246748 798.36198,42.634769 798.80469,42.212891 C 799.2526,41.79102 799.98958,41.501958 801.01563,41.345703 C 801.25,41.30925 801.55729,41.267583 801.9375,41.220703 C 802.90104,41.095708 803.38281,40.817063 803.38281,40.384766 C 803.38281,40.041022 803.27604,39.796231 803.0625,39.650391 C 802.84895,39.499356 802.49218,39.423835 801.99219,39.423828 C 801.53385,39.423835 801.18229,39.514981 800.9375,39.697266 C 800.69271,39.879564 800.57031,40.13998 800.57031,40.478516 L 800.57031,40.603516 L 798.44531,40.603516 L 798.44531,40.447266 C 798.44531,39.577481 798.7526,38.89519 799.36719,38.400391 C 799.98177,37.900399 800.83073,37.650399 801.91406,37.650391 C 803.10156,37.650399 804.01041,37.856128 804.64063,38.267578 C 805.27603,38.679044 805.59374,39.272794 805.59375,40.048828 L 805.59375,44.876953 C 805.59374,45.231121 805.6302,45.496746 805.70313,45.673828 C 805.77603,45.845704 805.89843,45.975912 806.07031,46.064453 L 806.07031,46.447266 L 803.70313,46.447266 C 803.62499,46.301432 803.5651,46.139974 803.52344,45.962891 C 803.48176,45.785808 803.45833,45.595704 803.45313,45.392578 M 803.41406,42.267578 C 803.04427,42.439457 802.61718,42.577478 802.13281,42.681641 C 801.65364,42.785811 801.40625,42.840498 801.39063,42.845703 C 800.98958,42.96029 800.70833,43.103519 800.54688,43.275391 C 800.39062,43.447269 800.3125,43.684248 800.3125,43.986328 C 800.3125,44.29883 800.41406,44.54883 800.61719,44.736328 C 800.82031,44.918621 801.09375,45.009767 801.4375,45.009766 C 802.05208,45.009767 802.53385,44.837892 802.88281,44.494141 C 803.23697,44.145185 803.41406,43.671227 803.41406,43.072266 L 803.41406,42.267578 M 812.71875,43.244141 L 814.96094,43.244141 C 814.86718,44.322268 814.47395,45.173829 813.78125,45.798828 C 813.08854,46.423828 812.19791,46.736328 811.10938,46.736328 C 809.875,46.736328 808.90625,46.335287 808.20313,45.533203 C 807.50521,44.725913 807.15625,43.611331 807.15625,42.189453 C 807.15625,40.772792 807.51302,39.663418 808.22656,38.861328 C 808.94531,38.054045 809.93229,37.650399 811.1875,37.650391 C 812.28645,37.650399 813.16666,37.942066 813.82813,38.525391 C 814.49478,39.108731 814.86718,39.92123 814.94531,40.962891 L 812.6875,40.962891 C 812.62499,40.509772 812.46614,40.163418 812.21094,39.923828 C 811.95572,39.684252 811.61979,39.56446 811.20313,39.564453 C 810.64062,39.56446 810.21875,39.785814 809.9375,40.228516 C 809.66146,40.67123 809.52343,41.335292 809.52344,42.220703 C 809.52343,43.038415 809.66666,43.668623 809.95313,44.111328 C 810.24479,44.54883 810.66145,44.76758 811.20313,44.767578 C 811.62499,44.76758 811.96354,44.639976 812.21875,44.384766 C 812.47395,44.12956 812.64062,43.749352 812.71875,43.244141 M 816.44531,46.447266 L 816.44531,34.939453 L 818.65625,34.939453 L 818.65625,40.978516 L 821.35938,37.955078 L 824.09375,37.955078 L 821.13281,41.103516 L 824.27344,46.447266 L 821.54688,46.447266 L 819.51563,42.830078 L 818.65625,43.759766 L 818.65625,46.447266 L 816.44531,46.447266 M 824.79688,43.681641 L 827.0625,43.681641 C 827.08333,44.113935 827.23958,44.436851 827.53125,44.650391 C 827.82291,44.858726 828.26041,44.962892 828.84375,44.962891 C 829.28645,44.962892 829.6276,44.889976 829.86719,44.744141 C 830.11197,44.593101 830.23437,44.382164 830.23438,44.111328 C 830.23437,43.725914 829.78124,43.436852 828.875,43.244141 C 828.5052,43.166019 828.21093,43.098311 827.99219,43.041016 C 826.88802,42.759769 826.11979,42.426436 825.6875,42.041016 C 825.26042,41.655604 825.04687,41.134771 825.04688,40.478516 C 825.04687,39.608731 825.35937,38.921231 825.98438,38.416016 C 826.61458,37.905608 827.46614,37.650399 828.53906,37.650391 C 829.67447,37.650399 830.5651,37.903003 831.21094,38.408203 C 831.86197,38.913419 832.20833,39.624356 832.25,40.541016 L 830.03906,40.541016 C 830.02343,40.181647 829.88541,39.903001 829.625,39.705078 C 829.36979,39.507168 829.01302,39.40821 828.55469,39.408203 C 828.12239,39.40821 827.79948,39.473314 827.58594,39.603516 C 827.3776,39.733731 827.27343,39.929043 827.27344,40.189453 C 827.27343,40.528001 827.83854,40.82748 828.96875,41.087891 C 829.22916,41.145188 829.43489,41.192063 829.58594,41.228516 C 830.71614,41.494146 831.48697,41.814458 831.89844,42.189453 C 832.3151,42.564457 832.52343,43.093102 832.52344,43.775391 C 832.52343,44.738934 832.18228,45.473308 831.5,45.978516 C 830.82291,46.483724 829.83593,46.736328 828.53906,46.736328 C 827.36718,46.736328 826.45052,46.473307 825.78906,45.947266 C 825.1276,45.421225 824.79687,44.697267 824.79688,43.775391 L 824.79688,43.681641 M 840.02344,42.251953 C 840.02343,41.397792 839.86197,40.74675 839.53906,40.298828 C 839.21614,39.84571 838.74739,39.619147 838.13281,39.619141 C 837.52864,39.619147 837.0677,39.843106 836.75,40.291016 C 836.4375,40.738938 836.28125,41.392583 836.28125,42.251953 C 836.28125,43.05404 836.44531,43.673831 836.77344,44.111328 C 837.10677,44.54883 837.57552,44.76758 838.17969,44.767578 C 838.7526,44.76758 839.20312,44.543622 839.53125,44.095703 C 839.85937,43.647789 840.02343,43.033207 840.02344,42.251953 M 834.07031,49.853516 L 834.07031,37.955078 L 836.23438,37.955078 L 836.23438,39.103516 C 836.5625,38.603523 836.92708,38.23894 837.32813,38.009766 C 837.73437,37.780608 838.21093,37.666024 838.75781,37.666016 C 839.80468,37.666024 840.65364,38.080086 841.30469,38.908203 C 841.95572,39.731127 842.28124,40.814459 842.28125,42.158203 C 842.28124,43.517581 841.95572,44.621747 841.30469,45.470703 C 840.65364,46.314453 839.8151,46.736328 838.78906,46.736328 C 838.24739,46.736328 837.76302,46.621745 837.33594,46.392578 C 836.91406,46.163412 836.5625,45.830079 836.28125,45.392578 L 836.28125,49.853516 L 834.07031,49.853516 M 848.70313,45.392578 C 848.41666,45.835287 848.04166,46.173828 847.57813,46.408203 C 847.11458,46.63737 846.57552,46.751953 845.96094,46.751953 C 845.13802,46.751953 844.5026,46.517578 844.05469,46.048828 C 843.61198,45.580079 843.39062,44.913413 843.39063,44.048828 C 843.39062,43.246748 843.61198,42.634769 844.05469,42.212891 C 844.5026,41.79102 845.23958,41.501958 846.26563,41.345703 C 846.5,41.30925 846.80729,41.267583 847.1875,41.220703 C 848.15104,41.095708 848.63281,40.817063 848.63281,40.384766 C 848.63281,40.041022 848.52604,39.796231 848.3125,39.650391 C 848.09895,39.499356 847.74218,39.423835 847.24219,39.423828 C 846.78385,39.423835 846.43229,39.514981 846.1875,39.697266 C 845.94271,39.879564 845.82031,40.13998 845.82031,40.478516 L 845.82031,40.603516 L 843.69531,40.603516 L 843.69531,40.447266 C 843.69531,39.577481 844.0026,38.89519 844.61719,38.400391 C 845.23177,37.900399 846.08073,37.650399 847.16406,37.650391 C 848.35156,37.650399 849.26041,37.856128 849.89063,38.267578 C 850.52603,38.679044 850.84374,39.272794 850.84375,40.048828 L 850.84375,44.876953 C 850.84374,45.231121 850.8802,45.496746 850.95313,45.673828 C 851.02603,45.845704 851.14843,45.975912 851.32031,46.064453 L 851.32031,46.447266 L 848.95313,46.447266 C 848.87499,46.301432 848.8151,46.139974 848.77344,45.962891 C 848.73176,45.785808 848.70833,45.595704 848.70313,45.392578 M 848.66406,42.267578 C 848.29427,42.439457 847.86718,42.577478 847.38281,42.681641 C 846.90364,42.785811 846.65625,42.840498 846.64063,42.845703 C 846.23958,42.96029 845.95833,43.103519 845.79688,43.275391 C 845.64062,43.447269 845.5625,43.684248 845.5625,43.986328 C 845.5625,44.29883 845.66406,44.54883 845.86719,44.736328 C 846.07031,44.918621 846.34375,45.009767 846.6875,45.009766 C 847.30208,45.009767 847.78385,44.837892 848.13281,44.494141 C 848.48697,44.145185 848.66406,43.671227 848.66406,43.072266 L 848.66406,42.267578 M 857.96875,43.244141 L 860.21094,43.244141 C 860.11718,44.322268 859.72395,45.173829 859.03125,45.798828 C 858.33854,46.423828 857.44791,46.736328 856.35938,46.736328 C 855.125,46.736328 854.15625,46.335287 853.45313,45.533203 C 852.75521,44.725913 852.40625,43.611331 852.40625,42.189453 C 852.40625,40.772792 852.76302,39.663418 853.47656,38.861328 C 854.19531,38.054045 855.18229,37.650399 856.4375,37.650391 C 857.53645,37.650399 858.41666,37.942066 859.07813,38.525391 C 859.74478,39.108731 860.11718,39.92123 860.19531,40.962891 L 857.9375,40.962891 C 857.87499,40.509772 857.71614,40.163418 857.46094,39.923828 C 857.20572,39.684252 856.86979,39.56446 856.45313,39.564453 C 855.89062,39.56446 855.46875,39.785814 855.1875,40.228516 C 854.91146,40.67123 854.77343,41.335292 854.77344,42.220703 C 854.77343,43.038415 854.91666,43.668623 855.20313,44.111328 C 855.49479,44.54883 855.91145,44.76758 856.45313,44.767578 C 856.87499,44.76758 857.21354,44.639976 857.46875,44.384766 C 857.72395,44.12956 857.89062,43.749352 857.96875,43.244141 M 866.88281,43.869141 L 869.14844,43.869141 C 868.91926,44.764976 868.45572,45.4681 867.75781,45.978516 C 867.0651,46.483724 866.21874,46.736328 865.21875,46.736328 C 863.98958,46.736328 863.01562,46.32487 862.29688,45.501953 C 861.57812,44.67383 861.21875,43.554039 861.21875,42.142578 C 861.21875,40.751959 861.57292,39.655606 862.28125,38.853516 C 862.98958,38.051441 863.95833,37.650399 865.1875,37.650391 C 866.48958,37.650399 867.49478,38.046232 868.20313,38.837891 C 868.91145,39.624356 869.26562,40.74675 869.26563,42.205078 C 869.26562,42.366541 869.26301,42.488936 869.25781,42.572266 C 869.2578,42.650394 869.2526,42.725915 869.24219,42.798828 L 863.57031,42.798828 C 863.60156,43.465498 863.76302,43.968101 864.05469,44.306641 C 864.35156,44.645184 864.77604,44.814455 865.32813,44.814453 C 865.71874,44.814455 866.03906,44.738934 866.28906,44.587891 C 866.53906,44.431643 866.73697,44.19206 866.88281,43.869141 M 863.57031,41.306641 L 866.91406,41.306641 C 866.89322,40.73373 866.73958,40.298834 866.45313,40.001953 C 866.17187,39.699877 865.76562,39.548835 865.23438,39.548828 C 864.73958,39.548835 864.34895,39.699877 864.0625,40.001953 C 863.78125,40.304043 863.61718,40.738938 863.57031,41.306641"
+       id="text5207" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+       d="M 840,17.646484 L 797.02608,17.646484"
+       id="path5439" />
+    <path
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 802.5,25.146484 L 802.5,10.146484 L 787.5,17.646484 L 802.5,25.146484 z "
+       id="path5441" />
+    <g
+       id="g5459"
+       transform="translate(0,7.5)">
+      <path
+         style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:3.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 82.50003,75 L 54.020182,75"
+         id="path5453" />
+      <path
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 60,82.5 L 60,67.5 L 45,75 L 60,82.5 z "
+         id="path5455" />
+      <path
+         id="path5457"
+         d="M 45,67.5 C 45,82.5 45,82.5 45,82.5"
+         style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <g
+       id="g5464"
+       transform="matrix(-1,9.581637e-17,-9.581637e-17,-1,127.5,172.5)">
+      <path
+         id="path5466"
+         d="M 82.50003,75 L 54.020182,75"
+         style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:3.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         id="path5468"
+         d="M 60,82.5 L 60,67.5 L 45,75 L 60,82.5 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 45,67.5 C 45,82.5 45,82.5 45,82.5"
+         id="path5470" />
+    </g>
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 158.94141,83.630859 L 153.99609,66.369141 L 157.67578,66.369141 L 160.62891,78.544922 L 163.125,66.369141 L 166.91016,66.369141 L 169.40625,78.544922 L 172.35938,66.369141 L 176.00391,66.369141 L 171.07031,83.630859 L 167.68359,83.630859 L 165.01172,70.412109 L 162.32813,83.630859 L 158.94141,83.630859"
+       id="text5482" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 343.24219,83.630859 L 343.24219,69.451172 L 338.12109,69.451172 L 338.12109,66.369141 L 351.87891,66.369141 L 351.87891,69.451172 L 346.79297,69.451172 L 346.79297,83.630859 L 343.24219,83.630859"
+       id="text5504" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 407.06836,83.630859 L 403.51758,83.630859 L 403.51758,77.197266 L 397.24805,66.369141 L 401.5957,66.369141 L 405.28711,73.810547 L 408.69727,66.369141 L 412.75195,66.369141 L 407.06836,77.197266 L 407.06836,83.630859"
+       id="text5518" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 458.08594,66.105469 L 461.67188,66.105469 L 461.67188,76.933594 C 461.67187,78.269536 461.93749,79.246098 462.46875,79.863281 C 462.99999,80.472659 463.84374,80.777346 465,80.777344 C 466.17187,80.777346 467.02343,80.472659 467.55469,79.863281 C 468.09374,79.25391 468.36327,78.277349 468.36328,76.933594 L 468.36328,66.105469 L 471.91406,66.105469 L 471.91406,77.320313 C 471.91405,79.437504 471.3203,81.062502 470.13281,82.195313 C 468.95311,83.328125 467.24999,83.894531 465.02344,83.894531 C 462.78124,83.894531 461.0625,83.332031 459.86719,82.207031 C 458.67969,81.074221 458.08594,79.445316 458.08594,77.320313 L 458.08594,66.105469"
+       id="text5522" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 523.22461,83.630859 L 523.22461,66.369141 L 526.77539,66.369141 L 526.77539,83.630859 L 523.22461,83.630859"
+       id="text5526" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 580.18359,75 C 580.18359,76.898444 580.60546,78.375005 581.44922,79.429688 C 582.29296,80.476566 583.47265,81.000003 584.98828,81 C 586.51952,81.000003 587.71093,80.476566 588.5625,79.429688 C 589.41405,78.375005 589.83983,76.898444 589.83984,75 C 589.83983,73.101573 589.41405,71.628918 588.5625,70.582031 C 587.71093,69.527358 586.51952,69.000015 584.98828,69 C 583.47265,69.000015 582.29296,69.523452 581.44922,70.570313 C 580.60546,71.617199 580.18359,73.093761 580.18359,75 M 576.5625,75 C 576.5625,72.210949 577.32031,70.000014 578.83594,68.367188 C 580.35937,66.726579 582.41015,65.906268 584.98828,65.90625 C 587.56639,65.906268 589.61717,66.726579 591.14063,68.367188 C 592.67186,70.007826 593.43748,72.218761 593.4375,75 C 593.43748,77.781256 592.67186,79.992191 591.14063,81.632813 C 589.61717,83.273438 587.56639,84.09375 584.98828,84.09375 C 582.41015,84.09375 580.35937,83.273438 578.83594,81.632813 C 577.32031,79.992191 576.5625,77.781256 576.5625,75"
+       id="text5530" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 641.97656,74.361328 L 645.41016,74.361328 C 646.33983,74.361337 647.01561,74.166025 647.4375,73.775391 C 647.85936,73.376963 648.0703,72.740245 648.07031,71.865234 C 648.0703,71.044934 647.86327,70.423841 647.44922,70.001953 C 647.03515,69.580092 646.41796,69.369155 645.59766,69.369141 L 641.97656,69.369141 L 641.97656,74.361328 M 641.95313,77.490234 L 641.95313,83.630859 L 638.40234,83.630859 L 638.40234,66.369141 L 646.07813,66.369141 C 647.89061,66.369158 649.26171,66.841814 650.19141,67.787109 C 651.12889,68.724624 651.59764,70.103529 651.59766,71.923828 C 651.59764,73.705088 651.14061,75.080087 650.22656,76.048828 C 649.31249,77.009772 648.0078,77.490241 646.3125,77.490234 L 641.95313,77.490234"
+       id="text5534" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 709.24805,63.919922 L 709.24805,66.369141 C 709.17772,66.369155 709.08007,66.365249 708.95508,66.357422 C 708.83007,66.349624 708.74413,66.345718 708.69727,66.345703 C 707.90819,66.345718 707.37304,66.498062 707.0918,66.802734 C 706.81835,67.099624 706.68163,67.732435 706.68164,68.701172 L 706.68164,71.513672 C 706.68163,72.66993 706.50585,73.490242 706.1543,73.974609 C 705.80273,74.458991 705.16992,74.806647 704.25586,75.017578 C 705.16992,75.228522 705.80273,75.572271 706.1543,76.048828 C 706.50585,76.525395 706.68163,77.341801 706.68164,78.498047 L 706.68164,81.322266 C 706.68163,82.283202 706.81835,82.912108 707.0918,83.208984 C 707.36523,83.505857 707.90038,83.654294 708.69727,83.654297 C 708.74413,83.654294 708.83007,83.650388 708.95508,83.642578 C 709.08007,83.634763 709.17772,83.630857 709.24805,83.630859 L 709.24805,86.080078 C 709.13866,86.080073 708.98632,86.08398 708.79102,86.091797 C 708.59569,86.099605 708.45116,86.103511 708.35742,86.103516 C 707.57616,86.103511 706.92382,86.056636 706.40039,85.962891 C 705.87695,85.869136 705.43163,85.724605 705.06445,85.529297 C 704.61913,85.263668 704.30273,84.904293 704.11523,84.451172 C 703.93554,84.005857 703.8457,83.228514 703.8457,82.119141 L 703.8457,79.166016 C 703.8457,78.095706 703.64648,77.337895 703.24805,76.892578 C 702.84961,76.439458 702.17773,76.212896 701.23242,76.212891 C 701.18554,76.212896 701.10742,76.216802 700.99805,76.224609 C 700.88867,76.232427 700.80664,76.236333 700.75195,76.236328 L 700.75195,73.787109 C 700.80664,73.787117 700.88867,73.791023 700.99805,73.798828 C 701.10742,73.806648 701.18554,73.810554 701.23242,73.810547 C 702.16992,73.810554 702.83789,73.583992 703.23633,73.130859 C 703.64257,72.677743 703.8457,71.912119 703.8457,70.833984 L 703.8457,67.904297 C 703.8457,66.787124 703.93554,66.001968 704.11523,65.548828 C 704.30273,65.095719 704.61913,64.736345 705.06445,64.470703 C 705.43163,64.275408 705.87695,64.130876 706.40039,64.037109 C 706.92382,63.943377 707.57616,63.896502 708.35742,63.896484 C 708.45116,63.896502 708.59569,63.900408 708.79102,63.908203 C 708.98632,63.916033 709.13866,63.919939 709.24805,63.919922 M 703.0957,93.966797 L 709.01367,93.966797 L 709.01367,96.462891 L 706.25977,96.462891 L 706.25977,113.8418 L 709.01367,113.8418 L 709.01367,116.33789 L 703.0957,116.33789 L 703.0957,93.966797"
+       id="text5546" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 760.75195,63.908203 L 761.54883,63.908203 C 762.4082,63.90822 763.09961,63.955095 763.62305,64.048828 C 764.14648,64.142595 764.58398,64.291033 764.93555,64.494141 C 765.38085,64.744157 765.69335,65.103532 765.87305,65.572266 C 766.06054,66.033218 766.15429,66.806655 766.1543,67.892578 L 766.1543,70.845703 C 766.15429,71.916025 766.35351,72.677743 766.75195,73.130859 C 767.15038,73.57618 767.82226,73.798836 768.76758,73.798828 C 768.81444,73.798836 768.89257,73.794929 769.00195,73.787109 C 769.11132,73.779304 769.19335,73.775398 769.24805,73.775391 L 769.24805,76.224609 L 768.81445,76.224609 C 767.83788,76.224614 767.15038,76.443364 766.75195,76.880859 C 766.35351,77.318363 766.15429,78.076175 766.1543,79.154297 L 766.1543,82.107422 C 766.15429,83.224607 766.06054,84.009763 765.87305,84.462891 C 765.69335,84.916012 765.38085,85.267574 764.93555,85.517578 C 764.56835,85.712886 764.12304,85.857417 763.59961,85.951172 C 763.07617,86.044917 762.42382,86.091792 761.64258,86.091797 C 761.54883,86.091792 761.40429,86.087886 761.20898,86.080078 C 761.01367,86.072261 760.86133,86.068355 760.75195,86.068359 L 760.75195,83.619141 C 760.82226,83.619138 760.91992,83.623044 761.04492,83.630859 C 761.16992,83.638669 761.25586,83.642576 761.30273,83.642578 C 762.09179,83.642576 762.62304,83.490232 762.89648,83.185547 C 763.17773,82.88867 763.31836,82.263671 763.31836,81.310547 L 763.31836,78.509766 C 763.31836,77.337895 763.49414,76.513677 763.8457,76.037109 C 764.19726,75.55274 764.83007,75.20899 765.74414,75.005859 C 764.83007,74.794928 764.19726,74.447272 763.8457,73.962891 C 763.49414,73.478523 763.31836,72.658212 763.31836,71.501953 L 763.31836,68.666016 C 763.31836,67.712904 763.17773,67.087905 762.89648,66.791016 C 762.62304,66.486343 762.09179,66.333999 761.30273,66.333984 C 761.25586,66.333999 761.16992,66.337906 761.04492,66.345703 C 760.91992,66.35353 760.82226,66.357437 760.75195,66.357422 L 760.75195,63.908203 M 767.00977,93.955078 L 767.00977,116.32617 L 761.08008,116.32617 L 761.08008,113.83008 L 763.8457,113.83008 L 763.8457,96.451172 L 761.08008,96.451172 L 761.08008,93.955078 L 767.00977,93.955078"
+       id="text5554" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 823.79883,62.876953 L 826.21289,62.876953 L 826.21289,86.876953 L 823.79883,86.876953 L 823.79883,62.876953 M 827.10352,113.44336 L 821.29102,93.509766 L 822.87305,93.509766 L 828.70898,113.44336 L 827.10352,113.44336"
+       id="text5564" />
+    <g
+       id="g5770"
+       transform="translate(0,3.75)">
+      <text
+         sodipodi:linespacing="125%"
+         id="text5570"
+         y="139.30469"
+         x="52.152344"
+         style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+         xml:space="preserve"><tspan
+           y="139.30469"
+           x="52.152344"
+           id="tspan5572"
+           sodipodi:role="line">Caps Lock</tspan></text>
+      <path
+         id="path5584"
+         d="M 26.25,142.5 L 15,157.5 L 22.5,157.5 L 22.5,165 L 30,165 L 30,157.5 L 37.5,157.5 L 26.25,142.5 z M 25.21875,146.71875 L 27.25,146.71875 L 30.375,155.34375 L 28.5,155.34375 L 27.90625,153.5625 L 24.5625,153.5625 L 24,155.34375 L 22.125,155.34375 L 25.21875,146.71875 z M 26.25,148.4375 L 25.03125,152.09375 L 27.4375,152.09375 L 26.25,148.4375 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 119.9707,129.82617 L 117.58008,137.17383 L 122.37305,137.17383 L 119.9707,129.82617 M 117.9082,126.36914 L 122.00977,126.36914 L 128.23242,143.63086 L 124.50586,143.63086 L 123.33398,140.08008 L 116.64258,140.08008 L 115.50586,143.63086 L 111.76758,143.63086 L 117.9082,126.36914"
+       id="text5641" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 172.98047,138.29297 L 176.48438,138.29297 C 176.61718,139.23829 177.0039,139.94141 177.64453,140.40234 C 178.28515,140.85547 179.21093,141.08203 180.42188,141.08203 C 181.45312,141.08203 182.23046,140.89844 182.75391,140.53125 C 183.27733,140.16407 183.53905,139.6211 183.53906,138.90234 C 183.53905,137.85547 182.03515,136.98829 179.02734,136.30078 C 178.98827,136.29298 178.95312,136.28516 178.92188,136.27734 C 178.84374,136.26173 178.72265,136.23438 178.55859,136.19531 C 176.94921,135.84376 175.80078,135.44923 175.11328,135.01172 C 174.5039,134.6211 174.03906,134.09767 173.71875,133.44141 C 173.39844,132.77735 173.23828,131.99611 173.23828,131.09766 C 173.23828,129.41798 173.80859,128.13283 174.94922,127.24219 C 176.08984,126.34377 177.73828,125.89455 179.89453,125.89453 C 181.91015,125.89455 183.48436,126.37111 184.61719,127.32422 C 185.7578,128.27736 186.35936,129.62111 186.42188,131.35547 L 183.01172,131.35547 C 182.94921,130.51954 182.6289,129.88283 182.05078,129.44531 C 181.47265,129.00783 180.64843,128.78908 179.57813,128.78906 C 178.64843,128.78908 177.92968,128.97267 177.42188,129.33984 C 176.92187,129.69923 176.67187,130.21486 176.67188,130.88672 C 176.67187,131.80079 177.65234,132.48439 179.61328,132.9375 C 180.14452,133.06251 180.55859,133.16017 180.85547,133.23047 C 182.11327,133.55079 183.0039,133.80079 183.52734,133.98047 C 184.05858,134.16017 184.51952,134.35938 184.91016,134.57813 C 185.61327,134.96876 186.14061,135.48829 186.49219,136.13672 C 186.84374,136.77735 187.01952,137.54688 187.01953,138.44531 C 187.01952,140.24219 186.41405,141.63672 185.20313,142.62891 C 183.99218,143.61328 182.28515,144.10547 180.08203,144.10547 C 177.91015,144.10547 176.20703,143.60156 174.97266,142.59375 C 173.73828,141.58594 173.07422,140.15235 172.98047,138.29297"
+       id="text5645" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 236.16211,140.51367 L 239.00977,140.51367 C 240.65819,140.51367 241.8496,140.08399 242.58398,139.22461 C 243.32616,138.35743 243.69725,136.95508 243.69727,135.01758 C 243.69725,133.0879 243.3535,131.66993 242.66602,130.76367 C 241.9785,129.85744 240.90429,129.40431 239.44336,129.4043 L 236.16211,129.4043 L 236.16211,140.51367 M 232.68164,143.63086 L 232.68164,126.36914 L 239.44336,126.36914 C 242.09179,126.36916 244.06444,127.084 245.36133,128.51367 C 246.666,129.94337 247.31834,132.11134 247.31836,135.01758 C 247.31834,136.59571 247.07616,137.98633 246.5918,139.18945 C 246.11522,140.39258 245.41991,141.36133 244.50586,142.0957 C 243.81835,142.64258 243.0371,143.03711 242.16211,143.2793 C 241.2871,143.51367 240.06054,143.63086 238.48242,143.63086 L 232.68164,143.63086"
+       id="text5649" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 293.97656,143.63086 L 293.97656,126.36914 L 306.02344,126.36914 L 306.02344,129.36914 L 297.48047,129.36914 L 297.48047,133.2832 L 304.96875,133.2832 L 304.96875,136.2832 L 297.48047,136.2832 L 297.48047,143.63086 L 293.97656,143.63086"
+       id="text5653" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 365.17969,141.57422 C 364.53905,142.44141 363.80858,143.07813 362.98828,143.48438 C 362.17577,143.89062 361.21874,144.09375 360.11719,144.09375 C 357.70312,144.09375 355.74609,143.25781 354.24609,141.58594 C 352.7539,139.90625 352.00781,137.70313 352.00781,134.97656 C 352.00781,132.22657 352.7539,130.02736 354.24609,128.37891 C 355.73828,126.73049 357.72656,125.90627 360.21094,125.90625 C 362.37499,125.90627 364.14061,126.4258 365.50781,127.46484 C 366.87498,128.49611 367.68748,129.91798 367.94531,131.73047 L 364.32422,131.73047 C 364.10546,130.83204 363.65624,130.14845 362.97656,129.67969 C 362.30468,129.21095 361.42577,128.97658 360.33984,128.97656 C 358.89452,128.97658 357.75781,129.50783 356.92969,130.57031 C 356.10937,131.62501 355.69921,133.08595 355.69922,134.95313 C 355.69921,136.82813 356.1289,138.29688 356.98828,139.35938 C 357.84765,140.42188 359.02734,140.95313 360.52734,140.95313 C 361.65233,140.95313 362.59374,140.6211 363.35156,139.95703 C 364.10936,139.29297 364.57811,138.38282 364.75781,137.22656 L 360.84375,137.22656 L 360.84375,134.27344 L 367.99219,134.27344 L 367.99219,143.61328 L 365.61328,143.61328 L 365.17969,141.57422"
+       id="text5657" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 412.86328,143.63086 L 412.86328,126.36914 L 416.4375,126.36914 L 416.4375,132.80273 L 423.5625,132.80273 L 423.5625,126.36914 L 427.13672,126.36914 L 427.13672,143.63086 L 423.5625,143.63086 L 423.5625,135.97852 L 416.4375,135.97852 L 416.4375,143.63086 L 412.86328,143.63086"
+       id="text5661" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 143.15039,203.63086 L 143.15039,200.63086 L 152.53711,189.49805 L 143.33789,189.49805 L 143.33789,186.36914 L 156.84961,186.36914 L 156.84961,189.36914 L 147.43945,200.51367 L 156.63867,200.51367 L 156.63867,203.63086 L 143.15039,203.63086"
+       id="text5679" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 202.37109,203.63086 L 207.79688,194.81836 L 202.37109,186.36914 L 206.47266,186.36914 L 210,192.4043 L 213.50391,186.36914 L 217.62891,186.36914 L 212.20313,194.79492 L 217.62891,203.63086 L 213.52734,203.63086 L 210,197.6543 L 206.47266,203.63086 L 202.37109,203.63086"
+       id="text5683" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 277.875,197.68359 C 277.74217,199.64454 276.98436,201.20313 275.60156,202.35938 C 274.22655,203.51563 272.42968,204.09375 270.21094,204.09375 C 267.65624,204.09375 265.66796,203.29688 264.24609,201.70313 C 262.83203,200.10938 262.125,197.87501 262.125,195 C 262.125,192.06251 262.84765,189.81251 264.29297,188.25 C 265.73828,186.68752 267.8164,185.90627 270.52734,185.90625 C 272.73046,185.90627 274.46874,186.44533 275.74219,187.52344 C 277.02342,188.59377 277.72655,190.10939 277.85156,192.07031 L 274.34766,192.07031 C 274.19921,191.09376 273.80077,190.35158 273.15234,189.84375 C 272.50389,189.32814 271.6289,189.07033 270.52734,189.07031 C 268.96484,189.07033 267.77734,189.57423 266.96484,190.58203 C 266.15234,191.58986 265.74609,193.06251 265.74609,195 C 265.74609,196.87501 266.14843,198.32422 266.95313,199.34766 C 267.76562,200.3711 268.91796,200.88282 270.41016,200.88281 C 271.48827,200.88282 272.37108,200.60938 273.05859,200.0625 C 273.74608,199.50782 274.19139,198.71485 274.39453,197.68359 L 277.875,197.68359"
+       id="text5687" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 328.33594,203.63086 L 322.38281,186.36914 L 326.32031,186.36914 L 329.98828,199.2832 L 333.72656,186.36914 L 337.61719,186.36914 L 331.73438,203.63086 L 328.33594,203.63086"
+       id="text5691" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 386.32031,200.51367 L 390.52734,200.51367 C 391.51952,200.51367 392.24218,200.33399 392.69531,199.97461 C 393.14843,199.61524 393.37499,199.04883 393.375,198.27539 C 393.37499,197.47071 393.15233,196.89258 392.70703,196.54102 C 392.26171,196.18165 391.52733,196.00196 390.50391,196.00195 L 386.32031,196.00195 L 386.32031,200.51367 M 386.32031,193.04883 L 390.375,193.04883 C 391.24999,193.04884 391.89061,192.9004 392.29688,192.60352 C 392.70311,192.29884 392.90624,191.82228 392.90625,191.17383 C 392.90624,190.54103 392.70702,190.084 392.30859,189.80273 C 391.91796,189.51369 391.26561,189.36915 390.35156,189.36914 L 386.32031,189.36914 L 386.32031,193.04883 M 382.92188,203.63086 L 382.92188,186.36914 L 391.05469,186.36914 C 392.8203,186.36916 394.16405,186.74416 395.08594,187.49414 C 396.01561,188.23634 396.48045,189.31837 396.48047,190.74023 C 396.48045,191.61525 396.30858,192.34571 395.96484,192.93164 C 395.62108,193.51759 395.10545,193.97071 394.41797,194.29102 C 395.30858,194.6504 395.97264,195.16993 396.41016,195.84961 C 396.85545,196.52149 397.07811,197.36133 397.07813,198.36914 C 397.07811,200.04883 396.53123,201.34571 395.4375,202.25977 C 394.34374,203.17383 392.79296,203.63086 390.78516,203.63086 L 382.92188,203.63086"
+       id="text5695" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 442.88672,203.63086 L 442.88672,186.36914 L 446.60156,186.36914 L 453.60938,198.22852 L 453.60938,186.36914 L 457.11328,186.36914 L 457.11328,203.63086 L 453.44531,203.63086 L 446.39063,191.77148 L 446.39063,203.63086 L 442.88672,203.63086"
+       id="text5699" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 501.32813,203.63086 L 501.32813,186.36914 L 506.57813,186.36914 L 510.01172,199.50586 L 513.39844,186.36914 L 518.67188,186.36914 L 518.67188,203.63086 L 515.34375,203.63086 L 515.34375,189.70898 L 511.83984,203.63086 L 508.20703,203.63086 L 504.65625,189.70898 L 504.65625,203.63086 L 501.32813,203.63086"
+       id="text5703" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 720.78516,126.7793 L 723.03516,126.7793 L 723.03516,133.33008 L 720.78516,133.33008 L 720.78516,126.7793 M 716.96484,126.7793 L 719.21484,126.7793 L 719.21484,133.33008 L 716.96484,133.33008 L 716.96484,126.7793 M 718.88672,156.7793 L 721.13672,156.7793 L 721.13672,163.33008 L 718.88672,163.33008 L 718.88672,156.7793"
+       id="text5731" />
+    <path
+       style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 772.5,140.60938 L 772.5,129.10156 L 780.85156,129.10156 L 780.85156,131.10156 L 774.83594,131.10156 L 774.83594,133.55469 L 780.33594,133.55469 L 780.33594,135.52344 L 774.83594,135.52344 L 774.83594,138.48438 L 781.13281,138.48438 L 781.13281,140.60938 L 772.5,140.60938 M 782.74219,140.60938 L 782.74219,132.11719 L 784.96875,132.11719 L 784.96875,133.125 C 785.28645,132.71355 785.66145,132.40626 786.09375,132.20313 C 786.52604,131.9948 787.00781,131.89063 787.53906,131.89063 C 788.47656,131.89063 789.17708,132.13543 789.64063,132.625 C 790.10937,133.10938 790.34374,133.84115 790.34375,134.82031 L 790.34375,140.60938 L 788.07031,140.60938 L 788.07031,135.47656 C 788.07031,134.86719 787.96614,134.4323 787.75781,134.17188 C 787.55468,133.91147 787.22135,133.78126 786.75781,133.78125 C 786.22135,133.78126 785.79687,133.94271 785.48438,134.26563 C 785.17187,134.58334 785.01562,135.01823 785.01563,135.57031 L 785.01563,140.60938 L 782.74219,140.60938 M 796.07813,140.67188 C 795.86979,140.67708 795.61979,140.6849 795.32813,140.69531 C 795.04166,140.71094 794.85937,140.71875 794.78125,140.71875 C 793.91146,140.71875 793.3151,140.55729 792.99219,140.23438 C 792.67448,139.90625 792.51562,139.26302 792.51563,138.30469 L 792.51563,133.71094 L 791.39063,133.71094 L 791.39063,132.11719 L 792.51563,132.11719 L 792.51563,129.79688 L 794.76563,129.79688 L 794.76563,132.11719 L 796.07813,132.11719 L 796.07813,133.71094 L 794.76563,133.71094 L 794.76563,138.41406 C 794.76562,138.63802 794.8151,138.78646 794.91406,138.85938 C 795.01302,138.92709 795.21614,138.96094 795.52344,138.96094 L 796.07813,138.96094 L 796.07813,140.67188 M 802.63281,138.03125 L 804.89844,138.03125 C 804.66926,138.92709 804.20572,139.63021 803.50781,140.14063 C 802.8151,140.64583 801.96874,140.89844 800.96875,140.89844 C 799.73958,140.89844 798.76562,140.48698 798.04688,139.66406 C 797.32812,138.83594 796.96875,137.71615 796.96875,136.30469 C 796.96875,134.91407 797.32292,133.81772 798.03125,133.01563 C 798.73958,132.21355 799.70833,131.81251 800.9375,131.8125 C 802.23958,131.81251 803.24478,132.20834 803.95313,133 C 804.66145,133.78647 805.01562,134.90886 805.01563,136.36719 C 805.01562,136.52865 805.01301,136.65105 805.00781,136.73438 C 805.0078,136.8125 805.0026,136.88802 804.99219,136.96094 L 799.32031,136.96094 C 799.35156,137.62761 799.51302,138.13021 799.80469,138.46875 C 800.10156,138.80729 800.52604,138.97656 801.07813,138.97656 C 801.46874,138.97656 801.78906,138.90104 802.03906,138.75 C 802.28906,138.59375 802.48697,138.35417 802.63281,138.03125 M 799.32031,135.46875 L 802.66406,135.46875 C 802.64322,134.89584 802.48958,134.46094 802.20313,134.16406 C 801.92187,133.86199 801.51562,133.71094 800.98438,133.71094 C 800.48958,133.71094 800.09895,133.86199 799.8125,134.16406 C 799.53125,134.46615 799.36718,134.90105 799.32031,135.46875 M 806.52344,140.60938 L 806.52344,132.11719 L 808.63281,132.11719 L 808.63281,133.57031 C 808.92968,132.98699 809.27604,132.5599 809.67188,132.28906 C 810.0677,132.01303 810.53906,131.87501 811.08594,131.875 C 811.17447,131.87501 811.24218,131.87761 811.28906,131.88281 C 811.34114,131.88282 811.38281,131.88543 811.41406,131.89063 L 811.42188,134.19531 L 810.66406,134.19531 C 810.04427,134.19532 809.57812,134.35678 809.26563,134.67969 C 808.95312,135.00261 808.79687,135.48178 808.79688,136.11719 L 808.79688,140.60938 L 806.52344,140.60938"
+       id="text5737" />
+    <path
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 787.5,172.5 L 787.5,157.5 L 772.5,165 L 787.5,172.5 z "
+       id="path5745" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+       d="M 810,150 L 810,165 L 780,165"
+       id="path5747" />
+    <g
+       id="g5790">
+      <text
+         xml:space="preserve"
+         style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+         x="31.8125"
+         y="201.19531"
+         id="text5753"
+         sodipodi:linespacing="125%"><tspan
+           sodipodi:role="line"
+           id="tspan5755"
+           x="31.8125"
+           y="201.19531">Shift</tspan></text>
+      <path
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 27.25,207.125 L 16,222.125 L 23.5,222.125 L 23.5,229.625 L 31,229.625 L 31,222.125 L 38.5,222.125 L 27.25,207.125 z "
+         id="path5757" />
+    </g>
+    <g
+       id="g5795"
+       transform="translate(727.5,0)">
+      <text
+         sodipodi:linespacing="125%"
+         id="text5797"
+         y="201.19531"
+         x="31.8125"
+         style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+         xml:space="preserve"><tspan
+           y="201.19531"
+           x="31.8125"
+           id="tspan5799"
+           sodipodi:role="line">Shift</tspan></text>
+      <path
+         id="path5801"
+         d="M 27.25,207.125 L 16,222.125 L 23.5,222.125 L 23.5,229.625 L 31,229.625 L 31,222.125 L 38.5,222.125 L 27.25,207.125 z "
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 576.90234,189.63867 L 576.90234,192.20508 L 566.4375,196.48242 L 576.90234,200.74805 L 576.90234,203.31445 L 563.09766,197.63086 L 563.09766,195.29883 L 576.90234,189.63867 M 568.21875,237.68555 L 568.21875,236.31445 C 568.875,236.12695 569.35937,235.83789 569.67188,235.44727 C 569.98437,235.05664 570.14062,234.54883 570.14063,233.92383 L 570.14063,233.63086 L 568.21875,233.63086 L 568.21875,230.10352 L 571.76953,230.10352 L 571.76953,233.49023 C 571.76953,234.6543 571.46875,235.59179 570.86719,236.30273 C 570.27343,237.01367 569.39062,237.47461 568.21875,237.68555"
+       id="text5803" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 623.09766,189.63867 L 636.90234,195.29883 L 636.90234,197.63086 L 623.09766,203.31445 L 623.09766,200.74805 L 633.58594,196.48242 L 623.09766,192.20508 L 623.09766,189.63867 M 628.21875,233.63086 L 628.21875,230.10352 L 631.74609,230.10352 L 631.74609,233.63086 L 628.21875,233.63086"
+       id="text5813" />
+    <path
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 688.44727,198.61523 C 688.44726,198.5293 688.44335,198.41602 688.43555,198.27539 C 688.42773,198.12696 688.42382,198.01758 688.42383,197.94727 C 688.42382,197.25977 688.49804,196.68946 688.64648,196.23633 C 688.79492,195.7754 689.0332,195.34571 689.36133,194.94727 C 689.61132,194.6504 689.98242,194.31056 690.47461,193.92773 C 690.9746,193.54493 691.29882,193.26759 691.44727,193.0957 C 691.75976,192.74415 691.9746,192.42775 692.0918,192.14648 C 692.20898,191.86525 692.26757,191.55665 692.26758,191.2207 C 692.26757,190.47853 692.06054,189.9004 691.64648,189.48633 C 691.23241,189.07228 690.65429,188.86525 689.91211,188.86523 C 689.16992,188.86525 688.58398,189.11525 688.1543,189.61523 C 687.73242,190.10744 687.50195,190.80275 687.46289,191.70117 L 684.1582,191.70117 L 684.1582,191.33789 C 684.1582,189.68947 684.67773,188.37697 685.7168,187.40039 C 686.76367,186.41603 688.16992,185.92385 689.93555,185.92383 C 691.74023,185.92385 693.17382,186.38869 694.23633,187.31836 C 695.30663,188.24025 695.84178,189.47853 695.8418,191.0332 C 695.84178,191.58009 695.77928,192.07228 695.6543,192.50977 C 695.5371,192.93946 695.3535,193.33399 695.10352,193.69336 C 694.78319,194.14649 694.2871,194.63868 693.61523,195.16992 C 692.95116,195.69337 692.54882,196.01759 692.4082,196.14258 C 692.11132,196.43165 691.89648,196.73634 691.76367,197.05664 C 691.63866,197.37696 691.57616,197.75977 691.57617,198.20508 C 691.57616,198.24415 691.58007,198.31055 691.58789,198.4043 C 691.59569,198.49805 691.5996,198.56836 691.59961,198.61523 L 688.44727,198.61523 M 688.2832,203.63086 L 688.2832,200.19727 L 691.74023,200.19727 L 691.74023,203.63086 L 688.2832,203.63086 M 686.31445,235.85742 L 692.12695,215.92383 L 693.73242,215.92383 L 687.89648,235.85742 L 686.31445,235.85742"
+       id="text5819" />
+    <path
+       style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 18,271.78906 C 17.911447,273.09636 17.406239,274.13542 16.484375,274.90625 C 15.5677,275.67708 14.369784,276.0625 12.890625,276.0625 C 11.187496,276.0625 9.8619761,275.53125 8.9140625,274.46875 C 7.971353,273.40625 7.4999993,271.91667 7.5,270 C 7.4999993,268.04167 7.9817696,266.54168 8.9453125,265.5 C 9.9088511,264.45834 11.294266,263.93751 13.101563,263.9375 C 14.570305,263.93751 15.729158,264.29689 16.578125,265.01563 C 17.432281,265.72918 17.901031,266.73959 17.984375,268.04688 L 15.648438,268.04688 C 15.54947,267.39584 15.283846,266.90105 14.851563,266.5625 C 14.419263,266.21876 13.83593,266.04688 13.101563,266.04688 C 12.059891,266.04688 11.268225,266.38282 10.726563,267.05469 C 10.184892,267.72657 9.9140594,268.70834 9.9140625,270 C 9.9140594,271.25 10.182288,272.21615 10.71875,272.89844 C 11.260412,273.58073 12.028641,273.92188 13.023438,273.92188 C 13.742181,273.92188 14.330722,273.73959 14.789063,273.375 C 15.247387,273.00521 15.544262,272.47657 15.679688,271.78906 L 18,271.78906 M 23.46875,275.80469 C 23.260412,275.8099 23.010412,275.81771 22.71875,275.82813 C 22.432288,275.84375 22.249996,275.85156 22.171875,275.85156 C 21.302081,275.85156 20.705727,275.6901 20.382813,275.36719 C 20.065103,275.03906 19.906249,274.39583 19.90625,273.4375 L 19.90625,268.84375 L 18.78125,268.84375 L 18.78125,267.25 L 19.90625,267.25 L 19.90625,264.92969 L 22.15625,264.92969 L 22.15625,267.25 L 23.46875,267.25 L 23.46875,268.84375 L 22.15625,268.84375 L 22.15625,273.54688 C 22.156247,273.77084 22.205726,273.91927 22.304688,273.99219 C 22.403642,274.0599 22.606767,274.09375 22.914063,274.09375 L 23.46875,274.09375 L 23.46875,275.80469 M 24.789063,275.74219 L 24.789063,267.25 L 26.898438,267.25 L 26.898438,268.70313 C 27.195309,268.1198 27.541663,267.69272 27.9375,267.42188 C 28.333329,267.14584 28.804682,267.00782 29.351563,267.00781 C 29.440099,267.00782 29.507807,267.01043 29.554688,267.01563 C 29.606765,267.01563 29.648432,267.01824 29.679688,267.02344 L 29.6875,269.32813 L 28.929688,269.32813 C 28.309891,269.32813 27.843746,269.48959 27.53125,269.8125 C 27.218747,270.13542 27.062497,270.61459 27.0625,271.25 L 27.0625,275.74219 L 24.789063,275.74219 M 31.023438,275.74219 L 31.023438,264.23438 L 33.296875,264.23438 L 33.296875,275.74219 L 31.023438,275.74219"
+       id="text5827" />
+    <path
+       style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 612.96875,266.53906 L 611.375,271.4375 L 614.57031,271.4375 L 612.96875,266.53906 M 611.59375,264.23438 L 614.32813,264.23438 L 618.47656,275.74219 L 615.99219,275.74219 L 615.21094,273.375 L 610.75,273.375 L 609.99219,275.74219 L 607.5,275.74219 L 611.59375,264.23438 M 619.53906,275.74219 L 619.53906,264.23438 L 621.8125,264.23438 L 621.8125,275.74219 L 619.53906,275.74219 M 627.64063,275.80469 C 627.43229,275.8099 627.18229,275.81771 626.89063,275.82813 C 626.60416,275.84375 626.42187,275.85156 626.34375,275.85156 C 625.47396,275.85156 624.8776,275.6901 624.55469,275.36719 C 624.23698,275.03906 624.07812,274.39583 624.07813,273.4375 L 624.07813,268.84375 L 622.95313,268.84375 L 622.95313,267.25 L 624.07813,267.25 L 624.07813,264.92969 L 626.32813,264.92969 L 626.32813,267.25 L 627.64063,267.25 L 627.64063,268.84375 L 626.32813,268.84375 L 626.32813,273.54688 C 626.32812,273.77084 626.3776,273.91927 626.47656,273.99219 C 626.57552,274.0599 626.77864,274.09375 627.08594,274.09375 L 627.64063,274.09375 L 627.64063,275.80469"
+       id="text5835"
+       sodipodi:nodetypes="cccccccccccccccccccsssccccccccccccsccc" />
+    <path
+       style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 828,271.78906 C 827.91145,273.09636 827.40624,274.13542 826.48438,274.90625 C 825.5677,275.67708 824.36978,276.0625 822.89063,276.0625 C 821.1875,276.0625 819.86198,275.53125 818.91406,274.46875 C 817.97135,273.40625 817.5,271.91667 817.5,270 C 817.5,268.04167 817.98177,266.54168 818.94531,265.5 C 819.90885,264.45834 821.29427,263.93751 823.10156,263.9375 C 824.5703,263.93751 825.72916,264.29689 826.57813,265.01563 C 827.43228,265.72918 827.90103,266.73959 827.98438,268.04688 L 825.64844,268.04688 C 825.54947,267.39584 825.28385,266.90105 824.85156,266.5625 C 824.41926,266.21876 823.83593,266.04688 823.10156,266.04688 C 822.05989,266.04688 821.26822,266.38282 820.72656,267.05469 C 820.18489,267.72657 819.91406,268.70834 819.91406,270 C 819.91406,271.25 820.18229,272.21615 820.71875,272.89844 C 821.26041,273.58073 822.02864,273.92188 823.02344,273.92188 C 823.74218,273.92188 824.33072,273.73959 824.78906,273.375 C 825.24739,273.00521 825.54426,272.47657 825.67969,271.78906 L 828,271.78906 M 833.46875,275.80469 C 833.26041,275.8099 833.01041,275.81771 832.71875,275.82813 C 832.43229,275.84375 832.25,275.85156 832.17188,275.85156 C 831.30208,275.85156 830.70573,275.6901 830.38281,275.36719 C 830.0651,275.03906 829.90625,274.39583 829.90625,273.4375 L 829.90625,268.84375 L 828.78125,268.84375 L 828.78125,267.25 L 829.90625,267.25 L 829.90625,264.92969 L 832.15625,264.92969 L 832.15625,267.25 L 833.46875,267.25 L 833.46875,268.84375 L 832.15625,268.84375 L 832.15625,273.54688 C 832.15625,273.77084 832.20573,273.91927 832.30469,273.99219 C 832.40364,274.0599 832.60677,274.09375 832.91406,274.09375 L 833.46875,274.09375 L 833.46875,275.80469 M 834.78906,275.74219 L 834.78906,267.25 L 836.89844,267.25 L 836.89844,268.70313 C 837.19531,268.1198 837.54166,267.69272 837.9375,267.42188 C 838.33333,267.14584 838.80468,267.00782 839.35156,267.00781 C 839.4401,267.00782 839.50781,267.01043 839.55469,267.01563 C 839.60677,267.01563 839.64843,267.01824 839.67969,267.02344 L 839.6875,269.32813 L 838.92969,269.32813 C 838.30989,269.32813 837.84375,269.48959 837.53125,269.8125 C 837.21875,270.13542 837.0625,270.61459 837.0625,271.25 L 837.0625,275.74219 L 834.78906,275.74219 M 841.02344,275.74219 L 841.02344,264.23438 L 843.29688,264.23438 L 843.29688,275.74219 L 841.02344,275.74219"
+       id="text5839" />
+    <path
+       style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 108.94531,264.01953 L 105.64844,252.51172 L 108.10156,252.51172 L 110.07031,260.62891 L 111.73438,252.51172 L 114.25781,252.51172 L 115.92188,260.62891 L 117.89063,252.51172 L 120.32031,252.51172 L 117.03125,264.01953 L 114.77344,264.01953 L 112.99219,255.20703 L 111.20313,264.01953 L 108.94531,264.01953 M 121.5,254.58203 L 121.5,252.51172 L 123.77344,252.51172 L 123.77344,254.58203 L 121.5,254.58203 M 121.5,264.01953 L 121.5,255.52734 L 123.77344,255.52734 L 123.77344,264.01953 L 121.5,264.01953 M 125.79688,264.01953 L 125.79688,255.52734 L 128.02344,255.52734 L 128.02344,256.53516 C 128.34114,256.12371 128.71614,255.81641 129.14844,255.61328 C 129.58072,255.40496 130.06249,255.30079 130.59375,255.30078 C 131.53124,255.30079 132.23176,255.54558 132.69531,256.03516 C 133.16405,256.51954 133.39843,257.25131 133.39844,258.23047 L 133.39844,264.01953 L 131.125,264.01953 L 131.125,258.88672 C 131.12499,258.27735 131.02083,257.84245 130.8125,257.58203 C 130.60937,257.32162 130.27604,257.19141 129.8125,257.19141 C 129.27604,257.19141 128.85156,257.35287 128.53906,257.67578 C 128.22656,257.9935 128.07031,258.42839 128.07031,258.98047 L 128.07031,264.01953 L 125.79688,264.01953 M 106.64844,284.01953 L 106.64844,272.51172 L 109.01563,272.51172 L 109.01563,277.23828 L 113.50781,272.51172 L 116.46875,272.51172 L 111.875,277.16797 L 116.88281,284.01953 L 113.99219,284.01953 L 110.24219,278.75391 L 109.01563,279.97266 L 109.01563,284.01953 L 106.64844,284.01953 M 122.9375,281.44141 L 125.20313,281.44141 C 124.97395,282.33724 124.51041,283.04037 123.8125,283.55078 C 123.11979,284.05599 122.27343,284.30859 121.27344,284.30859 C 120.04427,284.30859 119.07031,283.89714 118.35156,283.07422 C 117.63281,282.2461 117.27344,281.1263 117.27344,279.71484 C 117.27344,278.32422 117.6276,277.22787 118.33594,276.42578 C 119.04427,275.62371 120.01302,275.22267 121.24219,275.22266 C 122.54427,275.22267 123.54947,275.6185 124.25781,276.41016 C 124.96614,277.19662 125.3203,278.31902 125.32031,279.77734 C 125.3203,279.93881 125.3177,280.0612 125.3125,280.14453 C 125.31249,280.22266 125.30728,280.29818 125.29688,280.37109 L 119.625,280.37109 C 119.65625,281.03776 119.81771,281.54037 120.10938,281.87891 C 120.40625,282.21745 120.83073,282.38672 121.38281,282.38672 C 121.77343,282.38672 122.09374,282.3112 122.34375,282.16016 C 122.59374,282.00391 122.79166,281.76433 122.9375,281.44141 M 119.625,278.87891 L 122.96875,278.87891 C 122.94791,278.306 122.79426,277.8711 122.50781,277.57422 C 122.22656,277.27214 121.82031,277.1211 121.28906,277.12109 C 120.79427,277.1211 120.40364,277.27214 120.11719,277.57422 C 119.83593,277.87631 119.67187,278.3112 119.625,278.87891 M 127.16406,287.42578 L 127.16406,285.58984 C 127.23698,285.60026 127.3125,285.60807 127.39063,285.61328 C 127.46875,285.61849 127.57031,285.62109 127.69531,285.62109 C 128.14323,285.62109 128.47916,285.51432 128.70313,285.30078 C 128.92708,285.09245 129.03906,284.77734 129.03906,284.35547 C 129.03906,284.32422 129.03385,284.28516 129.02344,284.23828 C 129.01302,284.19141 129.0026,284.15234 128.99219,284.12109 L 125.92969,275.52734 L 128.42969,275.52734 L 130.21875,281.65234 L 131.96094,275.52734 L 134.35156,275.52734 L 130.85938,285.54297 C 130.59895,286.29297 130.27343,286.80338 129.88281,287.07422 C 129.49218,287.35026 128.90625,287.48828 128.125,287.48828 C 127.98437,287.48828 127.83333,287.48307 127.67188,287.47266 C 127.51041,287.46224 127.34114,287.44661 127.16406,287.42578"
+       id="text5872" />
+    <path
+       style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 708.94531,264.01953 L 705.64844,252.51172 L 708.10156,252.51172 L 710.07031,260.62891 L 711.73438,252.51172 L 714.25781,252.51172 L 715.92188,260.62891 L 717.89063,252.51172 L 720.32031,252.51172 L 717.03125,264.01953 L 714.77344,264.01953 L 712.99219,255.20703 L 711.20313,264.01953 L 708.94531,264.01953 M 721.5,254.58203 L 721.5,252.51172 L 723.77344,252.51172 L 723.77344,254.58203 L 721.5,254.58203 M 721.5,264.01953 L 721.5,255.52734 L 723.77344,255.52734 L 723.77344,264.01953 L 721.5,264.01953 M 725.79688,264.01953 L 725.79688,255.52734 L 728.02344,255.52734 L 728.02344,256.53516 C 728.34114,256.12371 728.71614,255.81641 729.14844,255.61328 C 729.58072,255.40496 730.06249,255.30079 730.59375,255.30078 C 731.53124,255.30079 732.23176,255.54558 732.69531,256.03516 C 733.16405,256.51954 733.39843,257.25131 733.39844,258.23047 L 733.39844,264.01953 L 731.125,264.01953 L 731.125,258.88672 C 731.12499,258.27735 731.02083,257.84245 730.8125,257.58203 C 730.60937,257.32162 730.27604,257.19141 729.8125,257.19141 C 729.27604,257.19141 728.85156,257.35287 728.53906,257.67578 C 728.22656,257.9935 728.07031,258.42839 728.07031,258.98047 L 728.07031,264.01953 L 725.79688,264.01953 M 706.64844,284.01953 L 706.64844,272.51172 L 709.01563,272.51172 L 709.01563,277.23828 L 713.50781,272.51172 L 716.46875,272.51172 L 711.875,277.16797 L 716.88281,284.01953 L 713.99219,284.01953 L 710.24219,278.75391 L 709.01563,279.97266 L 709.01563,284.01953 L 706.64844,284.01953 M 722.9375,281.44141 L 725.20313,281.44141 C 724.97395,282.33724 724.51041,283.04037 723.8125,283.55078 C 723.11979,284.05599 722.27343,284.30859 721.27344,284.30859 C 720.04427,284.30859 719.07031,283.89714 718.35156,283.07422 C 717.63281,282.2461 717.27344,281.1263 717.27344,279.71484 C 717.27344,278.32422 717.6276,277.22787 718.33594,276.42578 C 719.04427,275.62371 720.01302,275.22267 721.24219,275.22266 C 722.54427,275.22267 723.54947,275.6185 724.25781,276.41016 C 724.96614,277.19662 725.3203,278.31902 725.32031,279.77734 C 725.3203,279.93881 725.3177,280.0612 725.3125,280.14453 C 725.31249,280.22266 725.30728,280.29818 725.29688,280.37109 L 719.625,280.37109 C 719.65625,281.03776 719.81771,281.54037 720.10938,281.87891 C 720.40625,282.21745 720.83073,282.38672 721.38281,282.38672 C 721.77343,282.38672 722.09374,282.3112 722.34375,282.16016 C 722.59374,282.00391 722.79166,281.76433 722.9375,281.44141 M 719.625,278.87891 L 722.96875,278.87891 C 722.94791,278.306 722.79426,277.8711 722.50781,277.57422 C 722.22656,277.27214 721.82031,277.1211 721.28906,277.12109 C 720.79427,277.1211 720.40364,277.27214 720.11719,277.57422 C 719.83593,277.87631 719.67187,278.3112 719.625,278.87891 M 727.16406,287.42578 L 727.16406,285.58984 C 727.23698,285.60026 727.3125,285.60807 727.39063,285.61328 C 727.46875,285.61849 727.57031,285.62109 727.69531,285.62109 C 728.14323,285.62109 728.47916,285.51432 728.70313,285.30078 C 728.92708,285.09245 729.03906,284.77734 729.03906,284.35547 C 729.03906,284.32422 729.03385,284.28516 729.02344,284.23828 C 729.01302,284.19141 729.0026,284.15234 728.99219,284.12109 L 725.92969,275.52734 L 728.42969,275.52734 L 730.21875,281.65234 L 731.96094,275.52734 L 734.35156,275.52734 L 730.85938,285.54297 C 730.59895,286.29297 730.27343,286.80338 729.88281,287.07422 C 729.49218,287.35026 728.90625,287.48828 728.125,287.48828 C 727.98437,287.48828 727.83333,287.48307 727.67188,287.47266 C 727.51041,287.46224 727.34114,287.44661 727.16406,287.42578"
+       id="text5878" />
+    <path
+       style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT"
+       d="M 759.98438,275.60938 L 759.98438,264.10156 L 763.48438,264.10156 L 765.77344,272.85938 L 768.03125,264.10156 L 771.54688,264.10156 L 771.54688,275.60938 L 769.32813,275.60938 L 769.32813,266.32813 L 766.99219,275.60938 L 764.57031,275.60938 L 762.20313,266.32813 L 762.20313,275.60938 L 759.98438,275.60938 M 778.99219,273.03125 L 781.25781,273.03125 C 781.02864,273.92709 780.5651,274.63021 779.86719,275.14063 C 779.17447,275.64583 778.32812,275.89844 777.32813,275.89844 C 776.09896,275.89844 775.125,275.48698 774.40625,274.66406 C 773.6875,273.83594 773.32812,272.71615 773.32813,271.30469 C 773.32812,269.91407 773.68229,268.81772 774.39063,268.01563 C 775.09896,267.21355 776.06771,266.81251 777.29688,266.8125 C 778.59895,266.81251 779.60416,267.20834 780.3125,268 C 781.02083,268.78647 781.37499,269.90886 781.375,271.36719 C 781.37499,271.52865 781.37239,271.65105 781.36719,271.73438 C 781.36718,271.8125 781.36197,271.88802 781.35156,271.96094 L 775.67969,271.96094 C 775.71093,272.62761 775.87239,273.13021 776.16406,273.46875 C 776.46093,273.80729 776.88541,273.97656 777.4375,273.97656 C 777.82812,273.97656 778.14843,273.90104 778.39844,273.75 C 778.64843,273.59375 778.84635,273.35417 778.99219,273.03125 M 775.67969,270.46875 L 779.02344,270.46875 C 779.0026,269.89584 778.84895,269.46094 778.5625,269.16406 C 778.28124,268.86199 777.87499,268.71094 777.34375,268.71094 C 776.84895,268.71094 776.45833,268.86199 776.17188,269.16406 C 775.89062,269.46615 775.72656,269.90105 775.67969,270.46875 M 782.88281,275.60938 L 782.88281,267.11719 L 785.10938,267.11719 L 785.10938,268.125 C 785.42708,267.71355 785.80208,267.40626 786.23438,267.20313 C 786.66666,266.9948 787.14843,266.89063 787.67969,266.89063 C 788.61718,266.89063 789.3177,267.13543 789.78125,267.625 C 790.24999,268.10938 790.48437,268.84115 790.48438,269.82031 L 790.48438,275.60938 L 788.21094,275.60938 L 788.21094,270.47656 C 788.21093,269.86719 788.10676,269.4323 787.89844,269.17188 C 787.69531,268.91147 787.36197,268.78126 786.89844,268.78125 C 786.36197,268.78126 785.9375,268.94272 785.625,269.26563 C 785.3125,269.58334 785.15625,270.01823 785.15625,270.57031 L 785.15625,275.60938 L 782.88281,275.60938 M 800.01563,267.11719 L 800.01563,275.60938 L 797.78906,275.60938 L 797.78906,274.60156 C 797.46614,275.01302 797.08854,275.32292 796.65625,275.53125 C 796.22916,275.73437 795.74739,275.83594 795.21094,275.83594 C 794.27864,275.83594 793.57812,275.59115 793.10938,275.10156 C 792.64583,274.61198 792.41406,273.88021 792.41406,272.90625 L 792.41406,267.11719 L 794.6875,267.11719 L 794.6875,272.25 C 794.6875,272.85417 794.78906,273.28646 794.99219,273.54688 C 795.19531,273.80209 795.53125,273.92969 796,273.92969 C 796.53124,273.92969 796.95312,273.77084 797.26563,273.45313 C 797.58333,273.13021 797.74218,272.69271 797.74219,272.14063 L 797.74219,267.11719 L 800.01563,267.11719"
+       id="text5884" />
+    <text
+       xml:space="preserve"
+       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+       x="362"
+       y="272"
+       id="text3387"><tspan
+         sodipodi:role="line"
+         id="tspan3389"
+         x="362"
+         y="272"
+         style="font-size:13px;font-weight:bold;-inkscape-font-specification:Bitstream Vera Sans Bold">toggle tiling/floating</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+       x="119.03223"
+       y="86"
+       id="text3391"><tspan
+         sodipodi:role="line"
+         id="tspan3393"
+         x="119.03223"
+         y="86"
+         style="font-size:13px;font-weight:bold;text-align:center;text-anchor:middle;-inkscape-font-specification:Bitstream Vera Sans Bold">kill</tspan><tspan
+         sodipodi:role="line"
+         x="119.03223"
+         y="102.25"
+         id="tspan3395"
+         style="font-size:13px;font-weight:bold;text-align:center;text-anchor:middle;-inkscape-font-specification:Bitstream Vera Sans Bold">window</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+       x="239.79933"
+       y="86.438766"
+       id="text3397"><tspan
+         sodipodi:role="line"
+         id="tspan3399"
+         x="239.79933"
+         y="86.438766"
+         style="font-size:13px;font-weight:bold;text-align:center;text-anchor:middle;-inkscape-font-specification:Bitstream Vera Sans Bold">exit</tspan><tspan
+         sodipodi:role="line"
+         x="239.79933"
+         y="102.68877"
+         id="tspan3401"
+         style="font-size:13px;font-weight:bold;text-align:center;text-anchor:middle;-inkscape-font-specification:Bitstream Vera Sans Bold">i3</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+       x="299.31445"
+       y="86"
+       id="text3403"><tspan
+         sodipodi:role="line"
+         id="tspan3405"
+         x="299.31445"
+         y="86"
+         style="font-size:13px;font-weight:bold;text-align:center;text-anchor:middle;-inkscape-font-specification:Bitstream Vera Sans Bold">restart</tspan><tspan
+         sodipodi:role="line"
+         x="299.31445"
+         y="102.25"
+         id="tspan3407"
+         style="font-size:13px;font-weight:bold;text-align:center;text-anchor:middle;-inkscape-font-specification:Bitstream Vera Sans Bold">i3</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:13px;font-style:normal;font-weight:bold;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
+       x="491.81522"
+       y="146.5442"
+       id="text3430"><tspan
+         sodipodi:role="line"
+         id="tspan3432"
+         x="491.81522"
+         y="146.5442">move</tspan><tspan
+         sodipodi:role="line"
+         x="491.81522"
+         y="162.7942"
+         id="tspan3448">left</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:13px;font-style:normal;font-weight:bold;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
+       x="552.34015"
+       y="146.5442"
+       id="text3434"><tspan
+         sodipodi:role="line"
+         id="tspan3436"
+         x="552.34015"
+         y="146.5442">move</tspan><tspan
+         sodipodi:role="line"
+         x="552.34015"
+         y="162.7942"
+         id="tspan3450">down</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:13px;font-style:normal;font-weight:bold;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
+       x="611.90704"
+       y="145.83786"
+       id="text3438"><tspan
+         sodipodi:role="line"
+         id="tspan3440"
+         x="611.90704"
+         y="145.83786">move</tspan><tspan
+         sodipodi:role="line"
+         x="611.90704"
+         y="162.08786"
+         id="tspan3452">up</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:13px;font-style:normal;font-weight:bold;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
+       x="672.34808"
+       y="146.5442"
+       id="text3442"><tspan
+         sodipodi:role="line"
+         id="tspan3444"
+         x="672.34808"
+         y="146.5442">move</tspan><tspan
+         sodipodi:role="line"
+         x="672.34808"
+         y="162.7942"
+         id="tspan3446">right</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:13px;font-style:normal;font-weight:bold;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
+       x="194.95703"
+       y="276"
+       id="text4572"><tspan
+         sodipodi:role="line"
+         id="tspan4574"
+         x="194.95703"
+         y="276"
+         style="font-size:18">Mod1</tspan></text>
+  </g>
+</svg>
diff --git a/docs/4.0/modes.png b/docs/4.0/modes.png
new file mode 100644 (file)
index 0000000..656a6db
Binary files /dev/null and b/docs/4.0/modes.png differ
diff --git a/docs/4.0/multi-monitor.html b/docs/4.0/multi-monitor.html
new file mode 100644 (file)
index 0000000..ee42703
--- /dev/null
@@ -0,0 +1,108 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<link rel="icon" type="image/png" href="/favicon.png">\r
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.4" />\r
+<title>i3: The multi-monitor situation</title>\r
+<link rel="stylesheet" href="/css/style.css" type="text/css" />\r
+<link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+window.onload = function(){asciidoc.footnotes(); asciidoc.toc(2);}\r
+/*]]>*/\r
+</script>\r
+<script type="text/javascript" src="/js/asciidoc-xhtml11.js"></script>\r
+</head>\r
+<body class="article">\r
+\r
+        <div id="main">\r
+            <a href="/"><h1 id="title">i3 - improved tiling WM</h1></a>\r
+                        <ul id="nav">\r
+                                <li><a style="border-bottom: 2px solid #fff" href="/docs">Docs</a></li>\r
+                                <li><a href="/screenshots">Screens</a></li>\r
+                                <li><a href="/contact">Contact</a></li>\r
+                                <li><a href="http://bugs.i3wm.org/">Bugs</a></li>\r
+                        </ul>\r
+        <br style="clear: both">\r
+<div id="content">\r
+<div id="header">\r
+<h1>The multi-monitor situation</h1>\r
+<span id="author">Michael Stapelberg</span><br />\r
+<span id="email"><tt>&lt;<a href="mailto:michael+i3@stapelberg.de">michael+i3@stapelberg.de</a>&gt;</tt></span><br />\r
+<span id="revdate">March 2010</span>\r
+<div id="toc">
+  <div id="toctitle">Table of Contents</div>
+  <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
+</div>\r
+</div>\r
+<div id="preamble">\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>…or: oh no, I have an nVidia graphics card!</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_the_quick_fix">1. The quick fix</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>If you are using the nVidia binary graphics driver (also known as <em>blob</em>)\r
+you need to use the <tt>--force-xinerama</tt> flag (in your .xsession) when starting\r
+i3, like so:</p></div>\r
+<div class="listingblock">\r
+<div class="title">Example:</div>\r
+<div class="content">\r
+<pre><tt>exec i3 --force-xinerama -V &gt;&gt;~/.i3/i3log 2&gt;&amp;1</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_the_explanation">2. The explanation</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Starting with version 3.ε, i3 uses the RandR (Rotate and Resize) API instead\r
+of Xinerama. The reason for this, is that RandR provides more information\r
+about your outputs and connected screens than Xinerama does. To be specific,\r
+the code which handled on-the-fly screen reconfiguration (meaning without\r
+restarting the X server) was a very messy heuristic and most of the time did\r
+not work correctly&#8201;&#8212;&#8201;that is just not possible with the little information\r
+Xinerama offers (just a list of screen resolutions, no identifiers for the\r
+screens or any additional information). Xinerama simply was not designed\r
+for dynamic configuration.</p></div>\r
+<div class="paragraph"><p>So RandR came along, as a more powerful alternative (RandR 1.2 to be specific).\r
+It offers all of Xinerama’s possibilities and lots more. Using the RandR API\r
+made our code much more robust and clean. Also, you can now reliably assign\r
+workspaces to output names instead of some rather unreliable screen identifier\r
+(position inside the list of screens, which could change, and so on…).</p></div>\r
+<div class="paragraph"><p>As RandR has been around for about three years as of this writing, it seemed\r
+like a very good idea to us, and it still is a very good one. What we did not\r
+expect, however, was the nVidia binary driver. It still does not support RandR\r
+(as of March 2010), even though nVidia has announced that it will support RandR\r
+eventually. What does this mean for you, if you are stuck with the binary\r
+driver for some reason (say the free drivers don’t work with your card)? First\r
+of all, you are stuck with TwinView and cannot use <tt>xrandr</tt>. While this ruins\r
+the user experience, the more grave problem is that the nVidia driver not only\r
+does not support dynamic configuration using RandR, it also does not expose\r
+correct multi-monitor information via the RandR API. So, in some setups, i3\r
+will not find any screens; in others, it will find one large screen which\r
+actually contains both of your physical screens (but it will not know that\r
+these are two screens).</p></div>\r
+<div class="paragraph"><p>For this very reason, we decided to implement the following workaround: As\r
+long as the nVidia driver does not support RandR, an option called\r
+<tt>--force-xinerama</tt> is available in i3. This option gets the list of screens\r
+<strong>once</strong> when starting, and never updates it. As the nVidia driver cannot do\r
+dynamic configuration anyways, this is not a big deal.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_see_also">3. See also</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>For more information on how to use multi-monitor setups, see the i3 User’s\r
+Guide.</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer" lang="de">\r
+© 2009-2011 Michael Stapelberg, <a href="/impress.html">Impressum</a>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/docs/4.0/refcard.pdf b/docs/4.0/refcard.pdf
new file mode 100644 (file)
index 0000000..3ff733d
Binary files /dev/null and b/docs/4.0/refcard.pdf differ
diff --git a/docs/4.0/repositories.html b/docs/4.0/repositories.html
new file mode 100644 (file)
index 0000000..db62780
--- /dev/null
@@ -0,0 +1,120 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<link rel="icon" type="image/png" href="/favicon.png">\r
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.4" />\r
+<title>i3: Debian and Ubuntu repositories</title>\r
+<link rel="stylesheet" href="/css/style.css" type="text/css" />\r
+<link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+window.onload = function(){asciidoc.footnotes();}\r
+/*]]>*/\r
+</script>\r
+<script type="text/javascript" src="/js/asciidoc-xhtml11.js"></script>\r
+</head>\r
+<body class="article">\r
+\r
+        <div id="main">\r
+            <a href="/"><h1 id="title">i3 - improved tiling WM</h1></a>\r
+                        <ul id="nav">\r
+                                <li><a style="border-bottom: 2px solid #fff" href="/docs">Docs</a></li>\r
+                                <li><a href="/screenshots">Screens</a></li>\r
+                                <li><a href="/contact">Contact</a></li>\r
+                                <li><a href="http://bugs.i3wm.org/">Bugs</a></li>\r
+                        </ul>\r
+        <br style="clear: both">\r
+<div id="content">\r
+<div id="header">\r
+<h1>Debian and Ubuntu repositories</h1>\r
+<span id="author">Michael Stapelberg</span><br />\r
+<span id="email"><tt>&lt;<a href="mailto:michael+i3@stapelberg.de">michael+i3@stapelberg.de</a>&gt;</tt></span><br />\r
+<span id="revdate">July 2011</span>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_when_should_you_use_our_repositories">1. When should you use our repositories?</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>In general, you should use the repositories of your distribution. Adding\r
+third-party repositories to your <tt>/etc/sources.list</tt> has security implications\r
+and makes your <tt>apt-get update</tt> take longer. However, in some cases, using our\r
+repositories makes sense:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+You are using Debian stable\r
+</dt>\r
+<dd>\r
+<p>\r
+    The latest version of i3 will be in Debian testing quite soon. The version\r
+    in Debian stable can be old, however (we cannot update it after stable has\r
+    been released). The best way is to add Debian testing and tell <tt>apt</tt> to\r
+    prefer Debian stable. You should <strong>not</strong> use our repository.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+You are using Ubuntu\r
+</dt>\r
+<dd>\r
+<p>\r
+    Only a handful of packages are maintained by Ubuntu developers. The rest is\r
+    synchronized periodically from Debian, every 6 months. Therefore, Ubuntu\r
+    often includes old versions of i3. You should use our Ubuntu repository.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+You want the latest i3 development version\r
+</dt>\r
+<dd>\r
+<p>\r
+    If you are using Debian (Debian-derived systems might work, too) and want\r
+    the latest development version of i3, you should use our Debian repository.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_ubuntu_repository">2. Ubuntu repository</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>The Ubuntu repository is provided by sur5r and contains the latest stable release\r
+of i3. To use it, run the following commands:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># echo 'deb http://debian.sur5r.net/i3/ natty universe' &gt;&gt; /etc/apt/sources.list\r
+# apt-get update\r
+# apt-get install i3</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>The following Ubuntu versions are currently available: lucid, maverick, natty.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_debian_repository">3. Debian repository</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Our Debian repository contains packages which are automatically built a few\r
+minutes after every commit. To use it, run the following commands:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># echo 'deb http://build.i3wm.org/debian/i3-wm sid main' &gt;&gt; /etc/apt/sources.list\r
+# apt-get update\r
+# apt-get install i3-wm</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>To ensure that the autobuilt i3 packages will be preferred to the packages of\r
+your distribution, put the following entry <strong>at the beginning</strong> of your\r
+<tt>/etc/apt/preferences</tt>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>Package: *\r
+Pin: origin "build.i3wm.org"\r
+Pin-Priority: 1001</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Then, install <tt>i3-wm</tt>.</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer" lang="de">\r
+© 2009-2011 Michael Stapelberg, <a href="/impress.html">Impressum</a>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/docs/4.0/single_terminal.png b/docs/4.0/single_terminal.png
new file mode 100644 (file)
index 0000000..4fe918c
Binary files /dev/null and b/docs/4.0/single_terminal.png differ
diff --git a/docs/4.0/snapping.png b/docs/4.0/snapping.png
new file mode 100644 (file)
index 0000000..65fe6e4
Binary files /dev/null and b/docs/4.0/snapping.png differ
diff --git a/docs/4.0/stacklimit.png b/docs/4.0/stacklimit.png
new file mode 100644 (file)
index 0000000..ab5bed7
Binary files /dev/null and b/docs/4.0/stacklimit.png differ
diff --git a/docs/4.0/tree-layout1.png b/docs/4.0/tree-layout1.png
new file mode 100644 (file)
index 0000000..ee69f1a
Binary files /dev/null and b/docs/4.0/tree-layout1.png differ
diff --git a/docs/4.0/tree-layout2.png b/docs/4.0/tree-layout2.png
new file mode 100644 (file)
index 0000000..5cbadde
Binary files /dev/null and b/docs/4.0/tree-layout2.png differ
diff --git a/docs/4.0/tree-shot1.png b/docs/4.0/tree-shot1.png
new file mode 100644 (file)
index 0000000..3bbeae1
Binary files /dev/null and b/docs/4.0/tree-shot1.png differ
diff --git a/docs/4.0/tree-shot2.png b/docs/4.0/tree-shot2.png
new file mode 100644 (file)
index 0000000..f003264
Binary files /dev/null and b/docs/4.0/tree-shot2.png differ
diff --git a/docs/4.0/tree-shot3.png b/docs/4.0/tree-shot3.png
new file mode 100644 (file)
index 0000000..fe4c11e
Binary files /dev/null and b/docs/4.0/tree-shot3.png differ
diff --git a/docs/4.0/tree-shot4.png b/docs/4.0/tree-shot4.png
new file mode 100644 (file)
index 0000000..61e8c91
Binary files /dev/null and b/docs/4.0/tree-shot4.png differ
diff --git a/docs/4.0/two_columns.png b/docs/4.0/two_columns.png
new file mode 100644 (file)
index 0000000..6dc8c40
Binary files /dev/null and b/docs/4.0/two_columns.png differ
diff --git a/docs/4.0/two_terminals.png b/docs/4.0/two_terminals.png
new file mode 100644 (file)
index 0000000..20b45ac
Binary files /dev/null and b/docs/4.0/two_terminals.png differ
diff --git a/docs/4.0/userguide.html b/docs/4.0/userguide.html
new file mode 100644 (file)
index 0000000..513cb9e
--- /dev/null
@@ -0,0 +1,1206 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<link rel="icon" type="image/png" href="/favicon.png">\r
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.4" />\r
+<title>i3: i3 User’s Guide</title>\r
+<link rel="stylesheet" href="/css/style.css" type="text/css" />\r
+<link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+window.onload = function(){asciidoc.footnotes(); asciidoc.toc(2);}\r
+/*]]>*/\r
+</script>\r
+<script type="text/javascript" src="/js/asciidoc-xhtml11.js"></script>\r
+</head>\r
+<body class="article">\r
+\r
+        <div id="main">\r
+            <a href="/"><h1 id="title">i3 - improved tiling WM</h1></a>\r
+                        <ul id="nav">\r
+                                <li><a style="border-bottom: 2px solid #fff" href="/docs">Docs</a></li>\r
+                                <li><a href="/screenshots">Screens</a></li>\r
+                                <li><a href="/contact">Contact</a></li>\r
+                                <li><a href="http://bugs.i3wm.org/">Bugs</a></li>\r
+                        </ul>\r
+        <br style="clear: both">\r
+<div id="content">\r
+<div id="header">\r
+<h1>i3 User’s Guide</h1>\r
+<span id="author">Michael Stapelberg</span><br />\r
+<span id="email"><tt>&lt;<a href="mailto:michael+i3@stapelberg.de">michael+i3@stapelberg.de</a>&gt;</tt></span><br />\r
+<span id="revdate">July 2011</span>\r
+<div id="toc">
+  <div id="toctitle">Table of Contents</div>
+  <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
+</div>\r
+</div>\r
+<div id="preamble">\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>This document contains all the information you need to configure and use the i3\r
+window manager. If it does not, please contact us on IRC (preferred) or post your\r
+question(s) on the mailing list.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_default_keybindings">1. Default keybindings</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>For the "too long; didn’t read" people, here is an overview of the default\r
+keybindings (click to see the full size image):</p></div>\r
+<div class="paragraph"><p><strong>Keys to use with mod (alt):</strong></p></div>\r
+<div class="paragraph"><p><span class="image">\r
+<a class="image" href="keyboard-layer1.png">\r
+<img src="keyboard-layer1.png" alt="Keys to use with mod (alt)" width="600" />\r
+</a>\r
+</span></p></div>\r
+<div class="paragraph"><p><strong>Keys to use with Shift+mod:</strong></p></div>\r
+<div class="paragraph"><p><span class="image">\r
+<a class="image" href="keyboard-layer2.png">\r
+<img src="keyboard-layer2.png" alt="Keys to use with Shift+mod" width="600" />\r
+</a>\r
+</span></p></div>\r
+<div class="paragraph"><p>The red keys are the modifiers you need to press (by default), the blue keys\r
+are your homerow.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_using_i3">2. Using i3</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Throughout this guide, the keyword <tt>mod</tt> will be used to refer to the\r
+configured modifier. This is the alt key (Mod1) by default, with windows (Mod4)\r
+being a popular alternative.</p></div>\r
+<div class="sect2">\r
+<h3 id="_opening_terminals_and_moving_around">2.1. Opening terminals and moving around</h3>\r
+<div class="paragraph"><p>One very basic operation is opening a new terminal. By default, the keybinding\r
+for this is mod+Enter, that is Alt+Enter in the default configuration. By\r
+pressing mod+Enter, a new terminal will be opened.  It will fill the whole\r
+space available on your screen.</p></div>\r
+<div class="paragraph"><p><span class="image">\r
+<img src="single_terminal.png" alt="Single terminal" />\r
+</span></p></div>\r
+<div class="paragraph"><p>If you now open another terminal, i3 will place it next to the current one,\r
+splitting the screen size in half. Depending on your monitor, i3 will put the\r
+created window beside the existing window (on wide displays) or below the\r
+existing window (rotated displays).</p></div>\r
+<div class="paragraph"><p><span class="image">\r
+<img src="two_terminals.png" alt="Two terminals" />\r
+</span></p></div>\r
+<div class="paragraph"><p>To move the focus between the two terminals, you can use the direction keys\r
+which you may know from the editor <tt>vi</tt>. However, in i3, your homerow is used\r
+for these keys (in <tt>vi</tt>, the keys are shifted to the left by one for\r
+compatibility with most keyboard layouts). Therefore, <tt>mod+J</tt> is left, <tt>mod+K</tt>\r
+is down, <tt>mod+L</tt> is up and <tt>mod+;</tt> is right. So, to switch between the\r
+terminals, use <tt>mod+K</tt> or <tt>mod+L</tt>. Of course, you can also use the arrow keys.</p></div>\r
+<div class="paragraph"><p>At the moment, your workspace is split (it contains two terminals) in a\r
+specific direction (horizontal by default). Every window can be split\r
+horizontally or vertically again, just like the workspace. The terminology is\r
+"window" for a container that actually contains an X11 window (like a terminal\r
+or browser) and "split container" for containers that consist of one or more\r
+windows.</p></div>\r
+<div class="paragraph"><p>TODO: picture of the tree</p></div>\r
+<div class="paragraph"><p>To split a window vertically, press <tt>mod+v</tt>. To split it horizontally, press\r
+<tt>mod+h</tt>.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_changing_the_container_layout">2.2. Changing the container layout</h3>\r
+<div class="paragraph"><p>A split container can have one of the following layouts:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+default\r
+</dt>\r
+<dd>\r
+<p>\r
+Windows are sized so that every window gets an equal amount of space in the\r
+container.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+stacking\r
+</dt>\r
+<dd>\r
+<p>\r
+Only the focused window in the container is displayed. You get a list of\r
+windows at the top of the container.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+tabbed\r
+</dt>\r
+<dd>\r
+<p>\r
+The same principle as <tt>stacking</tt>, but the list of windows at the top is only\r
+a single line which is vertically split.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+<div class="paragraph"><p>To switch modes, press <tt>mod+e</tt> for default, <tt>mod+h</tt> for stacking and\r
+<tt>mod+w</tt> for tabbed.</p></div>\r
+<div class="paragraph"><p><span class="image">\r
+<img src="modes.png" alt="Container modes" />\r
+</span></p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_toggling_fullscreen_mode_for_a_window">2.3. Toggling fullscreen mode for a window</h3>\r
+<div class="paragraph"><p>To display a window in fullscreen mode or to go out of fullscreen mode again,\r
+press <tt>mod+f</tt>.</p></div>\r
+<div class="paragraph"><p>There is also a global fullscreen mode in i3 in which the client will span all\r
+available outputs.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_opening_other_applications">2.4. Opening other applications</h3>\r
+<div class="paragraph"><p>Aside from opening applications from a terminal, you can also use the handy\r
+<tt>dmenu</tt> which is opened by pressing <tt>mod+d</tt> by default. Just type the name\r
+(or a part of it) of the application which you want to open. The corresponding\r
+application has to be in your <tt>$PATH</tt> for this to work.</p></div>\r
+<div class="paragraph"><p>Additionally, if you have applications you open very frequently, you can\r
+create a keybinding for starting the application directly. See the section\r
+<a href="#configuring">[configuring]</a> for details.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_closing_windows">2.5. Closing windows</h3>\r
+<div class="paragraph"><p>If an application does not provide a mechanism for closing (most applications\r
+provide a menu, the escape key or a shortcut like <tt>Control+W</tt> to close), you\r
+can press <tt>mod+Shift+q</tt> to kill a window. For applications which support\r
+the WM_DELETE protocol, this will correctly close the application (saving\r
+any modifications or doing other cleanup). If the application doesn’t support\r
+the WM_DELETE protocol your X server will kill the window and the behaviour\r
+depends on the application.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_using_workspaces">2.6. Using workspaces</h3>\r
+<div class="paragraph"><p>Workspaces are an easy way to group a set of windows. By default, you are on\r
+the first workspace, as the bar on the bottom left indicates. To switch to\r
+another workspace, press <tt>mod+num</tt> where <tt>num</tt> is the number of the workspace\r
+you want to use. If the workspace does not exist yet, it will be created.</p></div>\r
+<div class="paragraph"><p>A common paradigm is to put the web browser on one workspace, communication\r
+applications (<tt>mutt</tt>, <tt>irssi</tt>, &#8230;) on another one, and the ones with which you\r
+work, on the third one. Of course, there is no need to follow this approach.</p></div>\r
+<div class="paragraph"><p>If you have multiple screens, a workspace will be created on each screen at\r
+startup. If you open a new workspace, it will be bound to the screen you\r
+created it on.  When you switch to a workspace on another screen, i3 will set\r
+focus to that screen.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_moving_windows_to_workspaces">2.7. Moving windows to workspaces</h3>\r
+<div class="paragraph"><p>To move a window to another workspace, simply press <tt>mod+Shift+num</tt> where\r
+<tt>num</tt> is (like when switching workspaces) the number of the target workspace.\r
+Similarly to switching workspaces, the target workspace will be created if\r
+it does not yet exist.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_resizing">2.8. Resizing</h3>\r
+<div class="paragraph"><p>The easiest way to resize a container is by using the mouse: Grab the border\r
+and move it to the wanted size.</p></div>\r
+<div class="paragraph"><p>See <a href="#resizingconfig">[resizingconfig]</a> for how to configure i3 to be able to resize\r
+columns/rows with your keyboard.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_restarting_i3_inplace">2.9. Restarting i3 inplace</h3>\r
+<div class="paragraph"><p>To restart i3 inplace (and thus get into a clean state if there is a bug, or\r
+to upgrade to a newer version of i3) you can use <tt>mod+Shift+r</tt>.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_exiting_i3">2.10. Exiting i3</h3>\r
+<div class="paragraph"><p>To cleanly exit i3 without killing your X server, you can use <tt>mod+Shift+e</tt>.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_floating">2.11. Floating</h3>\r
+<div class="paragraph"><p>Floating mode is the opposite of tiling mode. The position and size of a window\r
+are not managed by i3, but by you. Using this mode violates the tiling\r
+paradigm but can be useful for some corner cases like "Save as" dialog\r
+windows, or toolbar windows (GIMP or similar). Those windows usually set the\r
+appropriate hint and are opened in floating mode by default.</p></div>\r
+<div class="paragraph"><p>You can enable floating mode for a window by pressing <tt>mod+Shift+Space</tt>. By\r
+dragging the window’s titlebar with your mouse you can move the window\r
+around. By grabbing the borders and moving them you can resize the window. You\r
+can also do that by using the <a href="#floating_modifier">[floating_modifier]</a>.</p></div>\r
+<div class="paragraph"><p>For resizing floating windows with your keyboard, see <a href="#resizingconfig">[resizingconfig]</a>.</p></div>\r
+<div class="paragraph"><p>Floating windows are always on top of tiling windows.</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_tree">3. Tree</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3 stores all information about the X11 outputs, workspaces and layout of the\r
+windows on them in a tree. The root node is the X11 root window, followed by\r
+the X11 outputs, then dock areas and a content container, then workspaces and\r
+finally the windows themselve. In previous versions of i3 we had multiple lists\r
+(of outputs, workspaces) and a table for each workspace. That approach turned\r
+out to be complicated to use (snapping), understand and implement.</p></div>\r
+<div class="sect2">\r
+<h3 id="_the_tree_consists_of_containers">3.1. The tree consists of Containers</h3>\r
+<div class="paragraph"><p>The building blocks of our tree are so called <tt>Containers</tt>. A <tt>Container</tt> can\r
+host a window (meaning an X11 window, one that you can actually see and use,\r
+like a browser). Alternatively, it could contain one or more <tt>Containers</tt>. A\r
+simple example is the workspace: When you start i3 with a single monitor, a\r
+single workspace and you open two terminal windows, you will end up with a tree\r
+like this:</p></div>\r
+<div class="imageblock" style="float:right;">\r
+<div class="content">\r
+<img src="tree-layout2.png" alt="layout2" />\r
+</div>\r
+</div>\r
+<div class="imageblock">\r
+<div class="content">\r
+<img src="tree-shot4.png" alt="shot4" />\r
+</div>\r
+<div class="title">Figure 1. Two terminals on standard workspace</div>\r
+</div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_orientation_and_split_containers">3.2. Orientation and Split Containers</h3>\r
+<div class="paragraph" id="OrientationSplit"><p>It is only natural to use so-called <tt>Split Containers</tt> in order to build a\r
+layout when using a tree as data structure. In i3, every <tt>Container</tt> has an\r
+orientation (horizontal, vertical or unspecified). So, in our example with the\r
+workspace, the default orientation of the workspace <tt>Container</tt> is horizontal\r
+(most monitors are widescreen nowadays). If you change the orientation to\r
+vertical (<tt>mod+v</tt> in the default config) and <strong>then</strong> open two terminals, i3 will\r
+configure your windows like this:</p></div>\r
+<div class="imageblock">\r
+<div class="content">\r
+<img src="tree-shot2.png" alt="shot2" />\r
+</div>\r
+<div class="title">Figure 2. Vertical Workspace Orientation</div>\r
+</div>\r
+<div class="paragraph"><p>An interesting new feature of the tree branch is the ability to split anything:\r
+Let’s assume you have two terminals on a workspace (with horizontal\r
+orientation), focus is on the right terminal. Now you want to open another\r
+terminal window below the current one. If you would just open a new terminal\r
+window, it would show up to the right due to the horizontal workspace\r
+orientation. Instead, press <tt>mod+v</tt> to create a <tt>Vertical Split Container</tt> (to\r
+open a <tt>Horizontal Split Container</tt>, use <tt>mod+h</tt>). Now you can open a new\r
+terminal and it will open below the current one:</p></div>\r
+<div class="imageblock" style="float:right;">\r
+<div class="content">\r
+<img src="tree-layout1.png" alt="Layout" />\r
+</div>\r
+</div>\r
+<div class="imageblock">\r
+<div class="content">\r
+<img src="tree-shot1.png" alt="shot" />\r
+</div>\r
+<div class="title">Figure 3. Vertical Split Container</div>\r
+</div>\r
+<div style="clear:both;"></div>\r
+<div class="paragraph"><p>You probably guessed it already: There is no limit on how deep your hierarchy\r
+of splits can be.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_focus_parent">3.3. Focus parent</h3>\r
+<div class="paragraph"><p>Let’s stay with our example from above. We have a terminal on the left and two\r
+vertically split terminals on the right, focus is on the bottom right one. When\r
+you open a new terminal, it will open below the current one.</p></div>\r
+<div class="paragraph"><p>So, how can you open a new terminal window to the <strong>right</strong> of the current one?\r
+The solution is to use <tt>focus parent</tt>, which will focus the <tt>Parent Container</tt> of\r
+the current <tt>Container</tt>. In this case, you would focus the <tt>Vertical Split\r
+Container</tt> which is <strong>inside</strong> the horizontally oriented workspace. Thus, now new\r
+windows will be opened to the right of the <tt>Vertical Split Container</tt>:</p></div>\r
+<div class="imageblock">\r
+<div class="content">\r
+<img src="tree-shot3.png" alt="shot3" />\r
+</div>\r
+<div class="title">Figure 4. Focus parent, then open new terminal</div>\r
+</div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="configuring">4. Configuring i3</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>This is where the real fun begins ;-). Most things are very dependant on your\r
+ideal working environment so we can’t make reasonable defaults for them.</p></div>\r
+<div class="paragraph"><p>While not using a programming language for the configuration, i3 stays\r
+quite flexible in regards to the things you usually want your window manager\r
+to do.</p></div>\r
+<div class="paragraph"><p>For example, you can configure bindings to jump to specific windows,\r
+you can set specific applications to start on specific workspaces, you can\r
+automatically start applications, you can change the colors of i3, and you\r
+can bind your keys to do useful things.</p></div>\r
+<div class="paragraph"><p>To change the configuration of i3, copy <tt>/etc/i3/config</tt> to <tt>~/.i3/config</tt>\r
+(or <tt>~/.config/i3/config</tt> if you like the XDG directory scheme) and edit it\r
+with a text editor.</p></div>\r
+<div class="paragraph"><p>On first start (and on all following starts, unless you have a configuration\r
+file), i3 will offer you to create a configuration file. You can tell the\r
+wizard to use either Alt (Mod1) or Windows (Mod4) as modifier in the config\r
+file. Also, the created config file will use the key symbols of your current\r
+keyboard layout. To start the wizard, use the command <tt>i3-config-wizard</tt>.\r
+Please note that you must not have <tt>~/.i3/config</tt>, otherwise the wizard will\r
+exit.</p></div>\r
+<div class="sect2">\r
+<h3 id="_comments">4.1. Comments</h3>\r
+<div class="paragraph"><p>It is possible and recommended to use comments in your configuration file to\r
+properly document your setup for later reference. Comments are started with\r
+a # and can only be used at the beginning of a line:</p></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># This is a comment</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_fonts">4.2. Fonts</h3>\r
+<div class="paragraph"><p>i3 uses X core fonts (not Xft) for rendering window titles. You can use\r
+<tt>xfontsel(1)</tt> to generate such a font description. To see special characters\r
+(Unicode), you need to use a font which supports the ISO-10646 encoding.</p></div>\r
+<div class="paragraph"><p>If i3 cannot open the configured font, it will output an error in the logfile\r
+and fall back to a working font.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>font &lt;X core font description&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="keybindings">4.3. Keyboard bindings</h3>\r
+<div class="paragraph"><p>A keyboard binding makes i3 execute a command (see below) upon pressing a\r
+specific key. i3 allows you to bind either on keycodes or on keysyms (you can\r
+also mix your bindings, though i3 will not protect you from overlapping ones).</p></div>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+A keysym (key symbol) is a description for a specific symbol, like "a"\r
+  or "b", but also more strange ones like "underscore" instead of "_". These\r
+  are the ones you use in Xmodmap to remap your keys. To get the current\r
+  mapping of your keys, use <tt>xmodmap -pke</tt>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Keycodes do not need to have a symbol assigned (handy for custom vendor\r
+  hotkeys on some notebooks) and they will not change their meaning as you\r
+  switch to a different keyboard layout (when using <tt>xmodmap</tt>).\r
+</p>\r
+</li>\r
+</ul></div>\r
+<div class="paragraph"><p>My recommendation is: If you often switch keyboard layouts but you want to keep\r
+your bindings in the same physical location on the keyboard, use keycodes.\r
+If you don’t switch layouts, and want a clean and simple config file, use\r
+keysyms.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>bindsym [Modifiers+]keysym command\r
+bindcode [Modifiers+]keycode command</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># Fullscreen\r
+bindsym mod+f f\r
+\r
+# Restart\r
+bindsym mod+Shift+r restart\r
+\r
+# Notebook-specific hotkeys\r
+bindcode 214 exec /home/michael/toggle_beamer.sh</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Available Modifiers:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+Mod1-Mod5, Shift, Control\r
+</dt>\r
+<dd>\r
+<p>\r
+Standard modifiers, see <tt>xmodmap(1)</tt>\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Mode_switch\r
+</dt>\r
+<dd>\r
+<p>\r
+Unlike other window managers, i3 can use Mode_switch as a modifier. This allows\r
+you to remap capslock (for example) to Mode_switch and use it for both: typing\r
+umlauts or special characters <em>and</em> having some comfortably reachable key\r
+bindings. For example, when typing, capslock+1 or capslock+2 for switching\r
+workspaces is totally convenient. Try it :-).\r
+</p>\r
+</dd>\r
+</dl></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="floating_modifier">4.4. The floating modifier</h3>\r
+<div class="paragraph"><p>To move floating windows with your mouse, you can either grab their titlebar\r
+or configure the so called floating modifier which you can then press and\r
+click anywhere in the window itself to move it. The most common setup is to\r
+use the same key you use for managing windows (Mod1 for example). Then\r
+you can press Mod1, click into a window using your left mouse button, and drag\r
+it to the position you want.</p></div>\r
+<div class="paragraph"><p>When holding the floating modifier, you can resize a floating window by\r
+pressing the right mouse button on it and moving around while holding it. If\r
+you hold the shift button as well, the resize will be proportional.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>floating_modifier &lt;Modifiers&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Example</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>floating_modifier Mod1</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_orientation_for_new_workspaces">4.5. Orientation for new workspaces</h3>\r
+<div class="paragraph"><p>New workspaces get a reasonable default orientation: Wide-screen monitors\r
+(anything wider than high) get horizontal orientation, rotated monitors\r
+(anything higher than wide) get vertical orientation.</p></div>\r
+<div class="paragraph"><p>With the <tt>default_orientation</tt> configuration directive, you can override that\r
+behaviour.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>default_orientation &lt;horizontal|vertical|auto&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Example</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>default_orientation vertical</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_layout_mode_for_new_containers">4.6. Layout mode for new containers</h3>\r
+<div class="paragraph"><p>This option determines in which mode new containers on workspace level will\r
+start.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>workspace_layout &lt;default|stacking|tabbed&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Example</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>workspace_layout tabbed</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_border_style_for_new_windows">4.7. Border style for new windows</h3>\r
+<div class="paragraph"><p>This option determines which border style new windows will have.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>new_window &lt;normal|1pixel|borderless&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Example</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>new_window 1pixel</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_arbitrary_commands_for_specific_windows_for_window">4.8. Arbitrary commands for specific windows (for_window)</h3>\r
+<div class="paragraph"><p>With the <tt>for_window</tt> command, you can let i3 execute any command when it\r
+encounters a specific window. This can be used to set windows to floating or to\r
+change their border style, for example.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>for_window [criteria] command</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># enable floating mode for all XTerm windows\r
+for_window [class="XTerm"] mode floating\r
+\r
+# Make all urxvts use a 1-pixel border:\r
+for_window [class="urxvt"] border 1pixel\r
+\r
+# A less useful, but rather funny example:\r
+# makes the window floating as soon as I change\r
+# directory to ~/work\r
+for_window [title="x200: ~/work"] mode floating</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_variables">4.9. Variables</h3>\r
+<div class="paragraph"><p>As you learned in the section about keyboard bindings, you will have\r
+to configure lots of bindings containing modifier keys. If you want to save\r
+yourself some typing and be able to change the modifier you use later,\r
+variables can be handy.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>set $name value</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Example</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>set $m Mod1\r
+bindsym $m+Shift+r restart</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Variables are directly replaced in the file when parsing. There is no fancy\r
+handling and there are absolutely no plans to change this. If you need a more\r
+dynamic configuration you should create a little script which generates a\r
+configuration file and run it before starting i3 (for example in your\r
+<tt>~/.xsession</tt> file).</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_automatically_putting_clients_on_specific_workspaces">4.10. Automatically putting clients on specific workspaces</h3>\r
+<div class="paragraph" id="assign_workspace"><p>Specific windows can be matched by window class and/or window title. It is\r
+recommended that you match on window classes instead of window titles whenever\r
+possible because some applications first create their window, and then worry\r
+about setting the correct title. Firefox with Vimperator comes to mind. The\r
+window starts up being named Firefox, and only when Vimperator is loaded does\r
+the title change. As i3 will get the title as soon as the application maps the\r
+window (mapping means actually displaying it on the screen), you’d need to have\r
+to match on <em>Firefox</em> in this case.</p></div>\r
+<div class="paragraph"><p>You can prefix or suffix workspaces with a <tt>~</tt> to specify that matching clients\r
+should be put into floating mode. If you specify only a <tt>~</tt>, the client will\r
+not be put onto any workspace, but will be set floating on the current one.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>assign ["]window class[/window title]["] [→] [workspace]</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>assign urxvt 2\r
+assign urxvt → 2\r
+assign urxvt → work\r
+assign "urxvt" → 2\r
+assign "urxvt/VIM" → 3\r
+assign "gecko" → 4</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Note that the arrow is not required, it just looks good :-). If you decide to\r
+use it, it has to be a UTF-8 encoded arrow, not <tt>-&gt;</tt> or something like that.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_automatically_starting_applications_on_i3_startup">4.11. Automatically starting applications on i3 startup</h3>\r
+<div class="paragraph"><p>By using the <tt>exec</tt> keyword outside a keybinding, you can configure\r
+which commands will be performed by i3 on initial startup. <tt>exec</tt>\r
+commands will not run when restarting i3, if you need a command to run\r
+also when restarting i3 you should use the <tt>exec_always</tt>\r
+keyword. These commands will be run in order.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>exec command\r
+exec_always command</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>exec i3status | dzen2 -dock\r
+exec_always ~/my_script.sh</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="workspace_screen">4.12. Automatically putting workspaces on specific screens</h3>\r
+<div class="paragraph"><p>If you assign clients to workspaces, it might be handy to put the\r
+workspaces on specific screens. Also, the assignment of workspaces to screens\r
+will determine which workspace i3 uses for a new screen when adding screens\r
+or when starting (e.g., by default it will use 1 for the first screen, 2 for\r
+the second screen and so on).</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>workspace &lt;number&gt; output &lt;output&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>The <em>output</em> is the name of the RandR output you attach your screen to. On a\r
+laptop, you might have VGA1 and LVDS1 as output names. You can see the\r
+available outputs by running <tt>xrandr --current</tt>.</p></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>workspace 1 output LVDS1\r
+workspace 5 output VGA1</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_changing_colors">4.13. Changing colors</h3>\r
+<div class="paragraph"><p>You can change all colors which i3 uses to draw the window decorations.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>colorclass border background text</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Where colorclass can be one of:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+client.focused\r
+</dt>\r
+<dd>\r
+<p>\r
+        A client which currently has the focus.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+client.focused_inactive\r
+</dt>\r
+<dd>\r
+<p>\r
+        A client which is the focused one of its container, but it does not have\r
+        the focus at the moment.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+client.unfocused\r
+</dt>\r
+<dd>\r
+<p>\r
+        A client which is not the focused one of its container.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+client.urgent\r
+</dt>\r
+<dd>\r
+<p>\r
+        A client which has its urgency hint activated.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+bar.focused\r
+</dt>\r
+<dd>\r
+<p>\r
+        The current workspace in the bottom bar.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+bar.unfocused\r
+</dt>\r
+<dd>\r
+<p>\r
+        All other workspaces in the bottom bar.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+bar.urgent\r
+</dt>\r
+<dd>\r
+<p>\r
+        A workspace which has at least one client with an activated urgency hint.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+<div class="paragraph"><p>You can also specify the color to be used to paint the background of the client\r
+windows. This color will be used to paint the window on top of which the client\r
+will be rendered.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>client.background color</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Only clients that do not cover the whole area of this window expose the color\r
+used to paint it. If you use a color other than black for your terminals, you\r
+most likely want to set the client background color to the same color as your\r
+terminal program&#8217;s background color to avoid black gaps between the rendered\r
+area of the termianal and the i3 border.</p></div>\r
+<div class="paragraph"><p>Colors are in HTML hex format (#rrggbb), see the following example:</p></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># class        border  backgr. text\r
+client.focused #2F343A #900000 #FFFFFF</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Note that for the window decorations, the color around the child window is the\r
+background color, and the border color is only the two thin lines at the top of\r
+the window.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_interprocess_communication">4.14. Interprocess communication</h3>\r
+<div class="paragraph"><p>i3 uses unix sockets to provide an IPC interface. This allows third-party\r
+programs to get information from i3, such as the current workspaces\r
+(to display a workspace bar), and to control i3.</p></div>\r
+<div class="paragraph"><p>The IPC socket is enabled by default and will be created in\r
+<tt>/tmp/i3-%u/ipc-socket.%p</tt> where <tt>%u</tt> is your UNIX username and <tt>%p</tt> is the PID\r
+of i3.</p></div>\r
+<div class="paragraph"><p>You can override the default path through the environment-variable <tt>I3SOCK</tt> or\r
+by specifying the <tt>ipc-socket</tt> directive.</p></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>ipc-socket /tmp/i3-ipc.sock</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>You can then use the <tt>i3-msg</tt> application to perform any command listed in\r
+the next section.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_focus_follows_mouse">4.15. Focus follows mouse</h3>\r
+<div class="paragraph"><p>If you have a setup where your mouse usually is in your way (like a touchpad\r
+on your laptop which you do not want to disable completely), you might want\r
+to disable <em>focus follows mouse</em> and control focus only by using your keyboard.\r
+The mouse will still be useful inside the currently active window (for example\r
+to click on links in your browser window).</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>focus_follows_mouse &lt;yes|no&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Example</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>focus_follows_mouse no</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_popups_during_fullscreen_mode">4.16. Popups during fullscreen mode</h3>\r
+<div class="paragraph"><p>When you are in fullscreen mode, some applications still open popup windows\r
+(take Xpdf for example). This is because these applications may not be aware\r
+that they are in fullscreen mode (they do not check the corresponding hint).\r
+There are two things which are possible to do in this situation:</p></div>\r
+<div class="olist arabic"><ol class="arabic">\r
+<li>\r
+<p>\r
+Just ignore the popup (don’t map it). This won’t interrupt you while you are\r
+   in fullscreen. However, some apps might react badly to this (deadlock until\r
+   you go out of fullscreen).\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Leave fullscreen mode. This is the default.\r
+</p>\r
+</li>\r
+</ol></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>popup_during_fullscreen &lt;ignore|leave_fullscreen&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Example</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>popup_during_fullscreen ignore</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_list_of_commands">5. List of commands</h2>\r
+<div class="sectionbody">\r
+<div class="sect2">\r
+<h3 id="_splitting_containers">5.1. Splitting containers</h3>\r
+<div class="paragraph"><p>The split command makes the current window a split container. Split containers\r
+can contain multiple windows. Every split container has an orientation, it is\r
+either split horizontally (a new window gets placed to the right of the current\r
+one) or vertically (a new window gets placed below the current one).</p></div>\r
+<div class="paragraph"><p>If you apply this command to a split container with the same orientation,\r
+nothing will happen. If you use a different orientation, the split container’s\r
+orientation will be changed (if it does not have more than one window).</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>split &lt;vertical|horizontal&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Example</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>split vertical</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_manipulating_layout">5.2. Manipulating layout</h3>\r
+<div class="paragraph"><p>Use <tt>layout default</tt>, <tt>layout stacking</tt> or <tt>layout tabbed</tt> to change the\r
+current container layout to default, stacking or tabbed layout, respectively.</p></div>\r
+<div class="paragraph"><p>To make the current window (!) fullscreen, use <tt>fullscreen</tt>, to make\r
+it floating (or tiling again) use <tt>floating enable</tt> respectively <tt>floating disable</tt>\r
+(or <tt>floating toggle</tt>):</p></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>bindsym mod+s layout stacking\r
+bindsym mod+l layout default\r
+bindsym mod+w layout tabbed\r
+\r
+# Toggle fullscreen\r
+bindsym mod+f fullscreen\r
+\r
+# Toggle floating/tiling\r
+bindsym mod+t floating toggle</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_focusing_moving_containers">5.3. Focusing/Moving containers</h3>\r
+<div class="paragraph"><p>To change the focus, use the focus command: <tt>focus left</tt>, <tt>focus right</tt>, <tt>focus down</tt> and <tt>focus up</tt>.</p></div>\r
+<div class="paragraph"><p>There are a few special parameters you can use for the focus command:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+parent\r
+</dt>\r
+<dd>\r
+<p>\r
+        Sets focus to the <tt>Parent Container</tt> of the current <tt>Container</tt>.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+child\r
+</dt>\r
+<dd>\r
+<p>\r
+        The opposite of <tt>focus parent</tt>, sets the focus to the last focused\r
+        child container.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+floating\r
+</dt>\r
+<dd>\r
+<p>\r
+        Sets focus to the last focused floating container.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+tiling\r
+</dt>\r
+<dd>\r
+<p>\r
+        Sets focus to the last focused tiling container.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+mode_toggle\r
+</dt>\r
+<dd>\r
+<p>\r
+        Toggles between floating/tiling containers.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+<div class="paragraph"><p>For moving, use <tt>move left</tt>, <tt>move right</tt>, <tt>move down</tt> and <tt>move up</tt>.</p></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># Focus clients on the left, bottom, top, right:\r
+bindsym mod+j focus left\r
+bindsym mod+k focus down\r
+bindsym mod+l focus up\r
+bindsym mod+semicolon focus right\r
+\r
+# Focus parent container\r
+bindsym mod+u focus parent\r
+\r
+# Focus last floating/tiling container\r
+bindsym mod+g focus mode_toggle\r
+\r
+# Move client to the left, bottom, top, right:\r
+bindsym mod+j move left\r
+bindsym mod+k move down\r
+bindsym mod+l move up\r
+bindsym mod+semicolon move right</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_changing_workspaces_moving_containers_to_workspaces">5.4. Changing workspaces/moving containers to workspaces</h3>\r
+<div class="paragraph"><p>To change to a specific workspace, use the <tt>workspace</tt> command, followed by the\r
+number or name of the workspace. To move containers to specific workspaces, use\r
+<tt>move workspace</tt>.</p></div>\r
+<div class="paragraph"><p>You can also switch to the next and previous workspace with the commands\r
+<tt>workspace next</tt> and <tt>workspace prev</tt>, which is handy, for example, if you have\r
+workspace 1, 3, 4 and 9 and you want to cycle through them with a single key\r
+combination.</p></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>bindsym mod+1 workspace 1\r
+bindsym mod+2 workspace 2\r
+...\r
+\r
+bindsym mod+Shift+1 move workspace 1\r
+bindsym mod+Shift+2 move workspace 2\r
+...</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="resizingconfig">5.5. Resizing containers/windows</h3>\r
+<div class="paragraph"><p>If you want to resize containers/windows using your keyboard, you can use the\r
+<tt>resize</tt> command, I recommend using it inside a so called <tt>mode</tt>:</p></div>\r
+<div class="listingblock">\r
+<div class="title">Example: Configuration file, defining a mode for resizing</div>\r
+<div class="content">\r
+<pre><tt>mode "resize" {\r
+        # These bindings trigger as soon as you enter the resize mode\r
+\r
+        # They resize the border in the direction you pressed, e.g.\r
+        # when pressing left, the window is resized so that it has\r
+        # more space on its left\r
+\r
+        bindsym j resize shrink left\r
+        bindsym Shift+j resize grow left\r
+\r
+        bindsym k resize grow bottom\r
+        bindsym Shift+k resize shrink bottom\r
+\r
+        bindsym l resize shrink top\r
+        bindsym Shift+l resize grow top\r
+\r
+        bindsym semicolon resize grow right\r
+        bindsym Shift+semicolon resize shrink right\r
+\r
+        bindcode 36 mode default\r
+}\r
+\r
+# Enter resize mode\r
+bindsym mod+r mode "resize"</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_jumping_to_specific_windows">5.6. Jumping to specific windows</h3>\r
+<div class="paragraph"><p>Often when in a multi-monitor environment, you want to quickly jump to a\r
+specific window. For example, while working on workspace 3 you may want to\r
+jump to your mail client to email your boss that you’ve achieved some\r
+important goal. Instead of figuring out how to navigate to your mailclient,\r
+it would be more convenient to have a shortcut. You can use the <tt>focus</tt> command\r
+with criteria for that.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>[class="class"] focus\r
+[title="title"] focus</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># Get me to the next open VIM instance\r
+bindsym mod+a [class="urxvt" title="VIM"] focus</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_vim_like_marks_mark_goto">5.7. VIM-like marks (mark/goto)</h3>\r
+<div class="paragraph" id="vim_like_marks"><p>This feature is like the jump feature: It allows you to directly jump to a\r
+specific window (this means switching to the appropriate workspace and setting\r
+focus to the windows). However, you can directly mark a specific window with\r
+an arbitrary label and use it afterwards.  You do not need to ensure that your\r
+windows have unique classes or titles, and you do not need to change your\r
+configuration file.</p></div>\r
+<div class="paragraph"><p>As the command needs to include the label with which you want to mark the\r
+window, you cannot simply bind it to a key.  <tt>i3-input</tt> is a tool created\r
+for this purpose: It lets you input a command and sends the command to i3. It\r
+can also prefix this command and display a custom prompt for the input dialog.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>mark identifier\r
+[con_mark="identifier"] focus</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Example (in a terminal)</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ i3-msg mark irssi\r
+$ i3-msg '[con_mark="irssi"] focus'</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_changing_border_style">5.8. Changing border style</h3>\r
+<div class="paragraph"><p>To change the border of the current client, you can use <tt>border normal</tt> to use the normal\r
+border (including window title), <tt>border 1pixel</tt> to use a 1-pixel border (no window title)\r
+and <tt>border none</tt> to make the client borderless.</p></div>\r
+<div class="paragraph"><p>There is also <tt>border toggle</tt> which will toggle the different border styles.</p></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>bindsym mod+t border normal\r
+bindsym mod+y border 1pixel\r
+bindsym mod+u border none</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="stack-limit">5.9. Reloading/Restarting/Exiting</h3>\r
+<div class="paragraph"><p>You can make i3 reload its configuration file with <tt>reload</tt>. You can also\r
+restart i3 inplace with the <tt>restart</tt> command to get it out of some weird state\r
+(if that should ever happen) or to perform an upgrade without having to restart\r
+your X session. To exit i3 properly, you can use the <tt>exit</tt> command,\r
+however you don’t need to (simply killing your X session is fine as well).</p></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>bindsym mod+Shift+r restart\r
+bindsym mod+Shift+w reload\r
+bindsym mod+Shift+e exit</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="multi_monitor">6. Multiple monitors</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>As you can see in the goal list on the website, i3 was specifically developed\r
+with support for multiple monitors in mind. This section will explain how to\r
+handle multiple monitors.</p></div>\r
+<div class="paragraph"><p>When you have only one monitor, things are simple. You usually start with\r
+workspace 1 on your monitor and open new ones as you need them.</p></div>\r
+<div class="paragraph"><p>When you have more than one monitor, each monitor will get an initial\r
+workspace.  The first monitor gets 1, the second gets 2 and a possible third\r
+would get 3. When you switch to a workspace on a different monitor, i3 will\r
+switch to that monitor and then switch to the workspace. This way, you don’t\r
+need shortcuts to switch to a specific monitor, and you don’t need to remember\r
+where you put which workspace. New workspaces will be opened on the currently\r
+active monitor.  It is not possible to have a monitor without a workspace.</p></div>\r
+<div class="paragraph"><p>The idea of making workspaces global is based on the observation that most\r
+users have a very limited set of workspaces on their additional monitors.\r
+They are often used for a specific task (browser, shell) or for monitoring\r
+several things (mail, IRC, syslog, …). Thus, using one workspace on one monitor\r
+and "the rest" on the other monitors often makes sense. However, as you can\r
+create an unlimited number of workspaces in i3 and tie them to specific\r
+screens, you can have the "traditional" approach of having X workspaces per\r
+screen by changing your configuration (using modes, for example).</p></div>\r
+<div class="sect2">\r
+<h3 id="_configuring_your_monitors">6.1. Configuring your monitors</h3>\r
+<div class="paragraph"><p>To help you get going if you have never used multiple monitors before, here is\r
+a short overview of the xrandr options which will probably be of interest to\r
+you. It is always useful to get an overview of the current screen configuration.\r
+Just run "xrandr" and you will get an output like the following:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ xrandr\r
+Screen 0: minimum 320 x 200, current 1280 x 800, maximum 8192 x 8192\r
+VGA1 disconnected (normal left inverted right x axis y axis)\r
+LVDS1 connected 1280x800+0+0 (normal left inverted right x axis y axis) 261mm x 163mm\r
+   1280x800       60.0*+   50.0\r
+   1024x768       85.0     75.0     70.1     60.0\r
+   832x624        74.6\r
+   800x600        85.1     72.2     75.0     60.3     56.2\r
+   640x480        85.0     72.8     75.0     59.9\r
+   720x400        85.0\r
+   640x400        85.1\r
+   640x350        85.1</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Several things are important here: You can see that <tt>LVDS1</tt> is connected (of\r
+course, it is the internal flat panel) but <tt>VGA1</tt> is not. If you have a monitor\r
+connected to one of the ports but xrandr still says "disconnected", you should\r
+check your cable, monitor or graphics driver.</p></div>\r
+<div class="paragraph"><p>The maximum resolution you can see at the end of the first line is the maximum\r
+combined resolution of your monitors. By default, it is usually too low and has\r
+to be increased by editing <tt>/etc/X11/xorg.conf</tt>.</p></div>\r
+<div class="paragraph"><p>So, say you connected VGA1 and want to use it as an additional screen:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>xrandr --output VGA1 --auto --left-of LVDS1</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>This command makes xrandr try to find the native resolution of the device\r
+connected to <tt>VGA1</tt> and configures it to the left of your internal flat panel.\r
+When running "xrandr" again, the output looks like this:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ xrandr\r
+Screen 0: minimum 320 x 200, current 2560 x 1024, maximum 8192 x 8192\r
+VGA1 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 338mm x 270mm\r
+   1280x1024      60.0*+   75.0\r
+   1280x960       60.0\r
+   1152x864       75.0\r
+   1024x768       75.1     70.1     60.0\r
+   832x624        74.6\r
+   800x600        72.2     75.0     60.3     56.2\r
+   640x480        72.8     75.0     66.7     60.0\r
+   720x400        70.1\r
+LVDS1 connected 1280x800+1280+0 (normal left inverted right x axis y axis) 261mm x 163mm\r
+   1280x800       60.0*+   50.0\r
+   1024x768       85.0     75.0     70.1     60.0\r
+   832x624        74.6\r
+   800x600        85.1     72.2     75.0     60.3     56.2\r
+   640x480        85.0     72.8     75.0     59.9\r
+   720x400        85.0\r
+   640x400        85.1\r
+   640x350        85.1</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Please note that i3 uses exactly the same API as xrandr does, so it will see\r
+only what you can see in xrandr.</p></div>\r
+<div class="paragraph"><p>See also <a href="#presentations">[presentations]</a> for more examples of multi-monitor setups.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_interesting_configuration_for_multi_monitor_environments">6.2. Interesting configuration for multi-monitor environments</h3>\r
+<div class="paragraph"><p>There are several things to configure in i3 which may be interesting if you\r
+have more than one monitor:</p></div>\r
+<div class="olist arabic"><ol class="arabic">\r
+<li>\r
+<p>\r
+You can specify which workspace should be put on which screen. This\r
+   allows you to have a different set of workspaces when starting than just\r
+   1 for the first monitor, 2 for the second and so on. See\r
+   <a href="#workspace_screen">[workspace_screen]</a>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+If you want some applications to generally open on the bigger screen\r
+   (MPlayer, Firefox, …), you can assign them to a specific workspace, see\r
+   <a href="#assign_workspace">[assign_workspace]</a>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+If you have many workspaces on many monitors, it might get hard to keep\r
+   track of which window you put where. Thus, you can use vim-like marks to\r
+   quickly switch between windows. See <a href="#vim_like_marks">[vim_like_marks]</a>.\r
+</p>\r
+</li>\r
+</ol></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_i3_and_the_rest_of_your_software_world">7. i3 and the rest of your software world</h2>\r
+<div class="sectionbody">\r
+<div class="sect2">\r
+<h3 id="_displaying_a_status_line">7.1. Displaying a status line</h3>\r
+<div class="paragraph"><p>A very common thing amongst users of exotic window managers is a status line at\r
+some corner of the screen. It is an often superior replacement to the widget\r
+approach you have in the task bar of a traditional desktop environment.</p></div>\r
+<div class="paragraph"><p>If you don’t already have your favorite way of generating such a status line\r
+(self-written scripts, conky, …), then i3status is the recommended tool for\r
+this task. It was written in C with the goal of using as few syscalls as\r
+possible to reduce the time your CPU is woken up from sleep states. Because\r
+i3status only spits out text, you need to combine it with some other tool, like\r
+i3bar. Use a pipe to connect them: <tt>i3status | i3bar -d</tt>.</p></div>\r
+<div class="paragraph"><p>Regardless of which application you use to display the status line, you\r
+want to make sure that it registers as a dock window using EWMH hints. i3 will\r
+position the window either at the top or at the bottom of the screen, depending\r
+on which hint the application sets. With i3bar, you can use <tt>-d</tt> or <tt>-dbottom</tt>\r
+for positioning it at the bottom and <tt>-dtop</tt> to position it at the top of the\r
+screen.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_giving_presentations_multi_monitor">7.2. Giving presentations (multi-monitor)</h3>\r
+<div class="paragraph"><p>When giving a presentation, you typically want the audience to see what you see\r
+on your screen and then go through a series of slides (if the presentation is\r
+simple). For more complex presentations, you might want to have some notes\r
+which only you can see on your screen, while the audience can only see the\r
+slides.</p></div>\r
+<div class="sect3">\r
+<h4 id="presentations">7.2.1. Case 1: everybody gets the same output</h4>\r
+<div class="paragraph"><p>This is the simple case. You connect your computer to the video projector,\r
+turn on both (computer and video projector) and configure your X server to\r
+clone the internal flat panel of your computer to the video output:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>xrandr --output VGA1 --mode 1024x768 --same-as LVDS1</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>i3 will then use the lowest common subset of screen resolutions, the rest of\r
+your screen will be left untouched (it will show the X background). So, in\r
+our example, this would be 1024x768 (my notebook has 1280x800).</p></div>\r
+</div>\r
+<div class="sect3">\r
+<h4 id="_case_2_you_can_see_more_than_your_audience">7.2.2. Case 2: you can see more than your audience</h4>\r
+<div class="paragraph"><p>This case is a bit harder. First of all, you should configure the VGA output\r
+somewhere near your internal flat panel, say right of it:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>xrandr --output VGA1 --mode 1024x768 --right-of LVDS1</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Now, i3 will put a new workspace (depending on your settings) on the new screen\r
+and you are in multi-monitor mode (see <a href="#multi_monitor">[multi_monitor]</a>).</p></div>\r
+<div class="paragraph"><p>Because i3 is not a compositing window manager, there is no ability to\r
+display a window on two screens at the same time. Instead, your presentation\r
+software needs to do this job (that is, open a window on each screen).</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer" lang="de">\r
+© 2009-2011 Michael Stapelberg, <a href="/impress.html">Impressum</a>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/docs/4.0/wsbar.html b/docs/4.0/wsbar.html
new file mode 100644 (file)
index 0000000..7a3b822
--- /dev/null
@@ -0,0 +1,147 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<link rel="icon" type="image/png" href="/favicon.png">\r
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.4" />\r
+<title>i3: External workspace bars</title>\r
+<link rel="stylesheet" href="/css/style.css" type="text/css" />\r
+<link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+window.onload = function(){asciidoc.footnotes(); asciidoc.toc(2);}\r
+/*]]>*/\r
+</script>\r
+<script type="text/javascript" src="/js/asciidoc-xhtml11.js"></script>\r
+</head>\r
+<body class="article">\r
+\r
+        <div id="main">\r
+            <a href="/"><h1 id="title">i3 - improved tiling WM</h1></a>\r
+                        <ul id="nav">\r
+                                <li><a style="border-bottom: 2px solid #fff" href="/docs">Docs</a></li>\r
+                                <li><a href="/screenshots">Screens</a></li>\r
+                                <li><a href="/contact">Contact</a></li>\r
+                                <li><a href="http://bugs.i3wm.org/">Bugs</a></li>\r
+                        </ul>\r
+        <br style="clear: both">\r
+<div id="content">\r
+<div id="header">\r
+<h1>External workspace bars</h1>\r
+<span id="author">Michael Stapelberg</span><br />\r
+<span id="email"><tt>&lt;<a href="mailto:michael+i3@stapelberg.de">michael+i3@stapelberg.de</a>&gt;</tt></span><br />\r
+<span id="revdate">May 2010</span>\r
+<div id="toc">
+  <div id="toctitle">Table of Contents</div>
+  <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
+</div>\r
+</div>\r
+<div id="preamble">\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>This document describes why the internal workspace bar is minimal and how an\r
+external workspace bar can be used. It explains the concepts using <tt>i3-wsbar</tt>\r
+as the reference implementation.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_internal_and_external_bars">1. Internal and external bars</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>The internal workspace bar of i3 is meant to be a reasonable default so that\r
+you can use i3 without having too much hassle when setting it up. It is quite\r
+simple and intended to stay this way. So, there is no way to display your own\r
+information in this bar (unlike dwm, wmii, awesome, …).</p></div>\r
+<div class="paragraph"><p>We chose not to implement such a mechanism because that would be duplicating\r
+already existing functionality of tools such as dzen2, xmobar and similar.\r
+Instead, you should disable the internal bar and use an external workspace bar\r
+(which communicates with i3 through its IPC interface).</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_dock_mode">2. dock mode</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>You typically want to see the same workspace bar on every workspace on a\r
+specific screen. Also, you don’t want to place the workspace bar somewhere\r
+in your layout by hand. This is where dock mode comes in: When a program sets\r
+the appropriate hint (_NET_WM_WINDOW_TYPE_DOCK), it will be managed in dock\r
+mode by i3. That means it will be placed at the bottom of the screen (while\r
+other edges of the screen are possible in the NetWM standard, this is not yet\r
+implemented in i3), it will not overlap any other window and it will be on\r
+every workspace for the specific screen it was placed on initially.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_the_ipc_interface">3. The IPC interface</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>In the context of using an external workspace bar, the IPC interface needs to\r
+provide the bar program with the current workspaces and output (as in VGA-1,\r
+LVDS-1, …) configuration. In the other direction, the program has to be able\r
+to switch to specific workspaces.</p></div>\r
+<div class="paragraph"><p>By default, the IPC interface is enabled and places its UNIX socket in\r
+<tt>~/.i3/ipc.sock</tt>.</p></div>\r
+<div class="paragraph"><p>To learn more about the protocol which is used for IPC, see <tt>docs/ipc</tt>.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_output_changes_on_the_fly">4. Output changes (on-the-fly)</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3 implements the RandR API and can handle changing outputs quite well. So, an\r
+external workspace bar implementation needs to make sure that when you change\r
+the resolution of any of your screens (or enable/disable an output), the bars\r
+will be adjusted properly.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_i3_wsbar_the_reference_implementation">5. i3-wsbar, the reference implementation</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Please keep in mind that <tt>i3-wsbar</tt> is just a reference implementation. It is\r
+shipped with i3 to have a reasonable default. Thus, <tt>i3-wsbar</tt> is designed to\r
+work well with dzen2 and there are no plans to make it more generic.</p></div>\r
+<div class="sect2">\r
+<h3 id="_the_big_picture">5.1. The big picture</h3>\r
+<div class="paragraph"><p>The most common reason to use an external workspace bar is to integrate system\r
+information such as what <tt>i3status</tt> provides into the workspace bar (to save\r
+screen space). So, we have <tt>i3status</tt> or a similar program, which only provides\r
+text output (formatted in some way). To display this text nicely on the screen,\r
+there are programs such as dzen2, xmobar and similar. We will stick to dzen2\r
+from here on. So, we have the output of i3status, which needs to go into dzen2\r
+somehow. But we also want to display the list of workspaces. <tt>i3-wsbar</tt> takes\r
+input on stdin, combines it with a formatted workspace list and pipes it to\r
+dzen2.</p></div>\r
+<div class="paragraph"><p>Please note that <tt>i3-wsbar</tt> does not print its output to stdout. Instead, it\r
+launches the dzen2 instances on its own. This is necessary to handle changes\r
+in the available outputs (to place a new dzen2 on a new screen for example).</p></div>\r
+<div class="paragraph"><p><span class="image">\r
+<a class="image" href="wsbar.png">\r
+<img src="wsbar.png" alt="Overview" />\r
+</a>\r
+</span></p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_running_i3_wsbar">5.2. Running i3-wsbar</h3>\r
+<div class="paragraph"><p>The most simple usage of i3-wsbar looks like this:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>i3-wsbar -c "dzen2 -x %x -dock"</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>The <tt>%x</tt> in the command name will be replaced by the X position of the output\r
+for which this workspace bar is running. i3 will automatically place the\r
+workspace bar on the correct output when dzen2 is started in dock mode. The\r
+bar which you will see should look exactly like the internal bar of i3.</p></div>\r
+<div class="paragraph"><p>To actually get a benefit, you want to give <tt>i3-wsbar</tt> some input:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>i3status | i3-wsbar -c "dzen2 -x %x -dock"</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>It is recommended to place the above command in your i3 configuration file\r
+to start it automatically with i3.</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer" lang="de">\r
+© 2009-2011 Michael Stapelberg, <a href="/impress.html">Impressum</a>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/docs/4.0/wsbar.png b/docs/4.0/wsbar.png
new file mode 100644 (file)
index 0000000..0789dec
Binary files /dev/null and b/docs/4.0/wsbar.png differ
diff --git a/docs/4.0/wsbar.svg b/docs/4.0/wsbar.svg
new file mode 100644 (file)
index 0000000..e0c8679
--- /dev/null
@@ -0,0 +1,274 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="541pt" height="418pt" viewBox="0 0 541 418" version="1.1">
+<defs>
+<g>
+<symbol overflow="visible" id="glyph0-0">
+<path style="stroke:none;" d="M 1.140625 4.0625 L 1.140625 -16.21875 L 12.640625 -16.21875 L 12.640625 4.0625 L 1.140625 4.0625 Z M 2.4375 2.78125 L 11.359375 2.78125 L 11.359375 -14.921875 L 2.4375 -14.921875 L 2.4375 2.78125 Z M 2.4375 2.78125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-1">
+<path style="stroke:none;" d="M 1.9375 -12.578125 L 5.953125 -12.578125 L 5.953125 0 L 1.9375 0 L 1.9375 -12.578125 Z M 1.9375 -17.46875 L 5.953125 -17.46875 L 5.953125 -14.203125 L 1.9375 -14.203125 L 1.9375 -17.46875 Z M 1.9375 -17.46875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-2">
+<path style="stroke:none;" d="M 10.71875 -9.046875 C 11.84375 -8.753906 12.695312 -8.242188 13.28125 -7.515625 C 13.875 -6.796875 14.171875 -5.878906 14.171875 -4.765625 C 14.171875 -3.097656 13.535156 -1.832031 12.265625 -0.96875 C 10.992188 -0.101562 9.132812 0.328125 6.6875 0.328125 C 5.832031 0.328125 4.972656 0.253906 4.109375 0.109375 C 3.242188 -0.0234375 2.382812 -0.226562 1.53125 -0.5 L 1.53125 -3.84375 C 2.34375 -3.4375 3.144531 -3.128906 3.9375 -2.921875 C 4.738281 -2.710938 5.523438 -2.609375 6.296875 -2.609375 C 7.441406 -2.609375 8.316406 -2.804688 8.921875 -3.203125 C 9.535156 -3.609375 9.84375 -4.179688 9.84375 -4.921875 C 9.84375 -5.679688 9.53125 -6.257812 8.90625 -6.65625 C 8.28125 -7.050781 7.359375 -7.25 6.140625 -7.25 L 4.40625 -7.25 L 4.40625 -10.03125 L 6.234375 -10.03125 C 7.316406 -10.03125 8.125 -10.195312 8.65625 -10.53125 C 9.1875 -10.875 9.453125 -11.394531 9.453125 -12.09375 C 9.453125 -12.738281 9.191406 -13.234375 8.671875 -13.578125 C 8.160156 -13.929688 7.429688 -14.109375 6.484375 -14.109375 C 5.796875 -14.109375 5.09375 -14.03125 4.375 -13.875 C 3.664062 -13.71875 2.957031 -13.488281 2.25 -13.1875 L 2.25 -16.359375 C 3.101562 -16.597656 3.945312 -16.773438 4.78125 -16.890625 C 5.625 -17.015625 6.453125 -17.078125 7.265625 -17.078125 C 9.441406 -17.078125 11.070312 -16.71875 12.15625 -16 C 13.238281 -15.28125 13.78125 -14.203125 13.78125 -12.765625 C 13.78125 -11.785156 13.519531 -10.984375 13 -10.359375 C 12.488281 -9.734375 11.726562 -9.296875 10.71875 -9.046875 Z M 10.71875 -9.046875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-3">
+<path style="stroke:none;" d="M 11.765625 -12.1875 L 11.765625 -9.125 C 10.898438 -9.488281 10.066406 -9.757812 9.265625 -9.9375 C 8.460938 -10.113281 7.707031 -10.203125 7 -10.203125 C 6.226562 -10.203125 5.65625 -10.109375 5.28125 -9.921875 C 4.914062 -9.734375 4.734375 -9.441406 4.734375 -9.046875 C 4.734375 -8.722656 4.875 -8.472656 5.15625 -8.296875 C 5.4375 -8.128906 5.941406 -8.003906 6.671875 -7.921875 L 7.375 -7.8125 C 9.4375 -7.550781 10.820312 -7.117188 11.53125 -6.515625 C 12.238281 -5.921875 12.59375 -4.984375 12.59375 -3.703125 C 12.59375 -2.367188 12.097656 -1.363281 11.109375 -0.6875 C 10.128906 -0.0078125 8.65625 0.328125 6.6875 0.328125 C 5.863281 0.328125 5.003906 0.257812 4.109375 0.125 C 3.222656 0 2.3125 -0.191406 1.375 -0.453125 L 1.375 -3.515625 C 2.175781 -3.128906 3 -2.835938 3.84375 -2.640625 C 4.6875 -2.441406 5.539062 -2.34375 6.40625 -2.34375 C 7.195312 -2.34375 7.789062 -2.453125 8.1875 -2.671875 C 8.582031 -2.890625 8.78125 -3.210938 8.78125 -3.640625 C 8.78125 -3.992188 8.644531 -4.257812 8.375 -4.4375 C 8.101562 -4.613281 7.554688 -4.753906 6.734375 -4.859375 L 6.03125 -4.9375 C 4.238281 -5.164062 2.984375 -5.582031 2.265625 -6.1875 C 1.546875 -6.789062 1.1875 -7.710938 1.1875 -8.953125 C 1.1875 -10.285156 1.644531 -11.269531 2.5625 -11.90625 C 3.476562 -12.550781 4.878906 -12.875 6.765625 -12.875 C 7.503906 -12.875 8.28125 -12.816406 9.09375 -12.703125 C 9.914062 -12.597656 10.804688 -12.425781 11.765625 -12.1875 Z M 11.765625 -12.1875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-4">
+<path style="stroke:none;" d="M 6.328125 -16.15625 L 6.328125 -12.578125 L 10.46875 -12.578125 L 10.46875 -9.703125 L 6.328125 -9.703125 L 6.328125 -4.375 C 6.328125 -3.789062 6.441406 -3.394531 6.671875 -3.1875 C 6.898438 -2.976562 7.359375 -2.875 8.046875 -2.875 L 10.125 -2.875 L 10.125 0 L 6.671875 0 C 5.085938 0 3.960938 -0.328125 3.296875 -0.984375 C 2.628906 -1.648438 2.296875 -2.78125 2.296875 -4.375 L 2.296875 -9.703125 L 0.296875 -9.703125 L 0.296875 -12.578125 L 2.296875 -12.578125 L 2.296875 -16.15625 L 6.328125 -16.15625 Z M 6.328125 -16.15625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-5">
+<path style="stroke:none;" d="M 7.5625 -5.65625 C 6.726562 -5.65625 6.097656 -5.515625 5.671875 -5.234375 C 5.253906 -4.953125 5.046875 -4.53125 5.046875 -3.96875 C 5.046875 -3.46875 5.210938 -3.070312 5.546875 -2.78125 C 5.890625 -2.488281 6.363281 -2.34375 6.96875 -2.34375 C 7.726562 -2.34375 8.363281 -2.613281 8.875 -3.15625 C 9.394531 -3.695312 9.65625 -4.378906 9.65625 -5.203125 L 9.65625 -5.65625 L 7.5625 -5.65625 Z M 13.71875 -7.171875 L 13.71875 0 L 9.65625 0 L 9.65625 -1.859375 C 9.113281 -1.097656 8.503906 -0.539062 7.828125 -0.1875 C 7.160156 0.15625 6.34375 0.328125 5.375 0.328125 C 4.070312 0.328125 3.015625 -0.0507812 2.203125 -0.8125 C 1.390625 -1.570312 0.984375 -2.5625 0.984375 -3.78125 C 0.984375 -5.25 1.488281 -6.328125 2.5 -7.015625 C 3.519531 -7.703125 5.113281 -8.046875 7.28125 -8.046875 L 9.65625 -8.046875 L 9.65625 -8.359375 C 9.65625 -9.003906 9.40625 -9.472656 8.90625 -9.765625 C 8.40625 -10.054688 7.625 -10.203125 6.5625 -10.203125 C 5.695312 -10.203125 4.894531 -10.113281 4.15625 -9.9375 C 3.414062 -9.769531 2.726562 -9.515625 2.09375 -9.171875 L 2.09375 -12.234375 C 2.945312 -12.453125 3.804688 -12.613281 4.671875 -12.71875 C 5.546875 -12.820312 6.414062 -12.875 7.28125 -12.875 C 9.550781 -12.875 11.191406 -12.425781 12.203125 -11.53125 C 13.210938 -10.644531 13.71875 -9.191406 13.71875 -7.171875 Z M 13.71875 -7.171875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-6">
+<path style="stroke:none;" d="M 1.796875 -4.890625 L 1.796875 -12.578125 L 5.84375 -12.578125 L 5.84375 -11.328125 C 5.84375 -10.640625 5.835938 -9.78125 5.828125 -8.75 C 5.816406 -7.71875 5.8125 -7.03125 5.8125 -6.6875 C 5.8125 -5.675781 5.835938 -4.945312 5.890625 -4.5 C 5.941406 -4.0625 6.035156 -3.738281 6.171875 -3.53125 C 6.328125 -3.269531 6.535156 -3.066406 6.796875 -2.921875 C 7.066406 -2.785156 7.378906 -2.71875 7.734375 -2.71875 C 8.566406 -2.71875 9.222656 -3.039062 9.703125 -3.6875 C 10.179688 -4.332031 10.421875 -5.226562 10.421875 -6.375 L 10.421875 -12.578125 L 14.4375 -12.578125 L 14.4375 0 L 10.421875 0 L 10.421875 -1.8125 C 9.816406 -1.082031 9.175781 -0.539062 8.5 -0.1875 C 7.820312 0.15625 7.070312 0.328125 6.25 0.328125 C 4.800781 0.328125 3.695312 -0.113281 2.9375 -1 C 2.175781 -1.894531 1.796875 -3.191406 1.796875 -4.890625 Z M 1.796875 -4.890625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-7">
+<path style="stroke:none;" d="M 1.25 -8.25 L 8.296875 -8.25 L 8.296875 -4.984375 L 1.25 -4.984375 L 1.25 -8.25 Z M 1.25 -8.25 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-8">
+<path style="stroke:none;" d="M 0.8125 -12.578125 L 4.71875 -12.578125 L 6.828125 -3.90625 L 8.953125 -12.578125 L 12.3125 -12.578125 L 14.421875 -4 L 16.546875 -12.578125 L 20.453125 -12.578125 L 17.140625 0 L 12.75 0 L 10.625 -8.640625 L 8.515625 0 L 4.125 0 L 0.8125 -12.578125 Z M 0.8125 -12.578125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-9">
+<path style="stroke:none;" d="M 8.625 -2.59375 C 9.488281 -2.59375 10.144531 -2.90625 10.59375 -3.53125 C 11.050781 -4.164062 11.28125 -5.082031 11.28125 -6.28125 C 11.28125 -7.476562 11.050781 -8.390625 10.59375 -9.015625 C 10.144531 -9.648438 9.488281 -9.96875 8.625 -9.96875 C 7.757812 -9.96875 7.097656 -9.648438 6.640625 -9.015625 C 6.179688 -8.378906 5.953125 -7.46875 5.953125 -6.28125 C 5.953125 -5.09375 6.179688 -4.179688 6.640625 -3.546875 C 7.097656 -2.910156 7.757812 -2.59375 8.625 -2.59375 Z M 5.953125 -10.734375 C 6.503906 -11.472656 7.117188 -12.015625 7.796875 -12.359375 C 8.472656 -12.703125 9.25 -12.875 10.125 -12.875 C 11.664062 -12.875 12.9375 -12.257812 13.9375 -11.03125 C 14.9375 -9.800781 15.4375 -8.21875 15.4375 -6.28125 C 15.4375 -4.34375 14.9375 -2.753906 13.9375 -1.515625 C 12.9375 -0.285156 11.664062 0.328125 10.125 0.328125 C 9.25 0.328125 8.472656 0.15625 7.796875 -0.1875 C 7.117188 -0.539062 6.503906 -1.082031 5.953125 -1.8125 L 5.953125 0 L 1.9375 0 L 1.9375 -17.46875 L 5.953125 -17.46875 L 5.953125 -10.734375 Z M 5.953125 -10.734375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-10">
+<path style="stroke:none;" d="M 11.28125 -9.15625 C 10.925781 -9.320312 10.570312 -9.441406 10.21875 -9.515625 C 9.875 -9.597656 9.523438 -9.640625 9.171875 -9.640625 C 8.140625 -9.640625 7.34375 -9.304688 6.78125 -8.640625 C 6.226562 -7.972656 5.953125 -7.023438 5.953125 -5.796875 L 5.953125 0 L 1.9375 0 L 1.9375 -12.578125 L 5.953125 -12.578125 L 5.953125 -10.515625 C 6.472656 -11.335938 7.066406 -11.9375 7.734375 -12.3125 C 8.398438 -12.6875 9.203125 -12.875 10.140625 -12.875 C 10.273438 -12.875 10.421875 -12.867188 10.578125 -12.859375 C 10.734375 -12.847656 10.960938 -12.828125 11.265625 -12.796875 L 11.28125 -9.15625 Z M 11.28125 -9.15625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-11">
+<path style="stroke:none;" d="M 10.484375 -10.734375 L 10.484375 -17.46875 L 14.53125 -17.46875 L 14.53125 0 L 10.484375 0 L 10.484375 -1.8125 C 9.929688 -1.070312 9.320312 -0.53125 8.65625 -0.1875 C 7.988281 0.15625 7.21875 0.328125 6.34375 0.328125 C 4.789062 0.328125 3.515625 -0.285156 2.515625 -1.515625 C 1.523438 -2.753906 1.03125 -4.34375 1.03125 -6.28125 C 1.03125 -8.21875 1.523438 -9.800781 2.515625 -11.03125 C 3.515625 -12.257812 4.789062 -12.875 6.34375 -12.875 C 7.207031 -12.875 7.972656 -12.703125 8.640625 -12.359375 C 9.316406 -12.015625 9.929688 -11.472656 10.484375 -10.734375 Z M 7.84375 -2.59375 C 8.695312 -2.59375 9.347656 -2.90625 9.796875 -3.53125 C 10.253906 -4.164062 10.484375 -5.082031 10.484375 -6.28125 C 10.484375 -7.476562 10.253906 -8.390625 9.796875 -9.015625 C 9.347656 -9.648438 8.695312 -9.96875 7.84375 -9.96875 C 6.988281 -9.96875 6.332031 -9.648438 5.875 -9.015625 C 5.425781 -8.390625 5.203125 -7.476562 5.203125 -6.28125 C 5.203125 -5.082031 5.425781 -4.164062 5.875 -3.53125 C 6.332031 -2.90625 6.988281 -2.59375 7.84375 -2.59375 Z M 7.84375 -2.59375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-12">
+<path style="stroke:none;" d="M 1.3125 -12.578125 L 12.28125 -12.578125 L 12.28125 -9.765625 L 5.65625 -2.875 L 12.28125 -2.875 L 12.28125 0 L 1.03125 0 L 1.03125 -2.8125 L 7.65625 -9.703125 L 1.3125 -9.703125 L 1.3125 -12.578125 Z M 1.3125 -12.578125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-13">
+<path style="stroke:none;" d="M 14.484375 -6.328125 L 14.484375 -5.171875 L 5.09375 -5.171875 C 5.1875 -4.234375 5.523438 -3.523438 6.109375 -3.046875 C 6.691406 -2.578125 7.507812 -2.34375 8.5625 -2.34375 C 9.40625 -2.34375 10.269531 -2.46875 11.15625 -2.71875 C 12.039062 -2.96875 12.953125 -3.347656 13.890625 -3.859375 L 13.890625 -0.765625 C 12.941406 -0.398438 11.988281 -0.128906 11.03125 0.046875 C 10.082031 0.234375 9.132812 0.328125 8.1875 0.328125 C 5.90625 0.328125 4.132812 -0.25 2.875 -1.40625 C 1.613281 -2.5625 0.984375 -4.1875 0.984375 -6.28125 C 0.984375 -8.332031 1.601562 -9.941406 2.84375 -11.109375 C 4.082031 -12.285156 5.789062 -12.875 7.96875 -12.875 C 9.9375 -12.875 11.515625 -12.28125 12.703125 -11.09375 C 13.890625 -9.90625 14.484375 -8.316406 14.484375 -6.328125 Z M 10.359375 -7.65625 C 10.359375 -8.425781 10.132812 -9.039062 9.6875 -9.5 C 9.238281 -9.96875 8.65625 -10.203125 7.9375 -10.203125 C 7.15625 -10.203125 6.519531 -9.984375 6.03125 -9.546875 C 5.550781 -9.109375 5.25 -8.476562 5.125 -7.65625 L 10.359375 -7.65625 Z M 10.359375 -7.65625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-14">
+<path style="stroke:none;" d="M 14.578125 -7.65625 L 14.578125 0 L 10.53125 0 L 10.53125 -1.25 L 10.53125 -5.859375 C 10.53125 -6.941406 10.503906 -7.6875 10.453125 -8.09375 C 10.410156 -8.507812 10.328125 -8.816406 10.203125 -9.015625 C 10.046875 -9.273438 9.832031 -9.476562 9.5625 -9.625 C 9.300781 -9.769531 8.992188 -9.84375 8.640625 -9.84375 C 7.804688 -9.84375 7.148438 -9.519531 6.671875 -8.875 C 6.191406 -8.226562 5.953125 -7.332031 5.953125 -6.1875 L 5.953125 0 L 1.9375 0 L 1.9375 -12.578125 L 5.953125 -12.578125 L 5.953125 -10.734375 C 6.554688 -11.472656 7.195312 -12.015625 7.875 -12.359375 C 8.5625 -12.703125 9.316406 -12.875 10.140625 -12.875 C 11.585938 -12.875 12.6875 -12.425781 13.4375 -11.53125 C 14.195312 -10.644531 14.578125 -9.351562 14.578125 -7.65625 Z M 14.578125 -7.65625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-15">
+<path style="stroke:none;" d="M 6.625 -3.171875 L 14 -3.171875 L 14 0 L 1.8125 0 L 1.8125 -3.171875 L 7.9375 -8.578125 C 8.488281 -9.078125 8.894531 -9.5625 9.15625 -10.03125 C 9.414062 -10.5 9.546875 -10.988281 9.546875 -11.5 C 9.546875 -12.28125 9.28125 -12.910156 8.75 -13.390625 C 8.226562 -13.867188 7.53125 -14.109375 6.65625 -14.109375 C 5.976562 -14.109375 5.238281 -13.960938 4.4375 -13.671875 C 3.632812 -13.390625 2.773438 -12.96875 1.859375 -12.40625 L 1.859375 -16.078125 C 2.835938 -16.398438 3.800781 -16.644531 4.75 -16.8125 C 5.695312 -16.988281 6.628906 -17.078125 7.546875 -17.078125 C 9.554688 -17.078125 11.113281 -16.632812 12.21875 -15.75 C 13.332031 -14.863281 13.890625 -13.628906 13.890625 -12.046875 C 13.890625 -11.140625 13.65625 -10.289062 13.1875 -9.5 C 12.71875 -8.707031 11.722656 -7.648438 10.203125 -6.328125 L 6.625 -3.171875 Z M 6.625 -3.171875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-0">
+<path style="stroke:none;" d="M 0.84375 3 L 0.84375 -11.984375 L 9.34375 -11.984375 L 9.34375 3 L 0.84375 3 Z M 1.796875 2.0625 L 8.40625 2.0625 L 8.40625 -11.03125 L 1.796875 -11.03125 L 1.796875 2.0625 Z M 1.796875 2.0625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-1">
+<path style="stroke:none;" d="M 3.078125 -1.390625 L 3.078125 3.53125 L 1.546875 3.53125 L 1.546875 -9.296875 L 3.078125 -9.296875 L 3.078125 -7.890625 C 3.398438 -8.441406 3.804688 -8.847656 4.296875 -9.109375 C 4.785156 -9.378906 5.367188 -9.515625 6.046875 -9.515625 C 7.179688 -9.515625 8.097656 -9.066406 8.796875 -8.171875 C 9.503906 -7.273438 9.859375 -6.097656 9.859375 -4.640625 C 9.859375 -3.179688 9.503906 -2.003906 8.796875 -1.109375 C 8.097656 -0.210938 7.179688 0.234375 6.046875 0.234375 C 5.367188 0.234375 4.785156 0.101562 4.296875 -0.15625 C 3.804688 -0.425781 3.398438 -0.835938 3.078125 -1.390625 Z M 8.28125 -4.640625 C 8.28125 -5.765625 8.046875 -6.644531 7.578125 -7.28125 C 7.117188 -7.925781 6.484375 -8.25 5.671875 -8.25 C 4.867188 -8.25 4.234375 -7.925781 3.765625 -7.28125 C 3.304688 -6.644531 3.078125 -5.765625 3.078125 -4.640625 C 3.078125 -3.515625 3.304688 -2.628906 3.765625 -1.984375 C 4.234375 -1.347656 4.867188 -1.03125 5.671875 -1.03125 C 6.484375 -1.03125 7.117188 -1.347656 7.578125 -1.984375 C 8.046875 -2.628906 8.28125 -3.515625 8.28125 -4.640625 Z M 8.28125 -4.640625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-2">
+<path style="stroke:none;" d="M 1.609375 -9.296875 L 3.125 -9.296875 L 3.125 0 L 1.609375 0 L 1.609375 -9.296875 Z M 1.609375 -12.921875 L 3.125 -12.921875 L 3.125 -10.984375 L 1.609375 -10.984375 L 1.609375 -12.921875 Z M 1.609375 -12.921875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-3">
+<path style="stroke:none;" d="M 9.546875 -5.03125 L 9.546875 -4.28125 L 2.53125 -4.28125 C 2.59375 -3.226562 2.90625 -2.425781 3.46875 -1.875 C 4.039062 -1.320312 4.835938 -1.046875 5.859375 -1.046875 C 6.441406 -1.046875 7.007812 -1.117188 7.5625 -1.265625 C 8.113281 -1.410156 8.660156 -1.628906 9.203125 -1.921875 L 9.203125 -0.46875 C 8.648438 -0.238281 8.085938 -0.0664062 7.515625 0.046875 C 6.941406 0.171875 6.359375 0.234375 5.765625 0.234375 C 4.273438 0.234375 3.097656 -0.191406 2.234375 -1.046875 C 1.367188 -1.910156 0.9375 -3.082031 0.9375 -4.5625 C 0.9375 -6.082031 1.347656 -7.285156 2.171875 -8.171875 C 2.992188 -9.066406 4.101562 -9.515625 5.5 -9.515625 C 6.75 -9.515625 7.734375 -9.113281 8.453125 -8.3125 C 9.179688 -7.507812 9.546875 -6.414062 9.546875 -5.03125 Z M 8.03125 -5.484375 C 8.019531 -6.316406 7.785156 -6.976562 7.328125 -7.46875 C 6.867188 -7.96875 6.265625 -8.21875 5.515625 -8.21875 C 4.660156 -8.21875 3.976562 -7.976562 3.46875 -7.5 C 2.957031 -7.019531 2.660156 -6.34375 2.578125 -5.46875 L 8.03125 -5.484375 Z M 8.03125 -5.484375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-4">
+<path style="stroke:none;" d="M 1.671875 -12.390625 L 3.34375 -12.390625 L 3.34375 0 L 1.671875 0 L 1.671875 -12.390625 Z M 1.671875 -12.390625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-5">
+<path style="stroke:none;" d="M 3.34375 -11.015625 L 3.34375 -6.359375 L 5.453125 -6.359375 C 6.234375 -6.359375 6.835938 -6.5625 7.265625 -6.96875 C 7.691406 -7.375 7.90625 -7.945312 7.90625 -8.6875 C 7.90625 -9.425781 7.691406 -10 7.265625 -10.40625 C 6.835938 -10.8125 6.234375 -11.015625 5.453125 -11.015625 L 3.34375 -11.015625 Z M 1.671875 -12.390625 L 5.453125 -12.390625 C 6.835938 -12.390625 7.882812 -12.078125 8.59375 -11.453125 C 9.3125 -10.828125 9.671875 -9.90625 9.671875 -8.6875 C 9.671875 -7.46875 9.3125 -6.546875 8.59375 -5.921875 C 7.882812 -5.296875 6.835938 -4.984375 5.453125 -4.984375 L 3.34375 -4.984375 L 3.34375 0 L 1.671875 0 L 1.671875 -12.390625 Z M 1.671875 -12.390625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-6">
+<path style="stroke:none;" d="M 10.953125 -11.4375 L 10.953125 -9.671875 C 10.390625 -10.191406 9.785156 -10.582031 9.140625 -10.84375 C 8.503906 -11.101562 7.828125 -11.234375 7.109375 -11.234375 C 5.691406 -11.234375 4.601562 -10.800781 3.84375 -9.9375 C 3.09375 -9.070312 2.71875 -7.820312 2.71875 -6.1875 C 2.71875 -4.550781 3.09375 -3.300781 3.84375 -2.4375 C 4.601562 -1.570312 5.691406 -1.140625 7.109375 -1.140625 C 7.828125 -1.140625 8.503906 -1.269531 9.140625 -1.53125 C 9.785156 -1.789062 10.390625 -2.179688 10.953125 -2.703125 L 10.953125 -0.953125 C 10.359375 -0.554688 9.734375 -0.257812 9.078125 -0.0625 C 8.429688 0.132812 7.738281 0.234375 7 0.234375 C 5.125 0.234375 3.644531 -0.335938 2.5625 -1.484375 C 1.488281 -2.628906 0.953125 -4.195312 0.953125 -6.1875 C 0.953125 -8.175781 1.488281 -9.742188 2.5625 -10.890625 C 3.644531 -12.046875 5.125 -12.625 7 -12.625 C 7.75 -12.625 8.445312 -12.523438 9.09375 -12.328125 C 9.75 -12.128906 10.367188 -11.832031 10.953125 -11.4375 Z M 10.953125 -11.4375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-0">
+<path style="stroke:none;" d="M 0.640625 2.296875 L 0.640625 -9.171875 L 7.140625 -9.171875 L 7.140625 2.296875 L 0.640625 2.296875 Z M 1.375 1.578125 L 6.421875 1.578125 L 6.421875 -8.4375 L 1.375 -8.4375 L 1.375 1.578125 Z M 1.375 1.578125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-1">
+<path style="stroke:none;" d="M 4.03125 -9.859375 C 3.46875 -8.890625 3.046875 -7.925781 2.765625 -6.96875 C 2.492188 -6.019531 2.359375 -5.054688 2.359375 -4.078125 C 2.359375 -3.097656 2.492188 -2.128906 2.765625 -1.171875 C 3.046875 -0.210938 3.46875 0.75 4.03125 1.71875 L 3.015625 1.71875 C 2.378906 0.71875 1.90625 -0.257812 1.59375 -1.21875 C 1.28125 -2.175781 1.125 -3.128906 1.125 -4.078125 C 1.125 -5.023438 1.28125 -5.972656 1.59375 -6.921875 C 1.90625 -7.878906 2.378906 -8.859375 3.015625 -9.859375 L 4.03125 -9.859375 Z M 4.03125 -9.859375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-2">
+<path style="stroke:none;" d="M 4.828125 -9.875 L 4.828125 -8.90625 L 3.703125 -8.90625 C 3.285156 -8.90625 2.992188 -8.816406 2.828125 -8.640625 C 2.671875 -8.472656 2.59375 -8.171875 2.59375 -7.734375 L 2.59375 -7.109375 L 4.515625 -7.109375 L 4.515625 -6.203125 L 2.59375 -6.203125 L 2.59375 0 L 1.421875 0 L 1.421875 -6.203125 L 0.296875 -6.203125 L 0.296875 -7.109375 L 1.421875 -7.109375 L 1.421875 -7.609375 C 1.421875 -8.398438 1.601562 -8.972656 1.96875 -9.328125 C 2.332031 -9.691406 2.914062 -9.875 3.71875 -9.875 L 4.828125 -9.875 Z M 4.828125 -9.875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-3">
+<path style="stroke:none;" d="M 3.984375 -6.296875 C 3.359375 -6.296875 2.863281 -6.050781 2.5 -5.5625 C 2.132812 -5.070312 1.953125 -4.398438 1.953125 -3.546875 C 1.953125 -2.691406 2.128906 -2.019531 2.484375 -1.53125 C 2.847656 -1.050781 3.347656 -0.8125 3.984375 -0.8125 C 4.597656 -0.8125 5.085938 -1.054688 5.453125 -1.546875 C 5.816406 -2.035156 6 -2.703125 6 -3.546875 C 6 -4.390625 5.816406 -5.054688 5.453125 -5.546875 C 5.085938 -6.046875 4.597656 -6.296875 3.984375 -6.296875 Z M 3.984375 -7.28125 C 4.992188 -7.28125 5.789062 -6.945312 6.375 -6.28125 C 6.957031 -5.625 7.25 -4.710938 7.25 -3.546875 C 7.25 -2.378906 6.957031 -1.460938 6.375 -0.796875 C 5.789062 -0.140625 4.992188 0.1875 3.984375 0.1875 C 2.960938 0.1875 2.160156 -0.140625 1.578125 -0.796875 C 1.003906 -1.460938 0.71875 -2.378906 0.71875 -3.546875 C 0.71875 -4.710938 1.003906 -5.625 1.578125 -6.28125 C 2.160156 -6.945312 2.960938 -7.28125 3.984375 -7.28125 Z M 3.984375 -7.28125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-4">
+<path style="stroke:none;" d="M 5.34375 -6.015625 C 5.207031 -6.085938 5.0625 -6.140625 4.90625 -6.171875 C 4.757812 -6.210938 4.59375 -6.234375 4.40625 -6.234375 C 3.75 -6.234375 3.242188 -6.019531 2.890625 -5.59375 C 2.535156 -5.164062 2.359375 -4.550781 2.359375 -3.75 L 2.359375 0 L 1.1875 0 L 1.1875 -7.109375 L 2.359375 -7.109375 L 2.359375 -6 C 2.597656 -6.4375 2.914062 -6.757812 3.3125 -6.96875 C 3.707031 -7.175781 4.1875 -7.28125 4.75 -7.28125 C 4.832031 -7.28125 4.921875 -7.273438 5.015625 -7.265625 C 5.109375 -7.253906 5.21875 -7.238281 5.34375 -7.21875 L 5.34375 -6.015625 Z M 5.34375 -6.015625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-5">
+<path style="stroke:none;" d=""/>
+</symbol>
+<symbol overflow="visible" id="glyph2-6">
+<path style="stroke:none;" d="M 1.28125 -9.484375 L 2.5625 -9.484375 L 2.5625 -1.078125 L 7.171875 -1.078125 L 7.171875 0 L 1.28125 0 L 1.28125 -9.484375 Z M 1.28125 -9.484375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-7">
+<path style="stroke:none;" d="M 3.71875 0 L 0.109375 -9.484375 L 1.4375 -9.484375 L 4.4375 -1.5 L 7.453125 -9.484375 L 8.78125 -9.484375 L 5.171875 0 L 3.71875 0 Z M 3.71875 0 "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-8">
+<path style="stroke:none;" d="M 2.5625 -8.421875 L 2.5625 -1.046875 L 4.109375 -1.046875 C 5.410156 -1.046875 6.363281 -1.34375 6.96875 -1.9375 C 7.582031 -2.53125 7.890625 -3.46875 7.890625 -4.75 C 7.890625 -6.019531 7.582031 -6.945312 6.96875 -7.53125 C 6.363281 -8.125 5.410156 -8.421875 4.109375 -8.421875 L 2.5625 -8.421875 Z M 1.28125 -9.484375 L 3.90625 -9.484375 C 5.75 -9.484375 7.097656 -9.097656 7.953125 -8.328125 C 8.816406 -7.566406 9.25 -6.375 9.25 -4.75 C 9.25 -3.113281 8.816406 -1.910156 7.953125 -1.140625 C 7.085938 -0.378906 5.738281 0 3.90625 0 L 1.28125 0 L 1.28125 -9.484375 Z M 1.28125 -9.484375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-9">
+<path style="stroke:none;" d="M 6.953125 -9.171875 L 6.953125 -7.921875 C 6.472656 -8.148438 6.015625 -8.320312 5.578125 -8.4375 C 5.148438 -8.550781 4.734375 -8.609375 4.328125 -8.609375 C 3.628906 -8.609375 3.085938 -8.472656 2.703125 -8.203125 C 2.328125 -7.929688 2.140625 -7.546875 2.140625 -7.046875 C 2.140625 -6.628906 2.265625 -6.3125 2.515625 -6.09375 C 2.773438 -5.882812 3.253906 -5.710938 3.953125 -5.578125 L 4.734375 -5.421875 C 5.679688 -5.234375 6.382812 -4.910156 6.84375 -4.453125 C 7.300781 -3.992188 7.53125 -3.378906 7.53125 -2.609375 C 7.53125 -1.691406 7.222656 -0.992188 6.609375 -0.515625 C 5.992188 -0.046875 5.085938 0.1875 3.890625 0.1875 C 3.441406 0.1875 2.960938 0.132812 2.453125 0.03125 C 1.953125 -0.0703125 1.429688 -0.222656 0.890625 -0.421875 L 0.890625 -1.734375 C 1.410156 -1.441406 1.921875 -1.222656 2.421875 -1.078125 C 2.921875 -0.929688 3.410156 -0.859375 3.890625 -0.859375 C 4.628906 -0.859375 5.195312 -1 5.59375 -1.28125 C 5.988281 -1.570312 6.1875 -1.984375 6.1875 -2.515625 C 6.1875 -2.984375 6.039062 -3.347656 5.75 -3.609375 C 5.46875 -3.867188 5.003906 -4.066406 4.359375 -4.203125 L 3.578125 -4.359375 C 2.617188 -4.546875 1.925781 -4.84375 1.5 -5.25 C 1.070312 -5.65625 0.859375 -6.21875 0.859375 -6.9375 C 0.859375 -7.78125 1.148438 -8.441406 1.734375 -8.921875 C 2.328125 -9.410156 3.144531 -9.65625 4.1875 -9.65625 C 4.625 -9.65625 5.070312 -9.613281 5.53125 -9.53125 C 6 -9.445312 6.472656 -9.328125 6.953125 -9.171875 Z M 6.953125 -9.171875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-10">
+<path style="stroke:none;" d="M 0.640625 -4.078125 L 4.0625 -4.078125 L 4.0625 -3.046875 L 0.640625 -3.046875 L 0.640625 -4.078125 Z M 0.640625 -4.078125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-11">
+<path style="stroke:none;" d="M 1.609375 -1.078125 L 3.703125 -1.078125 L 3.703125 -8.3125 L 1.421875 -7.859375 L 1.421875 -9.015625 L 3.6875 -9.484375 L 4.984375 -9.484375 L 4.984375 -1.078125 L 7.078125 -1.078125 L 7.078125 0 L 1.609375 0 L 1.609375 -1.078125 Z M 1.609375 -1.078125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-12">
+<path style="stroke:none;" d="M 1.046875 -9.859375 L 2.0625 -9.859375 C 2.695312 -8.859375 3.171875 -7.878906 3.484375 -6.921875 C 3.796875 -5.972656 3.953125 -5.023438 3.953125 -4.078125 C 3.953125 -3.128906 3.796875 -2.175781 3.484375 -1.21875 C 3.171875 -0.257812 2.695312 0.71875 2.0625 1.71875 L 1.046875 1.71875 C 1.609375 0.75 2.023438 -0.210938 2.296875 -1.171875 C 2.578125 -2.128906 2.71875 -3.097656 2.71875 -4.078125 C 2.71875 -5.054688 2.578125 -6.019531 2.296875 -6.96875 C 2.023438 -7.925781 1.609375 -8.890625 1.046875 -9.859375 Z M 1.046875 -9.859375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-13">
+<path style="stroke:none;" d="M 7.734375 -1.359375 L 7.734375 -3.890625 L 5.640625 -3.890625 L 5.640625 -4.953125 L 9 -4.953125 L 9 -0.875 C 8.507812 -0.53125 7.960938 -0.265625 7.359375 -0.078125 C 6.765625 0.0976562 6.128906 0.1875 5.453125 0.1875 C 3.972656 0.1875 2.816406 -0.242188 1.984375 -1.109375 C 1.148438 -1.972656 0.734375 -3.179688 0.734375 -4.734375 C 0.734375 -6.273438 1.148438 -7.476562 1.984375 -8.34375 C 2.816406 -9.21875 3.972656 -9.65625 5.453125 -9.65625 C 6.078125 -9.65625 6.664062 -9.578125 7.21875 -9.421875 C 7.78125 -9.265625 8.296875 -9.039062 8.765625 -8.75 L 8.765625 -7.375 C 8.285156 -7.78125 7.78125 -8.082031 7.25 -8.28125 C 6.71875 -8.488281 6.15625 -8.59375 5.5625 -8.59375 C 4.40625 -8.59375 3.535156 -8.269531 2.953125 -7.625 C 2.367188 -6.976562 2.078125 -6.015625 2.078125 -4.734375 C 2.078125 -3.453125 2.367188 -2.488281 2.953125 -1.84375 C 3.535156 -1.195312 4.40625 -0.875 5.5625 -0.875 C 6.019531 -0.875 6.425781 -0.910156 6.78125 -0.984375 C 7.132812 -1.066406 7.453125 -1.191406 7.734375 -1.359375 Z M 7.734375 -1.359375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-14">
+<path style="stroke:none;" d="M 4.4375 -8.21875 L 2.703125 -3.5 L 6.1875 -3.5 L 4.4375 -8.21875 Z M 3.71875 -9.484375 L 5.171875 -9.484375 L 8.78125 0 L 7.453125 0 L 6.59375 -2.4375 L 2.3125 -2.4375 L 1.453125 0 L 0.109375 0 L 3.71875 -9.484375 Z M 3.71875 -9.484375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-15">
+<path style="stroke:none;" d="M 6.765625 -5.75 C 7.054688 -6.269531 7.40625 -6.65625 7.8125 -6.90625 C 8.21875 -7.15625 8.695312 -7.28125 9.25 -7.28125 C 9.988281 -7.28125 10.554688 -7.019531 10.953125 -6.5 C 11.359375 -5.976562 11.5625 -5.242188 11.5625 -4.296875 L 11.5625 0 L 10.390625 0 L 10.390625 -4.25 C 10.390625 -4.9375 10.265625 -5.441406 10.015625 -5.765625 C 9.773438 -6.097656 9.410156 -6.265625 8.921875 -6.265625 C 8.316406 -6.265625 7.835938 -6.0625 7.484375 -5.65625 C 7.128906 -5.257812 6.953125 -4.710938 6.953125 -4.015625 L 6.953125 0 L 5.78125 0 L 5.78125 -4.25 C 5.78125 -4.9375 5.660156 -5.441406 5.421875 -5.765625 C 5.179688 -6.097656 4.804688 -6.265625 4.296875 -6.265625 C 3.703125 -6.265625 3.226562 -6.0625 2.875 -5.65625 C 2.53125 -5.25 2.359375 -4.703125 2.359375 -4.015625 L 2.359375 0 L 1.1875 0 L 1.1875 -7.109375 L 2.359375 -7.109375 L 2.359375 -6 C 2.617188 -6.4375 2.9375 -6.757812 3.3125 -6.96875 C 3.6875 -7.175781 4.128906 -7.28125 4.640625 -7.28125 C 5.160156 -7.28125 5.597656 -7.148438 5.953125 -6.890625 C 6.316406 -6.628906 6.585938 -6.25 6.765625 -5.75 Z M 6.765625 -5.75 "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-16">
+<path style="stroke:none;" d="M 4.453125 -3.578125 C 3.515625 -3.578125 2.863281 -3.46875 2.5 -3.25 C 2.132812 -3.03125 1.953125 -2.660156 1.953125 -2.140625 C 1.953125 -1.734375 2.085938 -1.40625 2.359375 -1.15625 C 2.628906 -0.914062 3 -0.796875 3.46875 -0.796875 C 4.113281 -0.796875 4.632812 -1.023438 5.03125 -1.484375 C 5.425781 -1.941406 5.625 -2.550781 5.625 -3.3125 L 5.625 -3.578125 L 4.453125 -3.578125 Z M 6.78125 -4.0625 L 6.78125 0 L 5.625 0 L 5.625 -1.078125 C 5.351562 -0.648438 5.019531 -0.332031 4.625 -0.125 C 4.226562 0.0820312 3.738281 0.1875 3.15625 0.1875 C 2.425781 0.1875 1.847656 -0.015625 1.421875 -0.421875 C 0.992188 -0.835938 0.78125 -1.382812 0.78125 -2.0625 C 0.78125 -2.863281 1.046875 -3.46875 1.578125 -3.875 C 2.117188 -4.28125 2.921875 -4.484375 3.984375 -4.484375 L 5.625 -4.484375 L 5.625 -4.609375 C 5.625 -5.140625 5.445312 -5.550781 5.09375 -5.84375 C 4.738281 -6.144531 4.238281 -6.296875 3.59375 -6.296875 C 3.1875 -6.296875 2.789062 -6.242188 2.40625 -6.140625 C 2.019531 -6.046875 1.648438 -5.898438 1.296875 -5.703125 L 1.296875 -6.78125 C 1.722656 -6.945312 2.140625 -7.070312 2.546875 -7.15625 C 2.953125 -7.238281 3.34375 -7.28125 3.71875 -7.28125 C 4.75 -7.28125 5.515625 -7.015625 6.015625 -6.484375 C 6.523438 -5.953125 6.78125 -5.144531 6.78125 -4.0625 Z M 6.78125 -4.0625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-17">
+<path style="stroke:none;" d="M 7.140625 -4.296875 L 7.140625 0 L 5.96875 0 L 5.96875 -4.25 C 5.96875 -4.925781 5.835938 -5.429688 5.578125 -5.765625 C 5.316406 -6.097656 4.921875 -6.265625 4.390625 -6.265625 C 3.765625 -6.265625 3.269531 -6.0625 2.90625 -5.65625 C 2.539062 -5.257812 2.359375 -4.710938 2.359375 -4.015625 L 2.359375 0 L 1.1875 0 L 1.1875 -7.109375 L 2.359375 -7.109375 L 2.359375 -6 C 2.640625 -6.425781 2.96875 -6.742188 3.34375 -6.953125 C 3.71875 -7.171875 4.15625 -7.28125 4.65625 -7.28125 C 5.46875 -7.28125 6.082031 -7.023438 6.5 -6.515625 C 6.925781 -6.015625 7.140625 -5.273438 7.140625 -4.296875 Z M 7.140625 -4.296875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-18">
+<path style="stroke:none;" d="M 5.90625 -3.640625 C 5.90625 -4.484375 5.726562 -5.132812 5.375 -5.59375 C 5.03125 -6.0625 4.539062 -6.296875 3.90625 -6.296875 C 3.28125 -6.296875 2.789062 -6.0625 2.4375 -5.59375 C 2.09375 -5.132812 1.921875 -4.484375 1.921875 -3.640625 C 1.921875 -2.796875 2.09375 -2.140625 2.4375 -1.671875 C 2.789062 -1.210938 3.28125 -0.984375 3.90625 -0.984375 C 4.539062 -0.984375 5.03125 -1.210938 5.375 -1.671875 C 5.726562 -2.140625 5.90625 -2.796875 5.90625 -3.640625 Z M 7.078125 -0.875 C 7.078125 0.332031 6.804688 1.226562 6.265625 1.8125 C 5.722656 2.40625 4.898438 2.703125 3.796875 2.703125 C 3.390625 2.703125 3.003906 2.671875 2.640625 2.609375 C 2.273438 2.546875 1.921875 2.453125 1.578125 2.328125 L 1.578125 1.1875 C 1.921875 1.375 2.257812 1.507812 2.59375 1.59375 C 2.925781 1.6875 3.265625 1.734375 3.609375 1.734375 C 4.378906 1.734375 4.953125 1.535156 5.328125 1.140625 C 5.710938 0.742188 5.90625 0.140625 5.90625 -0.671875 L 5.90625 -1.25 C 5.664062 -0.832031 5.351562 -0.519531 4.96875 -0.3125 C 4.59375 -0.101562 4.144531 0 3.625 0 C 2.75 0 2.046875 -0.332031 1.515625 -1 C 0.984375 -1.664062 0.71875 -2.546875 0.71875 -3.640625 C 0.71875 -4.734375 0.984375 -5.613281 1.515625 -6.28125 C 2.046875 -6.945312 2.75 -7.28125 3.625 -7.28125 C 4.144531 -7.28125 4.59375 -7.175781 4.96875 -6.96875 C 5.351562 -6.757812 5.664062 -6.445312 5.90625 -6.03125 L 5.90625 -7.109375 L 7.078125 -7.109375 L 7.078125 -0.875 Z M 7.078125 -0.875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-19">
+<path style="stroke:none;" d="M 7.3125 -3.84375 L 7.3125 -3.28125 L 1.9375 -3.28125 C 1.988281 -2.46875 2.226562 -1.851562 2.65625 -1.4375 C 3.09375 -1.019531 3.695312 -0.8125 4.46875 -0.8125 C 4.914062 -0.8125 5.347656 -0.863281 5.765625 -0.96875 C 6.191406 -1.082031 6.613281 -1.25 7.03125 -1.46875 L 7.03125 -0.359375 C 6.613281 -0.179688 6.179688 -0.046875 5.734375 0.046875 C 5.296875 0.140625 4.851562 0.1875 4.40625 0.1875 C 3.269531 0.1875 2.367188 -0.140625 1.703125 -0.796875 C 1.046875 -1.460938 0.71875 -2.359375 0.71875 -3.484375 C 0.71875 -4.648438 1.03125 -5.570312 1.65625 -6.25 C 2.289062 -6.9375 3.140625 -7.28125 4.203125 -7.28125 C 5.160156 -7.28125 5.914062 -6.972656 6.46875 -6.359375 C 7.03125 -5.742188 7.3125 -4.90625 7.3125 -3.84375 Z M 6.140625 -4.1875 C 6.128906 -4.820312 5.945312 -5.332031 5.59375 -5.71875 C 5.25 -6.101562 4.789062 -6.296875 4.21875 -6.296875 C 3.5625 -6.296875 3.035156 -6.109375 2.640625 -5.734375 C 2.253906 -5.367188 2.03125 -4.851562 1.96875 -4.1875 L 6.140625 -4.1875 Z M 6.140625 -4.1875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-20">
+<path style="stroke:none;" d="M 5.75 -6.90625 L 5.75 -5.796875 C 5.425781 -5.960938 5.085938 -6.085938 4.734375 -6.171875 C 4.378906 -6.253906 4.007812 -6.296875 3.625 -6.296875 C 3.039062 -6.296875 2.601562 -6.207031 2.3125 -6.03125 C 2.03125 -5.851562 1.890625 -5.585938 1.890625 -5.234375 C 1.890625 -4.960938 1.988281 -4.75 2.1875 -4.59375 C 2.394531 -4.445312 2.816406 -4.300781 3.453125 -4.15625 L 3.84375 -4.0625 C 4.675781 -3.882812 5.265625 -3.632812 5.609375 -3.3125 C 5.960938 -2.988281 6.140625 -2.539062 6.140625 -1.96875 C 6.140625 -1.300781 5.878906 -0.773438 5.359375 -0.390625 C 4.835938 -0.00390625 4.117188 0.1875 3.203125 0.1875 C 2.816406 0.1875 2.414062 0.148438 2 0.078125 C 1.59375 0.00390625 1.160156 -0.109375 0.703125 -0.265625 L 0.703125 -1.46875 C 1.140625 -1.238281 1.566406 -1.066406 1.984375 -0.953125 C 2.398438 -0.847656 2.8125 -0.796875 3.21875 -0.796875 C 3.769531 -0.796875 4.191406 -0.890625 4.484375 -1.078125 C 4.785156 -1.265625 4.9375 -1.53125 4.9375 -1.875 C 4.9375 -2.1875 4.828125 -2.425781 4.609375 -2.59375 C 4.398438 -2.769531 3.9375 -2.9375 3.21875 -3.09375 L 2.8125 -3.1875 C 2.082031 -3.34375 1.554688 -3.578125 1.234375 -3.890625 C 0.910156 -4.203125 0.75 -4.632812 0.75 -5.1875 C 0.75 -5.851562 0.984375 -6.367188 1.453125 -6.734375 C 1.929688 -7.097656 2.609375 -7.28125 3.484375 -7.28125 C 3.910156 -7.28125 4.316406 -7.25 4.703125 -7.1875 C 5.085938 -7.125 5.4375 -7.03125 5.75 -6.90625 Z M 5.75 -6.90625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-21">
+<path style="stroke:none;" d="M 2.359375 -1.0625 L 2.359375 2.703125 L 1.1875 2.703125 L 1.1875 -7.109375 L 2.359375 -7.109375 L 2.359375 -6.03125 C 2.597656 -6.457031 2.90625 -6.769531 3.28125 -6.96875 C 3.65625 -7.175781 4.101562 -7.28125 4.625 -7.28125 C 5.488281 -7.28125 6.191406 -6.9375 6.734375 -6.25 C 7.273438 -5.5625 7.546875 -4.660156 7.546875 -3.546875 C 7.546875 -2.429688 7.273438 -1.53125 6.734375 -0.84375 C 6.191406 -0.15625 5.488281 0.1875 4.625 0.1875 C 4.101562 0.1875 3.65625 0.0820312 3.28125 -0.125 C 2.90625 -0.332031 2.597656 -0.644531 2.359375 -1.0625 Z M 6.328125 -3.546875 C 6.328125 -4.410156 6.148438 -5.082031 5.796875 -5.5625 C 5.441406 -6.050781 4.957031 -6.296875 4.34375 -6.296875 C 3.726562 -6.296875 3.242188 -6.050781 2.890625 -5.5625 C 2.535156 -5.082031 2.359375 -4.410156 2.359375 -3.546875 C 2.359375 -2.691406 2.535156 -2.019531 2.890625 -1.53125 C 3.242188 -1.039062 3.726562 -0.796875 4.34375 -0.796875 C 4.957031 -0.796875 5.441406 -1.039062 5.796875 -1.53125 C 6.148438 -2.019531 6.328125 -2.691406 6.328125 -3.546875 Z M 6.328125 -3.546875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-22">
+<path style="stroke:none;" d="M 6.34375 -6.84375 L 6.34375 -5.75 C 6.007812 -5.925781 5.675781 -6.0625 5.34375 -6.15625 C 5.007812 -6.25 4.675781 -6.296875 4.34375 -6.296875 C 3.582031 -6.296875 2.992188 -6.050781 2.578125 -5.5625 C 2.160156 -5.082031 1.953125 -4.410156 1.953125 -3.546875 C 1.953125 -2.679688 2.160156 -2.007812 2.578125 -1.53125 C 2.992188 -1.050781 3.582031 -0.8125 4.34375 -0.8125 C 4.675781 -0.8125 5.007812 -0.851562 5.34375 -0.9375 C 5.675781 -1.03125 6.007812 -1.171875 6.34375 -1.359375 L 6.34375 -0.265625 C 6.019531 -0.117188 5.679688 -0.0078125 5.328125 0.0625 C 4.984375 0.144531 4.613281 0.1875 4.21875 0.1875 C 3.144531 0.1875 2.289062 -0.144531 1.65625 -0.8125 C 1.03125 -1.488281 0.71875 -2.398438 0.71875 -3.546875 C 0.71875 -4.703125 1.035156 -5.613281 1.671875 -6.28125 C 2.304688 -6.945312 3.179688 -7.28125 4.296875 -7.28125 C 4.648438 -7.28125 5 -7.242188 5.34375 -7.171875 C 5.6875 -7.097656 6.019531 -6.988281 6.34375 -6.84375 Z M 6.34375 -6.84375 "/>
+</symbol>
+</g>
+</defs>
+<g id="surface0">
+<rect x="0" y="0" width="541" height="418" style="fill:rgb(100%,100%,100%);fill-opacity:1;stroke:none;"/>
+<path style="fill-rule:evenodd;fill:rgb(84.705883%,89.803922%,89.803922%);fill-opacity:1;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 19.1 3.1 L 31.15 3.1 L 31.15 7.1 L 19.1 7.1 Z M 19.1 3.1 " transform="matrix(20,0,0,20,-300,-61)"/>
+<path style="fill-rule:evenodd;fill:rgb(32.549021%,66.274512%,100%);fill-opacity:1;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 19 11.95 L 31.15 11.95 L 31.15 15.85 L 19 15.85 Z M 19 11.95 " transform="matrix(20,0,0,20,-300,-61)"/>
+<path style="fill:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:1,1;stroke-miterlimit:10;" d="M 25.125 7.1 L 25.080078 11.463281 " transform="matrix(20,0,0,20,-300,-61)"/>
+<path style="fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 25.076172 11.838281 L 24.83125 11.335742 L 25.080078 11.463281 L 25.33125 11.34082 L 25.076172 11.838281 Z M 25.076172 11.838281 " transform="matrix(20,0,0,20,-300,-61)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-1" x="150.917969" y="41"/>
+  <use xlink:href="#glyph0-2" x="158.652344" y="41"/>
+  <use xlink:href="#glyph0-3" x="174.355469" y="41"/>
+  <use xlink:href="#glyph0-4" x="187.792969" y="41"/>
+  <use xlink:href="#glyph0-5" x="198.574219" y="41"/>
+  <use xlink:href="#glyph0-4" x="213.808594" y="41"/>
+  <use xlink:href="#glyph0-6" x="224.589844" y="41"/>
+  <use xlink:href="#glyph0-3" x="240.644531" y="41"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-1" x="146.714844" y="217"/>
+  <use xlink:href="#glyph0-2" x="154.449219" y="217"/>
+  <use xlink:href="#glyph0-7" x="170.152344" y="217"/>
+  <use xlink:href="#glyph0-8" x="179.507812" y="217"/>
+  <use xlink:href="#glyph0-3" x="200.347656" y="217"/>
+  <use xlink:href="#glyph0-9" x="213.785156" y="217"/>
+  <use xlink:href="#glyph0-5" x="229.9375" y="217"/>
+  <use xlink:href="#glyph0-10" x="245.171875" y="217"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="211" y="136"/>
+  <use xlink:href="#glyph1-2" x="221.742188" y="136"/>
+  <use xlink:href="#glyph1-1" x="226.449219" y="136"/>
+  <use xlink:href="#glyph1-3" x="237.191406" y="136"/>
+</g>
+<path style="fill-rule:evenodd;fill:rgb(95.686275%,27.058825%,27.058825%);fill-opacity:1;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 15.05 20 L 22.85 20 L 22.85 23.9 L 15.05 23.9 Z M 15.05 20 " transform="matrix(20,0,0,20,-300,-61)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-11" x="40.835938" y="378"/>
+  <use xlink:href="#glyph0-12" x="56.988281" y="378"/>
+  <use xlink:href="#glyph0-13" x="70.113281" y="378"/>
+  <use xlink:href="#glyph0-14" x="85.40625" y="378"/>
+  <use xlink:href="#glyph0-15" x="101.460938" y="378"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph2-1" x="43" y="403"/>
+  <use xlink:href="#glyph2-2" x="48" y="403"/>
+  <use xlink:href="#glyph2-3" x="52.511719" y="403"/>
+  <use xlink:href="#glyph2-4" x="60.34375" y="403"/>
+  <use xlink:href="#glyph2-5" x="65.597656" y="403"/>
+  <use xlink:href="#glyph2-6" x="69.660156" y="403"/>
+  <use xlink:href="#glyph2-7" x="75.792969" y="403"/>
+  <use xlink:href="#glyph2-8" x="84.542969" y="403"/>
+  <use xlink:href="#glyph2-9" x="94.40625" y="403"/>
+  <use xlink:href="#glyph2-10" x="102.53125" y="403"/>
+  <use xlink:href="#glyph2-11" x="107.140625" y="403"/>
+  <use xlink:href="#glyph2-12" x="115.285156" y="403"/>
+</g>
+<path style="fill-rule:evenodd;fill:rgb(95.686275%,27.058825%,27.058825%);fill-opacity:1;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 27.005078 19.980078 L 34.805078 19.980078 L 34.805078 23.880078 L 27.005078 23.880078 Z M 27.005078 19.980078 " transform="matrix(20,0,0,20,-300,-61)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-11" x="279.9375" y="377.601563"/>
+  <use xlink:href="#glyph0-12" x="296.089844" y="377.601563"/>
+  <use xlink:href="#glyph0-13" x="309.214844" y="377.601563"/>
+  <use xlink:href="#glyph0-14" x="324.507813" y="377.601563"/>
+  <use xlink:href="#glyph0-15" x="340.5625" y="377.601563"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph2-1" x="286" y="401"/>
+  <use xlink:href="#glyph2-2" x="291" y="401"/>
+  <use xlink:href="#glyph2-3" x="295.511719" y="401"/>
+  <use xlink:href="#glyph2-4" x="303.34375" y="401"/>
+  <use xlink:href="#glyph2-5" x="308.597656" y="401"/>
+  <use xlink:href="#glyph2-7" x="312.660156" y="401"/>
+  <use xlink:href="#glyph2-13" x="321.410156" y="401"/>
+  <use xlink:href="#glyph2-14" x="331.332031" y="401"/>
+  <use xlink:href="#glyph2-10" x="340.082031" y="401"/>
+  <use xlink:href="#glyph2-11" x="344.691406" y="401"/>
+  <use xlink:href="#glyph2-12" x="352.835937" y="401"/>
+</g>
+<path style="fill:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 25.075 15.85 L 19.35293 19.726953 " transform="matrix(20,0,0,20,-300,-61)"/>
+<path style="fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 19.042578 19.937305 L 19.316211 19.449805 L 19.35293 19.726953 L 19.59668 19.863867 L 19.042578 19.937305 Z M 19.042578 19.937305 " transform="matrix(20,0,0,20,-300,-61)"/>
+<path style="fill:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 25.075 15.85 L 30.507812 19.698633 " transform="matrix(20,0,0,20,-300,-61)"/>
+<path style="fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 30.813672 19.91543 L 30.261328 19.830273 L 30.507812 19.698633 L 30.550195 19.422266 L 30.813672 19.91543 Z M 30.813672 19.91543 " transform="matrix(20,0,0,20,-300,-61)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph2-15" x="271" y="287"/>
+  <use xlink:href="#glyph2-16" x="283.460938" y="287"/>
+  <use xlink:href="#glyph2-17" x="291.3125" y="287"/>
+  <use xlink:href="#glyph2-16" x="299.417969" y="287"/>
+  <use xlink:href="#glyph2-18" x="307.269531" y="287"/>
+  <use xlink:href="#glyph2-19" x="315.394531" y="287"/>
+  <use xlink:href="#glyph2-20" x="323.265625" y="287"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph2-21" x="271" y="303"/>
+  <use xlink:href="#glyph2-4" x="279.125" y="303"/>
+  <use xlink:href="#glyph2-3" x="284.378906" y="303"/>
+  <use xlink:href="#glyph2-22" x="292.210938" y="303"/>
+  <use xlink:href="#glyph2-19" x="299.242188" y="303"/>
+  <use xlink:href="#glyph2-20" x="307.113281" y="303"/>
+  <use xlink:href="#glyph2-20" x="313.773438" y="303"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph2-15" x="79.101562" y="286.5"/>
+  <use xlink:href="#glyph2-16" x="91.5625" y="286.5"/>
+  <use xlink:href="#glyph2-17" x="99.414062" y="286.5"/>
+  <use xlink:href="#glyph2-16" x="107.519531" y="286.5"/>
+  <use xlink:href="#glyph2-18" x="115.371094" y="286.5"/>
+  <use xlink:href="#glyph2-19" x="123.496094" y="286.5"/>
+  <use xlink:href="#glyph2-20" x="131.367188" y="286.5"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph2-21" x="79.101562" y="302.5"/>
+  <use xlink:href="#glyph2-4" x="87.226562" y="302.5"/>
+  <use xlink:href="#glyph2-3" x="92.480469" y="302.5"/>
+  <use xlink:href="#glyph2-22" x="100.3125" y="302.5"/>
+  <use xlink:href="#glyph2-19" x="107.34375" y="302.5"/>
+  <use xlink:href="#glyph2-20" x="115.214844" y="302.5"/>
+  <use xlink:href="#glyph2-20" x="121.875" y="302.5"/>
+</g>
+<path style="fill-rule:evenodd;fill:rgb(23.529412%,87.058824%,23.137255%);fill-opacity:1;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 34.95 11.9 L 42 11.9 L 42 15.85 L 34.95 15.85 Z M 34.95 11.9 " transform="matrix(20,0,0,20,-300,-61)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-1" x="457.78125" y="216.5"/>
+  <use xlink:href="#glyph0-2" x="465.515625" y="216.5"/>
+</g>
+<path style="fill:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 31.636719 13.896875 L 34.463281 13.878125 " transform="matrix(20,0,0,20,-300,-61)"/>
+<path style="fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 31.261719 13.899219 L 31.760156 13.645898 L 31.636719 13.896875 L 31.763477 14.145898 L 31.261719 13.899219 Z M 31.261719 13.899219 " transform="matrix(20,0,0,20,-300,-61)"/>
+<path style="fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 34.838281 13.875781 L 34.339844 14.129102 L 34.463281 13.878125 L 34.336523 13.629102 L 34.838281 13.875781 Z M 34.838281 13.875781 " transform="matrix(20,0,0,20,-300,-61)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-4" x="351" y="202"/>
+  <use xlink:href="#glyph1-5" x="356" y="202"/>
+  <use xlink:href="#glyph1-6" x="366.195312" y="202"/>
+</g>
+</g>
+</svg>
index 927ca16f5b8caf3a833f51d08e32a7126103c949..1c890bc6a3d1cbd7726b2e3a94d04cd4a1125bc1 100644 (file)
@@ -11,31 +11,47 @@ below will hopefully answer all your questions. If you have any corrections or
 suggestions please let us know!
 </p>
 
+<p>
+Because version 4.0 is quite new, we still have the old documentation for 3.ε
+online for a few weeks. You can chose which version you want by clicking on the
+boxes right next to the links.
+</p>
+
 <div class="docs">
 <h2>For users</h2>
 
 <p style="font-size: 100%">
-<a href="/docs/userguide.html"><strong>User’s Guide</strong></a><br>
+<a href="/docs/userguide.html"><strong>User’s Guide</strong></a>
+<span class="docversion"><a href="/docs/4.0/userguide.html">4.0</a></span>
+<span class="docversion"><a href="/docs/3.e/userguide.html">3.ε</a></span><br>
 Introduction and reference. Read this one.
 </p>
 
 <p>
-<a href="/docs/multi-monitor.html"><strong>Multi-monitor</strong></a><br>
-Interesting for users of the nVidia binary driver.
+<a href="/docs/multi-monitor.html"><strong>Multi-monitor</strong></a>
+<span class="docversion"><a href="/docs/4.0/multi-monitor.html">4.0</a></span>
+<span class="docversion"><a href="/docs/3.e/multi-monitor.html">3.ε</a></span><br>
+Interesting for users of the nVidia driver.
 </p>
 
 <p>
-<a href="/docs/debugging.html"><strong>Debugging i3</strong></a><br>
+<a href="/docs/debugging.html"><strong>Debugging i3</strong></a>
+<span class="docversion"><a href="/docs/4.0/debugging.html">4.0</a></span>
+<span class="docversion"><a href="/docs/3.e/debugging.html">3.ε</a></span><br>
 Explains you how to enable the i3 logfile.
 </p>
 
 <p>
-<a href="/docs/wsbar.html"><strong>External workspace bars</strong></a><br>
+<a href="/docs/wsbar.html"><strong>External workspace bars</strong></a>
+<span class="docversion"><a href="/docs/4.0/wsbar.html">4.0</a></span>
+<span class="docversion"><a href="/docs/3.e/wsbar.html">3.ε</a></span><br>
 About bar programs such as i3bar or dzen2.
 </p>
 
 <p>
-<a href="/docs/refcard.pdf"><strong>i3 reference card (PDF)</strong></a><br>
+<a href="/docs/refcard.pdf"><strong>i3 reference card (PDF)</strong></a>
+<span class="docversion"><a href="/docs/4.0/refcard.pdf">4.0</a></span>
+<span class="docversion"><a href="/docs/3.e/refcard.pdf">3.ε</a></span><br>
 Might be useful to memorize i3’s shortcuts.
 </p>
 </div>
@@ -49,17 +65,23 @@ Tells you how to check out our git repository.
 </p>
 
 <p>
-<a href="/docs/hacking-howto.html"><strong>Hacking Howto</strong></a><br>
+<a href="/docs/hacking-howto.html"><strong>Hacking Howto</strong></a>
+<span class="docversion"><a href="/docs/4.0/hacking-howto.html">4.0</a></span>
+<span class="docversion"><a href="/docs/3.e/hacking-howto.html">3.ε</a></span><br>
 Helps you if you want to get into i3’s source code.
 </p>
 
 <p>
-<a href="/docs/debugging.html"><strong>Debugging i3</strong></a><br>
+<a href="/docs/debugging.html"><strong>Debugging i3</strong></a>
+<span class="docversion"><a href="/docs/4.0/debugging.html">4.0</a></span>
+<span class="docversion"><a href="/docs/3.e/debugging.html">3.ε</a></span><br>
 Explains you how to enable core dumps.
 </p>
 
 <p>
-<a href="/docs/ipc.html"><strong>IPC documentation</strong></a><br>
+<a href="/docs/ipc.html"><strong>IPC documentation</strong></a>
+<span class="docversion"><a href="/docs/4.0/ipc.html">4.0</a></span>
+<span class="docversion"><a href="/docs/3.e/ipc.html">3.ε</a></span><br>
 Explains how i3’s Inter Process Communication interface works. Read this if you
 want to talk to i3 within your own scripts or programs.
 </p>