+++ /dev/null
-blog = controllers.blog
-blog.enabled = True
-site.url = "http://i3wm.org/"
-blog.path = "/blog"
-blog.name = "i3 - improved tiling wm - blog"
-blog.description = "News about the i3 window manager"
-blog.timezone = "Europe/Berlin"
-blog.posts_per_page = 5
-blog.disqus.enabled = False
--- /dev/null
+name: i3
+markdown: redcarpet
+pygments: true
+++ /dev/null
-import markdown
-import logging
-
-config = {
- 'name': "Markdown",
- 'description': "Renders markdown formatted text to HTML",
- 'aliases': ['markdown']
- }
-
-
-#Markdown logging is noisy, pot it down:
-logging.getLogger("MARKDOWN").setLevel(logging.ERROR)
-
-
-def run(content):
- return markdown.markdown(content)
+++ /dev/null
-import docutils.core
-
-config = {
- 'name': "reStructuredText",
- 'description': "Renders reStructuredText formatted text to HTML",
- 'aliases': ['rst']
- }
-
-
-def run(content):
- return docutils.core.publish_parts(content, writer_name='html')['html_body']
+++ /dev/null
-import re
-import os
-
-import pygments
-from pygments import formatters, util, lexers
-import blogofile_bf as bf
-
-config = {"name": "Syntax Highlighter",
- "description": "Highlights blocks of code based on syntax",
- "author": "Ryan McGuire",
- "css_dir": "/css",
- "preload_styles": []}
-
-
-def init():
- #This filter normally only loads pygments styles when needed.
- #This will force a particular style to get loaded at startup.
- for style in bf.config.filters.syntax_highlight.preload_styles:
- css_class = "pygments_{0}".format(style)
- formatter = pygments.formatters.HtmlFormatter(
- linenos=False, cssclass=css_class, style=style)
- write_pygments_css(style, formatter)
-
-
-example = """
-
-This is normal text.
-
-The following is a python code block:
-
-$$code(lang=python)
-import this
-
-prices = {'apple' : 0.50, #Prices of fruit
- 'orange' : 0.65,
- 'pear' : 0.90}
-
-def print_prices():
- for fruit, price in prices.items():
- print "An %s costs %s" % (fruit, price)
-$$/code
-
-This is a ruby code block:
-
-$$code(lang=ruby)
-class Person
- attr_reader :name, :age
- def initialize(name, age)
- @name, @age = name, age
- end
- def <=>(person) # Comparison operator for sorting
- @age <=> person.age
- end
- def to_s
- "#@name (#@age)"
- end
-end
-
-group = [
- Person.new("Bob", 33),
- Person.new("Chris", 16),
- Person.new("Ash", 23)
-]
-
-puts group.sort.reverse
-$$/code
-
-This is normal text
-"""
-
-css_files_written = set()
-
-code_block_re = re.compile(
- r"(?:^|\s)" # $$code Must start as a new word
- r"\$\$code" # $$code is the start of the block
- r"(?P<args>\([^\r\n]*\))?" # optional arguments are passed in brackets
- r"[^\r\n]*\r?\n" # ignore everything else on the 1st line
- r"(?P<code>.*?)\s\$\$/code" # code block continues until $$/code
- , re.DOTALL)
-
-argument_re = re.compile(
- r"[ ]*" # eat spaces at the beginning
- "(?P<arg>" # start of argument
- ".*?" # the name of the argument
- "=" # the assignment
- r"""(?:(?:[^"']*?)""" # a non-quoted value
- r"""|(?:"[^"]*")""" # or, a double-quoted value
- r"""|(?:'[^']*')))""" # or, a single-quoted value
- "[ ]*" # eat spaces at the end
- "[,\r\n]" # ends in a comma or newline
- )
-
-
-def highlight_code(code, language, formatter):
- try:
- lexer = pygments.lexers.get_lexer_by_name(language)
- except pygments.util.ClassNotFound:
- lexer = pygments.lexers.get_lexer_by_name("text")
- #Highlight with pygments and surround by blank lines
- #(blank lines required for markdown syntax)
- highlighted = "\n\n{0}\n\n".format(
- pygments.highlight(code, lexer, formatter))
- return highlighted
-
-
-def parse_args(args):
- #Make sure the args are newline terminated (req'd by regex)
- opts = {}
- if args is None:
- return opts
- args = args.lstrip("(").rstrip(")")
- if args[-1] != "\n":
- args = args+"\n"
- for m in argument_re.finditer(args):
- arg = m.group('arg').split('=')
- opts[arg[0]] = arg[1]
- return opts
-
-
-def write_pygments_css(style, formatter,
- location=bf.config.filters.syntax_highlight.css_dir):
- path = bf.util.path_join("_site", bf.util.fs_site_path_helper(location))
- bf.util.mkdir(path)
- css_file = "pygments_{0}.css".format(style)
- css_path = os.path.join(path, css_file)
- css_site_path = css_path.replace("_site", "")
- if css_site_path in css_files_written:
- return #already written, no need to overwrite it.
- f = open(css_path, "w")
- css_class = ".pygments_{0}".format(style)
- f.write(formatter.get_style_defs(css_class))
- f.close()
- css_files_written.add(css_site_path)
-
-
-def run(src):
- substitutions = {}
- for m in code_block_re.finditer(src):
- args = parse_args(m.group('args'))
- #Make default args
- if args.has_key('lang'):
- lang = args['lang']
- elif args.has_key('language'):
- lang = args['language']
- else:
- lang = 'text'
- try:
- if args.has_key('linenums'):
- linenums = args['linenums']
- elif args.has_key("linenos"):
- linenums = args['linenos']
- if linenums.lower().strip() == "true":
- linenums = True
- else:
- linenums = False
- except:
- linenums = False
- try:
- style = args['style']
- except KeyError:
- style = bf.config.filters.syntax_highlight.style
- try:
- css_class = args['cssclass']
- except KeyError:
- css_class = "pygments_{0}".format(style)
- formatter = pygments.formatters.HtmlFormatter(
- linenos=linenums, cssclass=css_class, style=style)
- write_pygments_css(style, formatter)
- substitutions[m.group()] = highlight_code(
- m.group('code'), lang, formatter)
- if len(substitutions) > 0:
- p = re.compile('|'.join(map(re.escape, substitutions)))
- src = p.sub(lambda x: substitutions[x.group(0)], src)
- return src
- else:
- return src
+++ /dev/null
-import textile
-
-config = {
- 'name': "Textile",
- 'description': "Renders textile formatted text to HTML",
- 'aliases': ['textile']
- }
-
-
-def run(content):
- return textile.textile(content)
--- /dev/null
+<div style="display: inline; min-width: 100px">
+<a title="i3 in {{include.title}}" href="{{include.link}}"><img src="{{include.img}}" width="75" height="{{include.height}}" alt="{{include.title}}" title="i3 in {{include.title}}"></a>
+</div>
--- /dev/null
+{% if page.group == include.name %}
+<li><a style="border-bottom: 2px solid #fff" href="{{include.url}}">{{include.name}}</a></li>
+{% else %}
+<li><a href="{{include.url}}">{{include.name}}</a></li>
+{% endif %}
--- /dev/null
+
+ <div class="shot">
+ <a href="{{include.link}}"><img src="{{include.thumb}}" width="240" alt="(Screenshot) {{include.description}}"></a><br>
+ <span>{{include.description}}</span>
+ </div>
+
--- /dev/null
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta http-equiv="content-type" content="text/html; charset=utf-8">
+ <title>i3 - improved tiling wm</title>
+ <link rel="icon" type="image/png" href="/favicon.png">
+ <link rel="stylesheet" href="/css/style.css" type="text/css" media="screen">
+ <link rel="publisher" href="https://plus.google.com/113555191861605339299">
+ <meta name="description" content="i3 is a dynamic tiling window manager with clean, readable and documented code, featuring extended Xinerama support, usage of libxcb instead of xlib and several improvements over wmii">
+ <meta name="keywords" content="i3, window, manager, tiling, keyboard, wmii, x11, xcb, xinerama, utf8">
+ <meta name="author" content="i3 developers">
+{% if page.javascript != null %}
+ <script type="text/javascript">
+function loadjs() {
+{% if page.require_jquery == null %}
+ var element = document.createElement("script");
+ element.src = "/js/{{page.javascript}}";
+ document.body.appendChild(element);
+{% else %}
+ var jquery_done = false,
+ script_done = false;
+ var head = document.getElementsByTagName('head')[0];
+
+ var element = document.createElement("script");
+ element.src = "/js/jquery.1.6.2.min.js";
+ element.onload = element.onreadystatechange = function() {
+ if (!jquery_done && (!this.readyState || this.readyState === 'loaded' || this.readyState === 'complete')) {
+ jquery_done = true;
+ if (script_done) {
+ {{page.js_callback}}
+ }
+ element.onload = element.onreadystatechange = null;
+ }
+ };
+ document.body.appendChild(element);
+
+ var script = document.createElement("script");
+ script.src = "/js/{{page.javascript}}";
+ script.onload = script.onreadystatechange = function() {
+ if (!script_done && (!this.readyState || this.readyState === 'loaded' || this.readyState === 'complete')) {
+ script_done = true;
+ if (jquery_done) {
+ {{page.js_callback}}
+ }
+ script.onload = script.onreadystatechange = null;
+ }
+ };
+ document.body.appendChild(script);
+
+{% endif %}
+}
+
+if (window.addEventListener)
+ window.addEventListener("load", loadjs, false);
+else if (window.attachEvent)
+ window.attachEvent("onload", loadjs);
+else window.onload = loadjs;
+ </script>
+{% endif %}
+ </head>
+ <body>
+ <div id="main">
+ <a href="/"><h1 id="title">i3 - improved tiling WM</h1></a>
+ <ul id="nav">
+{% include menulink.html name="Docs" url="/docs" %}
+{% include menulink.html name="Screens" url="/screenshots" %}
+{% include menulink.html name="FAQ" url="http://faq.i3wm.org/" %}
+{% include menulink.html name="Contact" url="/contact" %}
+{% include menulink.html name="Bugs" url="http://bugs.i3wm.org/" %}
+ </ul>
+ <br style="clear: both">
+ {{ content }}
+ </div>
+
+ <div id="footer" lang="de">
+ © 2009-2014 Michael Stapelberg, <a href="/impress.html">Impressum</a>
+ </div>
+ </body>
+</html>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?><% from datetime import datetime %>
-<feed
- xmlns="http://www.w3.org/2005/Atom"
- xmlns:thr="http://purl.org/syndication/thread/1.0"
- xml:lang="en"
- >
- <title type="text">${bf.config.blog.name}</title>
- <subtitle type="text">${bf.config.blog.description}</subtitle>
-
- <updated>${datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%SZ")}</updated>
- <generator uri="http://blogofile.com/">Blogofile</generator>
-
- <link rel="alternate" type="text/html" href="${bf.config.blog.url}" />
- <id>${bf.config.blog.url}/atom.xml</id>
- <link rel="self" type="application/atom+xml" href="${bf.config.blog.url}/feed/atom/" />
-% for post in posts[:10]:
- <entry>
- <author>
- <name>${post.author}</name>
- <uri>${bf.config.blog.url}</uri>
- </author>
- <title type="html"><![CDATA[${post.title}]]></title>
- <link rel="alternate" type="text/html" href="${post.permalink}" />
- <id>${post.permalink}</id>
- <updated>${post.updated.strftime("%Y-%m-%dT%H:%M:%SZ")}</updated>
- <published>${post.date.strftime("%Y-%m-%dT%H:%M:%SZ")}</published>
-% for category in post.categories:
- <category scheme="${bf.config.blog.url}" term="${category}" />
-% endfor
- <summary type="html"><![CDATA[${post.title}]]></summary>
- <content type="html" xml:base="${post.permalink}"><![CDATA[${post.content}]]></content>
- </entry>
-% endfor
-</feed>
+++ /dev/null
-<%!
- section = "blog"
-%>
-<%inherit file="i3.mako" />
-
-<div id="content">
-% for post in posts:
- <%include file="post.mako" args="post=post" />
- <br>
-% endfor
-% if prev_link:
- <a href="${prev_link}">« Previous Page</a>
-% endif
-% if prev_link and next_link:
- --
-% endif
-% if next_link:
- <a href="${next_link}">Next Page »</a>
-% endif
-
-</div>
+++ /dev/null
-<%!
- require_jquery = False
- javascript = None
- js_callback = ''
-%><!DOCTYPE html>
-<html lang="en">
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8">
- <title>i3 - improved tiling wm</title>
- <link rel="icon" type="image/png" href="/favicon.png">
- <link rel="stylesheet" href="/css/style.css" type="text/css" media="screen">
- <link rel="publisher" href="https://plus.google.com/113555191861605339299">
- <meta name="description" content="i3 is a dynamic tiling window manager with clean, readable and documented code, featuring extended Xinerama support, usage of libxcb instead of xlib and several improvements over wmii">
- <meta name="keywords" content="i3, window, manager, tiling, keyboard, wmii, x11, xcb, xinerama, utf8">
- <meta name="author" content="i3 developers">
-% if self.attr.javascript:
- <script type="text/javascript">
-function loadjs() {
-% if not self.attr.require_jquery:
- var element = document.createElement("script");
- element.src = "/js/${self.attr.javascript}";
- document.body.appendChild(element);
-% else:
- var jquery_done = false,
- script_done = false;
- var head = document.getElementsByTagName('head')[0];
-
- var element = document.createElement("script");
- element.src = "/js/jquery.1.6.2.min.js";
- element.onload = element.onreadystatechange = function() {
- if (!jquery_done && (!this.readyState || this.readyState === 'loaded' || this.readyState === 'complete')) {
- jquery_done = true;
- if (script_done) {
- ${self.attr.js_callback}
- }
- element.onload = element.onreadystatechange = null;
- }
- };
- document.body.appendChild(element);
-
- var script = document.createElement("script");
- script.src = "/js/${self.attr.javascript}";
- script.onload = script.onreadystatechange = function() {
- if (!script_done && (!this.readyState || this.readyState === 'loaded' || this.readyState === 'complete')) {
- script_done = true;
- if (jquery_done) {
- ${self.attr.js_callback}
- }
- script.onload = script.onreadystatechange = null;
- }
- };
- document.body.appendChild(script);
-
-% endif
-}
-
-if (window.addEventListener)
- window.addEventListener("load", loadjs, false);
-else if (window.attachEvent)
- window.attachEvent("onload", loadjs);
-else window.onload = loadjs;
- </script>
-%endif
- </head>
- <body>
- <div id="main">
- <a href="/"><h1 id="title">i3 - improved tiling WM</h1></a>
- <ul id="nav">
-<%
- menu = [
- [ "/docs", "Docs" ],
- [ "/screenshots", "Screens" ],
- [ "http://faq.i3wm.org/", "FAQ" ],
- [ "/contact", "Contact" ],
- [ "http://bugs.i3wm.org/", "Bugs" ]
- ]
-%>
-% for link, title in menu:
- <li><a
-% if self.attr.section == title.lower():
- style="border-bottom: 2px solid #fff"
-% endif
- href="${link}">${title}</a></li>
-% endfor
- </ul>
- <br style="clear: both">
- ${next.body()}
- </div>
-
- <div id="footer" lang="de">
- © 2009-2014 Michael Stapelberg, <a href="/impress.html">Impressum</a>
- </div>
- </body>
-</html>
+++ /dev/null
-<%!
- section = "blog"
-%>
-<%inherit file="i3.mako" />
-<div id="content">
-<%include file="post.mako" args="post=post" />
-</div>
+++ /dev/null
-<%page args="post"/>
-<div class="blog_post">
- <a name="${post.slug}"></a>
- <h2 class="blog_post_title"><a href="${post.permapath()}" rel="bookmark" title="Permanent Link to ${post.title}">${post.date.strftime("%Y-%m-%d")}: ${post.title}</a></h2>
- <div class="post_prose">
- ${self.post_prose(post)}
- </div>
-</div>
-
-<%def name="post_prose(post)">
- ${post.content}
-</%def>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?><% from datetime import datetime %>
-<rss version="2.0"
- xmlns:content="http://purl.org/rss/1.0/modules/content/"
- xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
- xmlns:atom="http://www.w3.org/2005/Atom"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:wfw="http://wellformedweb.org/CommentAPI/"
- >
- <channel>
- <title>${bf.config.blog.name}</title>
- <link>${bf.config.blog.url}</link>
- <description>${bf.config.blog.description}</description>
- <pubDate>${datetime.utcnow().strftime("%a, %d %b %Y %H:%M:%S GMT")}</pubDate>
- <generator>Blogofile</generator>
- <sy:updatePeriod>hourly</sy:updatePeriod>
- <sy:updateFrequency>1</sy:updateFrequency>
-% for post in posts[:10]:
- <item>
- <title>${post.title}</title>
- <link>${post.permalink}</link>
- <pubDate>${post.date.strftime("%a, %d %b %Y %H:%M:%S %Z")}</pubDate>
-% for category in post.categories:
- <category><![CDATA[${category}]]></category>
-% endfor
-% if post.guid:
- <guid>${post.guid}</guid>
-% else:
- <guid isPermaLink="true">${post.permalink}</guid>
-% endif
- <description>${post.title}</description>
- <content:encoded><![CDATA[${post.content}]]></content:encoded>
- </item>
-% endfor
- </channel>
-</rss>
--- /dev/null
+---
+layout: default
+title: Contact
+group: Contact
+---
+<div id="content">
+<h2>Contact</h2>
+
+<p>
+If you have any questions which are not answered by the <a
+href="/docs/">Documentation</a>, please do not hesitate to contact us. The best
+way to reach us is via IRC:
+</p>
+
+<p>
+i3’s IRC channel is <a href="irc://irc.twice-irc.de/i3" title="#i3 on irc.twice-irc.de">
+irc://irc.twice-irc.de/i3</a> (or, #i3 on irc.twice-irc.de, for those without proper URL
+handling setup). Feel free to ask questions, please don’t ask to ask and please
+think before you ask :-).
+</p>
+
+<h3 style="margin-top: 2em">Mailing lists</h3>
+
+<p>
+If you dislike IRC, you can also post questions etc. to our mailing list.<br>
+Subscribe by sending an e-mail to <tt>i3-discuss-subscribe@i3.zekjur.net</tt>.
+You can read old posts in <a
+href="http://infra.in.zekjur.net/archives/i3-discuss/">the i3-discuss
+archives</a>.
+</p>
+
+<p>
+If you want to be notified when a new version of i3 is released, please
+subscribe to the announce mailing list by sending a mail to
+<tt>i3-announce-subscribe@i3.zekjur.net</tt>. You can find the old
+announcements in <a href="http://infra.in.zekjur.net/archives/i3-announce/">the
+i3-announce archives</a>.
+</p>
+
+<h3 style="margin-top: 2em">Package maintainers</h3>
+
+<p>
+<strong>If you are a package maintainer</strong> and have any questions,
+ideas, hints, problems or whatever, please do not hesitate to contact me. I
+will help you out. Just drop me an e-mail at michael AT i3wm DOT org or ask on
+our IRC channel (see above).
+</p>
+
+</div>
+++ /dev/null
-<%!
- section = "contact"
-%>
-<%inherit file="_templates/i3.mako" />
-<div id="content">
-<h2>Contact</h2>
-
-<p>
-If you have any questions which are not answered by the <a
-href="/docs/">Documentation</a>, please do not hesitate to contact us. The best
-way to reach us is via IRC:
-</p>
-
-<p>
-i3’s IRC channel is <a href="irc://irc.twice-irc.de/i3" title="#i3 on irc.twice-irc.de">
-irc://irc.twice-irc.de/i3</a> (or, #i3 on irc.twice-irc.de, for those without proper URL
-handling setup). Feel free to ask questions, please don’t ask to ask and please
-think before you ask :-).
-</p>
-
-<h3 style="margin-top: 2em">Mailing lists</h3>
-
-<p>
-If you dislike IRC, you can also post questions etc. to our mailing list.<br>
-Subscribe by sending an e-mail to <tt>i3-discuss-subscribe@i3.zekjur.net</tt>.
-You can read old posts in <a
-href="http://infra.in.zekjur.net/archives/i3-discuss/">the i3-discuss
-archives</a>.
-</p>
-
-<p>
-If you want to be notified when a new version of i3 is released, please
-subscribe to the announce mailing list by sending a mail to
-<tt>i3-announce-subscribe@i3.zekjur.net</tt>. You can find the old
-announcements in <a href="http://infra.in.zekjur.net/archives/i3-announce/">the
-i3-announce archives</a>.
-</p>
-
-<h3 style="margin-top: 2em">Package maintainers</h3>
-
-<p>
-<strong>If you are a package maintainer</strong> and have any questions,
-ideas, hints, problems or whatever, please do not hesitate to contact me. I
-will help you out. Just drop me an e-mail at michael AT i3wm DOT org or ask on
-our IRC channel (see above).
-</p>
-
-</div>
--- /dev/null
+---
+layout: default
+title: Docs
+group: Docs
+---
+<div id="content">
+<h2>Documentation</h2>
+
+<p>
+One of i3’s goals is good documentation. The documents which you will find
+below will hopefully answer all your questions. If you have any corrections or
+suggestions please let us know!
+</p>
+
+<p style="border-left: 2px solid red; padding-left: 0.5em; margin-left: 0.5em">
+These documents are for i3 version 3.ε. Version 4 was released and we strongly recommend you to upgrade!
+</p>
+
+<div class="docs">
+<h2>For users</h2>
+
+<p style="font-size: 100%">
+<a href="/docs/3.e/userguide.html"><strong>User’s Guide</strong></a><br>
+Introduction and reference. Read this one.
+</p>
+
+<p>
+<a href="/docs/3.e/multi-monitor.html"><strong>Multi-monitor</strong></a><br>
+Interesting for users of the nVidia driver.
+</p>
+
+<p>
+<a href="/docs/3.e/debugging.html"><strong>Debugging i3</strong></a><br>
+Explains you how to enable the i3 logfile.
+</p>
+
+<p>
+<a href="/docs/3.e/wsbar.html"><strong>External workspace bars</strong></a><br>
+About bar programs such as i3bar or dzen2.
+</p>
+
+<p>
+<a href="/docs/3.e/refcard.pdf"><strong>i3 reference card (PDF)</strong></a><br>
+Might be useful to memorize i3’s shortcuts.
+</p>
+</div>
+
+<div class="docs">
+<h2>For developers</h2>
+
+<p>
+<a href="/downloads/#development-version"><strong>Downloads → Development version</strong></a><br>
+Tells you how to check out our git repository.
+</p>
+
+<p>
+<a href="/docs/3.e/hacking-howto.html"><strong>Hacking Howto</strong></a><br>
+Helps you if you want to get into i3’s source code.
+</p>
+
+<p>
+<a href="/docs/3.e/debugging.html"><strong>Debugging i3</strong></a><br>
+Explains you how to enable core dumps.
+</p>
+
+<p>
+<a href="/docs/3.e/ipc.html"><strong>IPC documentation</strong></a><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>
+
+</div>
+
+<br style="clear: both">
+
+</div>
+++ /dev/null
-<%!
- section = "docs"
-%>
-<%inherit file="_templates/i3.mako" />
-<div id="content">
-<h2>Documentation</h2>
-
-<p>
-One of i3’s goals is good documentation. The documents which you will find
-below will hopefully answer all your questions. If you have any corrections or
-suggestions please let us know!
-</p>
-
-<p style="border-left: 2px solid red; padding-left: 0.5em; margin-left: 0.5em">
-These documents are for i3 version 3.ε. Version 4 was released and we strongly recommend you to upgrade!
-</p>
-
-<div class="docs">
-<h2>For users</h2>
-
-<p style="font-size: 100%">
-<a href="/docs/3.e/userguide.html"><strong>User’s Guide</strong></a><br>
-Introduction and reference. Read this one.
-</p>
-
-<p>
-<a href="/docs/3.e/multi-monitor.html"><strong>Multi-monitor</strong></a><br>
-Interesting for users of the nVidia driver.
-</p>
-
-<p>
-<a href="/docs/3.e/debugging.html"><strong>Debugging i3</strong></a><br>
-Explains you how to enable the i3 logfile.
-</p>
-
-<p>
-<a href="/docs/3.e/wsbar.html"><strong>External workspace bars</strong></a><br>
-About bar programs such as i3bar or dzen2.
-</p>
-
-<p>
-<a href="/docs/3.e/refcard.pdf"><strong>i3 reference card (PDF)</strong></a><br>
-Might be useful to memorize i3’s shortcuts.
-</p>
-</div>
-
-<div class="docs">
-<h2>For developers</h2>
-
-<p>
-<a href="/downloads/#development-version"><strong>Downloads → Development version</strong></a><br>
-Tells you how to check out our git repository.
-</p>
-
-<p>
-<a href="/docs/3.e/hacking-howto.html"><strong>Hacking Howto</strong></a><br>
-Helps you if you want to get into i3’s source code.
-</p>
-
-<p>
-<a href="/docs/3.e/debugging.html"><strong>Debugging i3</strong></a><br>
-Explains you how to enable core dumps.
-</p>
-
-<p>
-<a href="/docs/3.e/ipc.html"><strong>IPC documentation</strong></a><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>
-
-</div>
-
-<br style="clear: both">
-
-</div>
--- /dev/null
+---
+layout: default
+title: Docs
+group: Docs
+---
+<div id="content">
+<h2>Documentation for i3 v4.7</h2>
+
+<p>
+One of i3’s goals is good documentation. The documents which you will find
+below will hopefully answer all your questions. If you have any corrections or
+suggestions please let us know!
+</p>
+
+<div class="docs">
+<h2>For users</h2>
+
+<p style="font-size: 100%; background-color: #444; border-radius: 5px; padding: 0.5em; width: 90%">
+<a href="/docs/userguide.html" style="font-size: 125%"><strong>User’s Guide</strong></a><br>
+Introduction and reference. Read this!
+</p>
+
+<p>
+<a href="/docs/multi-monitor.html"><strong>Multi-monitor</strong></a><br>
+Interesting for users of the nVidia driver.
+</p>
+
+<p>
+<a href="/docs/debugging.html"><strong>Debugging i3</strong></a><br>
+Explains you how to enable debug logging.
+</p>
+
+<p>
+<a href="/docs/wsbar.html"><strong>External workspace bars</strong></a><br>
+About bar programs such as i3bar or dzen2.
+</p>
+
+<p>
+<a href="/docs/refcard.html"><strong>i3 reference card</strong></a><br>
+Might be useful to memorize i3’s shortcuts.
+</p>
+</div>
+
+<div class="docs">
+<h2>For developers</h2>
+
+<p style="padding-top: 1em">
+<a href="/docs/hacking-howto.html"><strong>Hacking Howto</strong></a><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>
+Explains you how to enable debug logging.
+</p>
+
+<p>
+<a href="/docs/ipc.html"><strong>Inter process communication (IPC interface)</strong></a><br>
+Read this if you want to talk to i3 within your script.
+</p>
+
+<p>
+<a href="/docs/testsuite.html"><strong>i3 testsuite</strong></a><br>
+Makes you able to read and write i3 testcases.
+</p>
+
+<p>
+<a href="/docs/i3bar-protocol.html"><strong>i3bar protocol</strong></a><br>
+Documents the JSON based protocol which i3bar uses.
+</p>
+
+</div>
+
+<br style="clear: both">
+
+<h2>User-contributed articles</h2>
+
+<div class="ugdocs">
+
+<p>
+<a href="/docs/buildbot.html"><strong>i3 buildbot setup</strong></a> <span class="author">(2012-09, by Michael)</span><br>
+Describes the <a href="http://www.buildbot.net/">buildbot</a> setup i3 uses for
+automatic docs, compilation and debian packages.
+</p>
+
+<p>
+<a href="/docs/user-contributed/lzap-config.html"><strong>Lukáš Zapletal’s i3
+configuration</strong></a> <span class="author">(2012-08, by Lukáš)</span><br>
+A detailed explanation of Lukáš’s configuration of i3 and related tools.
+</p>
+
+<p>
+<a href="/docs/user-contributed/swapping-workspaces.html"><strong>Swapping
+workspaces</strong></a> <span class="author">(2012-09, by Sagar)</span><br>
+Shows how Sagar uses i3’s IPC interface to swap workspaces between two outputs.
+</p>
+
+<p>
+<a href="/docs/user-contributed/conky-i3bar.html"><strong>Using conky with
+i3bar</strong></a> <span class="author">(2012-11, by Gianrico)</span><br>
+Shows how to configure conky to generate JSON input for i3bar (with colors)!
+</p>
+
+<p>
+<a href="/docs/user-contributed/py3status.html"><strong>Enhanced and extensible
+i3bar with py3status</strong></a> <span class="author">(2013-02, by Ultrabug)</span><br>
+Introduces py3status, a wrapper script for i3status which is easily extensible.
+</p>
+
+<p>
+<a href="/docs/tshirts.html"><strong>i3wm T-shirts</strong></a>
+<span class="author">(2013-12, by Stefan)</span><br>
+Where and how to order official i3 T-shirts.
+</p>
+
+
+</div>
+
+</div>
+++ /dev/null
-<%!
- section = "docs"
-%>
-<%inherit file="_templates/i3.mako" />
-<div id="content">
-<h2>Documentation for i3 v4.7</h2>
-
-<p>
-One of i3’s goals is good documentation. The documents which you will find
-below will hopefully answer all your questions. If you have any corrections or
-suggestions please let us know!
-</p>
-
-<div class="docs">
-<h2>For users</h2>
-
-<p style="font-size: 100%; background-color: #444; border-radius: 5px; padding: 0.5em; width: 90%">
-<a href="/docs/userguide.html" style="font-size: 125%"><strong>User’s Guide</strong></a><br>
-Introduction and reference. Read this!
-</p>
-
-<p>
-<a href="/docs/multi-monitor.html"><strong>Multi-monitor</strong></a><br>
-Interesting for users of the nVidia driver.
-</p>
-
-<p>
-<a href="/docs/debugging.html"><strong>Debugging i3</strong></a><br>
-Explains you how to enable debug logging.
-</p>
-
-<p>
-<a href="/docs/wsbar.html"><strong>External workspace bars</strong></a><br>
-About bar programs such as i3bar or dzen2.
-</p>
-
-<p>
-<a href="/docs/refcard.html"><strong>i3 reference card</strong></a><br>
-Might be useful to memorize i3’s shortcuts.
-</p>
-</div>
-
-<div class="docs">
-<h2>For developers</h2>
-
-<p style="padding-top: 1em">
-<a href="/docs/hacking-howto.html"><strong>Hacking Howto</strong></a><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>
-Explains you how to enable debug logging.
-</p>
-
-<p>
-<a href="/docs/ipc.html"><strong>Inter process communication (IPC interface)</strong></a><br>
-Read this if you want to talk to i3 within your script.
-</p>
-
-<p>
-<a href="/docs/testsuite.html"><strong>i3 testsuite</strong></a><br>
-Makes you able to read and write i3 testcases.
-</p>
-
-<p>
-<a href="/docs/i3bar-protocol.html"><strong>i3bar protocol</strong></a><br>
-Documents the JSON based protocol which i3bar uses.
-</p>
-
-</div>
-
-<br style="clear: both">
-
-<h2>User-contributed articles</h2>
-
-<div class="ugdocs">
-
-<p>
-<a href="/docs/buildbot.html"><strong>i3 buildbot setup</strong></a> <span class="author">(2012-09, by Michael)</span><br>
-Describes the <a href="http://www.buildbot.net/">buildbot</a> setup i3 uses for
-automatic docs, compilation and debian packages.
-</p>
-
-<p>
-<a href="/docs/user-contributed/lzap-config.html"><strong>Lukáš Zapletal’s i3
-configuration</strong></a> <span class="author">(2012-08, by Lukáš)</span><br>
-A detailed explanation of Lukáš’s configuration of i3 and related tools.
-</p>
-
-<p>
-<a href="/docs/user-contributed/swapping-workspaces.html"><strong>Swapping
-workspaces</strong></a> <span class="author">(2012-09, by Sagar)</span><br>
-Shows how Sagar uses i3’s IPC interface to swap workspaces between two outputs.
-</p>
-
-<p>
-<a href="/docs/user-contributed/conky-i3bar.html"><strong>Using conky with
-i3bar</strong></a> <span class="author">(2012-11, by Gianrico)</span><br>
-Shows how to configure conky to generate JSON input for i3bar (with colors)!
-</p>
-
-<p>
-<a href="/docs/user-contributed/py3status.html"><strong>Enhanced and extensible
-i3bar with py3status</strong></a> <span class="author">(2013-02, by Ultrabug)</span><br>
-Introduces py3status, a wrapper script for i3status which is easily extensible.
-</p>
-
-<p>
-<a href="/docs/tshirts.html"><strong>i3wm T-shirts</strong></a>
-<span class="author">(2013-12, by Stefan)</span><br>
-Where and how to order official i3 T-shirts.
-</p>
-
-
-</div>
-
-</div>
--- /dev/null
+---
+layout: default
+title: Docs
+group: Docs
+---
+<div id="content">
+<h2>Documentation for i3 v4.8</h2>
+
+<p>
+One of i3’s goals is good documentation. The documents which you will find
+below will hopefully answer all your questions. If you have any corrections or
+suggestions please let us know!
+</p>
+
+<div class="docs">
+<h2>For users</h2>
+
+<p style="font-size: 100%; background-color: #444; border-radius: 5px; padding: 0.5em; width: 90%">
+<a href="/docs/userguide.html" style="font-size: 125%"><strong>User’s Guide</strong></a><br>
+Introduction and reference. Read this!
+</p>
+
+<p>
+<a href="/docs/multi-monitor.html"><strong>Multi-monitor</strong></a><br>
+Interesting for users of the nVidia driver.
+</p>
+
+<p>
+<a href="/docs/debugging.html"><strong>Debugging i3</strong></a><br>
+Explains you how to enable debug logging.
+</p>
+
+<p>
+<a href="/docs/wsbar.html"><strong>External workspace bars</strong></a><br>
+About bar programs such as i3bar or dzen2.
+</p>
+
+<p>
+<a href="/docs/refcard.html"><strong>i3 reference card</strong></a><br>
+Might be useful to memorize i3’s shortcuts.
+</p>
+</div>
+
+<div class="docs">
+<h2>For developers</h2>
+
+<p style="padding-top: 1em">
+<a href="/docs/hacking-howto.html"><strong>Hacking Howto</strong></a><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>
+Explains you how to enable debug logging.
+</p>
+
+<p>
+<a href="/docs/ipc.html"><strong>Inter process communication (IPC interface)</strong></a><br>
+Read this if you want to talk to i3 within your script.
+</p>
+
+<p>
+<a href="/docs/testsuite.html"><strong>i3 testsuite</strong></a><br>
+Makes you able to read and write i3 testcases.
+</p>
+
+<p>
+<a href="/docs/i3bar-protocol.html"><strong>i3bar protocol</strong></a><br>
+Documents the JSON based protocol which i3bar uses.
+</p>
+
+</div>
+
+<br style="clear: both">
+
+<h2>User-contributed articles</h2>
+
+<div class="ugdocs">
+
+<p>
+<a href="/docs/buildbot.html"><strong>i3 buildbot setup</strong></a> <span class="author">(2012-09, by Michael)</span><br>
+Describes the <a href="http://www.buildbot.net/">buildbot</a> setup i3 uses for
+automatic docs, compilation and debian packages.
+</p>
+
+<p>
+<a href="/docs/user-contributed/lzap-config.html"><strong>Lukáš Zapletal’s i3
+configuration</strong></a> <span class="author">(2012-08, by Lukáš)</span><br>
+A detailed explanation of Lukáš’s configuration of i3 and related tools.
+</p>
+
+<p>
+<a href="/docs/user-contributed/swapping-workspaces.html"><strong>Swapping
+workspaces</strong></a> <span class="author">(2012-09, by Sagar)</span><br>
+Shows how Sagar uses i3’s IPC interface to swap workspaces between two outputs.
+</p>
+
+<p>
+<a href="/docs/user-contributed/conky-i3bar.html"><strong>Using conky with
+i3bar</strong></a> <span class="author">(2012-11, by Gianrico)</span><br>
+Shows how to configure conky to generate JSON input for i3bar (with colors)!
+</p>
+
+<p>
+<a href="/docs/user-contributed/py3status.html"><strong>Enhanced and extensible
+i3bar with py3status</strong></a> <span class="author">(2013-02, by Ultrabug)</span><br>
+Introduces py3status, a wrapper script for i3status which is easily extensible.
+</p>
+
+<p>
+<a href="/docs/tshirts.html"><strong>i3wm T-shirts</strong></a>
+<span class="author">(2013-12, by Stefan)</span><br>
+Where and how to order official i3 T-shirts.
+</p>
+
+
+</div>
+
+</div>
+++ /dev/null
-<%!
- section = "docs"
-%>
-<%inherit file="_templates/i3.mako" />
-<div id="content">
-<h2>Documentation for i3 v4.8</h2>
-
-<p>
-One of i3’s goals is good documentation. The documents which you will find
-below will hopefully answer all your questions. If you have any corrections or
-suggestions please let us know!
-</p>
-
-<div class="docs">
-<h2>For users</h2>
-
-<p style="font-size: 100%; background-color: #444; border-radius: 5px; padding: 0.5em; width: 90%">
-<a href="/docs/userguide.html" style="font-size: 125%"><strong>User’s Guide</strong></a><br>
-Introduction and reference. Read this!
-</p>
-
-<p>
-<a href="/docs/multi-monitor.html"><strong>Multi-monitor</strong></a><br>
-Interesting for users of the nVidia driver.
-</p>
-
-<p>
-<a href="/docs/debugging.html"><strong>Debugging i3</strong></a><br>
-Explains you how to enable debug logging.
-</p>
-
-<p>
-<a href="/docs/wsbar.html"><strong>External workspace bars</strong></a><br>
-About bar programs such as i3bar or dzen2.
-</p>
-
-<p>
-<a href="/docs/refcard.html"><strong>i3 reference card</strong></a><br>
-Might be useful to memorize i3’s shortcuts.
-</p>
-</div>
-
-<div class="docs">
-<h2>For developers</h2>
-
-<p style="padding-top: 1em">
-<a href="/docs/hacking-howto.html"><strong>Hacking Howto</strong></a><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>
-Explains you how to enable debug logging.
-</p>
-
-<p>
-<a href="/docs/ipc.html"><strong>Inter process communication (IPC interface)</strong></a><br>
-Read this if you want to talk to i3 within your script.
-</p>
-
-<p>
-<a href="/docs/testsuite.html"><strong>i3 testsuite</strong></a><br>
-Makes you able to read and write i3 testcases.
-</p>
-
-<p>
-<a href="/docs/i3bar-protocol.html"><strong>i3bar protocol</strong></a><br>
-Documents the JSON based protocol which i3bar uses.
-</p>
-
-</div>
-
-<br style="clear: both">
-
-<h2>User-contributed articles</h2>
-
-<div class="ugdocs">
-
-<p>
-<a href="/docs/buildbot.html"><strong>i3 buildbot setup</strong></a> <span class="author">(2012-09, by Michael)</span><br>
-Describes the <a href="http://www.buildbot.net/">buildbot</a> setup i3 uses for
-automatic docs, compilation and debian packages.
-</p>
-
-<p>
-<a href="/docs/user-contributed/lzap-config.html"><strong>Lukáš Zapletal’s i3
-configuration</strong></a> <span class="author">(2012-08, by Lukáš)</span><br>
-A detailed explanation of Lukáš’s configuration of i3 and related tools.
-</p>
-
-<p>
-<a href="/docs/user-contributed/swapping-workspaces.html"><strong>Swapping
-workspaces</strong></a> <span class="author">(2012-09, by Sagar)</span><br>
-Shows how Sagar uses i3’s IPC interface to swap workspaces between two outputs.
-</p>
-
-<p>
-<a href="/docs/user-contributed/conky-i3bar.html"><strong>Using conky with
-i3bar</strong></a> <span class="author">(2012-11, by Gianrico)</span><br>
-Shows how to configure conky to generate JSON input for i3bar (with colors)!
-</p>
-
-<p>
-<a href="/docs/user-contributed/py3status.html"><strong>Enhanced and extensible
-i3bar with py3status</strong></a> <span class="author">(2013-02, by Ultrabug)</span><br>
-Introduces py3status, a wrapper script for i3status which is easily extensible.
-</p>
-
-<p>
-<a href="/docs/tshirts.html"><strong>i3wm T-shirts</strong></a>
-<span class="author">(2013-12, by Stefan)</span><br>
-Where and how to order official i3 T-shirts.
-</p>
-
-
-</div>
-
-</div>
--- /dev/null
+---
+layout: default
+title: Docs
+group: Docs
+---
+<div id="content">
+<h2>Documentation for i3 v4.8</h2>
+
+<p>
+One of i3’s goals is good documentation. The documents which you will find
+below will hopefully answer all your questions. If you have any corrections or
+suggestions please let us know!
+</p>
+
+<div class="docs">
+<h2>For users</h2>
+
+<p style="font-size: 100%; background-color: #444; border-radius: 5px; padding: 0.5em; width: 90%">
+<a href="/docs/userguide.html" style="font-size: 125%"><strong>User’s Guide</strong></a><br>
+Introduction and reference. Read this!
+</p>
+
+<p>
+<a href="/docs/layout-saving.html"><strong>Layout saving/restoring</strong></a><br>
+Explains how to save a layout and restore it in a new i3 session.
+</p>
+
+
+<p>
+<a href="/docs/multi-monitor.html"><strong>Multi-monitor</strong></a><br>
+Interesting for users of the nVidia driver.
+</p>
+
+<p>
+<a href="/docs/debugging.html"><strong>Debugging i3</strong></a><br>
+Explains you how to enable debug logging.
+</p>
+
+<p>
+<a href="/docs/wsbar.html"><strong>External workspace bars</strong></a><br>
+About bar programs such as i3bar or dzen2.
+</p>
+
+<p>
+<a href="/docs/refcard.html"><strong>i3 reference card</strong></a><br>
+Might be useful to memorize i3’s shortcuts.
+</p>
+</div>
+
+<div class="docs">
+<h2>For developers</h2>
+
+<p style="padding-top: 1em">
+<a href="/docs/hacking-howto.html"><strong>Hacking Howto</strong></a><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>
+Explains you how to enable debug logging.
+</p>
+
+<p>
+<a href="/docs/ipc.html"><strong>Inter process communication (IPC interface)</strong></a><br>
+Read this if you want to talk to i3 within your script.
+</p>
+
+<p>
+<a href="/docs/testsuite.html"><strong>i3 testsuite</strong></a><br>
+Makes you able to read and write i3 testcases.
+</p>
+
+<p>
+<a href="/docs/i3bar-protocol.html"><strong>i3bar protocol</strong></a><br>
+Documents the JSON based protocol which i3bar uses.
+</p>
+
+</div>
+
+<br style="clear: both">
+
+<h2>User-contributed articles</h2>
+
+<div class="ugdocs">
+
+<p>
+<a href="/docs/buildbot.html"><strong>i3 buildbot setup</strong></a> <span class="author">(2012-09, by Michael)</span><br>
+Describes the <a href="http://www.buildbot.net/">buildbot</a> setup i3 uses for
+automatic docs, compilation and debian packages.
+</p>
+
+<p>
+<a href="/docs/user-contributed/lzap-config.html"><strong>Lukáš Zapletal’s i3
+configuration</strong></a> <span class="author">(2012-08, by Lukáš)</span><br>
+A detailed explanation of Lukáš’s configuration of i3 and related tools.
+</p>
+
+<p>
+<a href="/docs/user-contributed/swapping-workspaces.html"><strong>Swapping
+workspaces</strong></a> <span class="author">(2012-09, by Sagar)</span><br>
+Shows how Sagar uses i3’s IPC interface to swap workspaces between two outputs.
+</p>
+
+<p>
+<a href="/docs/user-contributed/conky-i3bar.html"><strong>Using conky with
+i3bar</strong></a> <span class="author">(2012-11, by Gianrico)</span><br>
+Shows how to configure conky to generate JSON input for i3bar (with colors)!
+</p>
+
+<p>
+<a href="/docs/user-contributed/py3status.html"><strong>Enhanced and extensible
+i3bar with py3status</strong></a> <span class="author">(2013-02, by Ultrabug)</span><br>
+Introduces py3status, a wrapper script for i3status which is easily extensible.
+</p>
+
+<p>
+<a href="/docs/tshirts.html"><strong>i3wm T-shirts</strong></a>
+<span class="author">(2013-12, by Stefan)</span><br>
+Where and how to order official i3 T-shirts.
+</p>
+
+
+</div>
+
+</div>
+++ /dev/null
-<%!
- section = "docs"
-%>
-<%inherit file="_templates/i3.mako" />
-<div id="content">
-<h2>Documentation for i3 v4.8</h2>
-
-<p>
-One of i3’s goals is good documentation. The documents which you will find
-below will hopefully answer all your questions. If you have any corrections or
-suggestions please let us know!
-</p>
-
-<div class="docs">
-<h2>For users</h2>
-
-<p style="font-size: 100%; background-color: #444; border-radius: 5px; padding: 0.5em; width: 90%">
-<a href="/docs/userguide.html" style="font-size: 125%"><strong>User’s Guide</strong></a><br>
-Introduction and reference. Read this!
-</p>
-
-<p>
-<a href="/docs/layout-saving.html"><strong>Layout saving/restoring</strong></a><br>
-Explains how to save a layout and restore it in a new i3 session.
-</p>
-
-
-<p>
-<a href="/docs/multi-monitor.html"><strong>Multi-monitor</strong></a><br>
-Interesting for users of the nVidia driver.
-</p>
-
-<p>
-<a href="/docs/debugging.html"><strong>Debugging i3</strong></a><br>
-Explains you how to enable debug logging.
-</p>
-
-<p>
-<a href="/docs/wsbar.html"><strong>External workspace bars</strong></a><br>
-About bar programs such as i3bar or dzen2.
-</p>
-
-<p>
-<a href="/docs/refcard.html"><strong>i3 reference card</strong></a><br>
-Might be useful to memorize i3’s shortcuts.
-</p>
-</div>
-
-<div class="docs">
-<h2>For developers</h2>
-
-<p style="padding-top: 1em">
-<a href="/docs/hacking-howto.html"><strong>Hacking Howto</strong></a><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>
-Explains you how to enable debug logging.
-</p>
-
-<p>
-<a href="/docs/ipc.html"><strong>Inter process communication (IPC interface)</strong></a><br>
-Read this if you want to talk to i3 within your script.
-</p>
-
-<p>
-<a href="/docs/testsuite.html"><strong>i3 testsuite</strong></a><br>
-Makes you able to read and write i3 testcases.
-</p>
-
-<p>
-<a href="/docs/i3bar-protocol.html"><strong>i3bar protocol</strong></a><br>
-Documents the JSON based protocol which i3bar uses.
-</p>
-
-</div>
-
-<br style="clear: both">
-
-<h2>User-contributed articles</h2>
-
-<div class="ugdocs">
-
-<p>
-<a href="/docs/buildbot.html"><strong>i3 buildbot setup</strong></a> <span class="author">(2012-09, by Michael)</span><br>
-Describes the <a href="http://www.buildbot.net/">buildbot</a> setup i3 uses for
-automatic docs, compilation and debian packages.
-</p>
-
-<p>
-<a href="/docs/user-contributed/lzap-config.html"><strong>Lukáš Zapletal’s i3
-configuration</strong></a> <span class="author">(2012-08, by Lukáš)</span><br>
-A detailed explanation of Lukáš’s configuration of i3 and related tools.
-</p>
-
-<p>
-<a href="/docs/user-contributed/swapping-workspaces.html"><strong>Swapping
-workspaces</strong></a> <span class="author">(2012-09, by Sagar)</span><br>
-Shows how Sagar uses i3’s IPC interface to swap workspaces between two outputs.
-</p>
-
-<p>
-<a href="/docs/user-contributed/conky-i3bar.html"><strong>Using conky with
-i3bar</strong></a> <span class="author">(2012-11, by Gianrico)</span><br>
-Shows how to configure conky to generate JSON input for i3bar (with colors)!
-</p>
-
-<p>
-<a href="/docs/user-contributed/py3status.html"><strong>Enhanced and extensible
-i3bar with py3status</strong></a> <span class="author">(2013-02, by Ultrabug)</span><br>
-Introduces py3status, a wrapper script for i3status which is easily extensible.
-</p>
-
-<p>
-<a href="/docs/tshirts.html"><strong>i3wm T-shirts</strong></a>
-<span class="author">(2013-12, by Stefan)</span><br>
-Where and how to order official i3 T-shirts.
-</p>
-
-
-</div>
-
-</div>
--- /dev/null
+---
+layout: default
+title: Docs
+group: Docs
+---
+<div id="content" class="usergen">
+<h1>User-contributed article: Using conky with i3bar</h1>
+
+<p>
+As explained in the i3 documentation, it’s possible to <a
+href="http://i3wm.org/docs/userguide.html#_displaying_a_status_line">use an
+external program to build the status information displayed
+by i3bar</a>.
+One of those programs is <a href="http://conky.sourceforge.net/">conky, a free,
+light-weight system monitor</a>.
+</p>
+
+<p>
+Since conky does not support the i3bar protocol by default, we could use the
+plain text output format, but then we cannot have i3bar display colors. This
+article shows how to configure conky to have colors with i3bar.
+</p>
+
+<p>
+As explained in more detail in the <a
+href="http://i3wm.org/docs/i3bar-protocol.html">i3bar protocol description</a>,
+i3bar can receive input serialized as JSON, and this way has color support,
+among other things (urgency flag, shortening description if more space is needed).
+</p>
+
+<h2>Example of colored status with conky</h2>
+
+<p>
+First of all we have to understand how i3bar expects JSON input:
+We have to provide an "infinite array", each element on that array is a "status
+line" that is displayed at a certain moment by i3bar.
+</p>
+
+<p>
+Let's make a short example.
+We want to build a very simple status that displays the amunt of free space in
+home folder and the percentage of used RAM.
+Here's a sample JSON text for achieving our goal:
+</p>
+
+<pre><tt>{"version":1}
+[
+ [].
+
+ [ { "full_text":"Home 84.0G Free", "color":"#ffffff" },
+ { "full_text":"RAM 32%" , "color":"#ffffff" } ],
+
+ [ { "full_text":"Home 84.0G Free", "color":"#ffffff" },
+ { "full_text":"RAM 34%" , "color":"#ffffff" } ],
+
+ [....],
+ [....],
+ ...</tt></pre>
+
+<p>
+The first line tells i3bar that we are using JSON input.
+The second line is the opening of the "infinite array".
+Each line after second is one "instance status" to be displayed in i3bar,
+</p>
+
+<h2>Wrapper script</h2>
+
+<p>
+To obtain this output with conky we have to use it in combination with a short script.
+The script will write down the "fixed" part of the output (first and second line), then it will call conky.
+It will be conky’s duty to write each of the "instances".
+</p>
+
+<p>
+The script is quite simple:
+</p>
+
+<pre><tt>#!/bin/sh
+
+# Send the header so that i3bar knows we want to use JSON:
+echo '{"version":1}'
+
+# Begin the endless array.
+echo '['
+
+# We send an empty first array of blocks to make the loop simpler:
+echo '[],'
+
+# Now send blocks with information forever:
+exec conky -c $HOME/.conkyrc</tt></pre>
+
+<p>
+Let's save this script as <tt>conky-i3bar</tt> in <tt>$HOME/bin</tt>.
+In the i3 config file the <tt>bar</tt> config will be something like that
+</p>
+
+<pre><tt>bar {
+ status_command $HOME/bin/conky-i3bar
+}</tt></pre>
+
+<h2>conky configuration</h2>
+
+<p>
+Now we have to write a <tt>~/.conkyrc</tt> file in order to obtain the desired status:
+</p>
+
+<pre><tt>[{ "full_text":"Home 84.0G Free" , "color":"#ffffff" },
+ { "full_text":"RAM 32%" , "color":"#ffffff" }],</tt></pre>
+
+<p>
+Here's a sample conkyrc that updates every 2 seconds. Just to make things a litte bit more exciting
+we put a condition in the script in order to write the occupied RAM in red if the amount is more than 90%:
+</p>
+
+<pre><tt>out_to_x no
+own_window no
+out_to_console yes
+background no
+max_text_width 0
+
+# Update interval in seconds
+update_interval 2.0
+
+# This is the number of times Conky will update before quitting.
+# Set to zero to run forever.
+total_run_times 0
+
+# Shortens units to a single character (kiB->k, GiB->G, etc.). Default is off.
+short_units yes
+
+# How strict should if_up be when testing an interface for being up?
+# The value is one of up, link or address, to check for the interface
+# being solely up, being up and having link or being up, having link
+# and an assigned IP address.
+if_up_strictness address
+
+# Add spaces to keep things from moving about? This only affects certain objects.
+# use_spacer should have an argument of left, right, or none
+use_spacer left
+
+# Force UTF8? note that UTF8 support required XFT
+override_utf8_locale no
+
+# number of cpu samples to average
+# set to 1 to disable averaging
+cpu_avg_samples 2
+
+# Stuff after 'TEXT' will be formatted on screen
+TEXT
+
+# JSON for i3bar
+{% raw %}
+ [{ "full_text" : "Home ${fs_free /home} Free" , "color" : "\#ffffff" },
+ { "full_text" : "RAM ${memperc}%" , "color" :
+ ${if_match ${memperc}<90}"\#ffffff"${else}"\#ff0000"${endif} }],
+{% endraw %}
+</tt></pre>
+++ /dev/null
-<%!
- section = "docs"
-%>
-<%inherit file="_templates/i3.mako" />
-<div id="content" class="usergen">
-<h1>User-contributed article: Using conky with i3bar</h1>
-
-<p>
-As explained in the i3 documentation, it’s possible to <a
-href="http://i3wm.org/docs/userguide.html#_displaying_a_status_line">use an
-external program to build the status information displayed
-by i3bar</a>.
-One of those programs is <a href="http://conky.sourceforge.net/">conky, a free,
-light-weight system monitor</a>.
-</p>
-
-<p>
-Since conky does not support the i3bar protocol by default, we could use the
-plain text output format, but then we cannot have i3bar display colors. This
-article shows how to configure conky to have colors with i3bar.
-</p>
-
-<p>
-As explained in more detail in the <a
-href="http://i3wm.org/docs/i3bar-protocol.html">i3bar protocol description</a>,
-i3bar can receive input serialized as JSON, and this way has color support,
-among other things (urgency flag, shortening description if more space is needed).
-</p>
-
-<h2>Example of colored status with conky</h2>
-
-<p>
-First of all we have to understand how i3bar expects JSON input:
-We have to provide an "infinite array", each element on that array is a "status
-line" that is displayed at a certain moment by i3bar.
-</p>
-
-<p>
-Let's make a short example.
-We want to build a very simple status that displays the amunt of free space in
-home folder and the percentage of used RAM.
-Here's a sample JSON text for achieving our goal:
-</p>
-
-<pre><tt>{"version":1}
-[
- [].
-
- [ { "full_text":"Home 84.0G Free", "color":"#ffffff" },
- { "full_text":"RAM 32%" , "color":"#ffffff" } ],
-
- [ { "full_text":"Home 84.0G Free", "color":"#ffffff" },
- { "full_text":"RAM 34%" , "color":"#ffffff" } ],
-
- [....],
- [....],
- ...</tt></pre>
-
-<p>
-The first line tells i3bar that we are using JSON input.
-The second line is the opening of the "infinite array".
-Each line after second is one "instance status" to be displayed in i3bar,
-</p>
-
-<h2>Wrapper script</h2>
-
-<p>
-To obtain this output with conky we have to use it in combination with a short script.
-The script will write down the "fixed" part of the output (first and second line), then it will call conky.
-It will be conky’s duty to write each of the "instances".
-</p>
-
-<p>
-The script is quite simple:
-</p>
-
-<pre><tt>#!/bin/sh
-
-# Send the header so that i3bar knows we want to use JSON:
-echo '{"version":1}'
-
-# Begin the endless array.
-echo '['
-
-# We send an empty first array of blocks to make the loop simpler:
-echo '[],'
-
-# Now send blocks with information forever:
-exec conky -c $HOME/.conkyrc</tt></pre>
-
-<p>
-Let's save this script as <tt>conky-i3bar</tt> in <tt>$HOME/bin</tt>.
-In the i3 config file the <tt>bar</tt> config will be something like that
-</p>
-
-<pre><tt>bar {
- status_command $HOME/bin/conky-i3bar
-}</tt></pre>
-
-<h2>conky configuration</h2>
-
-<p>
-Now we have to write a <tt>~/.conkyrc</tt> file in order to obtain the desired status:
-</p>
-
-<pre><tt>[{ "full_text":"Home 84.0G Free" , "color":"#ffffff" },
- { "full_text":"RAM 32%" , "color":"#ffffff" }],</tt></pre>
-
-<p>
-Here's a sample conkyrc that updates every 2 seconds. Just to make things a litte bit more exciting
-we put a condition in the script in order to write the occupied RAM in red if the amount is more than 90%:
-</p>
-
-<pre><tt>out_to_x no
-own_window no
-out_to_console yes
-background no
-max_text_width 0
-
-# Update interval in seconds
-update_interval 2.0
-
-# This is the number of times Conky will update before quitting.
-# Set to zero to run forever.
-total_run_times 0
-
-# Shortens units to a single character (kiB->k, GiB->G, etc.). Default is off.
-short_units yes
-
-# How strict should if_up be when testing an interface for being up?
-# The value is one of up, link or address, to check for the interface
-# being solely up, being up and having link or being up, having link
-# and an assigned IP address.
-if_up_strictness address
-
-# Add spaces to keep things from moving about? This only affects certain objects.
-# use_spacer should have an argument of left, right, or none
-use_spacer left
-
-# Force UTF8? note that UTF8 support required XFT
-override_utf8_locale no
-
-# number of cpu samples to average
-# set to 1 to disable averaging
-cpu_avg_samples 2
-
-# Stuff after 'TEXT' will be formatted on screen
-TEXT
-
-# JSON for i3bar
-<%text filter="h">
- [{ "full_text" : "Home ${fs_free /home} Free" , "color" : "\#ffffff" },
- { "full_text" : "RAM ${memperc}%" , "color" :
- ${if_match ${memperc}<90}"\#ffffff"${else}"\#ff0000"${endif} }],
-</%text>
-</tt></pre>
--- /dev/null
+---
+layout: default
+title: Docs
+group: Docs
+---
+<div id="content" class="usergen">
+<h1>User-contributed article: Lukáš Zapletal’s i3 configuration</h1>
+
+<p>I was keeping sight on i3 for some time after I saw Michael’s <a href='http://www.youtube.com/watch?v=QnYN2CTb1hM'>presentation at Google</a> the other day. Last weekend, I upgraded my Fedora 17 and when I noticed i3 version 4.2 in the repositories, I gave it a try. First of all, I have to admit I’ve fallen in love. Totally.</p>
+
+<p>It’s a tiling window manager which is lightweight yet powerful. What I like about i3 is ease of adopting it. Michael, the main author of this awesome software, made the default configuration very sane. And i3 is also very fast by it’s (UNIX) design. Last but not least, i3 saves every pixel on the screen. You can get the most from your screen(s). And yes - it <em>does</em> support multiple screens very nicely.</p>
+
+<p>Instead of describing how it looks like when you use i3, I’d rather publish my (pretty new) configuration describing each line of it. Before I start, I need to highlight one thing. It’s a <strong>tiling</strong> window manager. You manage windows into tiles, it’s the basic idea. While you can turn windows into “normal” (the correct term is “floating”) mode, you loose lots of things and this is not the mode you want to work in. It is mainly used by i3 for dialogs, tooltips or other temporary windows.</p>
+
+<h2 id='installation'>Installation</h2>
+
+<p>Is pretty straightforward. We need i3 itself and several other highly recommended apps I will describe later. In short: simple screen locker, starter menu and simple notification daemon.</p>
+
+<pre><tt># yum -y install i3 i3lock dmenu dunst</tt></pre>
+
+<p>Please note dunst is not in Fedora 17 repositories, but I have created a <a href='https://bugzilla.redhat.com/show_bug.cgi?id=852211'>review request</a>. Feel free to take it for review.</p>
+
+<p>Exit your desktop environment or window manager and log on into i3 from the GDM menu (if you use it). i3 will ask to create initial configuration during the first start. Say yes and do not worry - reloading/restarting i3 is fluent and you can do this zillions of times without loosing a single window.</p>
+
+<h2 id='i3_configuration'>i3 configuration</h2>
+
+<p>Configuration is located in <strong>.i3/config</strong>. Let’s do the walkthrough.</p>
+
+<pre><tt>set $mod Mod4</tt></pre>
+
+<p>i3 works best with a modifier key set to ALT (Mod1) or WIN (Mod4). I have a windows key on my keyboard unused anyway, so I use it as my main modifier key (with few exceptions bellow).</p>
+
+<pre><tt># font for window titles. ISO 10646 = Unicode
+font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1</tt></pre>
+
+<p>Basic font for windows titles. I was experimenting with my favourite one - Terminus - but the default (misc-fixed) works great and is narrower.</p>
+
+<pre><tt># Use Mouse+$mod to drag floating windows to their wanted position
+floating_modifier $mod</tt></pre>
+
+<p>By default windows has 1 pixel border, so it’s difficult to resize them with mouse. With this option, you can <em>move</em> windows with modifier + left click and <em>resize</em> with modifier + right click. I bet Apple patented this already, but who cares.</p>
+
+<pre><tt># start a terminal
+bindsym $mod+Return exec i3-sensible-terminal</tt></pre>
+
+<p>I am starting terminals a lot. Like fifty a day, or even more. Michael’s default configuration has this binding and I keep it. By the way i3 has several i3-* scripts (three I guess) which tries to find “the best” terminal (editor etc). In my case its urxvt and vim, but i3-* will find out from ENV variables of course.</p>
+
+<pre><tt># kill focused window
+bindsym $mod+Shift+Q kill</tt></pre>
+
+<p>As you will notice shortly, i3 does not draw any minimize, maximize and close buttons. Except the latter, they are useless. It turns out every single application has an exit path (usually using Ctrl+q or something like that), so you don’t need the [X] button. Few apps do not support it (like very old xev), you can use this shortcut that tries to close it nicely first and it kills it if it does not work.</p>
+
+<pre><tt># start dmenu (a program launcher)
+bindsym $mod+d exec dmenu_run</tt></pre>
+
+<p>Do you think there is a start menu or icons on a desktop in i3? Well, it’s a window manager. Of course not. By default it uses excellent dmenu starter and this simple wrapper that ships with it. Basically, it makes a cache of all executable applications and shows them while you type in a top bar. It’s fast. It’s awesome.</p>
+
+<pre><tt># reload/restart/exit
+bindsym $mod+Shift+C reload
+bindsym $mod+Shift+R restart
+bindsym $mod+Shift+E exit</tt></pre>
+
+<p>Few default key bindings you will like when playing with configuration.</p>
+
+<pre><tt># screen locker (first move to "safe" workspace without any chat app)
+bindsym Control+Mod1+l exec i3-msg workspace 1 && i3lock -c 111111 -d</tt></pre>
+
+<p>My invention here. Locking a screen is an easy task, but unlocking it without providing your password to other team folks via IRC channel is a challenge (for a guy in the <a href='http://pulpproject.org'>Pulp team</a> ;-) therefore I switch to the first workspace first where is <em>not</em> my IRC chat. Ever. I have to admit the issue is more when you don’t have your screen lock, but it was fun to create this key.</p>
+
+<p>Please note i3lock built into Fedora 17 does <em>NOT</em> support loading of images. The software itself is capable of loading images instead of solid color, but this feature was not built. Just stick with a solid color for now.</p>
+
+<p>By the way, you just saw i3-msg command which is distributed with i3 distribution. Every single command you see here in the bindsym and exec statements can be sent to i3 using i3-msg. You can create shell scripts with starting up applications, moving them around, changing workspaces and I can’t possibly imagine what can you do with it. Everything.</p>
+
+<pre><tt># change focus
+bindsym $mod+j focus left
+bindsym $mod+k focus down
+bindsym $mod+l focus up
+bindsym $mod+semicolon focus right
+#bindsym $mod+uring focus right</tt></pre>
+
+<p>Default configuration for moving around. Notice this is not exactly what we know from Vim (its HJKL there). I thought I will hate it, but I got used to it in two hours. The commented line is for Czech keyboard layout (there is u with ring instead of semicolon) - ignore it if you don’t use this one.</p>
+
+<pre><tt># alternatively, you can use the cursor keys:
+bindsym $mod+Left focus left
+bindsym $mod+Down focus down
+bindsym $mod+Up focus up
+bindsym $mod+Right focus right</tt></pre>
+
+<p>I sometimes use arrow keys, usually when I don’t have my hands in the working position. It is likely when I eat :-)</p>
+
+<pre><tt># move focused window
+bindsym $mod+Shift+J move left
+bindsym $mod+Shift+K move down
+bindsym $mod+Shift+L move up
+bindsym $mod+Shift+colon move right</tt></pre>
+
+<p>Moving windows around is so simple with tiling managers. Just hold shift and you drag the window there.</p>
+
+<pre><tt># alternatively, you can use the cursor keys:
+bindsym $mod+Shift+Left move left
+bindsym $mod+Shift+Down move down
+bindsym $mod+Shift+Up move up
+bindsym $mod+Shift+Right move right</tt></pre>
+
+<p>I don’t use this with arrow keys, but it’s defined by default. Why not.</p>
+
+<pre><tt># split in horizontal orientation
+bindsym $mod+h split h
+
+# split in vertical orientation
+bindsym $mod+v split v</tt></pre>
+
+<p>This is important. By default i3 splits the screen according to the screen size. For wide screens it’s usually horizontal split. You can configure this behavior if you want, but sometimes you want to split different way. That is what these bindings are for. i3 remembers that for the workspace, so you can split multiple windows easily.</p>
+
+<pre><tt># enter fullscreen mode for the focused container
+bindsym $mod+f fullscreen</tt></pre>
+
+<p>Fullscreen is something you don’t use many times with standard window managers, but in tiling mode it is pretty useful. I use it a lot when I wan’t to “zoom in” a window.</p>
+
+<pre><tt># change container layout (stacked, tabbed, default)
+bindsym $mod+s layout stacking
+bindsym $mod+w layout tabbed
+bindsym $mod+e layout default</tt></pre>
+
+<p>Unique feature of i3, I would say. Best thing what you can do is to <a href='http://i3wm.org/docs/userguide.html#_changing_the_container_layout'>see a picture</a>. You can switch from tiling (default) to tabbed and stacking mode. You can have multiple Firefox instances in windows tabs if you want to. By the way, the i3 User’s Guide is the definitive document you want to read twice.</p>
+
+<pre><tt># toggle tiling / floating
+bindsym $mod+Shift+space floating toggle</tt></pre>
+
+<p>Some applications does not work well in the tiling mode, because all windows are maximalized by default and according to your screen size and number of other containers there first application can be quite stretched. If your application looks weird, you can always switch to the floating (“normal”) mode, and back and forth with this key mapping. By default, i3 recognizes dialogs and tool windows, so you do not to switch all windows. Actually I had to switch only one application by now.</p>
+
+<pre><tt># change focus between tiling / floating windows
+bindsym $mod+space focus mode_toggle</tt></pre>
+
+<p>If you have multiple windows in tiling and floating mode, you want to switch between those two groups. You do it with this key.</p>
+
+<pre><tt># focus the parent container
+#bindsym $mod+a focus parent
+
+# focus the child container
+#bindcode $mod+d focus child</tt></pre>
+
+<p>I have to admit I never used this, because I try to keep number of windows on each workspace low (up to 6 I would say). It moves focus to parent or child window, perhaps more usable with more windows. Share your experiences with this. Notice it’s disabled because I use mod+d for the dmenu.</p>
+
+<pre><tt># next/previous workspace
+bindsym Mod1+Tab focus right
+bindsym Mod1+Shift+Tab focus left
+bindsym $mod+Tab workspace back_and_forth</tt></pre>
+
+<p>This is not standard binding, but I find Alt+Tab pretty useful combination. It’s handy (I use my right hand for mouse) and it was not used by i3. So I started using it for cycling through windows on one workspace. If you have various (horizontal and vertical splits), it does not cycle through all of them. It’s only moving in vertical movement (right - left). I wish there has been a option like “focus cycle” in the next i3 version.</p>
+
+<p>Shift does the other way around while Win+Tab switches to the last used weapon. Sorry, I said weapon? I mean workspace.</p>
+
+<pre><tt># switch to workspace
+bindsym $mod+ampersand workspace 1
+bindsym $mod+eacute workspace 2
+bindsym $mod+quotedbl workspace 3
+bindsym $mod+apostrophe workspace 4
+bindsym $mod+parenleft workspace 5
+bindsym $mod+minus workspace 6
+bindsym $mod+egrave workspace 7
+bindsym $mod+underscore workspace 8
+bindsym $mod+ccedilla workspace 9
+bindsym $mod+agrave workspace 10
+#bindsym $mod+1 workspace 1
+#bindsym $mod+2 workspace 2
+#bindsym $mod+3 workspace 3
+#bindsym $mod+4 workspace 4
+#bindsym $mod+5 workspace 5
+#bindsym $mod+6 workspace 6
+#bindsym $mod+7 workspace 7
+#bindsym $mod+8 workspace 8
+#bindsym $mod+9 workspace 9
+#bindsym $mod+0 workspace 10
+
+# switch to workspace (f1-f4)
+bindsym F1 workspace 1
+bindsym F2 workspace 2
+bindsym F3 workspace 3
+bindsym F4 workspace 4
+bindsym Mod1+F1 workspace 5
+bindsym Mod1+F2 workspace 6
+bindsym Mod1+F3 workspace 7
+bindsym Mod1+F4 workspace 8</tt></pre>
+
+<p>Okay, the first block is default binding. But for many years I decided to leverage F1-F4 keys for workspace movement. Until now, I was using only four workspaces (OpenBox, KDE/GNOME, Fluxbox and XFce), but with i3 and its good support of multiple screens I can afford eight now. Each screen has four independent workspaces.</p>
+
+<p>Please note the commented part is for Czech layout, therefore if you use this layout uncomment it and delete the above.</p>
+
+<p>Now let me explain <em>function keys</em> a bit. First of all I realized many years ago that no one (including me) ever use F1 key. It’s reserved, it’s for help. But everybody is googling these days instead searching through built-in docs. The same for F2, F3 and F4. Maybe some IDEs offer some important stuff, but I use Vim that has no function keys binding. That is the reason why I gave up with those keys and use them for workspace switching.</p>
+
+<p>With i3 I have decided also to map Alt+F1-F4 for accessing numbers five to eight. It just seem natural for me now. I am giving up with Alt-F2 (Run App in GNOME) or Alt-F4 (Close App), but this does no work in i3 anymore. Few apps still react on Alt-F4, but there is a different combination available for that.</p>
+
+<p>If you occasionally need those keys, you can create a re-mapping that would trigger them with Win+F1-F4 keys. But in terminals you can always use ESC combination (ESC;1 for F1). I don’t use any X11 application that needs that.</p>
+
+<p>Therefore workspaces 1-4 are on the laptop screen (LDVS1) and 5-8 are on the main monitor (HDMI1). And there is one workspace hidden called scratch one. More about it later.</p>
+
+<pre><tt># move focused container to workspace
+bindsym $mod+Shift+1 move container to workspace 1
+bindsym $mod+Shift+2 move container to workspace 2
+bindsym $mod+Shift+3 move container to workspace 3
+bindsym $mod+Shift+4 move container to workspace 4
+bindsym $mod+Shift+5 move container to workspace 5
+bindsym $mod+Shift+6 move container to workspace 6
+bindsym $mod+Shift+7 move container to workspace 7
+bindsym $mod+Shift+8 move container to workspace 8
+bindsym $mod+Shift+9 move container to workspace 9
+bindsym $mod+Shift+0 move container to workspace 10</tt></pre>
+
+<p>Default setting for transferring windows (containers) among workspaces. Those works for both Czech and English layout and are installed by default.</p>
+
+<pre><tt># border changing
+bindsym $mod+b border toggle</tt></pre>
+
+<p>I cycle through normal, 1pixel and none values with this keybinding. By default it’s bound to mod+t, mod+y and mod+u.</p>
+
+<pre><tt># scratchpad
+bindsym $mod+m move scratchpad
+bindsym $mod+o scratchpad show</tt></pre>
+
+<p>Now THIS is cool. There is one hidden workspace that is nowhere and everywhere. It’s empty by default, thus invisible. You can move there any window you want with mod+m. Container is switched over to floating mode and it’s centered on the screen giving it some decent size. Than you can quickly show this window with mod+o key. If you hit it twice, it disappears.</p>
+
+<p>This is cool feature, I like to have an extra terminal there for quick looks while I am working. Maybe you want your favourite e-mail application there. Or something other you want to keep hidden<code>n</code>handy.</p>
+
+<p>Please note floating applications always stays on top of tiled containers. So scratchpad is not intended for long tasks. It’s better for short tasks you need to do many times a day. Oh, you can open scratchpad on top of any workspace you want. This is also great for copy and paste.</p>
+
+<pre><tt># resize window (you can also use the mouse for that)
+mode "resize" {
+ # These bindings trigger as soon as you enter the resize mode
+ bindsym j resize shrink width 10 px or 10 ppt
+ bindsym k resize grow height 10 px or 10 ppt
+ bindsym l resize shrink height 10 px or 10 ppt
+ bindsym semicolon resize grow width 10 px or 10 ppt
+ #bindsym uring resize grow width 10 px or 10 ppt
+
+ # same bindings, but for the arrow keys
+ bindsym 113 resize shrink width 10 px or 10 ppt
+ bindsym 116 resize grow height 10 px or 10 ppt
+ bindsym 111 resize shrink height 10 px or 10 ppt
+ bindsym 114 resize grow width 10 px or 10 ppt
+
+ # back to normal: Enter or Escape
+ bindsym Return mode "default"
+ bindsym Escape mode "default"
+}
+
+bindsym $mod+r mode "resize"</tt></pre>
+
+<p>I like to resize windows with mouse, but with keys it’s more fun and also much faster. I need to get used to it. You enter resize mode with mod+r combination, then usint JKL and semicolon (note uring for my Czech layout) you change the window size. And than you <em>must</em> switch back to the normal mode with ESC or ENTER key. Standard key bindings are not available in the resize mode and you will notice why nothing is working. Remember, you <em>need to return</em>.</p>
+
+<p>I bet you can create your own modes like “work” and “fun” with totally different key bindings. Never tried this.</p>
+
+<pre><tt># pulse audio volume control
+bindsym XF86AudioLowerVolume exec /usr/bin/pactl set-sink-volume 0 -- '-5%'
+bindsym XF86AudioRaiseVolume exec /usr/bin/pactl set-sink-volume 0 -- '+5%'
+bindsym XF86AudioMute exec /usr/bin/pactl set-sink-volume 0 0
+bindsym XF86Launch1 exec /usr/bin/pactl play-sample that_was_easy
+bindsym XF86MonBrightnessUp exec /usr/bin/xbacklight -inc 10
+bindsym XF86MonBrightnessDown exec /usr/bin/xbacklight -dec 5</tt></pre>
+
+<p>Few ThinkPad laptop key bindings for controlling volume, brightness and ThinkVantage for playing That Was Easy (TM) sample just for fun. I don’t use laptop keyboard much.</p>
+
+<pre><tt># $mod+n reserved for close all notifications
+# see ~/.config/dunst/dunstrc for more</tt></pre>
+
+<p>Just a note for myself not to override mod+n which is used by dunst. More about it later.</p>
+
+<pre><tt># one bar on both screens
+bar {
+ position top
+ mode hide
+ modifier $mod
+ status_command i3status
+ tray_output LVDS1
+}</tt></pre>
+
+<p>i3 uses i3bar application to draw a very minimalistic bar that can be positioned on the top or bottom of the screen (all screens by default). I like having my bar on top. Content of the bar is delivered with an external program using IPC - i3status in my case. More about its configuration later.</p>
+
+<p>Only one bar can contain tray area - laptop screen in my case. The bar is very thin, tray icons are also small. I like it. The “mode hide” statement hides the bar and opens it once I hit “modifier” key, or on a workspace highlight. By the way when the bar is hidden, i3 also notifies the i3status program so it’s not feeding with data to save CPU time and thus battery.</p>
+
+<p>By default i3bar shows workspaces and you can switch them with a mouse. It’s good not to disable this (even if you don’t use mouse for that) just to have a nice overview about all workspaces which are kind a dynamic (like in GNOME 3), they appear once you move there for the first time and disappear when you leave it (and there is no other container on it). Therefore you can work with them like in GNOME 3 if you want. I have my numbers 9 and 10 ready for that.</p>
+
+<pre><tt># workspace screens
+workspace 1 output HDMI1
+workspace 2 output HDMI1
+workspace 3 output HDMI1
+workspace 4 output HDMI1
+workspace 5 output LVDS1
+workspace 6 output LVDS1
+workspace 7 output LVDS1
+workspace 8 output LVDS1</tt></pre>
+
+<p>i3 works <strong>very well</strong> with multiple monitors. The default behavior is where you create a workspace it stays there forever, or until you disconnect the screen respectively. Therefore it’s up to you where you create your workspaces.</p>
+
+<p>I like to have an order in this, workspaces 1-4 are on the main screen, 5-8 are on the laptop. Therefore I explicitly say this in my configuration. By the way you can easily move workspaces across screens, but I don’t use any key bindings for that.</p>
+
+<p>When you disconnect your laptop from dock, everything stays “as is” until xrandr notice the screen is off. This is not by default and I like this behavior (depends on your distribution). You can switch off the screen using xranrd command, but sometimes I prefer to attend a meeting or something and then returning without <em>any</em> change (having workspaces on the main screen invisible for a while). I like to have an option in this case. Of course once i3 determines screen has been turned off using xrandr, it moves all workspaces to the remaining screen.</p>
+
+<p>You can also do this manually with <em>i3-msg workspace N output OUTPUT</em> therefore I created two bash scripts dock and undock that transfers all my workspaces in/out of LDVDS1. This is awesome, I really love this feature. I have never seen a window manager that plays THAT nicely with multiple screens.</p>
+
+<pre><tt># workspace assignment (use "xprop")
+assign [class="^Google-chrome$"] 3
+assign [class="^URxvt$" instance="^mail$"] 4
+assign [class="^Xchat$"] 5
+assign [class="^Rednotebook$"] 6
+assign [class="^Decibel-audio-player.py$"] 7
+assign [title="Lingea Lexicon 5$"] 8
+
+# custom window settings
+for_window [class="^URxvt$" instance="scratchpad"] border 1pixel; move scratchpad
+for_window [class="^Google-chrome$"] border none
+for_window [title="Lingea Lexicon 5$"] border none
+
+# get elluminate working
+for_window [title="^Elluminate Live!"] floating enable
+for_window [title="^Application Sharing"] floating enable
+for_window [class="^net-sourceforge-jnlp-runtime-Boot$" title="^Downloading"] floating enable</tt></pre>
+
+<p>In this block, I force some applications to start on specific screens. You can see apps that I use everyday. IRC chat, notebook, audio player, dictionary, browser and that’s it.</p>
+
+<p>Than if I start a terminal with the name of “scratchpad” it changes its border to 1pixel and moves to the background – scratchpad, remember? This is cool.</p>
+
+<p>And I need to use Elluminate application for desktop sharing and meetings. It’s a Java application that does not look nice in the tiled mode, therefore I force it into floating mode. Good news is it is working actually, if you use it with Sun JRE. There are not many window managers Elluminate is working in, seriously.</p>
+
+<pre><tt># before autostart
+exec --no-startup-id pactl upload-sample ~/.i3/that_was_easy.wav that_was_easy
+exec urxvt -name scratchpad -e bash
+exec ~/.i3/autostart
+
+# autostart
+exec google-chrome
+exec urxvt -name mail -e bash -c "mutt"
+exec xchat
+exec rednotebook
+exec decibel-audio-player
+exec lexicon</tt></pre>
+
+<p>The last block is just auto starting some applications during startup. I load the funny sample, open a scratchpad terminal (which goes to the background automatically) and then I start a shell script with additional commands. I could put this into .xinitrc, but I keep it here. And then some applications.</p>
+
+<p>When I start my laptop, I get the same. Everyday. Cool, isn’t it?</p>
+
+<h2 id='autostart'>Autostart</h2>
+
+<p>My autostart script triggers some settings and spawns some daemons. It’s totally optional in i3, you could do everything using “exec” commands, but I leveraged my old xinitrc script for that. Let’s do the showcase again.</p>
+
+<pre><tt>#!/bin/sh
+
+## Desktop background color
+xsetroot -solid '#101010' &</tt></pre>
+
+<p>Again, i3 is a window manager, not a desktop environment. I don’t like “wallpapers, I just set a decent color here.</p>
+
+<pre><tt>## Set startup volume
+pactl set-sink-volume 0 '20%' &</tt></pre>
+
+<p>I hate random volume after start. Can cause injuries with my speakers. Every time I start my laptop, volume is set to 20 per cent.</p>
+
+<pre><tt>## Disable beeps
+xset -b &</tt></pre>
+
+<p>Don’t like PC-speaker beeping at all.</p>
+
+<pre><tt>## Keybord layout setting
+setxkbmap -layout cz,us -option grp:shift_shift_toggle &</tt></pre>
+
+<p>I told you – Czech layout.</p>
+
+<pre><tt>## DPMS monitor setting (standby -> suspend -> off) (seconds)
+xset dpms 300 600 900 &</tt></pre>
+
+<p>I do not use screen “savers”, blank it after 5 minutes, suspend and then go off after 5+5 minutes. THIS is screen saving.</p>
+
+<pre><tt>## Set LCD brightness
+xbacklight -set 90 &</tt></pre>
+
+<p>The same story as with volume, backlight set to 90 % after start.</p>
+
+<pre><tt>## Clipboard manager
+LC_ALL=C parcellite &</tt></pre>
+
+<p>Parcellite clipboard manager is widely used, and I love it for my patches that strips whitespace. Go ahead, try it and enable this feature in the preferences. Czech translation is totally wrong, therefore I start it in English.</p>
+
+<pre><tt>## OSD
+dunst &</tt></pre>
+
+<p>And notification daemon. More about it later.</p>
+
+<h2 id='bar'>Bar</h2>
+
+<p>As I described earlier, i3bar program uses i3status – lightweight status generator designed to be very efficient by issuing a very small number of system calls. No scripting support, no external commands. Communication with i3bar is very simple using pipes, if you really need an external command, you can create a wrapper that adds some more info to the i3status output.</p>
+
+<p>Configuration is pretty straightforward, I will not comment that. I refresh the status line every four seconds, but my bar is hidden most of time, therefore refreshing is suspended which saves you even more cpu ticks!</p>
+
+<pre><tt>general {
+ colors = true
+ interval = 4
+}
+
+order += "disk /home"
+order += "disk /"
+order += "run_watch VPN"
+order += "wireless wlan0"
+order += "ethernet em1"
+order += "battery 0"
+order += "volume master"
+order += "load"
+order += "time"
+
+wireless wlan0 {
+ format_up = "W: (%quality at %essid) %ip"
+ format_down = "W: down"
+}
+
+ethernet em1 {
+ # sudo setcap cap_net_admin=ep $(which i3status)
+ format_up = "E: %ip (%speed)"
+ format_down = "E: down"
+}
+
+battery 0 {
+ format = "%status %percentage %remaining"
+}
+
+run_watch VPN {
+ pidfile = "/var/run/openvpn.pid"
+}
+
+time {
+ format = "%d.%m.%Y %H:%M"
+}
+
+load {
+ format = "%1min"
+}
+
+disk "/" {
+ format = "%free"
+}
+
+disk "/home" {
+ format = "%free"
+}
+
+volume master {
+ format = "♪: %volume"
+ device = "default"
+ mixer = "Master"
+ mixer_idx = 0
+}</tt></pre>
+
+<p>To test it, you can just run <em>i3status</em>. It will fall back to simple text output (real communication with i3bar is with colors):</p>
+
+<pre><tt>$ i3status
+132,1 GB | 56,2 GB | VPN: yes | W: down | E: 192.168.1.1 (1000 Mbit/s) | FULL 55,92% | ♪: 63% | 1,56 | 28.08.2012 19:46</tt></pre>
+
+<p>As you may noticed, my ThinkPad battery is dying.</p>
+
+<h2 id='osd'>OSD</h2>
+
+<p>I use dunst as a notification daemon. It’s very simple and it looks like a dmenu. The configuration is stored in <em>~/.config/dunst/dunstrc</em> and the default one works great. And it also plays well with multi-monitor setups - you can choose screen to show notifications on and it can also follow your mouse or keyboard (pops up on the screen you actually work on).</p>
+
+<p>Dunst can group same messages, stack them, sort them by urgency, wrap words and keep messages when computer is in idle (so you would miss them). One can configure colors, format and other basic things for the pop up windows.</p>
+
+<p>I took the default configuration from <em>/usr/share/dunst/dunstrc</em> and kept the sane defaults. The most important setting change for me was:</p>
+
+<pre><tt>close_all = mod4+n</tt></pre>
+
+<p>I use Win+n to close all notifications. Nice.</p>
+
+<h2 id='wrapup'>Wrap-up</h2>
+
+<p>Okay, I think I showed you <a href='http://i3wm.org'>i3</a>. Highly recommended tiling window manager. Share your opinions on this page with me!</p>
+
+<p><strong>Update</strong>: I have pushed all my configuration files to <a href='https://github.com/lzap/doti3'>git repository</a>.</p>
+++ /dev/null
-<%!
- section = "docs"
-%>
-<%inherit file="_templates/i3.mako" />
-<div id="content" class="usergen">
-<h1>User-contributed article: Lukáš Zapletal’s i3 configuration</h1>
-
-<p>I was keeping sight on i3 for some time after I saw Michael’s <a href='http://www.youtube.com/watch?v=QnYN2CTb1hM'>presentation at Google</a> the other day. Last weekend, I upgraded my Fedora 17 and when I noticed i3 version 4.2 in the repositories, I gave it a try. First of all, I have to admit I’ve fallen in love. Totally.</p>
-
-<p>It’s a tiling window manager which is lightweight yet powerful. What I like about i3 is ease of adopting it. Michael, the main author of this awesome software, made the default configuration very sane. And i3 is also very fast by it’s (UNIX) design. Last but not least, i3 saves every pixel on the screen. You can get the most from your screen(s). And yes - it <em>does</em> support multiple screens very nicely.</p>
-
-<p>Instead of describing how it looks like when you use i3, I’d rather publish my (pretty new) configuration describing each line of it. Before I start, I need to highlight one thing. It’s a <strong>tiling</strong> window manager. You manage windows into tiles, it’s the basic idea. While you can turn windows into “normal” (the correct term is “floating”) mode, you loose lots of things and this is not the mode you want to work in. It is mainly used by i3 for dialogs, tooltips or other temporary windows.</p>
-
-<h2 id='installation'>Installation</h2>
-
-<p>Is pretty straightforward. We need i3 itself and several other highly recommended apps I will describe later. In short: simple screen locker, starter menu and simple notification daemon.</p>
-
-<pre><tt># yum -y install i3 i3lock dmenu dunst</tt></pre>
-
-<p>Please note dunst is not in Fedora 17 repositories, but I have created a <a href='https://bugzilla.redhat.com/show_bug.cgi?id=852211'>review request</a>. Feel free to take it for review.</p>
-
-<p>Exit your desktop environment or window manager and log on into i3 from the GDM menu (if you use it). i3 will ask to create initial configuration during the first start. Say yes and do not worry - reloading/restarting i3 is fluent and you can do this zillions of times without loosing a single window.</p>
-
-<h2 id='i3_configuration'>i3 configuration</h2>
-
-<p>Configuration is located in <strong>.i3/config</strong>. Let’s do the walkthrough.</p>
-
-<pre><tt>set $mod Mod4</tt></pre>
-
-<p>i3 works best with a modifier key set to ALT (Mod1) or WIN (Mod4). I have a windows key on my keyboard unused anyway, so I use it as my main modifier key (with few exceptions bellow).</p>
-
-<pre><tt># font for window titles. ISO 10646 = Unicode
-font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1</tt></pre>
-
-<p>Basic font for windows titles. I was experimenting with my favourite one - Terminus - but the default (misc-fixed) works great and is narrower.</p>
-
-<pre><tt># Use Mouse+$mod to drag floating windows to their wanted position
-floating_modifier $mod</tt></pre>
-
-<p>By default windows has 1 pixel border, so it’s difficult to resize them with mouse. With this option, you can <em>move</em> windows with modifier + left click and <em>resize</em> with modifier + right click. I bet Apple patented this already, but who cares.</p>
-
-<pre><tt># start a terminal
-bindsym $mod+Return exec i3-sensible-terminal</tt></pre>
-
-<p>I am starting terminals a lot. Like fifty a day, or even more. Michael’s default configuration has this binding and I keep it. By the way i3 has several i3-* scripts (three I guess) which tries to find “the best” terminal (editor etc). In my case its urxvt and vim, but i3-* will find out from ENV variables of course.</p>
-
-<pre><tt># kill focused window
-bindsym $mod+Shift+Q kill</tt></pre>
-
-<p>As you will notice shortly, i3 does not draw any minimize, maximize and close buttons. Except the latter, they are useless. It turns out every single application has an exit path (usually using Ctrl+q or something like that), so you don’t need the [X] button. Few apps do not support it (like very old xev), you can use this shortcut that tries to close it nicely first and it kills it if it does not work.</p>
-
-<pre><tt># start dmenu (a program launcher)
-bindsym $mod+d exec dmenu_run</tt></pre>
-
-<p>Do you think there is a start menu or icons on a desktop in i3? Well, it’s a window manager. Of course not. By default it uses excellent dmenu starter and this simple wrapper that ships with it. Basically, it makes a cache of all executable applications and shows them while you type in a top bar. It’s fast. It’s awesome.</p>
-
-<pre><tt># reload/restart/exit
-bindsym $mod+Shift+C reload
-bindsym $mod+Shift+R restart
-bindsym $mod+Shift+E exit</tt></pre>
-
-<p>Few default key bindings you will like when playing with configuration.</p>
-
-<pre><tt># screen locker (first move to "safe" workspace without any chat app)
-bindsym Control+Mod1+l exec i3-msg workspace 1 && i3lock -c 111111 -d</tt></pre>
-
-<p>My invention here. Locking a screen is an easy task, but unlocking it without providing your password to other team folks via IRC channel is a challenge (for a guy in the <a href='http://pulpproject.org'>Pulp team</a> ;-) therefore I switch to the first workspace first where is <em>not</em> my IRC chat. Ever. I have to admit the issue is more when you don’t have your screen lock, but it was fun to create this key.</p>
-
-<p>Please note i3lock built into Fedora 17 does <em>NOT</em> support loading of images. The software itself is capable of loading images instead of solid color, but this feature was not built. Just stick with a solid color for now.</p>
-
-<p>By the way, you just saw i3-msg command which is distributed with i3 distribution. Every single command you see here in the bindsym and exec statements can be sent to i3 using i3-msg. You can create shell scripts with starting up applications, moving them around, changing workspaces and I can’t possibly imagine what can you do with it. Everything.</p>
-
-<pre><tt># change focus
-bindsym $mod+j focus left
-bindsym $mod+k focus down
-bindsym $mod+l focus up
-bindsym $mod+semicolon focus right
-#bindsym $mod+uring focus right</tt></pre>
-
-<p>Default configuration for moving around. Notice this is not exactly what we know from Vim (its HJKL there). I thought I will hate it, but I got used to it in two hours. The commented line is for Czech keyboard layout (there is u with ring instead of semicolon) - ignore it if you don’t use this one.</p>
-
-<pre><tt># alternatively, you can use the cursor keys:
-bindsym $mod+Left focus left
-bindsym $mod+Down focus down
-bindsym $mod+Up focus up
-bindsym $mod+Right focus right</tt></pre>
-
-<p>I sometimes use arrow keys, usually when I don’t have my hands in the working position. It is likely when I eat :-)</p>
-
-<pre><tt># move focused window
-bindsym $mod+Shift+J move left
-bindsym $mod+Shift+K move down
-bindsym $mod+Shift+L move up
-bindsym $mod+Shift+colon move right</tt></pre>
-
-<p>Moving windows around is so simple with tiling managers. Just hold shift and you drag the window there.</p>
-
-<pre><tt># alternatively, you can use the cursor keys:
-bindsym $mod+Shift+Left move left
-bindsym $mod+Shift+Down move down
-bindsym $mod+Shift+Up move up
-bindsym $mod+Shift+Right move right</tt></pre>
-
-<p>I don’t use this with arrow keys, but it’s defined by default. Why not.</p>
-
-<pre><tt># split in horizontal orientation
-bindsym $mod+h split h
-
-# split in vertical orientation
-bindsym $mod+v split v</tt></pre>
-
-<p>This is important. By default i3 splits the screen according to the screen size. For wide screens it’s usually horizontal split. You can configure this behavior if you want, but sometimes you want to split different way. That is what these bindings are for. i3 remembers that for the workspace, so you can split multiple windows easily.</p>
-
-<pre><tt># enter fullscreen mode for the focused container
-bindsym $mod+f fullscreen</tt></pre>
-
-<p>Fullscreen is something you don’t use many times with standard window managers, but in tiling mode it is pretty useful. I use it a lot when I wan’t to “zoom in” a window.</p>
-
-<pre><tt># change container layout (stacked, tabbed, default)
-bindsym $mod+s layout stacking
-bindsym $mod+w layout tabbed
-bindsym $mod+e layout default</tt></pre>
-
-<p>Unique feature of i3, I would say. Best thing what you can do is to <a href='http://i3wm.org/docs/userguide.html#_changing_the_container_layout'>see a picture</a>. You can switch from tiling (default) to tabbed and stacking mode. You can have multiple Firefox instances in windows tabs if you want to. By the way, the i3 User’s Guide is the definitive document you want to read twice.</p>
-
-<pre><tt># toggle tiling / floating
-bindsym $mod+Shift+space floating toggle</tt></pre>
-
-<p>Some applications does not work well in the tiling mode, because all windows are maximalized by default and according to your screen size and number of other containers there first application can be quite stretched. If your application looks weird, you can always switch to the floating (“normal”) mode, and back and forth with this key mapping. By default, i3 recognizes dialogs and tool windows, so you do not to switch all windows. Actually I had to switch only one application by now.</p>
-
-<pre><tt># change focus between tiling / floating windows
-bindsym $mod+space focus mode_toggle</tt></pre>
-
-<p>If you have multiple windows in tiling and floating mode, you want to switch between those two groups. You do it with this key.</p>
-
-<pre><tt># focus the parent container
-#bindsym $mod+a focus parent
-
-# focus the child container
-#bindcode $mod+d focus child</tt></pre>
-
-<p>I have to admit I never used this, because I try to keep number of windows on each workspace low (up to 6 I would say). It moves focus to parent or child window, perhaps more usable with more windows. Share your experiences with this. Notice it’s disabled because I use mod+d for the dmenu.</p>
-
-<pre><tt># next/previous workspace
-bindsym Mod1+Tab focus right
-bindsym Mod1+Shift+Tab focus left
-bindsym $mod+Tab workspace back_and_forth</tt></pre>
-
-<p>This is not standard binding, but I find Alt+Tab pretty useful combination. It’s handy (I use my right hand for mouse) and it was not used by i3. So I started using it for cycling through windows on one workspace. If you have various (horizontal and vertical splits), it does not cycle through all of them. It’s only moving in vertical movement (right - left). I wish there has been a option like “focus cycle” in the next i3 version.</p>
-
-<p>Shift does the other way around while Win+Tab switches to the last used weapon. Sorry, I said weapon? I mean workspace.</p>
-
-<pre><tt># switch to workspace
-bindsym $mod+ampersand workspace 1
-bindsym $mod+eacute workspace 2
-bindsym $mod+quotedbl workspace 3
-bindsym $mod+apostrophe workspace 4
-bindsym $mod+parenleft workspace 5
-bindsym $mod+minus workspace 6
-bindsym $mod+egrave workspace 7
-bindsym $mod+underscore workspace 8
-bindsym $mod+ccedilla workspace 9
-bindsym $mod+agrave workspace 10
-#bindsym $mod+1 workspace 1
-#bindsym $mod+2 workspace 2
-#bindsym $mod+3 workspace 3
-#bindsym $mod+4 workspace 4
-#bindsym $mod+5 workspace 5
-#bindsym $mod+6 workspace 6
-#bindsym $mod+7 workspace 7
-#bindsym $mod+8 workspace 8
-#bindsym $mod+9 workspace 9
-#bindsym $mod+0 workspace 10
-
-# switch to workspace (f1-f4)
-bindsym F1 workspace 1
-bindsym F2 workspace 2
-bindsym F3 workspace 3
-bindsym F4 workspace 4
-bindsym Mod1+F1 workspace 5
-bindsym Mod1+F2 workspace 6
-bindsym Mod1+F3 workspace 7
-bindsym Mod1+F4 workspace 8</tt></pre>
-
-<p>Okay, the first block is default binding. But for many years I decided to leverage F1-F4 keys for workspace movement. Until now, I was using only four workspaces (OpenBox, KDE/GNOME, Fluxbox and XFce), but with i3 and its good support of multiple screens I can afford eight now. Each screen has four independent workspaces.</p>
-
-<p>Please note the commented part is for Czech layout, therefore if you use this layout uncomment it and delete the above.</p>
-
-<p>Now let me explain <em>function keys</em> a bit. First of all I realized many years ago that no one (including me) ever use F1 key. It’s reserved, it’s for help. But everybody is googling these days instead searching through built-in docs. The same for F2, F3 and F4. Maybe some IDEs offer some important stuff, but I use Vim that has no function keys binding. That is the reason why I gave up with those keys and use them for workspace switching.</p>
-
-<p>With i3 I have decided also to map Alt+F1-F4 for accessing numbers five to eight. It just seem natural for me now. I am giving up with Alt-F2 (Run App in GNOME) or Alt-F4 (Close App), but this does no work in i3 anymore. Few apps still react on Alt-F4, but there is a different combination available for that.</p>
-
-<p>If you occasionally need those keys, you can create a re-mapping that would trigger them with Win+F1-F4 keys. But in terminals you can always use ESC combination (ESC;1 for F1). I don’t use any X11 application that needs that.</p>
-
-<p>Therefore workspaces 1-4 are on the laptop screen (LDVS1) and 5-8 are on the main monitor (HDMI1). And there is one workspace hidden called scratch one. More about it later.</p>
-
-<pre><tt># move focused container to workspace
-bindsym $mod+Shift+1 move container to workspace 1
-bindsym $mod+Shift+2 move container to workspace 2
-bindsym $mod+Shift+3 move container to workspace 3
-bindsym $mod+Shift+4 move container to workspace 4
-bindsym $mod+Shift+5 move container to workspace 5
-bindsym $mod+Shift+6 move container to workspace 6
-bindsym $mod+Shift+7 move container to workspace 7
-bindsym $mod+Shift+8 move container to workspace 8
-bindsym $mod+Shift+9 move container to workspace 9
-bindsym $mod+Shift+0 move container to workspace 10</tt></pre>
-
-<p>Default setting for transferring windows (containers) among workspaces. Those works for both Czech and English layout and are installed by default.</p>
-
-<pre><tt># border changing
-bindsym $mod+b border toggle</tt></pre>
-
-<p>I cycle through normal, 1pixel and none values with this keybinding. By default it’s bound to mod+t, mod+y and mod+u.</p>
-
-<pre><tt># scratchpad
-bindsym $mod+m move scratchpad
-bindsym $mod+o scratchpad show</tt></pre>
-
-<p>Now THIS is cool. There is one hidden workspace that is nowhere and everywhere. It’s empty by default, thus invisible. You can move there any window you want with mod+m. Container is switched over to floating mode and it’s centered on the screen giving it some decent size. Than you can quickly show this window with mod+o key. If you hit it twice, it disappears.</p>
-
-<p>This is cool feature, I like to have an extra terminal there for quick looks while I am working. Maybe you want your favourite e-mail application there. Or something other you want to keep hidden<code>n</code>handy.</p>
-
-<p>Please note floating applications always stays on top of tiled containers. So scratchpad is not intended for long tasks. It’s better for short tasks you need to do many times a day. Oh, you can open scratchpad on top of any workspace you want. This is also great for copy and paste.</p>
-
-<pre><tt># resize window (you can also use the mouse for that)
-mode "resize" {
- # These bindings trigger as soon as you enter the resize mode
- bindsym j resize shrink width 10 px or 10 ppt
- bindsym k resize grow height 10 px or 10 ppt
- bindsym l resize shrink height 10 px or 10 ppt
- bindsym semicolon resize grow width 10 px or 10 ppt
- #bindsym uring resize grow width 10 px or 10 ppt
-
- # same bindings, but for the arrow keys
- bindsym 113 resize shrink width 10 px or 10 ppt
- bindsym 116 resize grow height 10 px or 10 ppt
- bindsym 111 resize shrink height 10 px or 10 ppt
- bindsym 114 resize grow width 10 px or 10 ppt
-
- # back to normal: Enter or Escape
- bindsym Return mode "default"
- bindsym Escape mode "default"
-}
-
-bindsym $mod+r mode "resize"</tt></pre>
-
-<p>I like to resize windows with mouse, but with keys it’s more fun and also much faster. I need to get used to it. You enter resize mode with mod+r combination, then usint JKL and semicolon (note uring for my Czech layout) you change the window size. And than you <em>must</em> switch back to the normal mode with ESC or ENTER key. Standard key bindings are not available in the resize mode and you will notice why nothing is working. Remember, you <em>need to return</em>.</p>
-
-<p>I bet you can create your own modes like “work” and “fun” with totally different key bindings. Never tried this.</p>
-
-<pre><tt># pulse audio volume control
-bindsym XF86AudioLowerVolume exec /usr/bin/pactl set-sink-volume 0 -- '-5%'
-bindsym XF86AudioRaiseVolume exec /usr/bin/pactl set-sink-volume 0 -- '+5%'
-bindsym XF86AudioMute exec /usr/bin/pactl set-sink-volume 0 0
-bindsym XF86Launch1 exec /usr/bin/pactl play-sample that_was_easy
-bindsym XF86MonBrightnessUp exec /usr/bin/xbacklight -inc 10
-bindsym XF86MonBrightnessDown exec /usr/bin/xbacklight -dec 5</tt></pre>
-
-<p>Few ThinkPad laptop key bindings for controlling volume, brightness and ThinkVantage for playing That Was Easy (TM) sample just for fun. I don’t use laptop keyboard much.</p>
-
-<pre><tt># $mod+n reserved for close all notifications
-# see ~/.config/dunst/dunstrc for more</tt></pre>
-
-<p>Just a note for myself not to override mod+n which is used by dunst. More about it later.</p>
-
-<pre><tt># one bar on both screens
-bar {
- position top
- mode hide
- modifier $mod
- status_command i3status
- tray_output LVDS1
-}</tt></pre>
-
-<p>i3 uses i3bar application to draw a very minimalistic bar that can be positioned on the top or bottom of the screen (all screens by default). I like having my bar on top. Content of the bar is delivered with an external program using IPC - i3status in my case. More about its configuration later.</p>
-
-<p>Only one bar can contain tray area - laptop screen in my case. The bar is very thin, tray icons are also small. I like it. The “mode hide” statement hides the bar and opens it once I hit “modifier” key, or on a workspace highlight. By the way when the bar is hidden, i3 also notifies the i3status program so it’s not feeding with data to save CPU time and thus battery.</p>
-
-<p>By default i3bar shows workspaces and you can switch them with a mouse. It’s good not to disable this (even if you don’t use mouse for that) just to have a nice overview about all workspaces which are kind a dynamic (like in GNOME 3), they appear once you move there for the first time and disappear when you leave it (and there is no other container on it). Therefore you can work with them like in GNOME 3 if you want. I have my numbers 9 and 10 ready for that.</p>
-
-<pre><tt># workspace screens
-workspace 1 output HDMI1
-workspace 2 output HDMI1
-workspace 3 output HDMI1
-workspace 4 output HDMI1
-workspace 5 output LVDS1
-workspace 6 output LVDS1
-workspace 7 output LVDS1
-workspace 8 output LVDS1</tt></pre>
-
-<p>i3 works <strong>very well</strong> with multiple monitors. The default behavior is where you create a workspace it stays there forever, or until you disconnect the screen respectively. Therefore it’s up to you where you create your workspaces.</p>
-
-<p>I like to have an order in this, workspaces 1-4 are on the main screen, 5-8 are on the laptop. Therefore I explicitly say this in my configuration. By the way you can easily move workspaces across screens, but I don’t use any key bindings for that.</p>
-
-<p>When you disconnect your laptop from dock, everything stays “as is” until xrandr notice the screen is off. This is not by default and I like this behavior (depends on your distribution). You can switch off the screen using xranrd command, but sometimes I prefer to attend a meeting or something and then returning without <em>any</em> change (having workspaces on the main screen invisible for a while). I like to have an option in this case. Of course once i3 determines screen has been turned off using xrandr, it moves all workspaces to the remaining screen.</p>
-
-<p>You can also do this manually with <em>i3-msg workspace N output OUTPUT</em> therefore I created two bash scripts dock and undock that transfers all my workspaces in/out of LDVDS1. This is awesome, I really love this feature. I have never seen a window manager that plays THAT nicely with multiple screens.</p>
-
-<pre><tt># workspace assignment (use "xprop")
-assign [class="^Google-chrome$"] 3
-assign [class="^URxvt$" instance="^mail$"] 4
-assign [class="^Xchat$"] 5
-assign [class="^Rednotebook$"] 6
-assign [class="^Decibel-audio-player.py$"] 7
-assign [title="Lingea Lexicon 5$"] 8
-
-# custom window settings
-for_window [class="^URxvt$" instance="scratchpad"] border 1pixel; move scratchpad
-for_window [class="^Google-chrome$"] border none
-for_window [title="Lingea Lexicon 5$"] border none
-
-# get elluminate working
-for_window [title="^Elluminate Live!"] floating enable
-for_window [title="^Application Sharing"] floating enable
-for_window [class="^net-sourceforge-jnlp-runtime-Boot$" title="^Downloading"] floating enable</tt></pre>
-
-<p>In this block, I force some applications to start on specific screens. You can see apps that I use everyday. IRC chat, notebook, audio player, dictionary, browser and that’s it.</p>
-
-<p>Than if I start a terminal with the name of “scratchpad” it changes its border to 1pixel and moves to the background – scratchpad, remember? This is cool.</p>
-
-<p>And I need to use Elluminate application for desktop sharing and meetings. It’s a Java application that does not look nice in the tiled mode, therefore I force it into floating mode. Good news is it is working actually, if you use it with Sun JRE. There are not many window managers Elluminate is working in, seriously.</p>
-
-<pre><tt># before autostart
-exec --no-startup-id pactl upload-sample ~/.i3/that_was_easy.wav that_was_easy
-exec urxvt -name scratchpad -e bash
-exec ~/.i3/autostart
-
-# autostart
-exec google-chrome
-exec urxvt -name mail -e bash -c "mutt"
-exec xchat
-exec rednotebook
-exec decibel-audio-player
-exec lexicon</tt></pre>
-
-<p>The last block is just auto starting some applications during startup. I load the funny sample, open a scratchpad terminal (which goes to the background automatically) and then I start a shell script with additional commands. I could put this into .xinitrc, but I keep it here. And then some applications.</p>
-
-<p>When I start my laptop, I get the same. Everyday. Cool, isn’t it?</p>
-
-<h2 id='autostart'>Autostart</h2>
-
-<p>My autostart script triggers some settings and spawns some daemons. It’s totally optional in i3, you could do everything using “exec” commands, but I leveraged my old xinitrc script for that. Let’s do the showcase again.</p>
-
-<pre><tt>#!/bin/sh
-
-## Desktop background color
-xsetroot -solid '#101010' &</tt></pre>
-
-<p>Again, i3 is a window manager, not a desktop environment. I don’t like “wallpapers, I just set a decent color here.</p>
-
-<pre><tt>## Set startup volume
-pactl set-sink-volume 0 '20%' &</tt></pre>
-
-<p>I hate random volume after start. Can cause injuries with my speakers. Every time I start my laptop, volume is set to 20 per cent.</p>
-
-<pre><tt>## Disable beeps
-xset -b &</tt></pre>
-
-<p>Don’t like PC-speaker beeping at all.</p>
-
-<pre><tt>## Keybord layout setting
-setxkbmap -layout cz,us -option grp:shift_shift_toggle &</tt></pre>
-
-<p>I told you – Czech layout.</p>
-
-<pre><tt>## DPMS monitor setting (standby -> suspend -> off) (seconds)
-xset dpms 300 600 900 &</tt></pre>
-
-<p>I do not use screen “savers”, blank it after 5 minutes, suspend and then go off after 5+5 minutes. THIS is screen saving.</p>
-
-<pre><tt>## Set LCD brightness
-xbacklight -set 90 &</tt></pre>
-
-<p>The same story as with volume, backlight set to 90 % after start.</p>
-
-<pre><tt>## Clipboard manager
-LC_ALL=C parcellite &</tt></pre>
-
-<p>Parcellite clipboard manager is widely used, and I love it for my patches that strips whitespace. Go ahead, try it and enable this feature in the preferences. Czech translation is totally wrong, therefore I start it in English.</p>
-
-<pre><tt>## OSD
-dunst &</tt></pre>
-
-<p>And notification daemon. More about it later.</p>
-
-<h2 id='bar'>Bar</h2>
-
-<p>As I described earlier, i3bar program uses i3status – lightweight status generator designed to be very efficient by issuing a very small number of system calls. No scripting support, no external commands. Communication with i3bar is very simple using pipes, if you really need an external command, you can create a wrapper that adds some more info to the i3status output.</p>
-
-<p>Configuration is pretty straightforward, I will not comment that. I refresh the status line every four seconds, but my bar is hidden most of time, therefore refreshing is suspended which saves you even more cpu ticks!</p>
-
-<pre><tt>general {
- colors = true
- interval = 4
-}
-
-order += "disk /home"
-order += "disk /"
-order += "run_watch VPN"
-order += "wireless wlan0"
-order += "ethernet em1"
-order += "battery 0"
-order += "volume master"
-order += "load"
-order += "time"
-
-wireless wlan0 {
- format_up = "W: (%quality at %essid) %ip"
- format_down = "W: down"
-}
-
-ethernet em1 {
- # sudo setcap cap_net_admin=ep $(which i3status)
- format_up = "E: %ip (%speed)"
- format_down = "E: down"
-}
-
-battery 0 {
- format = "%status %percentage %remaining"
-}
-
-run_watch VPN {
- pidfile = "/var/run/openvpn.pid"
-}
-
-time {
- format = "%d.%m.%Y %H:%M"
-}
-
-load {
- format = "%1min"
-}
-
-disk "/" {
- format = "%free"
-}
-
-disk "/home" {
- format = "%free"
-}
-
-volume master {
- format = "♪: %volume"
- device = "default"
- mixer = "Master"
- mixer_idx = 0
-}</tt></pre>
-
-<p>To test it, you can just run <em>i3status</em>. It will fall back to simple text output (real communication with i3bar is with colors):</p>
-
-<pre><tt>$ i3status
-132,1 GB | 56,2 GB | VPN: yes | W: down | E: 192.168.1.1 (1000 Mbit/s) | FULL 55,92% | ♪: 63% | 1,56 | 28.08.2012 19:46</tt></pre>
-
-<p>As you may noticed, my ThinkPad battery is dying.</p>
-
-<h2 id='osd'>OSD</h2>
-
-<p>I use dunst as a notification daemon. It’s very simple and it looks like a dmenu. The configuration is stored in <em>~/.config/dunst/dunstrc</em> and the default one works great. And it also plays well with multi-monitor setups - you can choose screen to show notifications on and it can also follow your mouse or keyboard (pops up on the screen you actually work on).</p>
-
-<p>Dunst can group same messages, stack them, sort them by urgency, wrap words and keep messages when computer is in idle (so you would miss them). One can configure colors, format and other basic things for the pop up windows.</p>
-
-<p>I took the default configuration from <em>/usr/share/dunst/dunstrc</em> and kept the sane defaults. The most important setting change for me was:</p>
-
-<pre><tt>close_all = mod4+n</tt></pre>
-
-<p>I use Win+n to close all notifications. Nice.</p>
-
-<h2 id='wrapup'>Wrap-up</h2>
-
-<p>Okay, I think I showed you <a href='http://i3wm.org'>i3</a>. Highly recommended tiling window manager. Share your opinions on this page with me!</p>
-
-<p><strong>Update</strong>: I have pushed all my configuration files to <a href='https://github.com/lzap/doti3'>git repository</a>.</p>
--- /dev/null
+---
+layout: default
+title: Docs
+group: Docs
+---
+<div id="content" class="usergen">
+<h1>User-contributed article: enhanced and extensible i3bar with py3status</h1>
+
+<p>
+In the i3 documentation, the recommended tool for <a
+href="http://i3wm.org/docs/userguide.html#_displaying_a_status_line">displaying
+a status line is to use i3status</a> combined with i3bar.
+</p>
+
+<p>
+While i3status is very efficient at what it does, it is by design limited to
+a few modules and does not allow you to inject your own scripts output on your
+i3bar. This is said pretty clearly on the i3status man page:
+</p>
+
+<pre><tt>In i3status, we don’t want to implement process management again.
+Therefore, there is no module to run arbitrary scripts or commands.
+Instead, you should use your shell.</tt></pre>
+
+<h2>Introducing py3status</h2>
+
+<p>
+The goal of py3status is to fill this gap by allowing users to simply extend
+their i3bar while preserving their current i3status configuration. The main idea
+is to rely on i3status' strengths without adding any configuration on the user's
+side. py3status is thus a wrapper script for i3status and you can
+<a href="https://github.com/ultrabug/py3status/wiki"> read more on the wiki</a>.
+</p>
+
+<h2>Requirements</h2>
+
+<p>
+To achieve this, py3status uses the <a
+href="http://i3wm.org/docs/i3bar-protocol.html">i3bar protocol</a> so your
+i3status.conf should specify this as its output_format.
+</p>
+
+<pre><tt>general {
+ output_format = "i3bar"
+}</tt></pre>
+
+<h2>Usage</h2>
+
+<p>
+Using py3status is easy, no need to multi-pipe your scripts after i3status.
+Instead, just replace i3status in your current status_command by py3status.
+For example, if you're using your own i3status.conf, you need to change your
+i3 config file with:
+</p>
+
+<pre><tt>status_command py3status -c ~/.i3/i3status.conf</tt></pre>
+
+<h2>Display your own stuff</h2>
+
+<p>
+py3status features a simple and straightforward plugin system which you can use
+to get your own output displayed on your i3bar. You can read more and view some
+examples <a
+href="https://github.com/ultrabug/py3status/wiki/Write-your-own-modules"> on the
+wiki</a>.
+</p>
+
+<h2>Documentation</h2>
+
+<p>
+You can read the full and up to date documentation on the <a
+href="https://github.com/ultrabug/py3status">py3status home page</a>.
+</p>
+++ /dev/null
-<%!
- section = "docs"
-%>
-<%inherit file="_templates/i3.mako" />
-<div id="content" class="usergen">
-<h1>User-contributed article: enhanced and extensible i3bar with py3status</h1>
-
-<p>
-In the i3 documentation, the recommended tool for <a
-href="http://i3wm.org/docs/userguide.html#_displaying_a_status_line">displaying
-a status line is to use i3status</a> combined with i3bar.
-</p>
-
-<p>
-While i3status is very efficient at what it does, it is by design limited to
-a few modules and does not allow you to inject your own scripts output on your
-i3bar. This is said pretty clearly on the i3status man page:
-</p>
-
-<pre><tt>In i3status, we don’t want to implement process management again.
-Therefore, there is no module to run arbitrary scripts or commands.
-Instead, you should use your shell.</tt></pre>
-
-<h2>Introducing py3status</h2>
-
-<p>
-The goal of py3status is to fill this gap by allowing users to simply extend
-their i3bar while preserving their current i3status configuration. The main idea
-is to rely on i3status' strengths without adding any configuration on the user's
-side. py3status is thus a wrapper script for i3status and you can
-<a href="https://github.com/ultrabug/py3status/wiki"> read more on the wiki</a>.
-</p>
-
-<h2>Requirements</h2>
-
-<p>
-To achieve this, py3status uses the <a
-href="http://i3wm.org/docs/i3bar-protocol.html">i3bar protocol</a> so your
-i3status.conf should specify this as its output_format.
-</p>
-
-<pre><tt>general {
- output_format = "i3bar"
-}</tt></pre>
-
-<h2>Usage</h2>
-
-<p>
-Using py3status is easy, no need to multi-pipe your scripts after i3status.
-Instead, just replace i3status in your current status_command by py3status.
-For example, if you're using your own i3status.conf, you need to change your
-i3 config file with:
-</p>
-
-<pre><tt>status_command py3status -c ~/.i3/i3status.conf</tt></pre>
-
-<h2>Display your own stuff</h2>
-
-<p>
-py3status features a simple and straightforward plugin system which you can use
-to get your own output displayed on your i3bar. You can read more and view some
-examples <a
-href="https://github.com/ultrabug/py3status/wiki/Write-your-own-modules"> on the
-wiki</a>.
-</p>
-
-<h2>Documentation</h2>
-
-<p>
-You can read the full and up to date documentation on the <a
-href="https://github.com/ultrabug/py3status">py3status home page</a>.
-</p>
--- /dev/null
+---
+layout: default
+title: Docs
+group: Docs
+---
+<div id="content" class="usergen">
+<h1>User-contributed article: Swapping workspaces</h1>
+
+<p>
+If you have workspace 1 on one monitor and workspace 2 on another monitor and
+want to quickly swap the workspaces among the monitors, you can use i3's IPC
+mechanisms to do it. Here's how:
+</p>
+
+<p>
+i3 already includes a way to move an individual workspace from one monitor to
+another. But what we want to achieve is the <strong>simultaneous</strong>
+movement of workspaces between the monitors. To do this, we can write a script
+that detects the currently active workspace on each monitor and then moves that
+workspace to the other monitor.
+</p>
+
+<p>
+The script uses i3's <a href="http://i3wm.org/docs/ipc.html">IPC</a> via the
+<a href="https://github.com/ziberna/i3-py">i3-py Python bindings</a>.
+</p>
+
+<pre><tt>#!/usr/bin/python2.7
+
+import i3
+outputs = i3.get_outputs()
+
+# set current workspace to output 0
+i3.workspace(outputs[0]['current_workspace'])
+
+# ..and move it to the other output.
+# outputs wrap, so the right of the right is left ;)
+i3.command('move', 'workspace to output right')
+
+# rinse and repeat
+i3.workspace(outputs[1]['current_workspace'])
+i3.command('move', 'workspace to output right')</tt></pre>
+
+<p>
+A very simple way to use this script is as follows: Put the script in a file,
+named for example switch.py, and put switch.py and i3.py (downloaded from the
+<a href="https://github.com/ziberna/i3-py">Python bindings site</a>) in the
+same folder. I typically put it in $HOME/.i3/, the same directory which
+contains i3's config file. Next, put a keybinding like
+</p>
+<pre><tt>bindsym $mod+Shift+s exec /home/username/.i3/switch.py</tt></pre>
+<p>
+in i3's config file and restart i3 in place. The next time you press
+mod+Shift+s, your workspaces will be swapped among your monitors.
+</p>
+
+<p>Author: Sagar Behere</p>
+++ /dev/null
-<%!
- section = "docs"
-%>
-<%inherit file="_templates/i3.mako" />
-<div id="content" class="usergen">
-<h1>User-contributed article: Swapping workspaces</h1>
-
-<p>
-If you have workspace 1 on one monitor and workspace 2 on another monitor and
-want to quickly swap the workspaces among the monitors, you can use i3's IPC
-mechanisms to do it. Here's how:
-</p>
-
-<p>
-i3 already includes a way to move an individual workspace from one monitor to
-another. But what we want to achieve is the <strong>simultaneous</strong>
-movement of workspaces between the monitors. To do this, we can write a script
-that detects the currently active workspace on each monitor and then moves that
-workspace to the other monitor.
-</p>
-
-<p>
-The script uses i3's <a href="http://i3wm.org/docs/ipc.html">IPC</a> via the
-<a href="https://github.com/ziberna/i3-py">i3-py Python bindings</a>.
-</p>
-
-<pre><tt>#!/usr/bin/python2.7
-
-import i3
-outputs = i3.get_outputs()
-
-# set current workspace to output 0
-i3.workspace(outputs[0]['current_workspace'])
-
-# ..and move it to the other output.
-# outputs wrap, so the right of the right is left ;)
-i3.command('move', 'workspace to output right')
-
-# rinse and repeat
-i3.workspace(outputs[1]['current_workspace'])
-i3.command('move', 'workspace to output right')</tt></pre>
-
-<p>
-A very simple way to use this script is as follows: Put the script in a file,
-named for example switch.py, and put switch.py and i3.py (downloaded from the
-<a href="https://github.com/ziberna/i3-py">Python bindings site</a>) in the
-same folder. I typically put it in $HOME/.i3/, the same directory which
-contains i3's config file. Next, put a keybinding like
-</p>
-<pre><tt>bindsym $mod+Shift+s exec /home/username/.i3/switch.py</tt></pre>
-<p>
-in i3's config file and restart i3 in place. The next time you press
-mod+Shift+s, your workspaces will be swapped among your monitors.
-</p>
-
-<p>Author: Sagar Behere</p>
--- /dev/null
+---
+layout: default
+title: downloads
+require_jquery: true
+javascript: downloads.min.js
+js_callback: initDownloads();
+---
+
+<div id="content">
+
+<h2>Distributions</h2>
+
+<p>
+Please use the i3 packages provided by the distribution you are using. i3 is
+currently distributed in the following operating systems/distributions:
+</p>
+
+<div id="distributions">
+{% include downloadlogo.html title="Debian GNU/Linux" link="http://packages.debian.org/sid/i3" img="/img/debian.svg" height=93 %}
+{% include downloadlogo.html title="Arch Linux" link="http://www.archlinux.org/packages/community/x86_64/i3-wm/" img="/img/archlinux.svg" height=75 %}
+{% include downloadlogo.html title="Gentoo Linux" link="http://packages.gentoo.org/package/x11-wm/i3" img="/img/gentoo-logo.svg" height=79 %}
+{% include downloadlogo.html title="Ubuntu Linux" link="http://packages.ubuntu.com/i3" img="/img/ubuntu.svg" height=75 %}
+{% include downloadlogo.html title="FreeBSD" link="http://www.freebsd.org/cgi/cvsweb.cgi/ports/x11-wm/i3/" img="/img/freebsd.png" height=59 %}
+{% include downloadlogo.html title="NetBSD" link="http://pkgsrc.se/wip/i3" img="/img/netbsd_logo.svg" height=56 %}
+<br>
+{% include downloadlogo.html title="OpenBSD" link="http://www.openbsd.org/cgi-bin/cvsweb/ports/x11/i3/" img="/img/Openbsd2.png" height=49 %}
+{% include downloadlogo.html title="openSUSE" link="http://software.opensuse.org/package/i3" img="/img/opensuse.svg" height=48 %}
+{% include downloadlogo.html title="Mageia" link="http://mageia.madb.org/package/show/application/0/name/i3" img="/img/mageia.png" height=85 %}
+{% include downloadlogo.html title="Fedora" link="https://admin.fedoraproject.org/pkgdb/acls/name/i3" img="/img/fedora.svg" height=75 %}
+{% include downloadlogo.html title="Exherbo" link="http://git.exherbo.org/summer/packages/x11-wm/i3/index.html" img="/img/exherbo.svg" height=85 %}
+{% include downloadlogo.html title="Pibang Linux" link="http://pibanglinux.org/" img="/img/pibang.png" height=61 %}
+<br>
+{% include downloadlogo.html title="Slackware" link="http://slackbuilds.org/desktop/i3/" img="/img/slackware.svg" height=75 %}
+</div>
+
+<p>
+We also provide <a href="/docs/repositories.html">Debian and Ubuntu repositories</a> with up-to-date packages.
+</p>
+
+<h2>Downloads</h2>
+
+<p>
+ The current stable version is 4.8.
+</p>
+
+<p>
+ <strong>IMPORTANT:</strong> If you use the nVidia binary driver, ensure you
+ are using version 302.17 or newer. Read <a
+ href="/docs/multi-monitor.html">this document</a> for an explanation and how
+ to enable the work-around for older versions.
+</p>
+
+<table width="100%" id="downloads">
+ <thead>
+ <tr>
+ <th>Version</th>
+ <th>Download</th>
+ <th>Size</th>
+ <th>Signature</th>
+ <th>Release date</th>
+ <th>Release notes</th>
+ </tr>
+ </thead>
+
+ <tbody>
+ <tr>
+ <td>4.8</td>
+ <td><a href="/downloads/i3-4.8.tar.bz2">i3-4.8.tar.bz2</a></td>
+ <td>918 KiB</td>
+ <td><a href="/downloads/i3-4.8.tar.bz2.asc">signature</a></td>
+ <td>2014-06-15</td>
+ <td><a href="/downloads/RELEASE-NOTES-4.8.txt">release notes</a></td>
+ </tr>
+
+ <tr>
+ <td>4.7.2</td>
+ <td><a href="/downloads/i3-4.7.2.tar.bz2">i3-4.7.2.tar.bz2</a></td>
+ <td>877 KiB</td>
+ <td><a href="/downloads/i3-4.7.2.tar.bz2.asc">signature</a></td>
+ <td>2014-01-23</td>
+ <td><a href="/downloads/RELEASE-NOTES-4.7.2.txt">release notes</a></td>
+ </tr>
+
+ <tr>
+ <td>4.7.1</td>
+ <td><a href="/downloads/i3-4.7.1.tar.bz2">i3-4.7.1.tar.bz2</a></td>
+ <td>877 KiB</td>
+ <td><a href="/downloads/i3-4.7.1.tar.bz2.asc">signature</a></td>
+ <td>2014-01-21</td>
+ <td><a href="/downloads/RELEASE-NOTES-4.7.1.txt">release notes</a></td>
+ </tr>
+
+ <tr>
+ <td>4.7</td>
+ <td><a href="/downloads/i3-4.7.tar.bz2">i3-4.7.tar.bz2</a></td>
+ <td>876 KiB</td>
+ <td><a href="/downloads/i3-4.7.tar.bz2.asc">signature</a></td>
+ <td>2013-12-22</td>
+ <td><a href="/downloads/RELEASE-NOTES-4.7.txt">release notes</a></td>
+ </tr>
+
+ <tr>
+ <td>4.6</td>
+ <td><a href="/downloads/i3-4.6.tar.bz2">i3-4.6.tar.bz2</a></td>
+ <td>871 KiB</td>
+ <td><a href="/downloads/i3-4.6.tar.bz2.asc">signature</a></td>
+ <td>2013-08-07</td>
+ <td><a href="/downloads/RELEASE-NOTES-4.6.txt">release notes</a></td>
+ </tr>
+
+ <tr>
+ <td>4.5.1</td>
+ <td><a href="/downloads/i3-4.5.1.tar.bz2">i3-4.5.1.tar.bz2</a></td>
+ <td>859 KiB</td>
+ <td><a href="/downloads/i3-4.5.1.tar.bz2.asc">signature</a></td>
+ <td>2013-03-18</td>
+ <td><a href="/downloads/RELEASE-NOTES-4.5.1.txt">release notes</a></td>
+ </tr>
+
+ <tr>
+ <td>4.5</td>
+ <td><a href="/downloads/i3-4.5.tar.bz2">i3-4.5.tar.bz2</a></td>
+ <td>859 KiB</td>
+ <td><a href="/downloads/i3-4.5.tar.bz2.asc">signature</a></td>
+ <td>2013-03-12</td>
+ <td><a href="/downloads/RELEASE-NOTES-4.5.txt">release notes</a></td>
+ </tr>
+
+ <tr class="oldversion">
+ <td>4.4</td>
+ <td><a href="/downloads/i3-4.4.tar.bz2">i3-4.4.tar.bz2</a></td>
+ <td>864 KiB</td>
+ <td><a href="/downloads/i3-4.4.tar.bz2.asc">signature</a></td>
+ <td>2012-12-12</td>
+ <td><a href="/downloads/RELEASE-NOTES-4.4.txt">release notes</a></td>
+ </tr>
+
+ <tr class="oldversion">
+ <td>4.3</td>
+ <td><a href="/downloads/i3-4.3.tar.bz2">i3-4.3.tar.bz2</a></td>
+ <td>833 KiB</td>
+ <td><a href="/downloads/i3-4.3.tar.bz2.asc">signature</a></td>
+ <td>2012-09-19</td>
+ <td><a href="/downloads/RELEASE-NOTES-4.3.txt">release notes</a></td>
+ </tr>
+
+ <tr class="oldversion">
+ <td>4.2</td>
+ <td><a href="/downloads/i3-4.2.tar.bz2">i3-4.2.tar.bz2</a></td>
+ <td>741 KiB</td>
+ <td><a href="/downloads/i3-4.2.tar.bz2.asc">signature</a></td>
+ <td>2012-04-25</td>
+ <td><a href="/downloads/RELEASE-NOTES-4.2.txt">release notes</a></td>
+ </tr>
+
+ <tr class="oldversion">
+ <td>4.1.2</td>
+ <td><a href="/downloads/i3-4.1.2.tar.bz2">i3-4.1.2.tar.bz2</a></td>
+ <td>550 KiB</td>
+ <td><a href="/downloads/i3-4.1.2.tar.bz2.asc">signature</a></td>
+ <td>2012-01-27</td>
+ <td><a href="/downloads/RELEASE-NOTES-4.1.2.txt">release notes</a></td>
+ </tr>
+
+ <tr class="oldversion">
+ <td>4.1.1</td>
+ <td><a href="/downloads/i3-4.1.1.tar.bz2">i3-4.1.1.tar.bz2</a></td>
+ <td>551 KiB</td>
+ <td><a href="/downloads/i3-4.1.1.tar.bz2.asc">signature</a></td>
+ <td>2011-12-24</td>
+ <td><a href="/downloads/RELEASE-NOTES-4.1.1.txt">release notes</a></td>
+ </tr>
+
+ <tr class="oldversion">
+ <td>4.1</td>
+ <td><a href="/downloads/i3-4.1.tar.bz2">i3-4.1.tar.bz2</a></td>
+ <td>551 KiB</td>
+ <td><a href="/downloads/i3-4.1.tar.bz2.asc">signature</a></td>
+ <td>2011-11-11</td>
+ <td><a href="/downloads/RELEASE-NOTES-4.1.txt">release notes</a></td>
+ </tr>
+
+ <tr class="oldversion">
+ <td>4.0.2</td>
+ <td><a href="/downloads/i3-4.0.2.tar.bz2">i3-4.0.2.tar.bz2</a></td>
+ <td>465 KiB</td>
+ <td><a href="/downloads/i3-4.0.2.tar.bz2.asc">signature</a></td>
+ <td>2011-08-28</td>
+ <td><a href="/downloads/RELEASE-NOTES-4.0.2.txt">release notes</a></td>
+ </tr>
+
+ <tr class="oldversion">
+ <td>4.0.1</td>
+ <td><a href="/downloads/i3-4.0.1.tar.bz2">i3-4.0.1.tar.bz2</a></td>
+ <td>462 KiB</td>
+ <td><a href="/downloads/i3-4.0.1.tar.bz2.asc">signature</a></td>
+ <td>2011-08-01</td>
+ <td><a href="/downloads/RELEASE-NOTES-4.0.1.txt">release notes</a></td>
+ </tr>
+
+ <tr class="oldversion">
+ <td>4.0</td>
+ <td><a href="/downloads/i3-4.0.tar.bz2">i3-4.0.tar.bz2</a></td>
+ <td>462 KiB</td>
+ <td><a href="/downloads/i3-4.0.tar.bz2.asc">signature</a></td>
+ <td>2011-07-31</td>
+ <td><a href="/downloads/RELEASE-NOTES-4.0.txt">release notes</a></td>
+ </tr>
+
+ <tr class="oldversion">
+ <td>3.ε-bf3</td>
+ <td><a href="/downloads/i3-3.e-bf3.tar.bz2">i3-3.e-bf3.tar.bz2</a></td>
+ <td>353 KiB</td>
+ <td><a href="/downloads/i3-3.e-bf3.tar.bz2.asc">signature</a></td>
+ <td>2011-05-08</td>
+ <td><a href="/downloads/RELEASE-NOTES-3.e-bf3.txt">release notes</a></td>
+ </tr>
+
+ <tr class="oldversion">
+ <td>3.ε-bf2</td>
+ <td><a href="/downloads/i3-3.e-bf2.tar.bz2">i3-3.e-bf2.tar.bz2</a></td>
+ <td>285 KiB</td>
+ <td><a href="/downloads/i3-3.e-bf2.tar.bz2.asc">signature</a></td>
+ <td>2011-01-19</td>
+ <td><a href="/downloads/RELEASE-NOTES-3.e-bf2.txt">release notes</a></td>
+ </tr>
+
+ <tr class="oldversion">
+ <td>3.ε-bf1</td>
+ <td><a href="/downloads/i3-3.e-bf1.tar.bz2">i3-3.e-bf1.tar.bz2</a></td>
+ <td>285 KiB</td>
+ <td><a href="/downloads/i3-3.e-bf1.tar.bz2.asc">signature</a></td>
+ <td>2010-06-09</td>
+ <td><a href="/downloads/RELEASE-NOTES-3.e-bf1.txt">release notes</a></td>
+ </tr>
+
+ <tr class="oldversion">
+ <td>3.ε</td>
+ <td><a href="/downloads/i3-3.e.tar.bz2">i3-3.e.tar.bz2</a></td>
+ <td>271 KiB</td>
+ <td><a href="/downloads/i3-3.e.tar.bz2.asc">signature</a></td>
+ <td>2010-03-30</td>
+ <td><a href="/downloads/RELEASE-NOTES-3.e.txt">release notes</a></td>
+ </tr>
+
+ <tr class="oldversion">
+ <td>3.δ-bf1</td>
+ <td><a href="/downloads/i3-3.d-bf1.tar.bz2">i3-3.d-bf1.tar.bz2</a></td>
+ <td>153 KiB</td>
+ <td><a href="/downloads/i3-3.d-bf1.tar.bz2.asc">signature</a></td>
+ <td>2009-12-21</td>
+ <td><a href="/downloads/RELEASE-NOTES-3.d-bf1.txt">release notes</a></td>
+ </tr>
+
+ <tr class="oldversion">
+ <td>3.δ</td>
+ <td><a href="/downloads/i3-3.d.tar.bz2">i3-3.d.tar.bz2</a></td>
+ <td>153 KiB</td>
+ <td><a href="/downloads/i3-3.d.tar.bz2.asc">signature</a></td>
+ <td>2009-11-09</td>
+ <td><a href="/downloads/RELEASE-NOTES-3.d.txt">release notes</a></td>
+ </tr>
+
+ <tr class="oldversion">
+ <td>3.γ</td>
+ <td><a href="/downloads/i3-3.c.tar.bz2">i3-3.c.tar.bz2</a></td>
+ <td>107 KiB</td>
+ <td><a href="/downloads/i3-3.c.tar.bz2.asc">signature</a></td>
+ <td>2009-08-19</td>
+ <td><a href="/downloads/RELEASE-NOTES-3.c.txt">release notes</a></td>
+ </tr>
+
+ <tr class="oldversion">
+ <td>3.β</td>
+ <td><a href="/downloads/i3-3.b.tar.bz2">i3-3.b.tar.bz2</a></td>
+ <td>96 KiB</td>
+ <td><a href="/downloads/i3-3.b.tar.bz2.asc">signature</a></td>
+ <td>2009-06-26</td>
+ <td><a href="/downloads/RELEASE-NOTES-3.b.txt">release notes</a></td>
+ </tr>
+
+ <tr class="oldversion">
+ <td>3.α-bf2</td>
+ <td><a href="/downloads/i3-3.a-bf2.tar.bz2">i3-3.a-bf2.tar.bz2</a></td>
+ <td>65 KiB</td>
+ <td><a href="/downloads/i3-3.a-bf2.tar.bz2.asc">signature</a></td>
+ <td>2009-05-03</td>
+ <td><a href="/downloads/RELEASE-NOTES-3.a-bf2.txt">release notes</a></td>
+ </tr>
+
+ <tr class="oldversion">
+ <td>3.α-bf1</td>
+ <td><a href="/downloads/i3-3.a-bf1.tar.bz2">i3-3.a-bf1.tar.bz2</a></td>
+ <td>65 KiB</td>
+ <td><a href="/downloads/i3-3.a-bf1.tar.bz2.asc">signature</a></td>
+ <td>2009-05-03</td>
+ <td><a href="/downloads/RELEASE-NOTES-3.a-bf1.txt">release notes</a></td>
+ </tr>
+
+ <tr class="oldversion">
+ <td>3.α</td>
+ <td><a href="/downloads/i3-3.a.tar.bz2">i3-3.a.tar.bz2</a></td>
+ <td>50 KiB</td>
+ <td><a href="/downloads/i3-3.a.tar.bz2.asc">signature</a></td>
+ <td>2009-03-15</td>
+ <td><a href="/downloads/RELEASE-NOTES-3.a.txt">release notes</a></td>
+ </tr>
+ </tbody>
+</table>
+
+<a name="development-version"></a>
+<h2>Development version</h2>
+
+<p>
+ Use <a href="http://git-scm.com/">git</a> to follow the latest changes or
+ <a href="http://code.i3wm.org/i3">view them on this webpage</a>. This command checks out the 'master'
+ branch:
+</p>
+
+<pre>
+ $ git clone git://code.i3wm.org/i3
+</pre>
+
+<p>
+ The 'master' branch is the current stable version plus bugfixes.<br>
+ The 'next' branch is the next version, yet to be released. Use <tt>git
+ checkout next</tt> to switch to the 'next' branch.
+</p>
+
+<p>
+ If you prefer to download a tarball, or if you cannot use git for whatever reason,
+ you may download the current master branch from
+ <a href="http://code.i3wm.org/i3/snapshot/i3-master.tar.bz2">
+ http://code.i3wm.org/i3/snapshot/i3-master.tar.bz2
+ </a>
+</p>
+
+<h2>Announce mailing list</h2>
+
+<p>
+ If you want to be notified when a new version of i3 is released, please subscribe
+ to the announce mailing list by sending a mail to <code>i3-announce-subscribe@i3.zekjur.net</code>
+</p>
+
+
+</div>
+++ /dev/null
-<%!
- section = "downloads"
- javascript = 'downloads.min.js'
- require_jquery = True
- js_callback = 'initDownloads();'
-%>
-<%inherit file="_templates/i3.mako" />
-<div id="content">
-
-<h2>Distributions</h2>
-
-<p>
-Please use the i3 packages provided by the distribution you are using. i3 is
-currently distributed in the following operating systems/distributions:
-</p>
-
-<div id="distributions">
-<%
- distros = [
- [
- "Debian GNU/Linux",
- "http://packages.debian.org/sid/i3",
- "/img/debian.svg",
- 93
- ],
- [
- "Arch Linux",
- "http://www.archlinux.org/packages/community/x86_64/i3-wm/",
- "/img/archlinux.svg",
- 75
- ],
- [
- "Gentoo Linux",
- "http://packages.gentoo.org/package/x11-wm/i3",
- "/img/gentoo-logo.svg",
- 79
- ],
- [
- "Ubuntu Linux",
- "http://packages.ubuntu.com/i3",
- "/img/ubuntu.svg",
- 75
- ],
- [
- "FreeBSD",
- "http://www.freebsd.org/cgi/cvsweb.cgi/ports/x11-wm/i3/",
- "/img/freebsd.png",
- 59
- ],
- [
- "NetBSD",
- "http://pkgsrc.se/wip/i3",
- "/img/netbsd_logo.svg",
- 56
- ],
- [
- "OpenBSD",
- "http://www.openbsd.org/cgi-bin/cvsweb/ports/x11/i3/",
- "/img/Openbsd2.png",
- 49
- ],
- [
- "openSUSE",
- "http://software.opensuse.org/package/i3",
- "/img/opensuse.svg",
- 48
- ],
- [
- "Mageia",
- "http://mageia.madb.org/package/show/application/0/name/i3",
- "/img/mageia.png",
- 85
- ],
- [
- "Fedora",
- "https://admin.fedoraproject.org/pkgdb/acls/name/i3",
- "/img/fedora.svg",
- 75
- ],
- [
- "Exherbo",
- "http://git.exherbo.org/summer/packages/x11-wm/i3/index.html",
- "/img/exherbo.svg",
- 85
- ],
- [
- "Pibang Linux",
- "http://pibanglinux.org/",
- "/img/pibang.png",
- 61
- ],
- [
- "Slackware",
- "http://slackbuilds.org/desktop/i3/",
- "/img/slackware.svg",
- 75
- ],
- ]
-
- c = 0
-%>
-% for title, link, img, height in distros:
-<div style="display: inline; min-width: 100px"><a title="i3 in ${title}" href="${link}"><img src="${img}" width="75" height="${height}" alt="${title}" title="i3 in ${title}"></a></div>
-<% c += 1 %>
-% if c % 6 == 0:
-<br>
-% endif
-% endfor
-</div>
-
-<p>
-We also provide <a href="/docs/repositories.html">Debian and Ubuntu repositories</a> with up-to-date packages.
-</p>
-
-<h2>Downloads</h2>
-
-<p>
- The current stable version is 4.8.
-</p>
-
-<p>
- <strong>IMPORTANT:</strong> If you use the nVidia binary driver, ensure you
- are using version 302.17 or newer. Read <a
- href="/docs/multi-monitor.html">this document</a> for an explanation and how
- to enable the work-around for older versions.
-</p>
-
-<table width="100%" id="downloads">
- <thead>
- <tr>
- <th>Version</th>
- <th>Download</th>
- <th>Size</th>
- <th>Signature</th>
- <th>Release date</th>
- <th>Release notes</th>
- </tr>
- </thead>
-
- <tbody>
- <tr>
- <td>4.8</td>
- <td><a href="/downloads/i3-4.8.tar.bz2">i3-4.8.tar.bz2</a></td>
- <td>918 KiB</td>
- <td><a href="/downloads/i3-4.8.tar.bz2.asc">signature</a></td>
- <td>2014-06-15</td>
- <td><a href="/downloads/RELEASE-NOTES-4.8.txt">release notes</a></td>
- </tr>
-
- <tr>
- <td>4.7.2</td>
- <td><a href="/downloads/i3-4.7.2.tar.bz2">i3-4.7.2.tar.bz2</a></td>
- <td>877 KiB</td>
- <td><a href="/downloads/i3-4.7.2.tar.bz2.asc">signature</a></td>
- <td>2014-01-23</td>
- <td><a href="/downloads/RELEASE-NOTES-4.7.2.txt">release notes</a></td>
- </tr>
-
- <tr>
- <td>4.7.1</td>
- <td><a href="/downloads/i3-4.7.1.tar.bz2">i3-4.7.1.tar.bz2</a></td>
- <td>877 KiB</td>
- <td><a href="/downloads/i3-4.7.1.tar.bz2.asc">signature</a></td>
- <td>2014-01-21</td>
- <td><a href="/downloads/RELEASE-NOTES-4.7.1.txt">release notes</a></td>
- </tr>
-
- <tr>
- <td>4.7</td>
- <td><a href="/downloads/i3-4.7.tar.bz2">i3-4.7.tar.bz2</a></td>
- <td>876 KiB</td>
- <td><a href="/downloads/i3-4.7.tar.bz2.asc">signature</a></td>
- <td>2013-12-22</td>
- <td><a href="/downloads/RELEASE-NOTES-4.7.txt">release notes</a></td>
- </tr>
-
- <tr>
- <td>4.6</td>
- <td><a href="/downloads/i3-4.6.tar.bz2">i3-4.6.tar.bz2</a></td>
- <td>871 KiB</td>
- <td><a href="/downloads/i3-4.6.tar.bz2.asc">signature</a></td>
- <td>2013-08-07</td>
- <td><a href="/downloads/RELEASE-NOTES-4.6.txt">release notes</a></td>
- </tr>
-
- <tr>
- <td>4.5.1</td>
- <td><a href="/downloads/i3-4.5.1.tar.bz2">i3-4.5.1.tar.bz2</a></td>
- <td>859 KiB</td>
- <td><a href="/downloads/i3-4.5.1.tar.bz2.asc">signature</a></td>
- <td>2013-03-18</td>
- <td><a href="/downloads/RELEASE-NOTES-4.5.1.txt">release notes</a></td>
- </tr>
-
- <tr>
- <td>4.5</td>
- <td><a href="/downloads/i3-4.5.tar.bz2">i3-4.5.tar.bz2</a></td>
- <td>859 KiB</td>
- <td><a href="/downloads/i3-4.5.tar.bz2.asc">signature</a></td>
- <td>2013-03-12</td>
- <td><a href="/downloads/RELEASE-NOTES-4.5.txt">release notes</a></td>
- </tr>
-
- <tr class="oldversion">
- <td>4.4</td>
- <td><a href="/downloads/i3-4.4.tar.bz2">i3-4.4.tar.bz2</a></td>
- <td>864 KiB</td>
- <td><a href="/downloads/i3-4.4.tar.bz2.asc">signature</a></td>
- <td>2012-12-12</td>
- <td><a href="/downloads/RELEASE-NOTES-4.4.txt">release notes</a></td>
- </tr>
-
- <tr class="oldversion">
- <td>4.3</td>
- <td><a href="/downloads/i3-4.3.tar.bz2">i3-4.3.tar.bz2</a></td>
- <td>833 KiB</td>
- <td><a href="/downloads/i3-4.3.tar.bz2.asc">signature</a></td>
- <td>2012-09-19</td>
- <td><a href="/downloads/RELEASE-NOTES-4.3.txt">release notes</a></td>
- </tr>
-
- <tr class="oldversion">
- <td>4.2</td>
- <td><a href="/downloads/i3-4.2.tar.bz2">i3-4.2.tar.bz2</a></td>
- <td>741 KiB</td>
- <td><a href="/downloads/i3-4.2.tar.bz2.asc">signature</a></td>
- <td>2012-04-25</td>
- <td><a href="/downloads/RELEASE-NOTES-4.2.txt">release notes</a></td>
- </tr>
-
- <tr class="oldversion">
- <td>4.1.2</td>
- <td><a href="/downloads/i3-4.1.2.tar.bz2">i3-4.1.2.tar.bz2</a></td>
- <td>550 KiB</td>
- <td><a href="/downloads/i3-4.1.2.tar.bz2.asc">signature</a></td>
- <td>2012-01-27</td>
- <td><a href="/downloads/RELEASE-NOTES-4.1.2.txt">release notes</a></td>
- </tr>
-
- <tr class="oldversion">
- <td>4.1.1</td>
- <td><a href="/downloads/i3-4.1.1.tar.bz2">i3-4.1.1.tar.bz2</a></td>
- <td>551 KiB</td>
- <td><a href="/downloads/i3-4.1.1.tar.bz2.asc">signature</a></td>
- <td>2011-12-24</td>
- <td><a href="/downloads/RELEASE-NOTES-4.1.1.txt">release notes</a></td>
- </tr>
-
- <tr class="oldversion">
- <td>4.1</td>
- <td><a href="/downloads/i3-4.1.tar.bz2">i3-4.1.tar.bz2</a></td>
- <td>551 KiB</td>
- <td><a href="/downloads/i3-4.1.tar.bz2.asc">signature</a></td>
- <td>2011-11-11</td>
- <td><a href="/downloads/RELEASE-NOTES-4.1.txt">release notes</a></td>
- </tr>
-
- <tr class="oldversion">
- <td>4.0.2</td>
- <td><a href="/downloads/i3-4.0.2.tar.bz2">i3-4.0.2.tar.bz2</a></td>
- <td>465 KiB</td>
- <td><a href="/downloads/i3-4.0.2.tar.bz2.asc">signature</a></td>
- <td>2011-08-28</td>
- <td><a href="/downloads/RELEASE-NOTES-4.0.2.txt">release notes</a></td>
- </tr>
-
- <tr class="oldversion">
- <td>4.0.1</td>
- <td><a href="/downloads/i3-4.0.1.tar.bz2">i3-4.0.1.tar.bz2</a></td>
- <td>462 KiB</td>
- <td><a href="/downloads/i3-4.0.1.tar.bz2.asc">signature</a></td>
- <td>2011-08-01</td>
- <td><a href="/downloads/RELEASE-NOTES-4.0.1.txt">release notes</a></td>
- </tr>
-
- <tr class="oldversion">
- <td>4.0</td>
- <td><a href="/downloads/i3-4.0.tar.bz2">i3-4.0.tar.bz2</a></td>
- <td>462 KiB</td>
- <td><a href="/downloads/i3-4.0.tar.bz2.asc">signature</a></td>
- <td>2011-07-31</td>
- <td><a href="/downloads/RELEASE-NOTES-4.0.txt">release notes</a></td>
- </tr>
-
- <tr class="oldversion">
- <td>3.ε-bf3</td>
- <td><a href="/downloads/i3-3.e-bf3.tar.bz2">i3-3.e-bf3.tar.bz2</a></td>
- <td>353 KiB</td>
- <td><a href="/downloads/i3-3.e-bf3.tar.bz2.asc">signature</a></td>
- <td>2011-05-08</td>
- <td><a href="/downloads/RELEASE-NOTES-3.e-bf3.txt">release notes</a></td>
- </tr>
-
- <tr class="oldversion">
- <td>3.ε-bf2</td>
- <td><a href="/downloads/i3-3.e-bf2.tar.bz2">i3-3.e-bf2.tar.bz2</a></td>
- <td>285 KiB</td>
- <td><a href="/downloads/i3-3.e-bf2.tar.bz2.asc">signature</a></td>
- <td>2011-01-19</td>
- <td><a href="/downloads/RELEASE-NOTES-3.e-bf2.txt">release notes</a></td>
- </tr>
-
- <tr class="oldversion">
- <td>3.ε-bf1</td>
- <td><a href="/downloads/i3-3.e-bf1.tar.bz2">i3-3.e-bf1.tar.bz2</a></td>
- <td>285 KiB</td>
- <td><a href="/downloads/i3-3.e-bf1.tar.bz2.asc">signature</a></td>
- <td>2010-06-09</td>
- <td><a href="/downloads/RELEASE-NOTES-3.e-bf1.txt">release notes</a></td>
- </tr>
-
- <tr class="oldversion">
- <td>3.ε</td>
- <td><a href="/downloads/i3-3.e.tar.bz2">i3-3.e.tar.bz2</a></td>
- <td>271 KiB</td>
- <td><a href="/downloads/i3-3.e.tar.bz2.asc">signature</a></td>
- <td>2010-03-30</td>
- <td><a href="/downloads/RELEASE-NOTES-3.e.txt">release notes</a></td>
- </tr>
-
- <tr class="oldversion">
- <td>3.δ-bf1</td>
- <td><a href="/downloads/i3-3.d-bf1.tar.bz2">i3-3.d-bf1.tar.bz2</a></td>
- <td>153 KiB</td>
- <td><a href="/downloads/i3-3.d-bf1.tar.bz2.asc">signature</a></td>
- <td>2009-12-21</td>
- <td><a href="/downloads/RELEASE-NOTES-3.d-bf1.txt">release notes</a></td>
- </tr>
-
- <tr class="oldversion">
- <td>3.δ</td>
- <td><a href="/downloads/i3-3.d.tar.bz2">i3-3.d.tar.bz2</a></td>
- <td>153 KiB</td>
- <td><a href="/downloads/i3-3.d.tar.bz2.asc">signature</a></td>
- <td>2009-11-09</td>
- <td><a href="/downloads/RELEASE-NOTES-3.d.txt">release notes</a></td>
- </tr>
-
- <tr class="oldversion">
- <td>3.γ</td>
- <td><a href="/downloads/i3-3.c.tar.bz2">i3-3.c.tar.bz2</a></td>
- <td>107 KiB</td>
- <td><a href="/downloads/i3-3.c.tar.bz2.asc">signature</a></td>
- <td>2009-08-19</td>
- <td><a href="/downloads/RELEASE-NOTES-3.c.txt">release notes</a></td>
- </tr>
-
- <tr class="oldversion">
- <td>3.β</td>
- <td><a href="/downloads/i3-3.b.tar.bz2">i3-3.b.tar.bz2</a></td>
- <td>96 KiB</td>
- <td><a href="/downloads/i3-3.b.tar.bz2.asc">signature</a></td>
- <td>2009-06-26</td>
- <td><a href="/downloads/RELEASE-NOTES-3.b.txt">release notes</a></td>
- </tr>
-
- <tr class="oldversion">
- <td>3.α-bf2</td>
- <td><a href="/downloads/i3-3.a-bf2.tar.bz2">i3-3.a-bf2.tar.bz2</a></td>
- <td>65 KiB</td>
- <td><a href="/downloads/i3-3.a-bf2.tar.bz2.asc">signature</a></td>
- <td>2009-05-03</td>
- <td><a href="/downloads/RELEASE-NOTES-3.a-bf2.txt">release notes</a></td>
- </tr>
-
- <tr class="oldversion">
- <td>3.α-bf1</td>
- <td><a href="/downloads/i3-3.a-bf1.tar.bz2">i3-3.a-bf1.tar.bz2</a></td>
- <td>65 KiB</td>
- <td><a href="/downloads/i3-3.a-bf1.tar.bz2.asc">signature</a></td>
- <td>2009-05-03</td>
- <td><a href="/downloads/RELEASE-NOTES-3.a-bf1.txt">release notes</a></td>
- </tr>
-
- <tr class="oldversion">
- <td>3.α</td>
- <td><a href="/downloads/i3-3.a.tar.bz2">i3-3.a.tar.bz2</a></td>
- <td>50 KiB</td>
- <td><a href="/downloads/i3-3.a.tar.bz2.asc">signature</a></td>
- <td>2009-03-15</td>
- <td><a href="/downloads/RELEASE-NOTES-3.a.txt">release notes</a></td>
- </tr>
- </tbody>
-</table>
-
-<a name="development-version"></a>
-<h2>Development version</h2>
-
-<p>
- Use <a href="http://git-scm.com/">git</a> to follow the latest changes or
- <a href="http://code.i3wm.org/i3">view them on this webpage</a>. This command checks out the 'master'
- branch:
-</p>
-
-<pre>
- $ git clone git://code.i3wm.org/i3
-</pre>
-
-<p>
- The 'master' branch is the current stable version plus bugfixes.<br>
- The 'next' branch is the next version, yet to be released. Use <tt>git
- checkout next</tt> to switch to the 'next' branch.
-</p>
-
-<p>
- If you prefer to download a tarball, or if you cannot use git for whatever reason,
- you may download the current master branch from
- <a href="http://code.i3wm.org/i3/snapshot/i3-master.tar.bz2">
- http://code.i3wm.org/i3/snapshot/i3-master.tar.bz2
- </a>
-</p>
-
-<h2>Announce mailing list</h2>
-
-<p>
- If you want to be notified when a new version of i3 is released, please subscribe
- to the announce mailing list by sending a mail to <code>i3-announce-subscribe@i3.zekjur.net</code>
-</p>
-
-
-</div>
--- /dev/null
+---
+layout: default
+title: i3bar
+---
+<div id="content">
+
+<h1>i3bar</h1>
+
+<p>
+ i3bar displays a bar at the bottom (or top) of your monitor(s) containing
+ workspace switching buttons and a statusline generated by i3status(1) or
+ similar. It is automatically invoked (and configured through) i3.
+</p>
+
+<h2>Documentation</h2>
+
+<p>
+ The documentation for i3bar is its manpage. You can also <a
+ href="/i3bar/manpage.html">view the manpage online</a>.
+</p>
+
+</div>
+++ /dev/null
-<%!
- section = "i3bar"
-%>
-<%inherit file="_templates/i3.mako" />
-<div id="content">
-
-<h1>i3bar</h1>
-
-<p>
- i3bar displays a bar at the bottom (or top) of your monitor(s) containing
- workspace switching buttons and a statusline generated by i3status(1) or
- similar. It is automatically invoked (and configured through) i3.
-</p>
-
-<h2>Documentation</h2>
-
-<p>
- The documentation for i3bar is its manpage. You can also <a
- href="/i3bar/manpage.html">view the manpage online</a>.
-</p>
-
-</div>
--- /dev/null
+---
+layout: default
+title: i3lock
+---
+<div id="content">
+
+<h1>i3lock</h1>
+
+<p>
+ i3lock is a simple screen locker like slock. After starting it, you will see
+ a white screen (you can configure the color/an image). You can return to your
+ screen by entering your password.
+</p>
+
+<h2>Improvements</h2>
+
+<ul>
+ <li>
+ i3lock forks, so you can combine it with an alias to suspend to RAM (run
+ "i3lock && echo mem > /sys/power/state" to get a locked screen
+ after waking up your computer from suspend to RAM)
+ </li>
+ <li>
+ You can specify either a background color or a PNG image which will be
+ displayed while your screen is locked.
+ </li>
+ <li>
+ You can specify whether i3lock should bell upon a wrong password.
+ </li>
+ <li>
+ i3lock uses PAM and therefore is compatible with LDAP etc.
+ </li>
+</ul>
+
+
+<h2>Releases</h2>
+
+<ul>
+ <li>
+ <a href="/i3lock/i3lock-2.5.tar.bz2">i3lock-2.5.tar.bz2</a> (2013-06-09,
+ <a href="/i3lock/i3lock-2.5.tar.bz2.asc">GPG signature</a>)
+ </li>
+ <li>
+ <a href="/i3lock/i3lock-2.4.1.tar.bz2">i3lock-2.4.1.tar.bz2</a> (2012-06-02,
+ <a href="/i3lock/i3lock-2.4.1.tar.bz2.asc">GPG signature</a>)
+ </li>
+ <li>
+ <a href="/i3lock/i3lock-2.4.tar.bz2">i3lock-2.4.tar.bz2</a> (2012-04-01,
+ <a href="/i3lock/i3lock-2.4.tar.bz2.asc">GPG signature</a>)
+ </li>
+ <li>
+ <a href="/i3lock/i3lock-2.3.1.tar.bz2">i3lock-2.3.1.tar.bz2</a> (2012-03-15,
+ <a href="/i3lock/i3lock-2.3.1.tar.bz2.asc">GPG signature</a>)
+ </li>
+ <li>
+ <a href="/i3lock/i3lock-2.3.tar.bz2">i3lock-2.3.tar.bz2</a> (2012-03-15,
+ <a href="/i3lock/i3lock-2.3.tar.bz2.asc">GPG signature</a>)
+ </li>
+ <li>
+ <a href="/i3lock/i3lock-2.2.tar.bz2">i3lock-2.2.tar.bz2</a> (2011-11-06,
+ <a href="/i3lock/i3lock-2.2.tar.bz2.asc">GPG signature</a>)
+ </li>
+ <li>
+ <a href="/i3lock/i3lock-2.1.tar.gz">i3lock-2.1.tar.gz</a> (2011-03-13,
+ <a href="/i3lock/i3lock-2.1.tar.gz.asc">GPG signature</a>)
+ </li>
+ <li>
+ <a href="/i3lock/i3lock-2.0.tar.gz">i3lock-2.0.tar.gz</a> (2010-09-05,
+ <a href="/i3lock/i3lock-2.0.tar.gz.asc">GPG signature</a>)
+ </li>
+ <li><a href="/i3lock/i3lock-1.0.tar.gz">i3lock-1.0.tar.gz</a> (2009-05-10,
+ <a href="/i3lock/i3lock-1.0.tar.gz.asc">GPG signature</a>)</li>
+ <li><a href="/i3lock/i3lock-0.9.tar.gz">i3lock-0.9.tar.gz</a></li>
+</ul>
+
+<h2>Development</h2>
+
+<p>
+ i3lock is currently developed at <a href="http://code.i3wm.org/i3lock" title="cgit">
+ http://code.i3wm.org/i3lock</a>. Checkouts of the master branch are intended to
+ be stable and working all the time. Integration of new features happens in a separate branch.
+</p>
+
+</div>
+++ /dev/null
-<%!
- section = "i3lock"
-%>
-<%inherit file="_templates/i3.mako" />
-<div id="content">
-
-<h1>i3lock</h1>
-
-<p>
- i3lock is a simple screen locker like slock. After starting it, you will see
- a white screen (you can configure the color/an image). You can return to your
- screen by entering your password.
-</p>
-
-<h2>Improvements</h2>
-
-<ul>
- <li>
- i3lock forks, so you can combine it with an alias to suspend to RAM (run
- "i3lock && echo mem > /sys/power/state" to get a locked screen
- after waking up your computer from suspend to RAM)
- </li>
- <li>
- You can specify either a background color or a PNG image which will be
- displayed while your screen is locked.
- </li>
- <li>
- You can specify whether i3lock should bell upon a wrong password.
- </li>
- <li>
- i3lock uses PAM and therefore is compatible with LDAP etc.
- </li>
-</ul>
-
-
-<h2>Releases</h2>
-
-<ul>
- <li>
- <a href="/i3lock/i3lock-2.5.tar.bz2">i3lock-2.5.tar.bz2</a> (2013-06-09,
- <a href="/i3lock/i3lock-2.5.tar.bz2.asc">GPG signature</a>)
- </li>
- <li>
- <a href="/i3lock/i3lock-2.4.1.tar.bz2">i3lock-2.4.1.tar.bz2</a> (2012-06-02,
- <a href="/i3lock/i3lock-2.4.1.tar.bz2.asc">GPG signature</a>)
- </li>
- <li>
- <a href="/i3lock/i3lock-2.4.tar.bz2">i3lock-2.4.tar.bz2</a> (2012-04-01,
- <a href="/i3lock/i3lock-2.4.tar.bz2.asc">GPG signature</a>)
- </li>
- <li>
- <a href="/i3lock/i3lock-2.3.1.tar.bz2">i3lock-2.3.1.tar.bz2</a> (2012-03-15,
- <a href="/i3lock/i3lock-2.3.1.tar.bz2.asc">GPG signature</a>)
- </li>
- <li>
- <a href="/i3lock/i3lock-2.3.tar.bz2">i3lock-2.3.tar.bz2</a> (2012-03-15,
- <a href="/i3lock/i3lock-2.3.tar.bz2.asc">GPG signature</a>)
- </li>
- <li>
- <a href="/i3lock/i3lock-2.2.tar.bz2">i3lock-2.2.tar.bz2</a> (2011-11-06,
- <a href="/i3lock/i3lock-2.2.tar.bz2.asc">GPG signature</a>)
- </li>
- <li>
- <a href="/i3lock/i3lock-2.1.tar.gz">i3lock-2.1.tar.gz</a> (2011-03-13,
- <a href="/i3lock/i3lock-2.1.tar.gz.asc">GPG signature</a>)
- </li>
- <li>
- <a href="/i3lock/i3lock-2.0.tar.gz">i3lock-2.0.tar.gz</a> (2010-09-05,
- <a href="/i3lock/i3lock-2.0.tar.gz.asc">GPG signature</a>)
- </li>
- <li><a href="/i3lock/i3lock-1.0.tar.gz">i3lock-1.0.tar.gz</a> (2009-05-10,
- <a href="/i3lock/i3lock-1.0.tar.gz.asc">GPG signature</a>)</li>
- <li><a href="/i3lock/i3lock-0.9.tar.gz">i3lock-0.9.tar.gz</a></li>
-</ul>
-
-<h2>Development</h2>
-
-<p>
- i3lock is currently developed at <a href="http://code.i3wm.org/i3lock" title="cgit">
- http://code.i3wm.org/i3lock</a>. Checkouts of the master branch are intended to
- be stable and working all the time. Integration of new features happens in a separate branch.
-</p>
-
-</div>
--- /dev/null
+---
+layout: default
+title: i3status
+---
+<div id="content">
+
+<h1>i3status</h1>
+
+<p>
+ i3status is a small program (about 1500 SLOC) for generating a status bar
+ for i3bar, dzen2, xmobar or similar programs. It is designed to be very
+ efficient by issuing a very small number of system calls, as one generally
+ wants to update such a status line every second. This ensures that even under
+ high load, your status bar is updated correctly. Also, it saves a bit of
+ energy by not hogging your CPU as much as spawning the corresponding amount
+ of shell commands would.
+</p>
+
+<h2>Releases</h2>
+
+<ul>
+ <li><a href="/i3status/i3status-2.8.tar.bz2">i3status-2.8.tar.bz2</a>
+ (<a href="/i3status/i3status-2.8.tar.bz2.asc">GPG signature</a>, 2014-01-05)</li>
+
+ <li><a href="/i3status/i3status-2.7.tar.bz2">i3status-2.7.tar.bz2</a>
+ (<a href="/i3status/i3status-2.7.tar.bz2.asc">GPG signature</a>, 2013-02-27)</li>
+
+ <li><a href="/i3status/i3status-2.6.tar.bz2">i3status-2.6.tar.bz2</a>
+ (<a href="/i3status/i3status-2.6.tar.bz2.asc">GPG signature</a>, 2012-10-03)</li>
+
+ <li><a href="/i3status/i3status-2.5.1.tar.bz2">i3status-2.5.1.tar.bz2</a>
+ (<a href="/i3status/i3status-2.5.1.tar.bz2.asc">GPG signature</a>, 2012-05-11)</li>
+
+ <li><a href="/i3status/i3status-2.5.tar.bz2">i3status-2.5.tar.bz2</a>
+ (<a href="/i3status/i3status-2.5.tar.bz2.asc">GPG signature</a>, 2012-05-02)</li>
+
+ <li><a href="/i3status/i3status-2.4.tar.bz2">i3status-2.4.tar.bz2</a>
+ (<a href="/i3status/i3status-2.4.tar.bz2.asc">GPG signature</a>, 2011-12-27)</li>
+
+ <li><a href="/i3status/i3status-2.3.tar.bz2">i3status-2.3.tar.bz2</a>
+ (<a href="/i3status/i3status-2.3.tar.bz2.asc">GPG signature</a>, 2011-07-21)</li>
+
+ <li><a href="/i3status/i3status-2.2.tar.bz2">i3status-2.2.tar.bz2</a>
+ (<a href="/i3status/i3status-2.2.tar.bz2.asc">GPG signature</a>, 2010-09-23)</li>
+
+ <li><a href="/i3status/i3status-2.1.tar.bz2">i3status-2.1.tar.bz2</a>
+ (<a href="/i3status/i3status-2.1.tar.bz2.asc">GPG signature</a>, 2010-04-11)</li>
+
+ <li><a href="/i3status/i3status-2.0.tar.bz2">i3status-2.0.tar.bz2</a>
+ (<a href="/i3status/i3status-2.0.tar.bz2.asc">GPG signature</a>, 2009-10-27)</li>
+
+ <li><a href="/i3status/i3status-1.2.tar.bz2">i3status-1.2.tar.bz2</a>
+ (<a href="/i3status/i3status-1.2.tar.bz2.asc">GPG signature</a>, 2009-06-21)</li>
+
+ <li><a href="/i3status/i3status-1.1.tar.bz2">i3status-1.1.tar.bz2</a>
+ (<a href="/i3status/i3status-1.1.tar.bz2.asc">GPG signature</a>, 2009-06-17)</li>
+
+ <li><a href="/i3status/i3status-1.0.tar.bz2">i3status-1.0.tar.bz2</a></li>
+</ul>
+
+<h2>Documentation</h2>
+
+<p>
+ The documentation for i3status is its manpage. You can also <a
+ href="/i3status/manpage.html">view the manpage online</a>.
+</p>
+
+<h2>Development</h2>
+
+<p>
+ i3status is currently developed at <a href="http://code.i3wm.org/i3status" title="cgit">
+ http://code.i3wm.org/i3status</a>. Checkouts of the master branch are intended to
+ be stable and working all the time.
+</p>
+
+</div>
+++ /dev/null
-<%!
- section = "i3status"
-%>
-<%inherit file="_templates/i3.mako" />
-<div id="content">
-
-<h1>i3status</h1>
-
-<p>
- i3status is a small program (about 1500 SLOC) for generating a status bar
- for i3bar, dzen2, xmobar or similar programs. It is designed to be very
- efficient by issuing a very small number of system calls, as one generally
- wants to update such a status line every second. This ensures that even under
- high load, your status bar is updated correctly. Also, it saves a bit of
- energy by not hogging your CPU as much as spawning the corresponding amount
- of shell commands would.
-</p>
-
-<h2>Releases</h2>
-
-<ul>
- <li><a href="/i3status/i3status-2.8.tar.bz2">i3status-2.8.tar.bz2</a>
- (<a href="/i3status/i3status-2.8.tar.bz2.asc">GPG signature</a>, 2014-01-05)</li>
-
- <li><a href="/i3status/i3status-2.7.tar.bz2">i3status-2.7.tar.bz2</a>
- (<a href="/i3status/i3status-2.7.tar.bz2.asc">GPG signature</a>, 2013-02-27)</li>
-
- <li><a href="/i3status/i3status-2.6.tar.bz2">i3status-2.6.tar.bz2</a>
- (<a href="/i3status/i3status-2.6.tar.bz2.asc">GPG signature</a>, 2012-10-03)</li>
-
- <li><a href="/i3status/i3status-2.5.1.tar.bz2">i3status-2.5.1.tar.bz2</a>
- (<a href="/i3status/i3status-2.5.1.tar.bz2.asc">GPG signature</a>, 2012-05-11)</li>
-
- <li><a href="/i3status/i3status-2.5.tar.bz2">i3status-2.5.tar.bz2</a>
- (<a href="/i3status/i3status-2.5.tar.bz2.asc">GPG signature</a>, 2012-05-02)</li>
-
- <li><a href="/i3status/i3status-2.4.tar.bz2">i3status-2.4.tar.bz2</a>
- (<a href="/i3status/i3status-2.4.tar.bz2.asc">GPG signature</a>, 2011-12-27)</li>
-
- <li><a href="/i3status/i3status-2.3.tar.bz2">i3status-2.3.tar.bz2</a>
- (<a href="/i3status/i3status-2.3.tar.bz2.asc">GPG signature</a>, 2011-07-21)</li>
-
- <li><a href="/i3status/i3status-2.2.tar.bz2">i3status-2.2.tar.bz2</a>
- (<a href="/i3status/i3status-2.2.tar.bz2.asc">GPG signature</a>, 2010-09-23)</li>
-
- <li><a href="/i3status/i3status-2.1.tar.bz2">i3status-2.1.tar.bz2</a>
- (<a href="/i3status/i3status-2.1.tar.bz2.asc">GPG signature</a>, 2010-04-11)</li>
-
- <li><a href="/i3status/i3status-2.0.tar.bz2">i3status-2.0.tar.bz2</a>
- (<a href="/i3status/i3status-2.0.tar.bz2.asc">GPG signature</a>, 2009-10-27)</li>
-
- <li><a href="/i3status/i3status-1.2.tar.bz2">i3status-1.2.tar.bz2</a>
- (<a href="/i3status/i3status-1.2.tar.bz2.asc">GPG signature</a>, 2009-06-21)</li>
-
- <li><a href="/i3status/i3status-1.1.tar.bz2">i3status-1.1.tar.bz2</a>
- (<a href="/i3status/i3status-1.1.tar.bz2.asc">GPG signature</a>, 2009-06-17)</li>
-
- <li><a href="/i3status/i3status-1.0.tar.bz2">i3status-1.0.tar.bz2</a></li>
-</ul>
-
-<h2>Documentation</h2>
-
-<p>
- The documentation for i3status is its manpage. You can also <a
- href="/i3status/manpage.html">view the manpage online</a>.
-</p>
-
-<h2>Development</h2>
-
-<p>
- i3status is currently developed at <a href="http://code.i3wm.org/i3status" title="cgit">
- http://code.i3wm.org/i3status</a>. Checkouts of the master branch are intended to
- be stable and working all the time.
-</p>
-
-</div>
--- /dev/null
+---
+layout: default
+title: impress
+---
+<div id="content">
+
+<h1>Impressum</h1>
+
+<p>
+ This website is hosted on a server in germany, so german law demands this:
+</p>
+
+<p>
+ Angaben gemäß § 5 TMG:
+</p>
+
+<address>
+ Michael Stapelberg<br />
+ Neuer Weg 16<br />
+ 69118 Heidelberg<br />
+ <br />
+ Telefon: +49 6221 1871942<br />
+ E-Mail: michael+impress@stapelberg.de
+</address>
+
+<p>
+ Quelle: <i>erstellt mit dem <a href="http://www.e-recht24.de/impressum-generator/">
+ Impressum-Generator Website</a> von eRecht24.</i>
+</p>
+
+<h2>Haftungsausschluss:</h2>
+
+<h3>Haftung für Inhalte</h3>
+
+<p>
+ Die Inhalte unserer Seiten wurden mit größter Sorgfalt erstellt. Für die
+ Richtigkeit, Vollständigkeit und Aktualität der Inhalte können wir jedoch keine
+ Gewähr übernehmen. Als Diensteanbieter sind wir gemäß § 7 Abs. 1 TMG für eigene
+ Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach
+ §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht verpflichtet,
+ übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach
+ Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen.
+ Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach
+ den allgemeinen Gesetzen bleiben hiervon unberührt. Eine diesbezügliche Haftung
+ ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung
+ möglich. Bei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir
+ diese Inhalte umgehend entfernen.
+</p>
+
+<h3>Haftung für Links</h3>
+
+<p>
+ Unser Angebot enthält Links zu externen Webseiten Dritter, auf deren Inhalte
+ wir keinen Einfluss haben. Deshalb können wir für diese fremden Inhalte auch
+ keine Gewähr übernehmen. Für die Inhalte der verlinkten Seiten ist stets der
+ jeweilige Anbieter oder Betreiber der Seiten verantwortlich. Die verlinkten
+ Seiten wurden zum Zeitpunkt der Verlinkung auf mögliche Rechtsverstöße
+ überprüft. Rechtswidrige Inhalte waren zum Zeitpunkt der Verlinkung nicht
+ erkennbar. Eine permanente inhaltliche Kontrolle der verlinkten Seiten ist
+ jedoch ohne konkrete Anhaltspunkte einer Rechtsverletzung nicht zumutbar. Bei
+ Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend
+ entfernen.
+</p>
+
+<h3>Urheberrecht</h3>
+
+<p>
+ Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten
+ unterliegen dem deutschen Urheberrecht. Die Vervielfältigung, Bearbeitung,
+ Verbreitung und jede Art der Verwertung außerhalb der Grenzen des
+ Urheberrechtes bedürfen der schriftlichen Zustimmung des jeweiligen Autors bzw.
+ Erstellers. Downloads und Kopien dieser Seite sind nur für den privaten, nicht
+ kommerziellen Gebrauch gestattet. Soweit die Inhalte auf dieser Seite nicht vom
+ Betreiber erstellt wurden, werden die Urheberrechte Dritter beachtet.
+ Insbesondere werden Inhalte Dritter als solche gekennzeichnet. Sollten Sie
+ trotzdem auf eine Urheberrechtsverletzung aufmerksam werden, bitten wir um
+ einen entsprechenden Hinweis. Bei Bekanntwerden von Rechtsverletzungen werden
+ wir derartige Inhalte umgehend entfernen.
+</p>
+
+<h3>Datenschutz</h3>
+
+<p>
+ Die Nutzung unserer Webseite ist in der Regel ohne Angabe personenbezogener
+ Daten möglich. Soweit auf unseren Seiten personenbezogene Daten (beispielsweise
+ Name, Anschrift oder eMail-Adressen) erhoben werden, erfolgt dies, soweit
+ möglich, stets auf freiwilliger Basis. Diese Daten werden ohne Ihre
+ ausdrückliche Zustimmung nicht an Dritte weitergegeben.
+</p>
+
+<p>
+ Wir weisen darauf hin, dass die Datenübertragung im Internet (z.B. bei der
+ Kommunikation per E-Mail) Sicherheitslücken aufweisen kann. Ein lückenloser
+ Schutz der Daten vor dem Zugriff durch Dritte ist nicht möglich.
+</p>
+
+<p>
+ Der Nutzung von im Rahmen der Impressumspflicht veröffentlichten Kontaktdaten
+ durch Dritte zur Übersendung von nicht ausdrücklich angeforderter Werbung und
+ Informationsmaterialien wird hiermit ausdrücklich widersprochen. Die Betreiber
+ der Seiten behalten sich ausdrücklich rechtliche Schritte im Falle der
+ unverlangten Zusendung von Werbeinformationen, etwa durch Spam-Mails, vor.
+</p>
+
+<p>
+ Quelle: <i><a href="http://www.e-recht24.de/muster-disclaimer.htm" target="_blank">Disclaimer</a>
+ von eRecht24, dem Portal zum Internetrecht von <a href="http://www.e-recht24.de/">Rechtsanwalt</a>
+ Sören Siebert.</i>
+</p>
+
+</div>
+
+++ /dev/null
-<%!
- section = "impress"
-%>
-<%inherit file="_templates/i3.mako" />
-<div id="content">
-
-<h1>Impressum</h1>
-
-<p>
- This website is hosted on a server in germany, so german law demands this:
-</p>
-
-<p>
- Angaben gemäß § 5 TMG:
-</p>
-
-<address>
- Michael Stapelberg<br />
- Neuer Weg 16<br />
- 69118 Heidelberg<br />
- <br />
- Telefon: +49 6221 1871942<br />
- E-Mail: michael+impress@stapelberg.de
-</address>
-
-<p>
- Quelle: <i>erstellt mit dem <a href="http://www.e-recht24.de/impressum-generator/">
- Impressum-Generator Website</a> von eRecht24.</i>
-</p>
-
-<h2>Haftungsausschluss:</h2>
-
-<h3>Haftung für Inhalte</h3>
-
-<p>
- Die Inhalte unserer Seiten wurden mit größter Sorgfalt erstellt. Für die
- Richtigkeit, Vollständigkeit und Aktualität der Inhalte können wir jedoch keine
- Gewähr übernehmen. Als Diensteanbieter sind wir gemäß § 7 Abs. 1 TMG für eigene
- Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach
- §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht verpflichtet,
- übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach
- Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen.
- Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach
- den allgemeinen Gesetzen bleiben hiervon unberührt. Eine diesbezügliche Haftung
- ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung
- möglich. Bei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir
- diese Inhalte umgehend entfernen.
-</p>
-
-<h3>Haftung für Links</h3>
-
-<p>
- Unser Angebot enthält Links zu externen Webseiten Dritter, auf deren Inhalte
- wir keinen Einfluss haben. Deshalb können wir für diese fremden Inhalte auch
- keine Gewähr übernehmen. Für die Inhalte der verlinkten Seiten ist stets der
- jeweilige Anbieter oder Betreiber der Seiten verantwortlich. Die verlinkten
- Seiten wurden zum Zeitpunkt der Verlinkung auf mögliche Rechtsverstöße
- überprüft. Rechtswidrige Inhalte waren zum Zeitpunkt der Verlinkung nicht
- erkennbar. Eine permanente inhaltliche Kontrolle der verlinkten Seiten ist
- jedoch ohne konkrete Anhaltspunkte einer Rechtsverletzung nicht zumutbar. Bei
- Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend
- entfernen.
-</p>
-
-<h3>Urheberrecht</h3>
-
-<p>
- Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten
- unterliegen dem deutschen Urheberrecht. Die Vervielfältigung, Bearbeitung,
- Verbreitung und jede Art der Verwertung außerhalb der Grenzen des
- Urheberrechtes bedürfen der schriftlichen Zustimmung des jeweiligen Autors bzw.
- Erstellers. Downloads und Kopien dieser Seite sind nur für den privaten, nicht
- kommerziellen Gebrauch gestattet. Soweit die Inhalte auf dieser Seite nicht vom
- Betreiber erstellt wurden, werden die Urheberrechte Dritter beachtet.
- Insbesondere werden Inhalte Dritter als solche gekennzeichnet. Sollten Sie
- trotzdem auf eine Urheberrechtsverletzung aufmerksam werden, bitten wir um
- einen entsprechenden Hinweis. Bei Bekanntwerden von Rechtsverletzungen werden
- wir derartige Inhalte umgehend entfernen.
-</p>
-
-<h3>Datenschutz</h3>
-
-<p>
- Die Nutzung unserer Webseite ist in der Regel ohne Angabe personenbezogener
- Daten möglich. Soweit auf unseren Seiten personenbezogene Daten (beispielsweise
- Name, Anschrift oder eMail-Adressen) erhoben werden, erfolgt dies, soweit
- möglich, stets auf freiwilliger Basis. Diese Daten werden ohne Ihre
- ausdrückliche Zustimmung nicht an Dritte weitergegeben.
-</p>
-
-<p>
- Wir weisen darauf hin, dass die Datenübertragung im Internet (z.B. bei der
- Kommunikation per E-Mail) Sicherheitslücken aufweisen kann. Ein lückenloser
- Schutz der Daten vor dem Zugriff durch Dritte ist nicht möglich.
-</p>
-
-<p>
- Der Nutzung von im Rahmen der Impressumspflicht veröffentlichten Kontaktdaten
- durch Dritte zur Übersendung von nicht ausdrücklich angeforderter Werbung und
- Informationsmaterialien wird hiermit ausdrücklich widersprochen. Die Betreiber
- der Seiten behalten sich ausdrücklich rechtliche Schritte im Falle der
- unverlangten Zusendung von Werbeinformationen, etwa durch Spam-Mails, vor.
-</p>
-
-<p>
- Quelle: <i><a href="http://www.e-recht24.de/muster-disclaimer.htm" target="_blank">Disclaimer</a>
- von eRecht24, dem Portal zum Internetrecht von <a href="http://www.e-recht24.de/">Rechtsanwalt</a>
- Sören Siebert.</i>
-</p>
-
-</div>
-
--- /dev/null
+---
+layout: default
+title: Your New Jekyll Site
+---
+
+<div id="info" class="clearfix">
+
+ <div id="screens">
+ <a href="/screenshots/" title="view more screenshots of i3">
+ <img id="screenshot" src="/screenshots/i3-9.bigthumb.png" width="375" height="234" alt="i3 screenshot"
+ srcset="/screenshots/i3-12.bigthumb.jpg 2x">
+ </a>
+ </div>
+
+ <h2>Do What I Mean. Good Docs. Clean Code. Sounds good?</h2>
+ <p>
+ Then you will love i3. Watch the <a href="/screenshots/">screencast</a>,<br>
+ read the <a href="/docs/userguide.html">User’s Guide</a> and <a
+ href="/downloads/">install i3</a>!
+ </p>
+ <div id="download">
+ <a href="/downloads">
+ <span style="font-weight: bold; color: #3A8ECD; margin-right: .5em">➡</span>
+ Download the latest version
+ <span style="margin-left: 2em; color: #c0c0c0">4.8</span>
+ </a>
+ </div>
+</div>
+
+<div id="content">
+<p>
+i3 is a <a href="http://en.wikipedia.org/wiki/Tiling_window_manager">tiling
+window manager</a>, completely written from scratch. The target platforms are
+GNU/Linux and BSD operating systems, our code is Free and Open Source Software
+(FOSS) under the BSD license. i3 is primarily targeted at advanced users and
+developers. Based upon the experiences we made when wanting to hack/fix wmii,
+we agreed upon the following goals for i3:
+</p>
+
+<ol>
+ <li>
+ Write well readable, well <strong>documented</strong> code. Create additional
+ documentation on how to extend i3 by explaining its internal workings.
+ <br />
+ This includes being modifiable by people who do know how to program but who are
+ not necessarily familiar with all of X11’s internals. That is, document why
+ things happen and when they happen so that the user gets a picture of the whole
+ process a Window Manager is responsible of by just reading the source code.
+ </li>
+ <li>
+ Use xcb as far as possible (it does not provide functions for some features
+ yet, like XKB) instead of Xlib. xcb has a much cleaner API and should be faster
+ in quite a lot of situations.
+ </li>
+ <li>
+ Implement multi-monitor correctly, that is by assigning each workspace to a
+ virtual screen. Especially make sure that attaching and detaching new monitors
+ like video projectors works during operation and does the right thing. Also
+ provide support for rotated monitors.
+ </li>
+ <li>
+ Use a tree as data structure. This allows for more flexible layouts than
+ the column-based approach used by other window managers.
+ </li>
+ <li>
+ Implement different modes, like in vim. You can use different keybindings
+ when in the 'resize' mode than when you are in the default mode, for
+ example.
+ </li>
+ <li>
+ Do <strong>not</strong> use programs such as autoconf/automake for configuration and
+ creating unreadable/broken makefiles. Instead, use a clean makefile which automatically
+ enables/disables features for specific platforms. Also, document the dependencies
+ properly, so that package maintainers have an easy job packaging i3.
+ </li>
+ <li>
+ Implement an IPC interface for other programs. Provide subscription to
+ certain events and accept commands.
+ <br />
+ This approach should be more lightweight than wmii’s usage of the 9P filesystem.
+ Furthermore, core functionality does not depend on a separate program, so that i3
+ runs faster, especially when your system is under load.
+ </li>
+ <li>
+ Be UTF-8 clean.
+ </li>
+ <li>
+ The usual elitism amongst minimal window managers: Don’t be bloated, don’t be fancy
+ (simple borders are the most decoration we want to have).
+ <br />
+ However, we do not enforce unnecessary limits such as a maximum amount of source lines
+ of code. If it needs to be a bit bigger, it will be.
+ </li>
+</ol>
+
+</div>
+++ /dev/null
-<%!
- section = "index"
-%>
-<%inherit file="_templates/i3.mako" />
-<div id="info" class="clearfix">
-
- <div id="screens">
- <a href="/screenshots/" title="view more screenshots of i3">
- <img id="screenshot" src="/screenshots/i3-9.bigthumb.png" width="375" height="234" alt="i3 screenshot"
- srcset="/screenshots/i3-12.bigthumb.jpg 2x">
- </a>
- </div>
-
- <h2>Do What I Mean. Good Docs. Clean Code. Sounds good?</h2>
- <p>
- Then you will love i3. Watch the <a href="/screenshots/">screencast</a>,<br>
- read the <a href="/docs/userguide.html">User’s Guide</a> and <a
- href="/downloads/">install i3</a>!
- </p>
- <div id="download">
- <a href="/downloads">
- <span style="font-weight: bold; color: #3A8ECD; margin-right: .5em">➡</span>
- Download the latest version
- <span style="margin-left: 2em; color: #c0c0c0">4.8</span>
- </a>
- </div>
-</div>
-
-<div id="content">
-<p>
-i3 is a <a href="http://en.wikipedia.org/wiki/Tiling_window_manager">tiling
-window manager</a>, completely written from scratch. The target platforms are
-GNU/Linux and BSD operating systems, our code is Free and Open Source Software
-(FOSS) under the BSD license. i3 is primarily targeted at advanced users and
-developers. Based upon the experiences we made when wanting to hack/fix wmii,
-we agreed upon the following goals for i3:
-</p>
-
-<ol>
- <li>
- Write well readable, well <strong>documented</strong> code. Create additional
- documentation on how to extend i3 by explaining its internal workings.
- <br />
- This includes being modifiable by people who do know how to program but who are
- not necessarily familiar with all of X11’s internals. That is, document why
- things happen and when they happen so that the user gets a picture of the whole
- process a Window Manager is responsible of by just reading the source code.
- </li>
- <li>
- Use xcb as far as possible (it does not provide functions for some features
- yet, like XKB) instead of Xlib. xcb has a much cleaner API and should be faster
- in quite a lot of situations.
- </li>
- <li>
- Implement multi-monitor correctly, that is by assigning each workspace to a
- virtual screen. Especially make sure that attaching and detaching new monitors
- like video projectors works during operation and does the right thing. Also
- provide support for rotated monitors.
- </li>
- <li>
- Use a tree as data structure. This allows for more flexible layouts than
- the column-based approach used by other window managers.
- </li>
- <li>
- Implement different modes, like in vim. You can use different keybindings
- when in the 'resize' mode than when you are in the default mode, for
- example.
- </li>
- <li>
- Do <strong>not</strong> use programs such as autoconf/automake for configuration and
- creating unreadable/broken makefiles. Instead, use a clean makefile which automatically
- enables/disables features for specific platforms. Also, document the dependencies
- properly, so that package maintainers have an easy job packaging i3.
- </li>
- <li>
- Implement an IPC interface for other programs. Provide subscription to
- certain events and accept commands.
- <br />
- This approach should be more lightweight than wmii’s usage of the 9P filesystem.
- Furthermore, core functionality does not depend on a separate program, so that i3
- runs faster, especially when your system is under load.
- </li>
- <li>
- Be UTF-8 clean.
- </li>
- <li>
- The usual elitism amongst minimal window managers: Don’t be bloated, don’t be fancy
- (simple borders are the most decoration we want to have).
- <br />
- However, we do not enforce unnecessary limits such as a maximum amount of source lines
- of code. If it needs to be a bit bigger, it will be.
- </li>
-</ol>
-
-</div>
--- /dev/null
+---
+layout: default
+title: Screens
+group: Screens
+require_jquery: true
+javascript: gallery.min.2.js
+js_callback: initGallery();
+---
+<div id="mask">
+</div>
+
+<div id="loading">
+</div>
+
+<div id="bigimg">
+ <div id="maskouter">
+ <div id="maskinner">
+ <div id="imgleft">
+ </div>
+ <div id="imgright">
+ </div>
+ <div id="imgdesc">
+ <span class="filename">i3-2.png</span>
+ <span class="description">VIM, MPlayer</span>
+ </div>
+ </div>
+ </div>
+</div>
+
+<div id="content">
+
+<h2>Latest Videos</h2>
+
+<div id="screencasts">
+ <div class="video clearfix">
+ <a href="http://www.youtube.com/watch?v=Wx0eNaGzAZU" title="Watch i3 screencast v4.1 on YouTube">
+ <img src="/img/screencast-3.d.thumb.png" width="240" height="150" border="0" alt="Screencast thumbnail" style="float: left">
+ </a>
+ <div style="float: left">
+ <strong>Screencast of v4.1</strong>
+ <p>
+ This video (5 min) shows the basic features of i3:
+ </p>
+ <ul>
+ <li>Layouts, Focus, Moving, Workspaces</li>
+ <li>dmenu, Floating Windows, Resizing</li>
+ </ul>
+ <p>
+ <a href="http://www.youtube.com/watch?v=Wx0eNaGzAZU">Watch it on YouTube</a> or <a href="/screenshots/screencast-4.1.mp4">download it (18 MB)</a>.
+ </p>
+ </div>
+ </div>
+
+ <br style="clear: both">
+ <br>
+
+ <div class="video clearfix">
+ <a href="http://www.youtube.com/watch?v=AWA8Pl57UBY" title="Watch i3 container and tree data structure screencast on YouTube">
+ <img src="/img/screencast-cons.thumb.jpg" width="240" height="135" border="0" alt="tech talk thumbnail" style="float: left">
+ </a>
+ <div style="float: left">
+ <strong>Screencast: Containers and tree data structure</strong>
+ <p style="white-space: pre">Explains how i3 works internally so
+that you can fully understand what's going on. I expect you to have
+watched the screencast on v4.1 already.</p>
+ <p>
+ <a href="http://www.youtube.com/watch?v=AWA8Pl57UBY">Watch it on YouTube</a>
+ </p>
+ </div>
+ </div>
+
+ <br style="clear: both">
+ <br>
+
+ <div class="video clearfix">
+ <a href="http://www.youtube.com/watch?v=QnYN2CTb1hM" title="Watch i3 google tech talk on YouTube">
+ <img src="/img/techtalk.thumb.jpg" width="240" height="135" border="0" alt="tech talk thumbnail" style="float: left">
+ </a>
+ <div style="float: left">
+ <strong>Google Tech Talk about i3</strong>
+ <p style="white-space: pre">This video (1 hour) is an introduction to i3, explaining our
+motivation, a bit of history, some cool features and how we
+develop.</p>
+ <p>
+ <a href="http://www.youtube.com/watch?v=QnYN2CTb1hM">Watch it on YouTube</a>
+ </p>
+ </div>
+ </div>
+</div>
+
+<h2>Screenshots</h2>
+
+<p>
+To get a quick impression of i3, have a look at these screenshots.
+</p>
+
+<div class="screenshots clearfix">
+{% include screenshot.html link="/screenshots/i3-1.png" thumb="/screenshots/i3-1.thumb.png" description="Vimperator, VIM, MPlayer, dzen2" %}
+{% include screenshot.html link="/screenshots/i3-2.png" thumb="/screenshots/i3-2.thumb.png" description="Vimperator, VIM, xpdf, bc" %}
+{% include screenshot.html link="/screenshots/i3-3.png" thumb="/screenshots/i3-3.thumb.png" description="PCManFM, ROXTerm, evince" %}
+<br>
+{% include screenshot.html link="/screenshots/i3-4.png" thumb="/screenshots/i3-4.thumb.png" description="i3 logo out of terminals" %}
+{% include screenshot.html link="/screenshots/i3-6.png" thumb="/screenshots/i3-6.thumb.png" description="VIM, zsh, i3status (FreeBSD)" %}
+{% include screenshot.html link="/screenshots/i3-7.png" thumb="/screenshots/i3-7.thumb.png" description="GIMP, urxvt (both floating)" %}
+<br>
+{% include screenshot.html link="/screenshots/i3-5.png" thumb="/screenshots/i3-5.thumb.png" description="mc, xosview, MPlayer, irssi, gajim" %}
+{% include screenshot.html link="/screenshots/i3-8.jpg" thumb="/screenshots/i3-8.thumb.jpg" description="git, synergy, htop, urxvt" %}
+{% include screenshot.html link="/screenshots/i3-9.png" thumb="/screenshots/i3-9.thumb.png" description="VIM, git, MPlayer, i3bar" %}
+<br>
+{% include screenshot.html link="/screenshots/i3-10.png" thumb="/screenshots/i3-10.thumb.png" description="Right-to-left titles" %}
+{% include screenshot.html link="/screenshots/i3-11.jpg" thumb="/screenshots/i3-11.thumb.jpg" description="dzen2, VIM, bash, top" %}
+</div>
+
+</div>
+++ /dev/null
-<%!
- section = "screens"
- javascript = 'gallery.min.2.js'
- require_jquery = True
- js_callback = 'initGallery();'
-%>
-<%inherit file="_templates/i3.mako" />
-
-<div id="mask">
-</div>
-
-<div id="loading">
-</div>
-
-<div id="bigimg">
- <div id="maskouter">
- <div id="maskinner">
- <div id="imgleft">
- </div>
- <div id="imgright">
- </div>
- <div id="imgdesc">
- <span class="filename">i3-2.png</span>
- <span class="description">VIM, MPlayer</span>
- </div>
- </div>
- </div>
-</div>
-
-<div id="content">
-
-<h2>Latest Videos</h2>
-
-<div id="screencasts">
- <div class="video clearfix">
- <a href="http://www.youtube.com/watch?v=Wx0eNaGzAZU" title="Watch i3 screencast v4.1 on YouTube">
- <img src="/img/screencast-3.d.thumb.png" width="240" height="150" border="0" alt="Screencast thumbnail" style="float: left">
- </a>
- <div style="float: left">
- <strong>Screencast of v4.1</strong>
- <p>
- This video (5 min) shows the basic features of i3:
- </p>
- <ul>
- <li>Layouts, Focus, Moving, Workspaces</li>
- <li>dmenu, Floating Windows, Resizing</li>
- </ul>
- <p>
- <a href="http://www.youtube.com/watch?v=Wx0eNaGzAZU">Watch it on YouTube</a> or <a href="/screenshots/screencast-4.1.mp4">download it (18 MB)</a>.
- </p>
- </div>
- </div>
-
- <br style="clear: both">
- <br>
-
- <div class="video clearfix">
- <a href="http://www.youtube.com/watch?v=AWA8Pl57UBY" title="Watch i3 container and tree data structure screencast on YouTube">
- <img src="/img/screencast-cons.thumb.jpg" width="240" height="135" border="0" alt="tech talk thumbnail" style="float: left">
- </a>
- <div style="float: left">
- <strong>Screencast: Containers and tree data structure</strong>
- <p style="white-space: pre">Explains how i3 works internally so
-that you can fully understand what's going on. I expect you to have
-watched the screencast on v4.1 already.</p>
- <p>
- <a href="http://www.youtube.com/watch?v=AWA8Pl57UBY">Watch it on YouTube</a>
- </p>
- </div>
- </div>
-
- <br style="clear: both">
- <br>
-
- <div class="video clearfix">
- <a href="http://www.youtube.com/watch?v=QnYN2CTb1hM" title="Watch i3 google tech talk on YouTube">
- <img src="/img/techtalk.thumb.jpg" width="240" height="135" border="0" alt="tech talk thumbnail" style="float: left">
- </a>
- <div style="float: left">
- <strong>Google Tech Talk about i3</strong>
- <p style="white-space: pre">This video (1 hour) is an introduction to i3, explaining our
-motivation, a bit of history, some cool features and how we
-develop.</p>
- <p>
- <a href="http://www.youtube.com/watch?v=QnYN2CTb1hM">Watch it on YouTube</a>
- </p>
- </div>
- </div>
-</div>
-
-<h2>Screenshots</h2>
-
-<p>
-To get a quick impression of i3, have a look at these screenshots.
-</p>
-
-<div class="screenshots clearfix">
-<%
- screens = [
- [
- "/screenshots/i3-1.png",
- "/screenshots/i3-1.thumb.png",
- "Vimperator, VIM, MPlayer, dzen2"
- ],
- [
- "/screenshots/i3-2.png",
- "/screenshots/i3-2.thumb.png",
- "Vimperator, VIM, xpdf, bc"
- ],
- [
- "/screenshots/i3-3.png",
- "/screenshots/i3-3.thumb.png",
- "PCManFM, ROXTerm, evince"
- ],
- [
- "/screenshots/i3-4.png",
- "/screenshots/i3-4.thumb.png",
- "i3 logo out of terminals"
- ],
- [
- "/screenshots/i3-6.png",
- "/screenshots/i3-6.thumb.png",
- "VIM, zsh, i3status (FreeBSD)"
- ],
- [
- "/screenshots/i3-7.png",
- "/screenshots/i3-7.thumb.png",
- "GIMP, urxvt (both floating)"
- ],
- [
- "/screenshots/i3-5.png",
- "/screenshots/i3-5.thumb.png",
- "mc, xosview, MPlayer, irssi, gajim"
- ],
- [
- "/screenshots/i3-8.jpg",
- "/screenshots/i3-8.thumb.jpg",
- "git, synergy, htop, urxvt"
- ],
- [
- "/screenshots/i3-9.png",
- "/screenshots/i3-9.thumb.png",
- "VIM, git, MPlayer, i3bar"
- ],
- [
- "/screenshots/i3-10.png",
- "/screenshots/i3-10.thumb.png",
- "Right-to-left titles"
- ],
- [
- "/screenshots/i3-11.jpg",
- "/screenshots/i3-11.thumb.jpg",
- "dzen2, VIM, bash, top"
- ]
- ]
-
- c = 0
-%>
-% for link, thumb, description in screens:
-
- <div class="shot">
- <a href="${link}"><img src="${thumb}" width="240" alt="(Screenshot) ${description}"></a><br>
- <span>${description}</span>
- </div>
-
-<% c += 1 %>
-% if (c % 3) == 0:
-<br>
-% endif
-% endfor
-
-</div>
-
-</div>