From c6a11870009f9f14da917485066d262b6b71e407 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Sat, 28 Feb 2015 15:09:27 +0100 Subject: [PATCH] save docs for 4.8 --- docs/4.8/bigpicture.png | Bin 0 -> 9179 bytes docs/4.8/buildbot.html | 1118 +++++++++++ docs/4.8/debugging-release-version.html | 175 ++ docs/4.8/debugging.html | 173 ++ docs/4.8/gsoc2013-ideas.html | 199 ++ docs/4.8/hacking-howto.html | 1599 ++++++++++++++++ docs/4.8/i3-config-wizard.html | 96 + docs/4.8/i3-migrate-config-to-v4.html | 87 + docs/4.8/i3-msg.html | 100 + docs/4.8/i3-nagbar.html | 90 + docs/4.8/i3-sync-working.png | Bin 0 -> 25072 bytes docs/4.8/i3-sync.png | Bin 0 -> 17308 bytes docs/4.8/i3.html | 529 ++++++ docs/4.8/i3bar-protocol.html | 401 ++++ docs/4.8/i3status.html | 500 +++++ docs/4.8/index.html | 132 ++ docs/4.8/ipc.html | 1304 +++++++++++++ docs/4.8/keyboard-layer1.png | Bin 0 -> 55821 bytes docs/4.8/keyboard-layer1.svg | 969 ++++++++++ docs/4.8/keyboard-layer2.png | Bin 0 -> 49858 bytes docs/4.8/keyboard-layer2.svg | 896 +++++++++ docs/4.8/logo-30.png | Bin 0 -> 2751 bytes docs/4.8/manpage.html | 528 ++++++ docs/4.8/modes.png | Bin 0 -> 5826 bytes docs/4.8/multi-monitor.html | 113 ++ docs/4.8/refcard.html | 198 ++ docs/4.8/refcard.pdf | Bin 0 -> 61582 bytes docs/4.8/refcard_style.css | 45 + docs/4.8/repositories.html | 155 ++ docs/4.8/single_terminal.png | Bin 0 -> 3382 bytes docs/4.8/snapping.png | Bin 0 -> 4880 bytes docs/4.8/stacklimit.png | Bin 0 -> 4988 bytes docs/4.8/testsuite.html | 659 +++++++ docs/4.8/tree-layout1.png | Bin 0 -> 27856 bytes docs/4.8/tree-layout2.png | Bin 0 -> 20101 bytes docs/4.8/tree-migrating.html | 269 +++ docs/4.8/tree-shot1.png | Bin 0 -> 3665 bytes docs/4.8/tree-shot2.png | Bin 0 -> 3383 bytes docs/4.8/tree-shot3.png | Bin 0 -> 4001 bytes docs/4.8/tree-shot4.png | Bin 0 -> 3050 bytes docs/4.8/tshirts.html | 213 +++ docs/4.8/two_columns.png | Bin 0 -> 4624 bytes docs/4.8/two_terminals.png | Bin 0 -> 4901 bytes docs/4.8/userguide.html | 2288 +++++++++++++++++++++++ docs/4.8/wsbar.html | 141 ++ docs/4.8/wsbar.png | Bin 0 -> 14339 bytes docs/4.8/wsbar.svg | 274 +++ 47 files changed, 13251 insertions(+) create mode 100644 docs/4.8/bigpicture.png create mode 100644 docs/4.8/buildbot.html create mode 100644 docs/4.8/debugging-release-version.html create mode 100644 docs/4.8/debugging.html create mode 100644 docs/4.8/gsoc2013-ideas.html create mode 100644 docs/4.8/hacking-howto.html create mode 100644 docs/4.8/i3-config-wizard.html create mode 100644 docs/4.8/i3-migrate-config-to-v4.html create mode 100644 docs/4.8/i3-msg.html create mode 100644 docs/4.8/i3-nagbar.html create mode 100644 docs/4.8/i3-sync-working.png create mode 100644 docs/4.8/i3-sync.png create mode 100644 docs/4.8/i3.html create mode 100644 docs/4.8/i3bar-protocol.html create mode 100644 docs/4.8/i3status.html create mode 100644 docs/4.8/index.html create mode 100644 docs/4.8/ipc.html create mode 100644 docs/4.8/keyboard-layer1.png create mode 100644 docs/4.8/keyboard-layer1.svg create mode 100644 docs/4.8/keyboard-layer2.png create mode 100644 docs/4.8/keyboard-layer2.svg create mode 100644 docs/4.8/logo-30.png create mode 100644 docs/4.8/manpage.html create mode 100644 docs/4.8/modes.png create mode 100644 docs/4.8/multi-monitor.html create mode 100644 docs/4.8/refcard.html create mode 100644 docs/4.8/refcard.pdf create mode 100644 docs/4.8/refcard_style.css create mode 100644 docs/4.8/repositories.html create mode 100644 docs/4.8/single_terminal.png create mode 100644 docs/4.8/snapping.png create mode 100644 docs/4.8/stacklimit.png create mode 100644 docs/4.8/testsuite.html create mode 100644 docs/4.8/tree-layout1.png create mode 100644 docs/4.8/tree-layout2.png create mode 100644 docs/4.8/tree-migrating.html create mode 100644 docs/4.8/tree-shot1.png create mode 100644 docs/4.8/tree-shot2.png create mode 100644 docs/4.8/tree-shot3.png create mode 100644 docs/4.8/tree-shot4.png create mode 100644 docs/4.8/tshirts.html create mode 100644 docs/4.8/two_columns.png create mode 100644 docs/4.8/two_terminals.png create mode 100644 docs/4.8/userguide.html create mode 100644 docs/4.8/wsbar.html create mode 100644 docs/4.8/wsbar.png create mode 100644 docs/4.8/wsbar.svg diff --git a/docs/4.8/bigpicture.png b/docs/4.8/bigpicture.png new file mode 100644 index 0000000000000000000000000000000000000000..fc3c8db751232c1cdb2b7132a19de8bef39f7a39 GIT binary patch literal 9179 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 literal 0 HcmV?d00001 diff --git a/docs/4.8/buildbot.html b/docs/4.8/buildbot.html new file mode 100644 index 0000000..2e7fd6d --- /dev/null +++ b/docs/4.8/buildbot.html @@ -0,0 +1,1118 @@ + + + + + + +i3: The i3 buildbot setup + + + + + + + +
+

i3 - improved tiling WM

+ +
+
+ +
+
+

This document explains the buildbot setup we use to +provide up-to-date documentation and debian packages at http://build.i3wm.org/. +We publish these information so that our setup is well-documented (thus +decreasing future maintenance effort) and because it might be interesting for +other projects.

+
+
+
+

1. Introduction

+
+

What we are doing in i3 is called Continuous Integration (see +http://en.wikipedia.org/wiki/Continuous_integration): we publish the changes we +make on our local machines as often as possible. In order to maintain a +continuously high quality, each time any developer pushes changes to the +official git repository, a number of quality assurance tools start running +automatically:

+
    +
  1. +

    +Latest documentation is generated and provided at + http://build.i3wm.org/docs/. This makes it easy to link to documentation for + features which are only in the current git version, not in the released + version. +

    +
  2. +
  3. +

    +The source code is compiled and it is automatically posted to the IRC + channel whether there were any compiler warnings. While developers should + notice compiler warnings, this mechanism creates a bit of public pressure + ("Oh, Michael introduced warnings with this commit!"). More importantly, + since this mechanism builds a dist tarball and then compiles that tarball, + any changes to the source which would result in an uncompilable dist tarball + are immediately obvious. Therefore, we could cut a release from the current + git version at any point in time. +

    +
  4. +
  5. +

    +The clang static analyzer runs and the resulting report is provided at + http://build.i3wm.org/clang-analyze/. While every developer needs to compile + his code before committing, he doesn’t necessarily use clang (so we catch + build failures when using clang) and he also probably doesn’t run a static + analyzer as part of his normal workflow. By just being available without any + friction, this mechanism encourages developers to look at the report and fix + problems. +

    +
  6. +
  7. +

    +Debian (and Ubuntu) packages are built. This not only ensures that we don’t + change anything in the source code which would lead to an FTBFS (Fails To + Build From Source) when building a Debian package, it also goes a long way + to encourage end users to test i3. To remove the need and resource + requirements for them to compile their own version of i3 regularly, we + provide packages that integrate conveniently with a normal Debian system + (e.g. that are automatically upgraded). +

    +
  8. +
+
+
+
+

2. Why buildbot?

+
+

Previously, I was unsatisfied with the current state of FOSS CI tools like +Jenkins, Tinderbox and others. They either seemed bloated, hard to use, +outdated or unappealing for some other reason.

+

Then I discovered buildbot and was impressed by its flexibility. It let me +implement everything I wanted from a CI tool and (in my opinion) it is +light-weight, easy to deploy and well maintained.

+

The only downside of buildbot is its configuration and documentation: You need +to spend quite a bit of time (I needed multiple days) until it works the way +you want it to and oftentimes, the documentation is far too sparse. This is one +of the reasons why I’m publishing the i3 setup.

+
+
+
+

3. Configuration

+
+

See the next section for a complete, copy & pasteable configuration file. This +section covers the most important aspects without covering every line.

+

This document assumes you are running buildbot 0.8.6p1.

+
+

3.1. Change sources

+

Since i3 uses a central git repository, we use the official buildbot +git +post-receive hook that sends the change information to the buildbot master.

+
+
+

3.2. Schedulers

+

There are two things (called "builders" in buildbot-language) which happen +whenever a new change in the next branch of i3 occurs:

+
    +
  1. +

    +The "docs" builder builds and uploads the latest documentation. This happens + directly from the git repository with a custom asciidoc configuration which + indicates that these docs refer to the git version. Therefore, this builder + does not benefit from having a dist tarball available (contrary to the other + builders). +

    +
  2. +
  3. +

    +The "dist" builder prepares a dist tarball and then triggers the remaining + builders. This ensures that building the dist tarball (an operation which + takes about one minute due to documentation generation) only happens once. +

    +
  4. +
+

Here is the relevant configuration part:

+

Schedulers:

+
+
+
c['schedulers'] = []
+
+c['schedulers'].append(SingleBranchScheduler(
+    name = 'dist',
+    branch = 'next',
+    treeStableTimer = 10,
+    builderNames = [ 'dist', 'docs' ],
+))
+
+c['schedulers'].append(Triggerable(
+    name = 'dist-tarball-done',
+    builderNames = [ 'compile', 'clang-analyze', 'debian-packages', 'ubuntu-packages' ],
+))
+
+
+
+

3.3. Building the dist tarball

+

This builder clones the i3 git repository and runs "make dist", which creates a +tarball that could be named "i3-4.2.tar.bz2" for example. This tarball is then +renamed to dist-%(gitversion).tar.bz2 (so that we can work with a predictable +name in the next steps) and uploaded to the buildbot master (since we can have +multiple buildslaves, we cannot just let it rest on the buildslave that built +it). Afterwards, old dist tarballs are cleaned up and the remaining builders +are triggered:

+

Building a dist tarball:

+
+
+
factories = {}
+
+f = factories['dist'] = BuildFactory()
+
+# Check out the git repository.
+f.addStep(s_git)
+
+# Fill the 'gitversion' property with the output of git describe --tags.
+f.addStep(shell.SetProperty(command = 'git describe --tags', property = 'gitversion'))
+
+# Build the dist tarball.
+cmd(f, name = 'make dist', command = [ 'make', 'dist' ])
+
+# Rename the created tarball to a well-known name.
+cmd(f,
+    name = 'rename tarball',
+    command = WithProperties('mv *.tar.bz2 dist-%(gitversion)s.tar.bz2'),
+)
+
+# Upload the dist tarball to the master (other factories download it later).
+f.addStep(transfer.FileUpload(
+    slavesrc = WithProperties('dist-%(gitversion)s.tar.bz2'),
+    masterdest = WithProperties('distballs/dist-%(gitversion)s.tar.bz2'),
+))
+
+# Cleanup old dist tarballs (everything older than tree days).
+f.addStep(master.MasterShellCommand(
+    command = "find distballs -mtime +3 -exec rm '{}' \;",
+    name = 'cleanup old dist tarballs',
+))
+
+# Everything worked fine, now trigger compilation.
+f.addStep(Trigger(
+    schedulerNames = [ 'dist-tarball-done' ],
+    copy_properties = [ 'gitversion' ],
+))
+
+

Three things are noteworthy about this part of the configuration:

+
    +
  1. +

    +For convenience, we call each factory f (just like the global buildbot + config uses c for the top-level configuration) and add it to a dictionary. + Factories in that dictionary are later automatically configured for each + buildslave. +

    +
  2. +
  3. +

    +We have a shared step called s_git so that we only have one location in + the configuration file where we specify the git repository URL and branch. +

    +
  4. +
  5. +

    +We have a custom function called cmd which is a shortcut for defining a + ShellCommand with haltOnFailure=True (since each step is critical) and + logEnviron=False (for brevity). +

    +
  6. +
+

Here are their definitions:

+

cmd:

+
+
+
def cmd(factory, **kwargs):
+    factory.addStep(ShellCommand(
+        haltOnFailure = True,
+        logEnviron = False,
+        **kwargs
+    ))
+
+

s_git:

+
+
+
s_git = Git(
+    repourl = 'git://code.i3wm.org/i3',
+    branch = 'next',
+
+    # Check out the latest revision, not the one which caused this build.
+    alwaysUseLatest = True,
+
+    # We cannot use shallow because it breaks git describe --tags.
+    shallow = False,
+
+    # Delete remnants of previous builds.
+    mode = 'full',
+
+    # Store checkouts in source/ and copy them over to build/ to save
+    # bandwidth.
+    method = 'copy',
+)
+
+
+
+

3.4. Compiling the dist tarball

+

For this builder to work, you obviously need to install all the +build-dependencies for your software on each buildslave. In the case of i3, +this can be done with apt-get build-dep i3-wm.

+

The compilation is pretty straight-forward since it uses the builtin Compile +step. We call make with -j4 (we don’t have enough buildslaves to make +figuring out the amount of cores at build-time worthwhile) and DEBUG=0 to +simulate release build conditions. Also, we pass the preprocessor flag +-D_FORTIFY_SOURCE=2 and the compiler flags -Wformat and -Wformat-security +to enable additional warnings.

+

Compiling the dist tarball:

+
+
+
f = factories['compile'] = BuildFactory()
+unpack_dist_tarball(f)
+f.addStep(Compile(
+    command = [ 'make', 'DEBUG=0', '-j4' ],
+    warningPattern = '.*warning: ',
+    warnOnWarnings = True,
+    workdir = 'build/DIST',
+    env = {
+      'CPPFLAGS': '-D_FORTIFY_SOURCE=2',
+      'CFLAGS': '-Wformat -Wformat-security'
+    },
+))
+
+f.addStep(WarningsToIRC())
+
+

Again, we use custom functions (and a custom buildstep) to make our lives +easier. Here is the definition of unpack_dist_tarball which adds three steps to +the factory that download and unpack the dist tarball to the DIST/ directory:

+

unpack_dist_tarball:

+
+
+
def unpack_dist_tarball(factory):
+    factory.addStep(transfer.FileDownload(
+        mastersrc = WithProperties('distballs/dist-%(gitversion)s.tar.bz2'),
+        slavedest = 'dist.tar.bz2',
+    ))
+
+    factory.addStep(slave.MakeDirectory(dir = 'build/DIST'))
+
+    cmd(factory,
+        name = 'unpack dist tarball',
+        command = [ 'tar', 'xf', 'dist.tar.bz2', '-C', 'DIST', '--strip-components=1' ],
+    )
+
+

The WarningsToIRC build step is a custom build step which sets a property +called "ircsuffix" that is used by our custom IRC bot. This is covered later in +more detail. This property gets set to a green or red message, depending on +whether there were any warnings:

+

WarningsToIRC:

+
+
+
class WarningsToIRC(buildstep.BuildStep):
+    def start(self):
+        warnings = self.getProperty("warnings-count")
+        if warnings is not None and int(warnings) > 0:
+            warnings = int(warnings)  # just to be sure
+            self.setProperty("ircsuffix", ("\0037 with %d warning%s!" %
+                (warnings, "s" if warnings != 1 else "")))
+        else:
+            self.setProperty("ircsuffix", "\0033 without warnings")
+        self.finished(SUCCESS)
+
+
+
+

3.5. Static code analysis

+

For this builder to work, you additionally need the clang compiler on each +buildslave: apt-get install clang.

+

This builder uses only custom functions which you already know by now. It runs +scan-build, then moves scan-build’s output from a date-based directory directly +into the CLANG/ directory and uploads that to the buildmaster.

+

On the buildmaster, a webserver is configured which has a symlink to +/home/build/i3-master/htdocs/clang-analyze in its document root.

+

static code analysis:

+
+
+
f = factories['clang-analyze'] = BuildFactory()
+unpack_dist_tarball(f)
+cmd(f,
+    name='analyze',
+    command = [
+        'scan-build',
+        '-o', '../CLANG',
+        '--html-title', WithProperties('Analysis of i3 v%(gitversion)s'),
+        'make', '-j8',
+    ],
+    workdir = 'build/DIST',
+)
+
+# remove the subdirectory -- we always want to overwrite
+cmd(f, command = 'mv CLANG/*/* CLANG/')
+
+f.addStep(transfer.DirectoryUpload(
+    slavesrc = 'CLANG',
+    masterdest = 'htdocs/clang-analyze',
+    compress = 'bz2',
+    name = 'upload output',
+))
+
+f.addStep(ClangToIRC())
+
+

The ClangToIRC custom step is even simpler than WarningsToIRC. It simply +sets the ircsuffix property to a static message:

+

ClangToIRC:

+
+
+
class ClangToIRC(buildstep.BuildStep):
+    def start(self):
+        self.setProperty("ircsuffix", ", see http://build.i3wm.org/clang-analyze/")
+        self.finished(SUCCESS)
+
+
+
+

3.6. Generating documentation

+

This builder is the one which is the least clean of all. It uses the Debian +packaging information to decide which docs to publish and which manpages to +generate. Additionally, it uses a for loop instead of calling a script. I +recommend including a script to do this in your repository instead.

+

Apart from these concerns, the builder is straight-forward: It clones the git +repository, generates the documentation and then uploads the documentation to +the buildmaster:

+

Generating documentation:

+
+
+
f = factories['docs'] = BuildFactory()
+f.addStep(s_git)
+# Fill the 'gitversion' property with the output of git describe --tags.
+f.addStep(shell.SetProperty(command = 'git describe --tags', property = 'gitversion'))
+cmd(f, name = 'build docs', command = [ 'make', '-C', 'docs', "ASCIIDOC=asciidoc -a linkcss -a stylesdir=http://i3wm.org/css -a scriptsdir=http://i3wm.org/js --backend=xhtml11 -f docs/asciidoc-git.conf" ])
+cmd(f, name = 'build manpages', command = "for file in $(sed 's/\.1$/.man/g' debian/i3-wm.manpages); do asciidoc -a linkcss -a stylesdir=http://i3wm.org/css -a scriptsdir=http://i3wm.org/js --backend=xhtml11 -f docs/asciidoc-git.conf \"$file\"; done")
+f.addStep(slave.MakeDirectory(dir='build/COPY-DOCS'))
+cmd(f, name = 'copy docs', command = "cp $(tr '\\n' ' ' < debian/i3-wm.docs) COPY-DOCS")
+cmd(f, name = 'copy manpages', command = "cp $(sed 's/\.1$/.html/g' debian/i3-wm.manpages | tr '\\n' ' ') COPY-DOCS")
+
+f.addStep(transfer.DirectoryUpload(
+    slavesrc = 'COPY-DOCS',
+    masterdest = 'htdocs/docs-git',
+    compress = 'bz2',
+    name = 'upload docs'))
+
+f.addStep(DocsToIRC())
+
+

Just as ClangToIRC, DocsToIRC appends a static message:

+

DocsToIRC:

+
+
+
class DocsToIRC(buildstep.BuildStep):
+    def start(self):
+        self.setProperty("ircsuffix", ", see http://build.i3wm.org/docs/")
+        self.finished(SUCCESS)
+
+
+
+

3.7. Building Debian/Ubuntu packages

+

This is the most complex builder of all. It uses pbuilder-dist, debchange, +dpkg-buildpackage and reprepro to generate a Debian repository with a +cleanly compiled package for amd64 and i386. In order for it to work, you need +to install the following packages: apt-get install devscripts dpkg-dev +reprepro ubuntu-dev-tools pbuilder. Afterwards, you need to allow the user as +which the buildslave runs to execute pbuilder via sudo without needing a +password, so add a config file like this one:

+

sudoers.d:

+
+
+
echo 'build    ALL= NOPASSWD: SETENV: /usr/sbin/pbuilder' > /etc/sudoers.d/build
+
+

Then, as the user as which your buildslave runs, setup the pbuilder +environments (you only need to do this once):

+

pbuilder preparation:

+
+
+
sudo ln -s pbuilder-dist /usr/bin/pbuilder-sid-amd64
+sudo ln -s pbuilder-dist /usr/bin/pbuilder-sid-i386
+pbuilder-sid-amd64 create
+pbuilder-sid-i386 create
+
+

Also, you will need a GPG key to sign these packages.

+

The debian builder starts by unpacking the dist tarball, copying the Debian +packaging from git, creating an empty Debian repository with the +i3-autobuild-keyring contents in it. It then adds a new changelog entry to +reflect the git version and the fact that this package was built automatically, +builds a source package with dpkg-buildpackage and adds it to the repository. +Afterwards, it updates each pbuilder and builds binary packages for each +architecture (amd64 and i386). After adding the resulting packages to the +repository, it uploads the repository to the buildmaster:

+

Debian builder:

+
+
+
distributions = [ 'sid-amd64', 'sid-i386' ]
+gpg_key = 'BE1DB1F1'
+
+f = factories['debian-packages'] = BuildFactory()
+# We need the git repository for the Debian packaging.
+f.addStep(s_git)
+unpack_dist_tarball(f)
+cmd(f, name = 'copy packaging', command = "cp -r debian DIST/")
+
+# Add a new changelog entry to have the git version in the package version.
+cmd(f,
+    name = 'update changelog',
+    workdir = 'build/DIST',
+    command = [ 'debchange', '-m', '-l', WithProperties('+g%(gitversion)s'), 'Automatically built' ],
+)
+
+cmd(f,
+    name = 'source pkg',
+    command = [ 'dpkg-buildpackage', '-S', '-us', '-uc' ],
+    workdir = 'build/DIST',
+)
+
+for dist in distributions:
+    f.addStep(slave.MakeDirectory(dir = 'build/RESULT-' + dist))
+
+# Create debian sid repository
+f.addStep(slave.MakeDirectory(dir = 'build/REPO-sid/conf'))
+f.addStep(transfer.StringDownload(
+    """Codename: sid
+Suite: unstable
+Architectures: i386 amd64 source
+Components: main
+DebIndices: Packages Release . .gz .bz2
+DscIndices: Sources Release . .gz .bz2
+SignWith: %(gpg_key)s
+""" % { "gpg_key": gpg_key },
+    slavedest = 'REPO-sid/conf/distributions',
+))
+
+# add source package to repository
+reprepro_include(f, 'i3-wm*_source.changes', 'dsc')
+
+# Add keyring to the repository. We need to run git clone on our own because
+# the Git() step assumes there’s precisely one repository we want to deal with.
+# No big deal since the i3-autobuild-keyring repository is not big.
+cmd(f,
+    name = 'clone keyring repo',
+    command = 'git clone git://code.i3wm.org/i3-autobuild-keyring',
+)
+reprepro_include(f, 'i3-autobuild-keyring/prebuilt/*.changes')
+
+for dist in distributions:
+    # update the pbuilder
+    cmd(f, name = 'update builder', command = 'pbuilder-' + dist + ' update')
+
+    # build the package for each dist
+    f.addStep(ShellCommand(
+        logEnviron = False,
+        name = 'pkg ' + dist,
+        command = 'pbuilder-' + dist + ' build --binary-arch \
+--buildresult RESULT-' + dist + ' --debbuildopts -j8 i3-wm*dsc',
+        warnOnFailure = True
+    ))
+
+    reprepro_include(f, 'RESULT-' + dist + '/*.changes')
+
+# upload the sid repo
+# Since the next step is cleaning up old files, we set haltOnFailure=True -- we
+# prefer providing old packages over providing no packages at all :).
+for directory in [ 'pool', 'dists' ]:
+    f.addStep(transfer.DirectoryUpload(
+        slavesrc = 'REPO-sid/' + directory,
+        masterdest = 'htdocs/debian/sid/' + directory,
+        compress = 'bz2',
+        name = 'upload sid ' + directory,
+        haltOnFailure = True,
+    ))
+
+f.addStep(master.MasterShellCommand(
+    command = "find htdocs/debian/sid/pool -mtime +3 -exec rm '{}' \;",
+    name = 'cleanup old packages',
+))
+
+# We ensure there is an empty i18n/Index to speed up apt (so that it does not
+# try to download Translation-*)
+f.addStep(master.MasterShellCommand(
+    command = [ 'mkdir', '-p', 'htdocs/debian/sid/dists/sid/main/i18n' ],
+    name = 'create i18n folder',
+))
+f.addStep(master.MasterShellCommand(
+    command = [ 'touch', 'htdocs/debian/sid/dists/sid/main/i18n/Index' ],
+    name = 'touch i18n/Index',
+))
+
+

The reprepro_include command is defined as follows:

+

reprepro_include:

+
+
+
def reprepro_include(factory, path, debtype='deb', **kwargs):
+    cmd(factory,
+        name = 'reprepro include',
+        command = 'reprepro --ignore=wrongdistribution -T ' + debtype + ' -b REPO-sid include sid ' + path,
+        **kwargs
+    )
+
+

Running such a builder for Ubuntu works exactly the same way, but you need to +replace "sid" with "precise" in all places (see the full configuration file for +an example).

+
+
+

3.8. Status targets

+

We don’t advertise the HTTP status target. Instead, status is posted to IRC via +a custom bot. This bot provides an HTTP end point and buildbot is configured to +push status changes to that endpoint:

+

http status target:

+
+
+
c['status'].append(buildbot.status.status_push.HttpStatusPush(
+    serverUrl = 'http://localhost:8080/push_buildbot',
+))
+
+

You can find the source code of that bot at +http://code.stapelberg.de/git/go-buildbot-announce/. As the name suggests, it +is written in Go. Also, it is quite specific to i3, so you might be better off +implementing such a bot (or plugin) on your own. It might make for a nice +example, though, especially back when its only feature was announcing the build +status:

+ +
+
+

3.9. Creating the buildslave

+

One more thing to note is that when creating the buildslave, you should use the +--umask argument to configure the umask for all generated files:

+

Creating the buildslave:

+
+
+
buildslave create-slave --umask=022 i3-buildslave buildbot.i3wm.org build-1 <password>
+
+
+
+
+
+

4. Full configuration file

+
+

This is the full configuration file, as tested and currently in use (except for +the passwords, though):

+

master.cfg:

+
+
+
# -*- python -*-
+# -*- coding: utf-8
+# vim:ts=4:sw=4:expandtab:syntax=python
+#
+# i3 buildbot configuration
+# © 2012 Michael Stapelberg, Public Domain
+# see http://i3wm.org/docs/buildbot.html for more information.
+
+from buildbot.buildslave import BuildSlave
+from buildbot.changes import pb
+from buildbot.schedulers.basic import SingleBranchScheduler
+from buildbot.schedulers.triggerable import Triggerable
+from buildbot.process.properties import WithProperties
+from buildbot.process.factory import BuildFactory
+from buildbot.steps.source.git import Git
+from buildbot.steps.shell import ShellCommand
+from buildbot.steps.shell import Compile
+from buildbot.steps.trigger import Trigger
+from buildbot.steps import shell, transfer, master, slave
+from buildbot.config import BuilderConfig
+from buildbot.process import buildstep
+from buildbot.status import html
+from buildbot.status import words
+import buildbot.status.status_push
+from buildbot.status.web import auth, authz
+from buildbot.status.builder import SUCCESS, FAILURE
+
+c = BuildmasterConfig = {}
+
+c['slaves'] = [BuildSlave('docsteel-vm', 'secret')]
+c['slavePortnum'] = 9989
+# Changes are pushed to buildbot using a git hook.
+c['change_source'] = [pb.PBChangeSource(
+    user = 'i3-source',
+    passwd = 'secret',
+)]
+
+################################################################################
+# schedulers
+################################################################################
+
+c['schedulers'] = []
+
+# The first scheduler kicks off multiple builders:
+# • 'dist' builds a dist tarball and starts the triggerable schedulers
+#   'compile'
+# • 'docs' builds the documentation with a special asciidoc configuration
+#   (therefore, it does not profit from a dist tarball and can be run in
+#    parallel).
+c['schedulers'].append(SingleBranchScheduler(
+    name = 'dist',
+    branch = 'next',
+    treeStableTimer = 10,
+    builderNames = [ 'dist', 'docs' ],
+))
+
+c['schedulers'].append(Triggerable(
+    name = 'dist-tarball-done',
+    builderNames = [ 'compile', 'clang-analyze', 'debian-packages', 'ubuntu-packages' ],
+))
+
+################################################################################
+# Shortcuts for builders
+################################################################################
+
+# shortcut for a ShellCommand with haltOnFailure=True, logEnviron=False
+def cmd(factory, **kwargs):
+    factory.addStep(ShellCommand(
+        haltOnFailure=True,
+        logEnviron=False,
+        **kwargs
+    ))
+
+# Shortcut to add steps necessary to download and unpack the dist tarball.
+def unpack_dist_tarball(factory):
+    factory.addStep(transfer.FileDownload(
+        mastersrc=WithProperties('distballs/dist-%(gitversion)s.tar.bz2'),
+        slavedest='dist.tar.bz2',
+    ))
+    factory.addStep(slave.MakeDirectory(dir='build/DIST'))
+    cmd(factory,
+        name = 'unpack dist tarball',
+        command = [ 'tar', 'xf', 'dist.tar.bz2', '-C', 'DIST', '--strip-components=1' ],
+    )
+
+# Includes the given path in REPO-sid using reprepro.
+def reprepro_include(factory, path, debtype='deb', **kwargs):
+    cmd(factory,
+        name = 'reprepro include',
+        command = 'reprepro --ignore=wrongdistribution -T ' + debtype + ' -b REPO-sid include sid ' + path,
+        **kwargs
+    )
+
+def reprepro_include_ubuntu(factory, path, debtype='deb', **kwargs):
+    cmd(factory,
+        name = 'reprepro include',
+        command = 'reprepro --ignore=wrongdistribution -T ' + debtype + ' -b REPO-sid include precise ' + path,
+        **kwargs
+    )
+
+################################################################################
+# Custom steps
+################################################################################
+
+# Adds the ircsuffix property to reflect whether there were warnings.
+class WarningsToIRC(buildstep.BuildStep):
+  def start(self):
+    warnings = self.getProperty("warnings-count")
+    if warnings is not None and int(warnings) > 0:
+      warnings = int(warnings)  # just to be sure
+      self.setProperty("ircsuffix", "\0037 with %d warning%s!" % (warnings, "s" if warnings != 1 else ""))
+    else:
+      self.setProperty("ircsuffix", "\0033 without warnings")
+    self.finished(SUCCESS)
+
+# Adds a link to the automatically generated documentation.
+class DocsToIRC(buildstep.BuildStep):
+  def start(self):
+    self.setProperty("ircsuffix", ", see http://build.i3wm.org/docs/")
+    self.finished(SUCCESS)
+
+# Adds a link to the clang report.
+class ClangToIRC(buildstep.BuildStep):
+  def start(self):
+    self.setProperty("ircsuffix", ", see http://build.i3wm.org/clang-analyze/")
+    self.finished(SUCCESS)
+
+################################################################################
+# Shared steps, used in different factories.
+################################################################################
+
+s_git = Git(
+    repourl='git://code.i3wm.org/i3',
+    branch='next',
+
+    # Check out the latest revision, not the one which caused this build.
+    alwaysUseLatest=True,
+
+    # We cannot use shallow because it breaks git describe --tags.
+    shallow=False,
+
+    # Delete remnants of previous builds.
+    mode='full',
+
+    # Store checkouts in source/ and copy them over to build/ to save
+    # bandwidth.
+    method='copy',
+
+    # XXX: In newer versions of buildbot (> 0.8.6), we want to use
+    # getDescription={ 'tags': True } here and get rid of the extra git
+    # describe --tags step.
+)
+
+################################################################################
+# factory: "dist" — builds the dist tarball once (used by all other factories)
+################################################################################
+
+factories = {}
+
+f = factories['dist'] = BuildFactory()
+# Check out the git repository.
+f.addStep(s_git)
+# Fill the 'gitversion' property with the output of git describe --tags.
+f.addStep(shell.SetProperty(command = 'git describe --tags', property = 'gitversion'))
+# Build the dist tarball.
+cmd(f, name = 'make dist', command = [ 'make', 'dist' ])
+# Rename the created tarball to a well-known name.
+cmd(f, name = 'rename tarball', command = WithProperties('mv *.tar.bz2 dist-%(gitversion)s.tar.bz2'))
+# Upload the dist tarball to the master (other factories download it later).
+f.addStep(transfer.FileUpload(
+    slavesrc = WithProperties('dist-%(gitversion)s.tar.bz2'),
+    masterdest = WithProperties('distballs/dist-%(gitversion)s.tar.bz2'),
+))
+# Cleanup old dist tarballs (everything older than tree days).
+f.addStep(master.MasterShellCommand(
+    command = "find distballs -mtime +3 -exec rm '{}' \;",
+    name = 'cleanup old dist tarballs',
+))
+# Everything worked fine, now trigger compilation.
+f.addStep(Trigger(
+    schedulerNames = [ 'dist-tarball-done' ],
+    copy_properties = [ 'gitversion' ],
+))
+
+################################################################################
+# factory: "compile" — compiles the dist tarball and reports warnings
+################################################################################
+
+f = factories['compile'] = BuildFactory()
+unpack_dist_tarball(f)
+f.addStep(Compile(
+    command = [ 'make', 'DEBUG=0', '-j4' ],
+    warningPattern = '.*warning: ',
+    warnOnWarnings = True,
+    workdir = 'build/DIST',
+    env = {
+      'CPPFLAGS': '-D_FORTIFY_SOURCE=2',
+      'CFLAGS': '-Wformat -Wformat-security'
+    },
+))
+
+f.addStep(WarningsToIRC())
+
+################################################################################
+# factory: "clang-analyze" — runs a static code analysis
+################################################################################
+# $ sudo apt-get install clang
+
+f = factories['clang-analyze'] = BuildFactory()
+unpack_dist_tarball(f)
+cmd(f,
+    name='analyze',
+    command = [
+        'scan-build',
+        '-o', '../CLANG',
+        '--html-title', WithProperties('Analysis of i3 v%(gitversion)s'),
+        'make', '-j8',
+    ],
+    workdir = 'build/DIST',
+)
+
+# remove the subdirectory -- we always want to overwrite
+cmd(f, command = 'mv CLANG/*/* CLANG/')
+
+f.addStep(transfer.DirectoryUpload(
+    slavesrc = 'CLANG',
+    masterdest = 'htdocs/clang-analyze',
+    compress = 'bz2',
+    name = 'upload output',
+))
+
+f.addStep(ClangToIRC())
+
+################################################################################
+# factory: "docs" — builds documentation with a special asciidoc conf
+################################################################################
+
+f = factories['docs'] = BuildFactory()
+f.addStep(s_git)
+# Fill the 'gitversion' property with the output of git describe --tags.
+f.addStep(shell.SetProperty(command = 'git describe --tags', property = 'gitversion'))
+cmd(f, name = 'build docs', command = [ 'make', '-C', 'docs', "ASCIIDOC=asciidoc -a linkcss -a stylesdir=http://i3wm.org/css -a scriptsdir=http://i3wm.org/js --backend=xhtml11 -f docs/asciidoc-git.conf" ])
+cmd(f, name = 'build manpages', command = "for file in $(sed 's/\.1$/.man/g' debian/i3-wm.manpages); do asciidoc -a linkcss -a stylesdir=http://i3wm.org/css -a scriptsdir=http://i3wm.org/js --backend=xhtml11 -f docs/asciidoc-git.conf \"$file\"; done")
+f.addStep(slave.MakeDirectory(dir='build/COPY-DOCS'))
+cmd(f, name = 'copy docs', command = "cp $(tr '\\n' ' ' < debian/i3-wm.docs) COPY-DOCS")
+cmd(f, name = 'copy manpages', command = "cp $(sed 's/\.1$/.html/g' debian/i3-wm.manpages | tr '\\n' ' ') COPY-DOCS")
+
+f.addStep(transfer.DirectoryUpload(
+    slavesrc = 'COPY-DOCS',
+    masterdest = 'htdocs/docs-git',
+    compress = 'bz2',
+    name = 'upload docs'))
+
+f.addStep(DocsToIRC())
+
+################################################################################
+# factory: "debian-packages" — builds Debian (sid) packages for amd64 and i386
+################################################################################
+
+distributions = [ 'sid-amd64', 'sid-i386' ]
+gpg_key = 'BE1DB1F1'
+
+f = factories['debian-packages'] = BuildFactory()
+# We need the git repository for the Debian packaging.
+f.addStep(s_git)
+unpack_dist_tarball(f)
+cmd(f, name='copy packaging', command = "cp -r debian DIST/")
+
+# Add a new changelog entry to have the git version in the package version.
+cmd(f,
+    name = 'update changelog',
+    workdir = 'build/DIST',
+    command = [ 'debchange', '-m', '-l', WithProperties('+g%(gitversion)s'), 'Automatically built' ],
+)
+
+cmd(f,
+    name = 'source pkg',
+    command = [ 'dpkg-buildpackage', '-S', '-us', '-uc' ],
+    workdir = 'build/DIST',
+)
+
+for dist in distributions:
+    f.addStep(slave.MakeDirectory(dir='build/RESULT-' + dist))
+
+# Create debian sid repository
+f.addStep(slave.MakeDirectory(dir='build/REPO-sid/conf'))
+f.addStep(transfer.StringDownload(
+    """Codename: sid
+Suite: unstable
+Architectures: i386 amd64 source
+Components: main
+DebIndices: Packages Release . .gz .bz2
+DscIndices: Sources Release . .gz .bz2
+SignWith: %(gpg_key)s
+""" % { "gpg_key": gpg_key },
+    slavedest = 'REPO-sid/conf/distributions',
+))
+
+# add source package to repository
+reprepro_include(f, 'i3-wm*_source.changes', 'dsc')
+
+# Add keyring to the repository. We need to run git clone on our own because
+# the Git() step assumes there’s precisely one repository we want to deal with.
+# No big deal since the i3-autobuild-keyring repository is not big.
+cmd(f, name='clone keyring repo', command = 'git clone git://code.i3wm.org/i3-autobuild-keyring')
+reprepro_include(f, 'i3-autobuild-keyring/prebuilt/*.changes')
+
+for dist in distributions:
+    # update the pbuilder
+    cmd(f, name = 'update builder', command = 'pbuilder-' + dist + ' update')
+
+    # build the package for each dist
+    f.addStep(ShellCommand(
+        logEnviron = False,
+        name = 'pkg ' + dist,
+        command = 'pbuilder-' + dist + ' build --binary-arch \
+--buildresult RESULT-' + dist + ' --debbuildopts -j8 i3-wm*dsc',
+        warnOnFailure = True
+    ))
+
+    reprepro_include(f, 'RESULT-' + dist + '/*.changes')
+
+# upload the sid repo
+# Since the next step is cleaning up old files, we set haltOnFailure=True -- we
+# prefer providing old packages over providing no packages at all :).
+for directory in [ 'pool', 'dists' ]:
+    f.addStep(transfer.DirectoryUpload(
+        slavesrc = 'REPO-sid/' + directory,
+        masterdest = 'htdocs/debian/sid/' + directory,
+        compress = 'bz2',
+        name = 'upload sid ' + directory,
+        haltOnFailure = True,
+    ))
+
+f.addStep(master.MasterShellCommand(
+    command = "find htdocs/debian/sid/pool -mtime +3 -exec rm '{}' \;",
+    name = 'cleanup old packages',
+))
+
+# We ensure there is an empty i18n/Index to speed up apt (so that it does not
+# try to download Translation-*)
+f.addStep(master.MasterShellCommand(
+    command = [ 'mkdir', '-p', 'htdocs/debian/sid/dists/sid/main/i18n' ],
+    name = 'create i18n folder',
+))
+f.addStep(master.MasterShellCommand(
+    command = [ 'touch', 'htdocs/debian/sid/dists/sid/main/i18n/Index' ],
+    name = 'touch i18n/Index',
+))
+
+################################################################################
+# factory: "ubuntu-packages" — builds Ubuntu (precise) packages for amd64 and i386
+################################################################################
+
+distributions = [ 'precise-amd64', 'precise-i386' ]
+gpg_key = 'BE1DB1F1'
+
+f = factories['ubuntu-packages'] = BuildFactory()
+# We need the git repository for the Debian packaging.
+f.addStep(s_git)
+unpack_dist_tarball(f)
+cmd(f, name='copy packaging', command = "cp -r debian DIST/")
+
+# Add a new changelog entry to have the git version in the package version.
+cmd(f,
+    name = 'update changelog',
+    workdir = 'build/DIST',
+    command = [ 'debchange', '-m', '-l', WithProperties('+g%(gitversion)s'), 'Automatically built' ],
+)
+
+cmd(f,
+    name = 'source pkg',
+    command = [ 'dpkg-buildpackage', '-S', '-us', '-uc' ],
+    workdir = 'build/DIST',
+)
+
+for dist in distributions:
+    f.addStep(slave.MakeDirectory(dir='build/RESULT-' + dist))
+
+# Create debian sid repository
+f.addStep(slave.MakeDirectory(dir='build/REPO-sid/conf'))
+f.addStep(transfer.StringDownload(
+    """Codename: precise
+Suite: unstable
+Architectures: i386 amd64 source
+Components: main
+DebIndices: Packages Release . .gz .bz2
+DscIndices: Sources Release . .gz .bz2
+SignWith: %(gpg_key)s
+""" % { "gpg_key": gpg_key },
+    slavedest = 'REPO-sid/conf/distributions',
+))
+
+# add source package to repository
+reprepro_include_ubuntu(f, 'i3-wm*_source.changes', 'dsc')
+
+# Add keyring to the repository. We need to run git clone on our own because
+# the Git() step assumes there’s precisely one repository we want to deal with.
+# No big deal since the i3-autobuild-keyring repository is not big.
+cmd(f, name='clone keyring repo', command = 'git clone git://code.i3wm.org/i3-autobuild-keyring')
+reprepro_include_ubuntu(f, 'i3-autobuild-keyring/prebuilt/*.changes')
+
+for dist in distributions:
+    # update the pbuilder
+    cmd(f, name = 'update builder', command = 'pbuilder-' + dist + ' update')
+
+    # build the package for each dist
+    f.addStep(ShellCommand(
+        logEnviron = False,
+        name = 'pkg ' + dist,
+        command = 'pbuilder-' + dist + ' build --binary-arch \
+--buildresult RESULT-' + dist + ' --debbuildopts -j8 i3-wm*dsc',
+        warnOnFailure = True
+    ))
+
+    reprepro_include_ubuntu(f, 'RESULT-' + dist + '/*.changes')
+
+# upload the sid repo
+# Since the next step is cleaning up old files, we set haltOnFailure=True -- we
+# prefer providing old packages over providing no packages at all :).
+for directory in [ 'pool', 'dists' ]:
+    f.addStep(transfer.DirectoryUpload(
+        slavesrc = 'REPO-sid/' + directory,
+        masterdest = 'htdocs/ubuntu/precise/' + directory,
+        compress = 'bz2',
+        name = 'upload precise ' + directory,
+        haltOnFailure = True,
+    ))
+
+f.addStep(master.MasterShellCommand(
+    command = "find htdocs/ubuntu/precise/pool -mtime +3 -exec rm '{}' \;",
+    name = 'cleanup old packages',
+))
+
+# We ensure there is an empty i18n/Index to speed up apt (so that it does not
+# try to download Translation-*)
+f.addStep(master.MasterShellCommand(
+    command = [ 'mkdir', '-p', 'htdocs/ubuntu/precise/dists/sid/main/i18n' ],
+    name = 'create i18n folder',
+))
+f.addStep(master.MasterShellCommand(
+    command = [ 'touch', 'htdocs/ubuntu/precise/dists/sid/main/i18n/Index' ],
+    name = 'touch i18n/Index',
+))
+
+
+c['builders'] = []
+
+# Add all builders to all buildslaves.
+for factoryname in factories.keys():
+    c['builders'].append(BuilderConfig(
+        name = factoryname,
+        slavenames=['docsteel-vm'],
+        factory=factories[factoryname],
+    ))
+
+
+####### STATUS TARGETS
+
+c['status'] = []
+
+authz_cfg=authz.Authz(
+    gracefulShutdown = False,
+    forceBuild = False,
+    forceAllBuilds = False,
+    pingBuilder = False,
+    stopBuild = False,
+    stopAllBuilds = False,
+    cancelPendingBuild = False,
+)
+
+c['status'].append(html.WebStatus(http_port=8010, authz=authz_cfg))
+
+c['status'].append(buildbot.status.status_push.HttpStatusPush(
+    serverUrl = 'http://localhost:8080/push_buildbot',
+))
+
+####### PROJECT IDENTITY
+
+c['title'] = 'i3'
+c['titleURL'] = 'http://i3wm.org/'
+# Removed so that search engines don’t crawl it
+c['buildbotURL'] = 'http://localhost/'
+
+####### DB URL
+
+c['db'] = {
+    # This specifies what database buildbot uses to store its state.  You can leave
+    # this at its default for all but the largest installations.
+    'db_url' : "sqlite:///state.sqlite",
+}
+
+
+
+
+

+ + + diff --git a/docs/4.8/debugging-release-version.html b/docs/4.8/debugging-release-version.html new file mode 100644 index 0000000..5fc76ae --- /dev/null +++ b/docs/4.8/debugging-release-version.html @@ -0,0 +1,175 @@ + + + + + + +i3: Debugging i3: How To (release version) + + + + + + + +
+

i3 - improved tiling WM

+ +
+
+ +
+
+

This document describes how to debug i3 suitably for sending us useful bug +reports, even if you have no clue of C programming.

+

First of all: Thank you for being interested in debugging i3. It really means +something to us to get your bug fixed. If you have any questions about the +debugging and/or need further help, do not hesitate to contact us!

+
+ + + +
+
Note
+
This document is for the release version of i3. If you are using a +development version, please see Debugging i3: How To +instead.
+
+
+
+
+

1. Consider using the development version

+
+

This document is for the release version of i3. In many cases, bugs are already +fixed in the development version of i3. If they aren’t, we will still ask you +to reproduce your error with the most recent development version of i3. +Therefore, please upgrade to a development version and continue reading at +Debugging i3: How To.

+

If you absolutely cannot upgrade to a development version of i3, you may +continue reading this document.

+
+
+
+

2. Enabling logging

+
+

i3 logs useful information to stdout. To have a clearly defined place where log +files will be saved, you should redirect stdout and stderr in your +~/.xsession. While you’re at it, putting each run of i3 in a separate log +file with date/time in its filename is a good idea to not get confused about +the different log files later on.

+
+
+
exec /usr/bin/i3 >~/i3log-$(date +'%F-%k-%M-%S') 2>&1
+
+

To enable verbose output and all levels of debug output (required when +attaching logfiles to bugreports), add the parameters -V -d all, like this:

+
+
+
exec /usr/bin/i3 -V -d all >~/i3log-$(date +'%F-%k-%M-%S') 2>&1
+
+
+
+
+

3. Enabling core dumps

+
+

When i3 crashes, often you have the chance of getting a core dump (an image +of the memory of the i3 process which can be loaded into a debugger). To get a +core dump, you have to make sure that the user limit for core dump files is set +high enough. Many systems ship with a default value which even forbids core +dumps completely. To disable the limit completely and thus enable core dumps, +use the following command (in your ~/.xsession, before starting i3):

+
+
+
ulimit -c unlimited
+
+

Furthermore, to easily recognize core dumps and allow multiple of them, you +should set a custom core dump filename pattern, using a command like the +following:

+
+
+
sudo sysctl -w kernel.core_pattern=core.%e.%p
+
+

This will generate files which have the executable’s file name (%e) and the +process id (%p) in it. You can save this setting across reboots using +/etc/sysctl.conf.

+
+
+
+

4. Compiling with debug symbols

+
+

To actually get useful core dumps, you should make sure that your version of i3 +is compiled with debug symbols, that is, that the symbols are not stripped +during the build process. You can check whether your executable contains +symbols by issuing the following command:

+
+
+
file $(which i3)
+
+

You should get an output like this:

+
+
+
/usr/bin/i3: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically
+linked (uses shared libs), for GNU/Linux 2.6.18, not stripped
+
+

Notice the not stripped, which is the important part. If you have a version +which is stripped, please have a look if your distribution provides debug +symbols (package i3-wm-dbg on Debian for example) or if you can turn off +stripping. If nothing helps, please build i3 from source.

+
+
+
+

5. Generating a backtrace

+
+

Once you have made sure that your i3 is compiled with debug symbols and that +core dumps are enabled, you can start making sense out of the core dumps.

+

Because the core dump depends on the original executable (and its debug +symbols), please do this as soon as you encounter the problem. If you +re-compile i3, your core dump might be useless afterwards.

+

Please install gdb, a debugger for C. No worries, you don’t need to learn it +now. Start gdb using the following command (replacing the actual name of the +core dump of course):

+
+
+
gdb $(which i3) core.i3.3849
+
+

Then, generate a backtrace using:

+
+
+
backtrace full
+
+
+
+
+

6. Sending bug reports/debugging on IRC

+
+

When sending bug reports, please paste the relevant part of the log (if in +doubt, please send us rather too much information than too less) and the whole +backtrace (if there was a core dump).

+

When debugging with us in IRC, be prepared to use a so called nopaste service +such as http://nopaste.info or http://pastebin.com because pasting large +amounts of text in IRC sometimes leads to incomplete lines (servers have line +length limitations) or flood kicks.

+
+
+
+

+ + + diff --git a/docs/4.8/debugging.html b/docs/4.8/debugging.html new file mode 100644 index 0000000..d9e7b43 --- /dev/null +++ b/docs/4.8/debugging.html @@ -0,0 +1,173 @@ + + + + + + +i3: Debugging i3: How To + + + + + + + +
+

i3 - improved tiling WM

+ +
+
+ +
+
+

This document describes how to debug i3 to send us useful bug +reports, even if you have no knowledge of C programming.

+

Thank you for being interested in debugging i3. It really means +something to us to get your bug fixed. If you have any questions about the +process and/or need further help, do not hesitate to contact us!

+
+
+
+

1. Verify you are using i3 ≥ 4.7

+
+

Only the latest major version of i3 is supported, i.e. version 4.7 currently. +To verify which version you are running, use:

+
+
+
$ i3 --moreversion 2>&- || i3 --version
+Binary i3 version:  4.7 (2013-12-22, branch "tags/4.7")
+Running i3 version: 4.7-84-gac74a63 (2014-01-01, branch "next") (pid 1995)
+
+

Your version can look like this:

+
+
+4.7 (release version) +
+
+

+You are using a release version. In many cases, bugs are already +fixed in the development version of i3. Even if the bug is not a known fixed +one, we will still ask you to reproduce your error with the most recent +development version of i3. Therefore, please upgrade to a development version +if you can. +

+
+
+4.7-85-g9c15b95 (development version) +
+
+

+Your version is 85 commits newer than 4.7, and the git revision of your +version is 9c15b95. Go to http://code.i3wm.org/i3/commit/?h=next and see if +the line "commit" starts with the same revision. If so, you are using the +latest version. +

+
+
+

Development versions of i3 have logging enabled by default and are compiled +with debug symbols.

+
+
+
+

2. Enabling logging

+
+

If you are using a development version (see previous section), you don’t need +to do anything — skip to section 3.

+

If you are using a release version with a custom ~/.xsession (or xinitrc) +file, execute i3 with a line like this:

+
+
+
# Use 25 MiB of RAM for debug logs
+exec i3 --shmlog-size=26214400
+
+

If you are NOT using an ~/.xsession file but you just chose "i3" from the +list of sessions in your desktop manager (gdm, lxdm, …), edit +/usr/share/xsessions/i3.desktop and replace the Exec=i3 line with:

+
+
+
Exec=i3 --shmlog-size=26214400
+
+

If you cannot restart i3 for some reason, you can enable debug logging on the +fly:

+
+
+
i3-msg 'debuglog on; shmlog on; reload'
+
+
+
+
+

3. Obtaining the debug logfile

+
+

No matter whether i3 misbehaved in some way without crashing or whether it just +crashed, the logfile provides all information necessary to debug the problem.

+

To upload a compressed version of the logfile (for a bugreport), use:

+
+
+
DISPLAY=:0 i3-dump-log | bzip2 -c | curl --data-binary @- http://logs.i3wm.org
+
+

This command does not depend on i3 (it also works while i3 displays +the crash dialog), but it requires a working X11 connection.

+

After running it, you will get a URL to the logfile. Please include that URL in +your bug report.

+
+
+
+

4. On crashes: Obtaining a backtrace

+
+

When i3 crashes, it will display a dialog stating “i3 just crashed”, offering +you to save a backtrace to a text file.

+

To actually get useful backtraces, you should make sure that your version of i3 +is compiled with debug symbols:

+
+
+
$ file `which i3`
+/usr/bin/i3: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically
+linked (uses shared libs), for GNU/Linux 2.6.18, not stripped
+
+

Notice the not stripped, which is the important part. If you have a version +which is stripped, please check whether your distribution provides debug +symbols (package i3-wm-dbg on Debian for example) or if you can turn off +stripping. If nothing helps, please build i3 from source.

+

Once you have made sure that your i3 is compiled with debug symbols and the C +debugger gdb is installed on your machine, you can let i3 generate a +backtrace in the crash dialog.

+

After pressing "b" in the crash dialog, you will get a file called +/tmp/i3-backtrace.%d.%d.txt where the first %d is replaced by i3’s process +id (PID) and the second one is incremented each time you generate a backtrace, +starting at 0.

+
+
+
+

5. Sending bug reports/debugging on IRC

+
+

When sending bug reports, please attach the whole log file. Even if you think +you found the section which clearly highlights the problem, additional +information might be necessary to completely diagnose the problem.

+

When debugging with us in IRC, be prepared to use a so called nopaste service +such as http://nopaste.info or http://pastebin.com because pasting large +amounts of text in IRC sometimes leads to incomplete lines (servers have line +length limitations) or flood kicks.

+
+
+
+

+ + + diff --git a/docs/4.8/gsoc2013-ideas.html b/docs/4.8/gsoc2013-ideas.html new file mode 100644 index 0000000..7bef056 --- /dev/null +++ b/docs/4.8/gsoc2013-ideas.html @@ -0,0 +1,199 @@ + + + + + + +i3: Google Summer of Code 2013 ideas + + + + + + + +
+

i3 - improved tiling WM

+ +
+
+ +
+

1. Idea 1: Saved sessions in i3

+
+

Many desktop environments nowadays have a way of restarting the applications +that you have been using when you reboot your computer.

+

In i3, we want to take that idea a step further: We want to make it possible +for the user to define a precise layout, which is then filled with the +application windows as they start up.

+

Many users are currently achieving a similar effect with custom scripts and +lots of sleep calls to wait for applications to launch and then simulate +interactive commands to move windows around.

+

Many of the building blocks for this feature are already in place, but there +still are a few places of code that need to be touched, a specification to be +written, user feedback to be gathered and documentation to be updated.

+
+

1.1. Desirable skills

+
    +
  • +

    +Experience with C (best) or similar programming languages such as Perl, C++ +

    +
  • +
  • +

    +Willingness and ability to write documentation +

    +
  • +
+
+
+

1.2. What you will learn

+
    +
  • +

    +How X11 and i3 work (not completely, but the most important parts) +

    +
  • +
  • +

    +How to interact with users +

    +
  • +
  • +

    +What good specification and documentation entails +

    +
  • +
+
+
+
+
+

2. Idea 2: Testsuite: better input and output

+
+

i3 uses a comprehensive testsuite and cares about test-driven development as +well as regression tests. While our testsuite covers quite a lot of code and +works well and fest, it currently only uses the IPC interface to communicate +with i3.

+

The current state enables us to simulate anything a user might also trigger by +a keypress. This does not include dragging windows around, moving the mouse, +clicking on things, or handling actual keyboard events. Furthermore, the +testsuite never sees the actual output the user gets to see. Instead, it just +looks at the data structures.

+

Therefore, it would be good to extend the testsuite so that it captures the X11 +output and compares it with saved images. Also, X11 input such as mouse and +keyboard input should be simulated somehow (e.g. captured and replayed).

+
+

2.1. Desirable skills

+
    +
  • +

    +Experience with Perl or willingness to learn it +

    +
  • +
  • +

    +Experience with automated software testing or at least a basic understanding + of the concepts +

    +
  • +
  • +

    +Willingness to learn X11 mechanisms to capture output and simulate input +

    +
  • +
+
+
+

2.2. What you will learn

+
    +
  • +

    +How real-world testsuites work +

    +
  • +
  • +

    +How X11 input/output works +

    +
  • +
  • +

    +How to implement an entirely new feature into an existing codebase +

    +
  • +
+
+
+
+
+

3. Idea 3: Improve compatibility with certain Applications

+
+

We often receive bug reports which are specific to certain toolkits and/or +applications. For example, people are reporting problems with the IntelliJ IDE, +Java applications in general, VMware or Half-Life (via Steam).

+

Most often, these problems are caused by i3 doing things slighty differently +than other window managers and can be solved by observing and comparing what +others do and what i3 does.

+

Fixing compatibility problems is a huge gain for the users of said +applications.

+
+

3.1. Desirable skills

+
    +
  • +

    +Some experience in debugging +

    +
  • +
  • +

    +Willingness to look at X11 traces for many minutes :) +

    +
  • +
+
+
+

3.2. What you will learn

+
    +
  • +

    +How real-world debugging works, sometimes with open source (Java) and + sometimes with closed source applications (Half-Life, VMware) +

    +
  • +
  • +

    +How X11 works +

    +
  • +
+
+
+
+
+

+ + + diff --git a/docs/4.8/hacking-howto.html b/docs/4.8/hacking-howto.html new file mode 100644 index 0000000..8326751 --- /dev/null +++ b/docs/4.8/hacking-howto.html @@ -0,0 +1,1599 @@ + + + + + + +i3: Hacking i3: How To + + + + + + + +
+

i3 - improved tiling WM

+ +
+
+ +
+
+

This document is intended to be the first thing you read before looking and/or +touching i3’s source code. It should contain all important information to help +you understand why things are like they are. If it does not mention something +you find necessary, please do not hesitate to contact me.

+
+
+
+

1. Window Managers

+
+

A window manager is not necessarily needed to run X, but it is usually used in +combination with X to facilitate some things. The window manager’s job is to +take care of the placement of windows, to provide the user with some mechanisms +to change the position/size of windows and to communicate with clients to a +certain extent (for example handle fullscreen requests of clients such as +MPlayer).

+

There are no different contexts in which X11 clients run, so a window manager +is just another client, like all other X11 applications. However, it handles +some events which normal clients usually don’t handle.

+

In the case of i3, the tasks (and order of them) are the following:

+
    +
  1. +

    +Grab the key bindings (events will be sent upon keypress/keyrelease) +

    +
  2. +
  3. +

    +Iterate through all existing windows (if the window manager is not started as + the first client of X) and manage them (reparent them, create window + decorations, etc.) +

    +
  4. +
  5. +

    +When new windows are created, manage them +

    +
  6. +
  7. +

    +Handle the client’s _WM_STATE property, but only _WM_STATE_FULLSCREEN and + _NET_WM_STATE_DEMANDS_ATTENTION +

    +
  8. +
  9. +

    +Handle the client’s WM_NAME property +

    +
  10. +
  11. +

    +Handle the client’s size hints to display them proportionally +

    +
  12. +
  13. +

    +Handle the client’s urgency hint +

    +
  14. +
  15. +

    +Handle enter notifications (focus follows mouse) +

    +
  16. +
  17. +

    +Handle button (as in mouse buttons) presses for focus/raise on click +

    +
  18. +
  19. +

    +Handle expose events to re-draw own windows such as decorations +

    +
  20. +
  21. +

    +React to the user’s commands: Change focus, Move windows, Switch workspaces, + Change the layout mode of a container (default/stacking/tabbed), start a new + application, restart the window manager +

    +
  22. +
+

In the following chapters, each of these tasks and their implementation details +will be discussed.

+
+

1.1. Tiling window managers

+

Traditionally, there are two approaches to managing windows: The most common +one nowadays is floating, which means the user can freely move/resize the +windows. The other approach is called tiling, which means that your window +manager distributes windows to use as much space as possible while not +overlapping each other.

+

The idea behind tiling is that you should not need to waste your time +moving/resizing windows while you usually want to get some work done. After +all, most users sooner or later tend to lay out their windows in a way which +corresponds to tiling or stacking mode in i3. Therefore, why not let i3 do this +for you? Certainly, it’s faster than you could ever do it.

+

The problem with most tiling window managers is that they are too inflexible. +In my opinion, a window manager is just another tool, and similar to vim which +can edit all kinds of text files (like source code, HTML, …) and is not limited +to a specific file type, a window manager should not limit itself to a certain +layout (like dwm, awesome, …) but provide mechanisms for you to easily create +the layout you need at the moment.

+
+
+

1.2. The layout tree

+

The data structure which i3 uses to keep track of your windows is a tree. Every +node in the tree is a container (type Con). Some containers represent actual +windows (every container with a window != NULL), some represent split +containers and a few have special purposes: they represent workspaces, outputs +(like VGA1, LVDS1, …) or the X11 root window.

+

So, when you open a terminal and immediately open another one, they reside in +the same split container, which uses the default layout. In case of an empty +workspace, the split container we are talking about is the workspace.

+

To get an impression of how different layouts are represented, just play around +and look at the data structures — they are exposed as a JSON hash. See +http://i3wm.org/docs/ipc.html#_tree_reply for documentation on that and an +example.

+
+
+
+
+

2. Files

+
+
+
+include/atoms.xmacro +
+
+

+A file containing all X11 atoms which i3 uses. This file will be included +various times (for defining, requesting and receiving the atoms), each time +with a different definition of xmacro(). +

+
+
+include/data.h +
+
+

+Contains data definitions used by nearly all files. You really need to read +this first. +

+
+
+include/*.h +
+
+

+Contains forward definitions for all public functions, as well as +doxygen-compatible comments (so if you want to get a bit more of the big +picture, either browse all header files or use doxygen if you prefer that). +

+
+
+src/config_parser.c +
+
+

+Contains a custom configuration parser. See src/command_parser.c for rationale + on why we use a custom parser. +

+
+
+src/click.c +
+
+

+Contains all functions which handle mouse button clicks (right mouse button +clicks initiate resizing and thus are relatively complex). +

+
+
+src/command_parser.c +
+
+

+Contains a hand-written parser to parse commands (commands are what +you bind on keys and what you can send to i3 using the IPC interface, like +move left or workspace 4). +

+
+
+src/con.c +
+
+

+Contains all functions which deal with containers directly (creating +containers, searching containers, getting specific properties from containers, +…). +

+
+
+src/config.c +
+
+

+Contains all functions handling the configuration file (calling the parser +(src/cfgparse.y) with the correct path, switching key bindings mode). +

+
+
+src/debug.c +
+
+

+Contains debugging functions to print unhandled X events. +

+
+
+src/ewmh.c +
+
+

+Functions to get/set certain EWMH properties easily. +

+
+
+src/floating.c +
+
+

+Contains functions for floating mode (mostly resizing/dragging). +

+
+
+src/handlers.c +
+
+

+Contains all handlers for all kinds of X events (new window title, new hints, +unmapping, key presses, button presses, …). +

+
+
+src/ipc.c +
+
+

+Contains code for the IPC interface. +

+
+
+src/load_layout.c +
+
+

+Contains code for loading layouts from JSON files. +

+
+
+src/log.c +
+
+

+Contains the logging functions. +

+
+
+src/main.c +
+
+

+Initializes the window manager. +

+
+
+src/manage.c +
+
+

+Looks at existing or new windows and decides whether to manage them. If so, it +reparents the window and inserts it into our data structures. +

+
+
+src/match.c +
+
+

+A "match" is a data structure which acts like a mask or expression to match +certain windows or not. For example, when using commands, you can specify a +command like this: [title="Firefox"] kill. The title member of the match +data structure will then be filled and i3 will check each window using +match_matches_window() to find the windows affected by this command. +

+
+
+src/move.c +
+
+

+Contains code to move a container in a specific direction. +

+
+
+src/output.c +
+
+

+Functions to handle CT_OUTPUT cons. +

+
+
+src/randr.c +
+
+

+The RandR API is used to get (and re-query) the configured outputs (monitors, +…). +

+
+
+src/render.c +
+
+

+Renders the tree data structure by assigning coordinates to every node. These +values will later be pushed to X11 in src/x.c. +

+
+
+src/resize.c +
+
+

+Contains the functions to resize containers. +

+
+
+src/restore_layout.c +
+
+

+Everything for restored containers that is not pure state parsing (which can be +found in load_layout.c). +

+
+
+src/sighandler.c +
+
+

+Handles SIGSEGV, SIGABRT and SIGFPE by showing a dialog that i3 crashed. +You can chose to let it dump core, to restart it in-place or to restart it +in-place but forget about the layout. +

+
+
+src/tree.c +
+
+

+Contains functions which open or close containers in the tree, change focus or +cleanup ("flatten") the tree. See also src/move.c for another similar +function, which was moved into its own file because it is so long. +

+
+
+src/util.c +
+
+

+Contains useful functions which are not really dependant on anything. +

+
+
+src/window.c +
+
+

+Handlers to update X11 window properties like WM_CLASS, _NET_WM_NAME, +CLIENT_LEADER, etc. +

+
+
+src/workspace.c +
+
+

+Contains all functions related to workspaces (displaying, hiding, renaming…) +

+
+
+src/x.c +
+
+

+Transfers our in-memory tree (see src/render.c) to X11. +

+
+
+src/xcb.c +
+
+

+Contains wrappers to use xcb more easily. +

+
+
+src/xcursor.c +
+
+

+XCursor functions (for cursor themes). +

+
+
+src/xinerama.c +
+
+

+Legacy support for Xinerama. See src/randr.c for the preferred API. +

+
+
+
+
+
+

3. Data structures

+
+

See include/data.h for documented data structures. The most important ones are +explained right here.

+

So, the hierarchy is:

+
    +
  1. +

    +X11 root window, the root container +

    +
  2. +
  3. +

    +Output container (LVDS1 in this example) +

    +
  4. +
  5. +

    +Content container (there are also containers for dock windows) +

    +
  6. +
  7. +

    +Workspaces (Workspace 1 in this example, with horizontal orientation) +

    +
  8. +
  9. +

    +Split container (vertically split) +

    +
  10. +
  11. +

    +X11 window containers +

    +
  12. +
+

The data type is Con, in all cases.

+
+

3.1. X11 root window

+

The X11 root window is a single window per X11 display (a display is identified +by :0 or :1 etc.). The root window is what you draw your background image +on. It spans all the available outputs, e.g. VGA1 is a specific part of the +root window and LVDS1 is a specific part of the root window.

+
+
+

3.2. Output container

+

Every active output obtained through RandR is represented by one output +container. Outputs are considered active when a mode is configured (meaning +something is actually displayed on the output) and the output is not a clone.

+

For example, if your notebook has a screen resolution of 1280x800 px and you +connect a video projector with a resolution of 1024x768 px, set it up in clone +mode (xrandr --output VGA1 --mode 1024x768 --same-as LVDS1), i3 will +reduce the resolution to the lowest common resolution and disable one of the +cloned outputs afterwards.

+

However, if you configure it using xrandr --output VGA1 --mode 1024x768 +--right-of LVDS1, i3 will set both outputs active. For each output, a new +workspace will be assigned. New workspaces are created on the output you are +currently on.

+
+
+

3.3. Content container

+

Each output has multiple children. Two of them are dock containers which hold +dock clients. The other one is the content container, which holds the actual +content (workspaces) of this output.

+
+
+

3.4. Workspace

+

A workspace is identified by its name. Basically, you could think of +workspaces as different desks in your office, if you like the desktop +metaphor. They just contain different sets of windows and are completely +separate of each other. Other window managers also call this “Virtual +desktops”.

+
+
+

3.5. Split container

+

A split container is a container which holds an arbitrary amount of split +containers or X11 window containers. It has an orientation (horizontal or +vertical) and a layout.

+

Split containers (and X11 window containers, which are a subtype of split +containers) can have different border styles.

+
+
+

3.6. X11 window container

+

An X11 window container holds exactly one X11 window. These are the leaf nodes +of the layout tree, they cannot have any children.

+
+
+
+
+

4. List/queue macros

+
+

i3 makes heavy use of the list macros defined in BSD operating systems. To +ensure that the operating system on which i3 is compiled has all the expected +features, i3 comes with include/queue.h. On BSD systems, you can use man +queue(3). On Linux, you have to use google (or read the source).

+

The lists used are SLIST (single linked lists), CIRCLEQ (circular +queues) and TAILQ (tail queues). Usually, only forward traversal is necessary, +so an SLIST works fine. If inserting elements at arbitrary positions or at +the end of a list is necessary, a TAILQ is used instead. However, for the +windows inside a container, a CIRCLEQ is necessary to go from the currently +selected window to the window above/below.

+
+
+
+

5. Naming conventions

+
+

There is a row of standard variables used in many events. The following names +should be chosen for those:

+
    +
  • +

    +“conn” is the xcb_connection_t +

    +
  • +
  • +

    +“event” is the event of the particular type +

    +
  • +
  • +

    +“con” names a container +

    +
  • +
  • +

    +“current” is a loop variable when using TAILQ_FOREACH etc. +

    +
  • +
+
+
+
+

6. Startup (src/mainx.c, main())

+
+
    +
  • +

    +Establish the xcb connection +

    +
  • +
  • +

    +Check for XKB extension on the separate X connection, load Xcursor +

    +
  • +
  • +

    +Check for RandR screens (with a fall-back to Xinerama) +

    +
  • +
  • +

    +Grab the keycodes for which bindings exist +

    +
  • +
  • +

    +Manage all existing windows +

    +
  • +
  • +

    +Enter the event loop +

    +
  • +
+
+
+
+

7. Keybindings

+
+
+

7.1. Grabbing the bindings

+

Grabbing the bindings is quite straight-forward. You pass X your combination of +modifiers and the keycode you want to grab and whether you want to grab them +actively or passively. Most bindings (everything except for bindings using +Mode_switch) are grabbed passively, that is, just the window manager gets the +event and cannot replay it.

+

We need to grab bindings that use Mode_switch actively because of a bug in X. +When the window manager receives the keypress/keyrelease event for an actively +grabbed keycode, it has to decide what to do with this event: It can either +replay it so that other applications get it or it can prevent other +applications from receiving it.

+

So, why do we need to grab keycodes actively? Because X does not set the +state-property of keypress/keyrelease events properly. The Mode_switch bit is +not set and we need to get it using XkbGetState. This means we cannot pass X +our combination of modifiers containing Mode_switch when grabbing the key and +therefore need to grab the keycode itself without any modifiers. This means, +if you bind Mode_switch + keycode 38 ("a"), i3 will grab keycode 38 ("a") and +check on each press of "a" if the Mode_switch bit is set using XKB. If yes, it +will handle the event, if not, it will replay the event.

+
+
+

7.2. Handling a keypress

+

As mentioned in "Grabbing the bindings", upon a keypress event, i3 first gets +the correct state.

+

Then, it looks through all bindings and gets the one which matches the received +event.

+

The bound command is parsed by the cmdparse lexer/parser, see parse_cmd in +src/cmdparse.y.

+
+
+
+
+

8. Manage windows (src/main.c, manage_window() and reparent_window())

+
+

manage_window() does some checks to decide whether the window should be +managed at all:

+
    +
  • +

    +Windows have to be mapped, that is, visible on screen +

    +
  • +
  • +

    +The override_redirect must not be set. Windows with override_redirect shall + not be managed by a window manager +

    +
  • +
+

Afterwards, i3 gets the initial geometry and reparents the window (see +reparent_window()) if it wasn’t already managed.

+

Reparenting means that for each window which is reparented, a new window, +slightly larger than the original one, is created. The original window is then +reparented to the bigger one (called "frame").

+

After reparenting, the window type (_NET_WM_WINDOW_TYPE) is checked to see +whether this window is a dock (_NET_WM_WINDOW_TYPE_DOCK), like dzen2 for +example. Docks are handled differently, they don’t have decorations and are not +assigned to a specific container. Instead, they are positioned at the bottom +or top of the screen (in the appropriate dock area containers). To get the +height which needs to be reserved for the window, the _NET_WM_STRUT_PARTIAL +property is used.

+

Furthermore, the list of assignments (to other workspaces, which may be on +other screens) is checked. If the window matches one of the user’s criteria, +it may either be put in floating mode or moved to a different workspace. If the +target workspace is not visible, the window will not be mapped.

+
+
+
+

9. What happens when an application is started?

+
+

i3 does not care about applications. All it notices is when new windows are +mapped (see src/handlers.c, handle_map_request()). The window is then +reparented (see section "Manage windows").

+

After reparenting the window, render_tree() is called which renders the +internal layout table. The new window has been placed in the currently focused +container and therefore the new window and the old windows (if any) need to be +moved/resized so that the currently active layout (default/stacking/tabbed mode) +is rendered correctly. To move/resize windows, a window is “configured” in +X11-speak.

+

Some applications, such as MPlayer obviously assume the window manager is +stupid and try to configure their windows by themselves. This generates an +event called configurerequest. i3 handles these events and tells the window the +size it had before the configurerequest (with the exception of not yet mapped +windows, which get configured like they want to, and floating windows, which +can reconfigure themselves).

+
+
+
+

10. _NET_WM_STATE

+
+

Only the _NET_WM_STATE_FULLSCREEN atom is handled. It calls +“toggle_fullscreen()” for the specific client which just configures the +client to use the whole screen on which it currently is. Also, it is set as +fullscreen_client for the i3Screen.

+
+
+
+

11. WM_NAME

+
+

When the WM_NAME property of a window changes, its decoration (containing the +title) is re-rendered. Note that WM_NAME is in COMPOUND_TEXT encoding which is +totally uncommon and cumbersome. Therefore, the _NET_WM_NAME atom will be used +if present.

+
+
+
+

12. _NET_WM_NAME

+
+

Like WM_NAME, this atom contains the title of a window. However, _NET_WM_NAME +is encoded in UTF-8. i3 will recode it to UCS-2 in order to be able to pass it +to X. Using an appropriate font (ISO-10646), you can see most special +characters (every special character contained in your font).

+
+
+
+

13. Size hints

+
+

Size hints specify the minimum/maximum size for a given window as well as its +aspect ratio. This is important for clients like mplayer, who only set the +aspect ratio and resize their window to be as small as possible (but only with +some video outputs, for example in Xv, while when using x11, mplayer does the +necessary centering for itself).

+

So, when an aspect ratio was specified, i3 adjusts the height of the window +until the size maintains the correct aspect ratio. For the code to do this, see +src/layout.c, function resize_client().

+
+
+
+

14. Rendering (src/layout.c, render_layout() and render_container())

+
+

Rendering in i3 version 4 is the step which assigns the correct sizes for +borders, decoration windows, child windows and the stacking order of all +windows. In a separate step (x_push_changes()), these changes are pushed to +X11.

+

Keep in mind that all these properties (rect, window_rect and deco_rect) +are temporary, meaning they will be overwritten by calling render_con. +Persistent position/size information is kept in geometry.

+

The entry point for every rendering operation (except for the case of moving +floating windows around) currently is tree_render() which will re-render +everything that’s necessary (for every output, only the currently displayed +workspace is rendered). This behavior is expected to change in the future, +since for a lot of updates, re-rendering everything is not actually necessary. +Focus was on getting it working correct, not getting it work very fast.

+

What tree_render() actually does is calling render_con() on the root +container and then pushing the changes to X11. The following sections talk +about the different rendering steps, in the order of "top of the tree" (root +container) to the bottom.

+
+

14.1. Rendering the root container

+

The i3 root container (con->type == CT_ROOT) represents the X11 root window. +It contains one child container for every output (like LVDS1, VGA1, …), which +is available on your computer.

+

Rendering the root will first render all tiling windows and then all floating +windows. This is necessary because a floating window can be positioned in such +a way that it is visible on two different outputs. Therefore, by first +rendering all the tiling windows (of all outputs), we make sure that floating +windows can never be obscured by tiling windows.

+

Essentially, though, this code path will just call render_con() for every +output and x_raise_con(); render_con() for every floating window.

+

In the special case of having a "global fullscreen" window (fullscreen mode +spanning all outputs), a shortcut is taken and x_raise_con(); render_con() is +only called for the global fullscreen window.

+
+
+

14.2. Rendering an output

+

Output containers (con->layout == L_OUTPUT) represent a hardware output like +LVDS1, VGA1, etc. An output container has three children (at the moment): One +content container (having workspaces as children) and the top/bottom dock area +containers.

+

The rendering happens in the function render_l_output() in the following +steps:

+
    +
  1. +

    +Find the content container (con->type == CT_CON) +

    +
  2. +
  3. +

    +Get the currently visible workspace (con_get_fullscreen_con(content, + CF_OUTPUT)). +

    +
  4. +
  5. +

    +If there is a fullscreened window on that workspace, directly render it and + return, thus ignoring the dock areas. +

    +
  6. +
  7. +

    +Sum up the space used by all the dock windows (they have a variable height + only). +

    +
  8. +
  9. +

    +Set the workspace rects (x/y/width/height) based on the position of the + output (stored in con->rect) and the usable space + (con->rect.{width,height} without the space used for dock windows). +

    +
  10. +
  11. +

    +Recursively raise and render the output’s child containers (meaning dock + area containers and the content container). +

    +
  12. +
+
+
+

14.3. Rendering a workspace or split container

+

From here on, there really is no difference anymore. All containers are of +con->type == CT_CON (whether workspace or split container) and some of them +have a con->window, meaning they represent an actual window instead of a +split container.

+
+

14.3.1. Default layout

+

In default layout, containers are placed horizontally or vertically next to +each other (depending on the con->orientation). If a child is a leaf node (as +opposed to a split container) and has border style "normal", appropriate space +will be reserved for its window decoration.

+
+
+

14.3.2. Stacked layout

+

In stacked layout, only the focused window is actually shown (this is achieved +by calling x_raise_con() in reverse focus order at the end of render_con()).

+

The available space for the focused window is the size of the container minus +the height of the window decoration for all windows inside this stacked +container.

+

If border style is "1pixel" or "none", no window decoration height will be +reserved (or displayed later on), unless there is more than one window inside +the stacked container.

+
+
+

14.3.3. Tabbed layout

+

Tabbed layout works precisely like stacked layout, but the window decoration +position/size is different: They are placed next to each other on a single line +(fixed height).

+
+
+

14.3.4. Dock area layout

+

This is a special case. Users cannot choose the dock area layout, but it will be +set for the dock area containers. In the dockarea layout (at the moment!), +windows will be placed above each other.

+
+
+
+

14.4. Rendering a window

+

A window’s size and position will be determined in the following way:

+
    +
  1. +

    +Subtract the border if border style is not "none" (but "normal" or "1pixel"). +

    +
  2. +
  3. +

    +Subtract the X11 border, if the window has an X11 border > 0. +

    +
  4. +
  5. +

    +Obey the aspect ratio of the window (think MPlayer). +

    +
  6. +
  7. +

    +Obey the height- and width-increments of the window (think terminal emulator + which can only be resized in one-line or one-character steps). +

    +
  8. +
+
+
+
+
+

15. Pushing updates to X11 / Drawing

+
+

A big problem with i3 before version 4 was that we just sent requests to X11 +anywhere in the source code. This was bad because nobody could understand the +entirety of our interaction with X11, it lead to subtle bugs and a lot of edge +cases which we had to consider all over again.

+

Therefore, since version 4, we have a single file, src/x.c, which is +responsible for repeatedly transferring parts of our tree datastructure to X11.

+

src/x.c consists of multiple parts:

+
    +
  1. +

    +The state pushing: x_push_changes(), which calls x_push_node(). +

    +
  2. +
  3. +

    +State modification functions: x_con_init, x_reinit, + x_reparent_child, x_move_win, x_con_kill, x_raise_con, x_set_name + and x_set_warp_to. +

    +
  4. +
  5. +

    +Expose event handling (drawing decorations): x_deco_recurse() and + x_draw_decoration(). +

    +
  6. +
+
+

15.1. Pushing state to X11

+

In general, the function x_push_changes should be called to push state +changes. Only when the scope of the state change is clearly defined (for +example only the title of a window) and its impact is known beforehand, one can +optimize this and call x_push_node on the appropriate con directly.

+

x_push_changes works in the following steps:

+
    +
  1. +

    +Clear the eventmask for all mapped windows. This leads to not getting + useless ConfigureNotify or EnterNotify events which are caused by our + requests. In general, we only want to handle user input. +

    +
  2. +
  3. +

    +Stack windows above each other, in reverse stack order (starting with the + most obscured/bottom window). This is relevant for floating windows which + can overlap each other, but also for tiling windows in stacked or tabbed + containers. We also update the _NET_CLIENT_LIST_STACKING hint which is + necessary for tab drag and drop in Chromium. +

    +
  4. +
  5. +

    +x_push_node will be called for the root container, recursively calling + itself for the container’s children. This function actually pushes the + state, see the next paragraph. +

    +
  6. +
  7. +

    +If the pointer needs to be warped to a different position (for example when + changing focus to a differnt output), it will be warped now. +

    +
  8. +
  9. +

    +The eventmask is restored for all mapped windows. +

    +
  10. +
  11. +

    +Window decorations will be rendered by calling x_deco_recurse on the root + container, which then recursively calls itself for the children. +

    +
  12. +
  13. +

    +If the input focus needs to be changed (because the user focused a different + window), it will be updated now. +

    +
  14. +
  15. +

    +x_push_node_unmaps will be called for the root container. This function + only pushes UnmapWindow requests. Separating the state pushing is necessary + to handle fullscreen windows (and workspace switches) in a smooth fashion: + The newly visible windows should be visible before the old windows are + unmapped. +

    +
  16. +
+

x_push_node works in the following steps:

+
    +
  1. +

    +Update the window’s WM_NAME, if changed (the WM_NAME is set on i3 + containers mainly for debugging purposes). +

    +
  2. +
  3. +

    +Reparents a child window into the i3 container if the container was created + for a specific managed window. +

    +
  4. +
  5. +

    +If the size/position of the i3 container changed (due to opening a new + window or switching layouts for example), the window will be reconfigured. + Also, the pixmap which is used to draw the window decoration/border on is + reconfigured (pixmaps are size-dependent). +

    +
  6. +
  7. +

    +Size/position for the child window is adjusted. +

    +
  8. +
  9. +

    +The i3 container is mapped if it should be visible and was not yet mapped. + When mapping, WM_STATE is set to WM_STATE_NORMAL. Also, the eventmask of + the child window is updated and the i3 container’s contents are copied from + the pixmap. +

    +
  10. +
  11. +

    +x_push_node is called recursively for all children of the current + container. +

    +
  12. +
+

x_push_node_unmaps handles the remaining case of an i3 container being +unmapped if it should not be visible anymore. WM_STATE will be set to +WM_STATE_WITHDRAWN.

+
+
+

15.2. Drawing window decorations/borders/backgrounds

+

x_draw_decoration draws window decorations. It is run for every leaf +container (representing an actual X11 window) and for every non-leaf container +which is in a stacked/tabbed container (because stacked/tabbed containers +display a window decoration for split containers, which at the moment just says +"another container").

+

Then, parameters are collected to be able to determine whether this decoration +drawing is actually necessary or was already done. This saves a substantial +number of redraws (depending on your workload, but far over 50%).

+

Assuming that we need to draw this decoration, we start by filling the empty +space around the child window (think of MPlayer with a specific aspect ratio) +in the user-configured client background color.

+

Afterwards, we draw the appropriate border (in case of border styles "normal" +and "1pixel") and the top bar (in case of border style "normal").

+

The last step is drawing the window title on the top bar.

+
+
+
+
+

16. User commands (parser-specs/commands.spec)

+
+

In the configuration file and when using i3 interactively (with i3-msg, for +example), you use commands to make i3 do things, like focus a different window, +set a window to fullscreen, and so on. An example command is floating enable, +which enables floating mode for the currently focused window. See the +appropriate section in the User’s Guide for a reference of +all commands.

+

In earlier versions of i3, interpreting these commands was done using lex and +yacc, but experience has shown that lex and yacc are not well suited for our +command language. Therefore, starting from version 4.2, we use a custom parser +for user commands (not yet for the configuration file). +The input specification for this parser can be found in the file +parser-specs/commands.spec. Should you happen to use Vim as an editor, use +:source parser-specs/highlighting.vim to get syntax highlighting for this file +(highlighting files for other editors are welcome).

+
+
Excerpt from commands.spec
+
+
state INITIAL:
+  '[' -> call cmd_criteria_init(); CRITERIA
+  'move' -> MOVE
+  'exec' -> EXEC
+  'workspace' -> WORKSPACE
+  'exit' -> call cmd_exit()
+  'restart' -> call cmd_restart()
+  'reload' -> call cmd_reload()
+
+

The input specification is written in an extremely simple format. The +specification is then converted into C code by the Perl script +generate-commands-parser.pl (the output file names begin with GENERATED and the +files are stored in the include directory). The parser implementation +src/commands_parser.c includes the generated C code at compile-time.

+

The above excerpt from commands.spec illustrates nearly all features of our +specification format: You describe different states and what can happen within +each state. State names are all-caps; the state in the above excerpt is called +INITIAL. A list of tokens and their actions (separated by an ASCII arrow) +follows. In the excerpt, all tokens are literals, that is, simple text strings +which will be compared with the input. An action is either the name of a state +in which the parser will transition into, or the keyword call, followed by +the name of a function (and optionally a state).

+
+

16.1. Example: The WORKSPACE state

+

Let’s have a look at the WORKSPACE state, which is a good example of all +features. This is its definition:

+
+
WORKSPACE state (commands.spec)
+
+
# workspace next|prev|next_on_output|prev_on_output
+# workspace back_and_forth
+# workspace <name>
+state WORKSPACE:
+  direction = 'next_on_output', 'prev_on_output', 'next', 'prev'
+      -> call cmd_workspace($direction)
+  'back_and_forth'
+      -> call cmd_workspace_back_and_forth()
+  workspace = string
+      -> call cmd_workspace_name($workspace)
+
+

As you can see from the commands, there are multiple different valid variants +of the workspace command:

+
+
+workspace <direction> +
+
+

+ The word workspace can be followed by any of the tokens next, + prev, next_on_output or prev_on_output. This command will + switch to the next or previous workspace (optionally on the same + output).
+ There is one function called cmd_workspace, which is defined + in src/commands.c. It will handle this kind of command. To know which + direction was specified, the direction token is stored on the stack + with the name "direction", which is what the "direction = " means in + the beginning.
+

+
+
+
+ + + +
+
Note
+
Note that you can specify multiple literals in the same line. This has + exactly the same effect as if you specified direction = + 'next_on_output' -> call cmd_workspace($direction) and so forth.
+
+
+ + + +
+
Note
+
Also note that the order of literals is important here: If next were + ordered before next_on_output, then next_on_output would never + match.
+
+
+
+workspace back_and_forth +
+
+

+ This is a very simple case: When the literal back_and_forth is found + in the input, the function cmd_workspace_back_and_forth will be + called without parameters and the parser will return to the INITIAL + state (since no other state was specified). +

+
+
+workspace <name> +
+
+

+ In this case, the workspace command is followed by an arbitrary string, + possibly in quotes, for example "workspace 3" or "workspace bleh".
+ This is the first time that the token is actually not a literal (not in + single quotes), but just called string. Other possible tokens are word + (the same as string, but stops matching at a whitespace) and end + (matches the end of the input). +

+
+
+
+
+

16.2. Introducing a new command

+

The following steps have to be taken in order to properly introduce a new +command (or possibly extend an existing command):

+
    +
  1. +

    +Define a function beginning with cmd_ in the file src/commands.c. Copy + the prototype of an existing function. +

    +
  2. +
  3. +

    +After adding a comment on what the function does, copy the comment and + function definition to include/commands.h. Make the comment in the header + file use double asterisks to make doxygen pick it up. +

    +
  4. +
  5. +

    +Write a test case (or extend an existing test case) for your feature, see + i3 testsuite. For now, it is sufficient to simply call + your command in all the various possible ways. +

    +
  6. +
  7. +

    +Extend the parser specification in parser-specs/commands.spec. Run the + testsuite and see if your new function gets called with the appropriate + arguments for the appropriate input. +

    +
  8. +
  9. +

    +Actually implement the feature. +

    +
  10. +
  11. +

    +Document the feature in the User’s Guide. +

    +
  12. +
+
+
+
+
+

17. Moving containers

+
+

The movement code is pretty delicate. You need to consider all cases before +making any changes or before being able to fully understand how it works.

+
+

17.1. Case 1: Moving inside the same container

+

The reference layout for this case is a single workspace in horizontal +orientation with two containers on it. Focus is on the left container (1).

+
+ +++ + + + + + +

1

2

+
+

When moving the left window to the right (command move right), tree_move will +look for a container with horizontal orientation and finds the parent of the +left container, that is, the workspace. Afterwards, it runs the code branch +commented with "the easy case": it calls TAILQ_NEXT to get the container right +of the current one and swaps both containers.

+
+
+

17.2. Case 2: Move a container into a split container

+

The reference layout for this case is a horizontal workspace with two +containers. The right container is a v-split with two containers. Focus is on +the left container (1).

+
+ +++ + + + + + + + + +

1

2

3

+
+

When moving to the right (command move right), i3 will work like in case 1 +("the easy case"). However, as the right container is not a leaf container, but +a v-split, the left container (1) will be inserted at the right position (below +2, assuming that 2 is focused inside the v-split) by calling insert_con_into.

+

insert_con_into detaches the container from its parent and inserts it +before/after the given target container. Afterwards, the on_remove_child +callback is called on the old parent container which will then be closed, if +empty.

+

Afterwards, con_focus will be called to fix the focus stack and the tree will +be flattened.

+
+
+

17.3. Case 3: Moving to non-existant top/bottom

+

Like in case 1, the reference layout for this case is a single workspace in +horizontal orientation with two containers on it. Focus is on the left +container:

+
+ +++ + + + + + +

1

2

+
+

This time however, the command is move up or move down. tree_move will look +for a container with vertical orientation. As it will not find any, +same_orientation is NULL and therefore i3 will perform a forced orientation +change on the workspace by creating a new h-split container, moving the +workspace contents into it and then changing the workspace orientation to +vertical. Now it will again search for parent containers with vertical +orientation and it will find the workspace.

+

This time, the easy case code path will not be run as we are not moving inside +the same container. Instead, insert_con_into will be called with the focused +container and the container above/below the current one (on the level of +same_orientation).

+

Now, con_focus will be called to fix the focus stack and the tree will be +flattened.

+
+
+

17.4. Case 4: Moving to existant top/bottom

+

The reference layout for this case is a vertical workspace with two containers. +The bottom one is a h-split containing two containers (1 and 2). Focus is on +the bottom left container (1).

+
+ +++ + + + + + + + + +

3

1

2

+
+

This case is very much like case 3, only this time the forced workspace +orientation change does not need to be performed because the workspace already +is in vertical orientation.

+
+
+

17.5. Case 5: Moving in one-child h-split

+

The reference layout for this case is a horizontal workspace with two +containers having a v-split on the left side with a one-child h-split on the +bottom. Focus is on the bottom left container (2(h)):

+
+ +++ + + + + + + + + +

1

3

2(h)

+
+

In this case, same_orientation will be set to the h-split container around +the focused container. However, when trying the easy case, the next/previous +container swap will be NULL. Therefore, i3 will search again for a +same_orientation container, this time starting from the parent of the h-split +container.

+

After determining a new same_orientation container (if it is NULL, the +orientation will be force-changed), this case is equivalent to case 2 or case +4.

+
+
+

17.6. Case 6: Floating containers

+

The reference layout for this case is a horizontal workspace with two +containers plus one floating h-split container. Focus is on the floating +container.

+

TODO: nice illustration. table not possible?

+

When moving up/down, the container needs to leave the floating container and it +needs to be placed on the workspace (at workspace level). This is accomplished +by calling the function attach_to_workspace.

+
+
+
+
+

18. Click handling

+
+

Without much ado, here is the list of cases which need to be considered:

+
    +
  • +

    +click to focus (tiling + floating) and raise (floating) +

    +
  • +
  • +

    +click to focus/raise when in stacked/tabbed mode +

    +
  • +
  • +

    +floating_modifier + left mouse button to drag a floating con +

    +
  • +
  • +

    +floating_modifier + right mouse button to resize a floating con +

    +
  • +
  • +

    +click on decoration in a floating con to either initiate a resize (if there + is more than one child in the floating con) or to drag the + floating con (if it’s the one at the top). +

    +
  • +
  • +

    +click on border in a floating con to resize the floating con +

    +
  • +
  • +

    +floating_modifier + right mouse button to resize a tiling con +

    +
  • +
  • +

    +click on border/decoration to resize a tiling con +

    +
  • +
+
+
+
+

19. Gotchas

+
+
    +
  • +

    +Forgetting to call xcb_flush(conn); after sending a request. This usually + leads to code which looks like it works fine but which does not work under + certain conditions. +

    +
  • +
  • +

    +Forgetting to call floating_fix_coordinates(con, old_rect, new_rect) after + moving workspaces across outputs. Coordinates for floating containers are + not relative to workspace boundaries, so you must correct their coordinates + or those containers will show up in the wrong workspace or not at all. +

    +
  • +
+
+
+
+

20. Using git / sending patches

+
+
+

20.1. Introduction

+

For a short introduction into using git, see +http://web.archive.org/web/20121024222556/http://www.spheredev.org/wiki/Git_for_the_lazy +or, for more documentation, see http://git-scm.com/documentation

+

Please talk to us before working on new features to see whether they will be +accepted. There are a few things which we don’t want to see in i3, e.g. a +command which will focus windows in an alt+tab like way.

+

When working on bugfixes, please make sure you mention that you are working on +it in the corresponding bugreport at https://github.com/i3/i3/issues In case +there is no bugreport yet, please create one.

+

After you are done, please submit your work for review at https://github.com/i3/i3

+

Do not send emails to the mailing list or any author directly, and don’t submit +them in the bugtracker, since all reviews should be done in public at +http://cr.i3wm.org/. In order to make your review go as fast as possible, you +could have a look at previous reviews and see what the common mistakes are.

+
+
+

20.2. Which branch to use?

+

Work on i3 generally happens in two branches: “master” and “next”. Since +“master” is what people get when they check out the git repository, its +contents are always stable. That is, it contains the source code of the latest +release, plus any bugfixes that were applied since that release.

+

New features are only found in the “next” branch. Therefore, if you are working +on a new feature, use the “next” branch. If you are working on a bugfix, use +the “next” branch, too, but make sure your code also works on “master”.

+
+
+
+
+

21. Thought experiments

+
+

In this section, we collect thought experiments, so that we don’t forget our +thoughts about specific topics. They are not necessary to get into hacking i3, +but if you are interested in one of the topics they cover, you should read them +before asking us why things are the way they are or why we don’t implement +things.

+
+

21.1. Using cgroups per workspace

+

cgroups (control groups) are a linux-only feature which provides the ability to +group multiple processes. For each group, you can individually set resource +limits, like allowed memory usage. Furthermore, and more importantly for our +purposes, they serve as a namespace, a label which you can attach to processes +and their children.

+

One interesting use for cgroups is having one cgroup per workspace (or +container, doesn’t really matter). That way, you could set different priorities +and have a workspace for important stuff (say, writing a LaTeX document or +programming) and a workspace for unimportant background stuff (say, +JDownloader). Both tasks can obviously consume a lot of I/O resources, but in +this example it doesn’t really matter if JDownloader unpacks the download a +minute earlier or not. However, your compiler should work as fast as possible. +Having one cgroup per workspace, you would assign more resources to the +programming workspace.

+

Another interesting feature is that an inherent problem of the workspace +concept could be solved by using cgroups: When starting an application on +workspace 1, then switching to workspace 2, you will get the application’s +window(s) on workspace 2 instead of the one you started it on. This is because +the window manager does not have any mapping between the process it starts (or +gets started in any way) and the window(s) which appear.

+

Imagine for example using dmenu: The user starts dmenu by pressing Mod+d, dmenu +gets started with PID 3390. The user then decides to launch Firefox, which +takes a long time. So he enters firefox into dmenu and presses enter. Firefox +gets started with PID 4001. When it finally finishes loading, it creates an X11 +window and uses MapWindow to make it visible. This is the first time i3 +actually gets in touch with Firefox. It decides to map the window, but it has +no way of knowing that this window (even though it has the _NET_WM_PID property +set to 4001) belongs to the dmenu the user started before.

+

How do cgroups help with this? Well, when pressing Mod+d to launch dmenu, i3 +would create a new cgroup, let’s call it i3-3390-1. It launches dmenu in that +cgroup, which gets PID 3390. As before, the user enters firefox and Firefox +gets launched with PID 4001. This time, though, the Firefox process with PID +4001 is also member of the cgroup i3-3390-1 (because fork()ing in a cgroup +retains the cgroup property). Therefore, when mapping the window, i3 can look +up in which cgroup the process is and can establish a mapping between the +workspace and the window.

+

There are multiple problems with this approach:

+
    +
  1. +

    +Every application has to properly set _NET_WM_PID. This is acceptable and + patches can be written for the few applications which don’t set the hint yet. +

    +
  2. +
  3. +

    +It does only work on Linux, since cgroups are a Linux-only feature. Again, + this is acceptable. +

    +
  4. +
  5. +

    +The main problem is that some applications create X11 windows completely + independent of UNIX processes. An example for this is Chromium (or + gnome-terminal), which, when being started a second time, communicates with + the first process and lets the first process open a new window. Therefore, if + you have a Chromium window on workspace 2 and you are currently working on + workspace 3, starting chromium does not lead to the desired result (the + window will open on workspace 2). +

    +
  6. +
+

Therefore, my conclusion is that the only proper way of fixing the "window gets +opened on the wrong workspace" problem is in the application itself. Most +modern applications support freedesktop startup-notifications which can be +used for this.

+
+
+
+
+

+ + + diff --git a/docs/4.8/i3-config-wizard.html b/docs/4.8/i3-config-wizard.html new file mode 100644 index 0000000..bdbee9c --- /dev/null +++ b/docs/4.8/i3-config-wizard.html @@ -0,0 +1,96 @@ + + + + + + +i3: i3-config-wizard(1) + + + + + + + +
+

i3 - improved tiling WM

+ +
+
+ +
+

1. NAME

+
+

i3-config-wizard - creates a keysym based config based on your layout

+
+
+
+

2. SYNOPSIS

+
+

i3-config-wizard

+
+
+
+

3. FILES

+
+
+

3.1. /etc/i3/config.keycodes

+

This file contains the default configuration with keycodes. All the bindcode +lines will be transformed to bindsym and the user-specified modifier will be +used.

+
+
+
+
+

4. DESCRIPTION

+
+

i3-config-wizard is started by i3 in its default config, unless /.i3/config +exists. i3-config-wizard creates a keysym based i3 config file (based on +/etc/i3/config.keycodes) in /.i3/config.

+

The advantage of using keysyms is that the config file is easy to read, +understand and modify. However, if we shipped with a keysym based default +config file, the key positions would not be consistent across different +keyboard layouts (take for example the homerow for movement). Therefore, we +ship with a keycode based default config and let the wizard transform it +according to your current keyboard layout.

+
+
+
+

5. SEE ALSO

+
+

i3(1)

+
+
+
+

6. AUTHOR

+
+

Michael Stapelberg and contributors

+
+
+
+

+ + + diff --git a/docs/4.8/i3-migrate-config-to-v4.html b/docs/4.8/i3-migrate-config-to-v4.html new file mode 100644 index 0000000..756fd4e --- /dev/null +++ b/docs/4.8/i3-migrate-config-to-v4.html @@ -0,0 +1,87 @@ + + + + + + +i3: i3-migrate-config-to-v4(1) + + + + + + + +
+

i3 - improved tiling WM

+ +
+
+ +
+

1. NAME

+
+

i3-migrate-config-to-v4 - migrates your i3 config file

+
+
+
+

2. SYNOPSIS

+
+
+
+
mv ~/.i3/config ~/.i3/old.config
+i3-migrate-config-to-v4 ~/.i3/old.config > ~/.i3/config
+
+
+
+
+

3. DESCRIPTION

+
+

i3-migrate-config-to-v4 is a Perl script which migrates your old (< version 4) +configuration files to a version 4 config file. The most significant changes +are the new commands (see the release notes).

+

This script will automatically be run by i3 when it detects an old config file. +Please migrate your config file as soon as possible. We plan to include this +script in all i3 release until 2012-08-01. Afterwards, old config files will no +longer be supported.

+
+
+
+

4. SEE ALSO

+
+

i3(1)

+
+
+
+

5. AUTHOR

+
+

Michael Stapelberg and contributors

+
+
+
+

+ + + diff --git a/docs/4.8/i3-msg.html b/docs/4.8/i3-msg.html new file mode 100644 index 0000000..26fbd84 --- /dev/null +++ b/docs/4.8/i3-msg.html @@ -0,0 +1,100 @@ + + + + + + +i3: i3-msg(1) + + + + + + + +
+

i3 - improved tiling WM

+ +
+
+ +
+

1. NAME

+
+

i3-msg - send messages to i3 window manager

+
+
+
+

2. SYNOPSIS

+
+

i3-msg "message"

+
+
+
+

3. DESCRIPTION

+
+

i3-msg is a sample implementation for a client using the unix socket IPC +interface to i3. At the moment, it can only be used for sending commands +(like in configuration file for key bindings), but this may change in the +future (staying backwards-compatible, of course).

+
+
+
+

4. EXAMPLE

+
+
+
+
i3-msg "bp" # Use 1-px border for current client
+
+
+
+
+

5. ENVIRONMENT

+
+
+

5.1. I3SOCK

+

If no ipc-socket is specified on the commandline, this variable is used +to determine the path, at wich the unix domain socket is expected, on which +to connect to i3.

+
+
+
+
+

6. SEE ALSO

+
+

i3(1)

+
+
+
+

7. AUTHOR

+
+

Michael Stapelberg and contributors

+
+
+
+

+ + + diff --git a/docs/4.8/i3-nagbar.html b/docs/4.8/i3-nagbar.html new file mode 100644 index 0000000..7d156a4 --- /dev/null +++ b/docs/4.8/i3-nagbar.html @@ -0,0 +1,90 @@ + + + + + + +i3: i3-nagbar(1) + + + + + + + +
+

i3 - improved tiling WM

+ +
+
+ +
+

1. NAME

+
+

i3-nagbar - displays an error bar on top of your screen

+
+
+
+

2. SYNOPSIS

+
+

i3-nagbar -m message -b label action

+
+
+
+

3. DESCRIPTION

+
+

i3-nagbar is used by i3 to tell you about errors in your configuration file +(for example). While these errors are logged to the logfile (if any), the past +has proven that users are either not aware of their logfile or do not check it +after modifying the configuration file.

+
+
+
+

4. EXAMPLE

+
+
+
+
i3-nagbar -m 'You have an error in your i3 config file!' \
+-b 'edit config' 'xterm $EDITOR ~/.i3/config'
+
+
+
+
+

5. SEE ALSO

+
+

i3(1)

+
+
+
+

6. AUTHOR

+
+

Michael Stapelberg and contributors

+
+
+
+

+ + + diff --git a/docs/4.8/i3-sync-working.png b/docs/4.8/i3-sync-working.png new file mode 100644 index 0000000000000000000000000000000000000000..dce44ac5ac4d2efe4d1d1751b499586613eca33f GIT binary patch literal 25072 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 literal 0 HcmV?d00001 diff --git a/docs/4.8/i3.html b/docs/4.8/i3.html new file mode 100644 index 0000000..b45f24a --- /dev/null +++ b/docs/4.8/i3.html @@ -0,0 +1,529 @@ + + + + + + +i3: i3(1) + + + + + + + +
+

i3 - improved tiling WM

+ +
+
+ +
+

1. NAME

+
+

i3 - an improved dynamic, tiling window manager

+
+
+
+

2. SYNOPSIS

+
+

i3 [-a] [-c configfile] [-C] [-d <loglevel>] [-v] [-V]

+
+
+
+

3. OPTIONS

+
+
+
+-a +
+
+

+Disables autostart. +

+
+
+-c +
+
+

+Specifies an alternate configuration file path. +

+
+
+-C +
+
+

+Check the configuration file for validity and exit. +

+
+
+-d +
+
+

+Specifies the debug loglevel. To see the most output, use -d all. +

+
+
+-v +
+
+

+Display version number (and date of the last commit). +

+
+
+-V +
+
+

+Be verbose. +

+
+
+
+
+
+

4. DESCRIPTION

+
+
+

4.1. INTRODUCTION

+

i3 was created because wmii, our favorite window manager at the time, didn’t +provide some features we wanted (multi-monitor done right, for example), had +some bugs, didn’t progress since quite some time and wasn’t easy to hack at all +(source code comments/documentation completely lacking). Still, we think the +wmii developers and contributors did a great job. Thank you for inspiring us to +create i3.

+

Please be aware that i3 is primarily targeted at advanced users and developers.

+
+
+

4.2. IMPORTANT NOTE TO nVidia BINARY DRIVER USERS

+

If you are using the nVidia binary graphics driver (also known as blob) +you need to use the --force-xinerama flag (in your ~/.xsession) when starting +i3, like so:

+
+
+
exec i3 --force-xinerama -V >>~/.i3/i3log 2>&1
+
+

See also docs/multi-monitor for the full explanation.

+
+
+

4.3. TERMINOLOGY

+
+
+Tree +
+
+

+i3 keeps your layout in a tree data structure. +

+
+
+Window +
+
+

+An X11 window, like the Firefox browser window or a terminal emulator. +

+
+
+Split container +
+
+

+A split container contains multiple other split containers or windows. +

+

Containers can be used in various layouts. The default mode is called "default" +and just resizes each client equally so that it fits.

+
+
+Workspace +
+
+

+A workspace is a set of containers. Other window managers call this "Virtual +Desktops". +

+

In i3, each workspace is assigned to a specific virtual screen. By default, +screen 1 has workspace 1, screen 2 has workspace 2 and so on… However, when you +create a new workspace (by simply switching to it), it’ll be assigned the +screen you are currently on.

+
+
+Output +
+
+

+Using XRandR, you can have an X11 screen spanning multiple real monitors. +Furthermore, you can set them up in cloning mode or with positions (monitor 1 +is left of monitor 2). +

+

i3 uses the RandR API to query which outputs are available and which screens +are connected to these outputs.

+
+
+
+
+
+
+

5. KEYBINDINGS

+
+

Here is a short overview of the default keybindings:

+
+
+j/k/l/; +
+
+

+Direction keys (left, down, up, right). They are on your homerow (see the mark +on your "j" key). Alternatively, you can use the cursor keys. +

+
+
+Mod1+<direction> +
+
+

+Focus window in <direction>. +

+
+
+Mod1+Shift+<direction> +
+
+

+Move window to <direction>. +

+
+
+Mod1+<number> +
+
+

+Switch to workspace <number>. +

+
+
+Mod1+Shift+<number> +
+
+

+Move window to workspace <number>. +

+
+
+Mod1+f +
+
+

+Toggle fullscreen mode. +

+
+
+Mod1+s +
+
+

+Enable stacking layout for the current container. +

+
+
+Mod1+e +
+
+

+Enable default layout for the current container. +

+
+
+Mod1+w +
+
+

+Enable tabbed layout for the current container. +

+
+
+Mod1+Shift+Space +
+
+

+Toggle tiling/floating for the current container. +

+
+
+Mod1+Space +
+
+

+Select the first tiling container if the current container is floating and +vice-versa. +

+
+
+Mod1+Shift+q +
+
+

+Kills the current window. This is equivalent to "clicking on the close button", +meaning a polite request to the application to close this window. For example, +Firefox will save its session upon such a request. If the application does not +support that, the window will be killed and it depends on the application what +happens. +

+
+
+Mod1+Shift+r +
+
+

+Restarts i3 in place. Your layout will be preserved. +

+
+
+Mod1+Shift+e +
+
+

+Exits i3. +

+
+
+
+
+
+

6. FILES

+
+
+

6.1. ~/.i3/config (or ~/.config/i3/config)

+

When starting, i3 looks for configuration files in the following order:

+
    +
  1. +

    +~/.config/i3/config (or $XDG_CONFIG_HOME/i3/config if set) +

    +
  2. +
  3. +

    +/etc/xdg/i3/config (or $XDG_CONFIG_DIRS/i3/config if set) +

    +
  4. +
  5. +

    +~/.i3/config +

    +
  6. +
  7. +

    +/etc/i3/config +

    +
  8. +
+

You can specify a custom path using the -c option.

+
+
Sample configuration
+
+
# i3 config file (v4)
+
+# font for window titles. ISO 10646 = Unicode
+font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
+
+# use Mouse+Mod1 to drag floating windows to their wanted position
+floating_modifier Mod1
+
+# start a terminal
+bindsym Mod1+Return exec /usr/bin/urxvt
+
+# kill focused window
+bindsym Mod1+Shift+q kill
+
+# start dmenu (a program launcher)
+bindsym Mod1+d exec /usr/bin/dmenu_run
+
+# change focus
+bindsym Mod1+j focus left
+bindsym Mod1+k focus down
+bindsym Mod1+l focus up
+bindsym Mod1+semicolon focus right
+
+# alternatively, you can use the cursor keys:
+bindsym Mod1+Left focus left
+bindsym Mod1+Down focus down
+bindsym Mod1+Up focus up
+bindsym Mod1+Right focus right
+
+# move focused window
+bindsym Mod1+Shift+j move left
+bindsym Mod1+Shift+k move down
+bindsym Mod1+Shift+l move up
+bindsym Mod1+Shift+semicolon move right
+
+# alternatively, you can use the cursor keys:
+bindsym Mod1+Shift+Left move left
+bindsym Mod1+Shift+Down move down
+bindsym Mod1+Shift+Up move up
+bindsym Mod1+Shift+Right move right
+
+# split in horizontal orientation
+bindsym Mod1+h split h
+
+# split in vertical orientation
+bindsym Mod1+v split v
+
+# enter fullscreen mode for the focused container
+bindsym Mod1+f fullscreen
+
+# change container layout (stacked, tabbed, default)
+bindsym Mod1+s layout stacking
+bindsym Mod1+w layout tabbed
+bindsym Mod1+e layout default
+
+# toggle tiling / floating
+bindsym Mod1+Shift+space floating toggle
+
+# change focus between tiling / floating windows
+bindsym Mod1+space focus mode_toggle
+
+# focus the parent container
+bindsym Mod1+a focus parent
+
+# focus the child container
+#bindsym Mod1+d focus child
+
+# switch to workspace
+bindsym Mod1+1 workspace 1
+bindsym Mod1+2 workspace 2
+# ..
+
+# move focused container to workspace
+bindsym Mod1+Shift+1 move workspace 1
+bindsym Mod1+Shift+2 move workspace 2
+# ...
+
+# reload the configuration file
+bindsym Mod1+Shift+c reload
+# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
+bindsym Mod1+Shift+r restart
+# exit i3 (logs you out of your X session)
+bindsym Mod1+Shift+e exit
+
+# display workspace buttons plus a statusline generated by i3status
+bar {
+    status_command i3status
+}
+
+
+
+

6.2. ~/.xsession

+

This file is where you should configure your locales and start i3. It is run by +your login manager (xdm, slim, gdm, …) as soon as you login.

+
+
Sample xsession
+
+
# Disable DPMS turning off the screen
+xset -dpms
+xset s off
+
+# Disable bell
+xset -b
+
+# Enable zapping (C-A-<Bksp> kills X)
+setxkbmap -option terminate:ctrl_alt_bksp
+
+# Enforce correct locales from the beginning
+unset LC_COLLATE
+export LC_CTYPE=de_DE.UTF-8
+export LC_TIME=de_DE.UTF-8
+export LC_NUMERIC=de_DE.UTF-8
+export LC_MONETARY=de_DE.UTF-8
+export LC_MESSAGES=C
+export LC_PAPER=de_DE.UTF-8
+export LC_NAME=de_DE.UTF-8
+export LC_ADDRESS=de_DE.UTF-8
+export LC_TELEPHONE=de_DE.UTF-8
+export LC_MEASUREMENT=de_DE.UTF-8
+export LC_IDENTIFICATION=de_DE.UTF-8
+
+# Use XToolkit in java applications
+export AWT_TOOLKIT=XToolkit
+
+# Set background color
+xsetroot -solid "#333333"
+
+# Enable core dumps in case something goes wrong
+ulimit -c unlimited
+
+# Start i3 and log to ~/.i3/logfile
+echo "Starting at $(date)" >> ~/.i3/logfile
+exec /usr/bin/i3 -V -d all >> ~/.i3/logfile
+
+
+
+
+
+

7. ENVIRONMENT

+
+
+

7.1. I3SOCK

+

This variable overwrites the IPC socket path (placed in +/tmp/i3-%u.XXXXXX/ipc-socket.%p by default, where %u is replaced with your UNIX +username, %p is replaced with i3’s PID and XXXXXX is a string of random +characters from the portable filename character set (see mkdtemp(3))). The IPC +socket is used by external programs like i3-msg(1) or i3bar(1).

+
+
+
+
+

8. TODO

+
+

There is still lot of work to do. Please check our bugtracker for up-to-date +information about tasks which are still not finished.

+
+
+
+

9. SEE ALSO

+
+

You should have a copy of the userguide (featuring nice screenshots/graphics +which is why this is not integrated into this manpage), the debugging guide, +and the "how to hack" guide. If you are building from source, run: + make -C docs

+

You can also access these documents online at http://i3.zekjur.net/

+

i3-input(1), i3-msg(1), i3-wsbar(1), i3-nagbar(1), i3-config-wizard(1), +i3-migrate-config-to-v4(1)

+
+
+
+

10. AUTHOR

+
+

Michael Stapelberg and contributors

+
+
+
+

+ + + diff --git a/docs/4.8/i3bar-protocol.html b/docs/4.8/i3bar-protocol.html new file mode 100644 index 0000000..aee5f07 --- /dev/null +++ b/docs/4.8/i3bar-protocol.html @@ -0,0 +1,401 @@ + + + + + + +i3: i3bar input protocol + + + + + + + +
+

i3 - improved tiling WM

+ +
+
+ +
+
+

This document explains the protocol in which i3bar expects its input. It +provides support for colors, urgency, shortening and easy manipulation.

+
+
+
+

1. Rationale for chosing JSON

+
+

Before describing the protocol, let’s cover why JSON is a building block of +this protocol.

+
    +
  1. +

    +Other bar display programs such as dzen2 or xmobar are using in-band + signaling: they recognize certain sequences (like ^fg(#330000) in your input + text). We would like to avoid that and separate information from + meta-information. By information, we mean the actual output, like the IP + address of your ethernet adapter and by meta-information, we mean in which + color it should be displayed right now. +

    +
  2. +
  3. +

    +It is easy to write a simple script which manipulates part(s) of the input. + Each block of information (like a block for the disk space indicator, a block + for the current IP address, etc.) can be identified specifically and modified + in whichever way you like. +

    +
  4. +
  5. +

    +It remains easy to write a simple script which just suffixes (or prefixes) a + status line input, because tools like i3status will output their JSON in + such a way that each line array will be terminated by a newline. Therefore, + you are not required to use a streaming JSON parser, but you can use any + JSON parser and write your script in any programming language. In fact, you + can decide to not bother with the JSON parsing at all and just inject your + output at a specific position (beginning or end). +

    +
  6. +
  7. +

    +Relying on JSON does not introduce any new dependencies. In fact, the IPC + interface of i3 also uses JSON, therefore i3bar already depends on JSON. +

    +
  8. +
+

The only point against using JSON is computational complexity. If that really +bothers you, just use the plain text input format (which i3bar will continue to +support).

+
+
+
+

2. The protocol

+
+

The first message of the protocol is a header block, which contains (at least) +the version of the protocol to be used. In case there are significant changes +(not only additions), the version will be incremented. i3bar will still +understand the old protocol version, but in order to use the new one, you need +to provide the correct version. The header block is terminated by a newline and +consists of a single JSON hash:

+

Minimal example:

+
+
+
{ "version": 1 }
+
+

All features example:

+
+
+
{ "version": 1, "stop_signal": 10, "cont_signal": 12, "click_events": true }
+
+

(Note that before i3 v4.3 the precise format had to be {"version":1}, +byte-for-byte.)

+

What follows is an infinite array (so it should be parsed by a streaming JSON +parser, but as described above you can go for a simpler solution), whose +elements are one array per status line. A status line is one unit of +information which should be displayed at a time. i3bar will not display any +input until the status line is complete. In each status line, every block will +be represented by a JSON hash:

+

Example:

+
+
+
[
+
+ [
+  {
+   "full_text": "E: 10.0.0.1 (1000 Mbit/s)",
+   "color": "#00ff00"
+  },
+  {
+   "full_text": "2012-01-05 20:00:01"
+  }
+ ],
+
+ [
+  {
+   "full_text": "E: 10.0.0.1 (1000 Mbit/s)",
+   "color": "#00ff00"
+  },
+  {
+   "full_text": "2012-01-05 20:00:02"
+  }
+ ],
+ …
+
+

Please note that this example was pretty printed for human consumption. +i3status and others will output single statuslines in one line, separated by +\n.

+

You can find an example of a shell script which can be used as your +status_command in the bar configuration at +http://code.stapelberg.de/git/i3/tree/contrib/trivial-bar-script.sh?h=next

+
+

2.1. Header in detail

+
+
+version +
+
+

+ The version number (as an integer) of the i3bar protocol you will use. +

+
+
+stop_signal +
+
+

+ Specify to i3bar the signal (as an integer) to send to stop your + processing. + The default value (if none is specified) is SIGSTOP. +

+
+
+cont_signal +
+
+

+ Specify to i3bar the signal (as an integer)to send to continue your + processing. + The default value (if none is specified) is SIGCONT. +

+
+
+click_events +
+
+

+ If specified and true i3bar will write a infinite array (same as above) + to your stdin. +

+
+
+
+
+

2.2. Blocks in detail

+
+
+full_text +
+
+

+ The most simple block you can think of is one which just includes the + only required key, the full_text key. i3bar will display the string + value and that’s it. +

+
+
+short_text +
+
+

+ Where appropriate, the short_text (string) entry should also be + provided. It will be used in case the status line needs to be shortened + because it uses more space than your screen provides. For example, when + displaying an IPv6 address, the prefix is usually (!) more relevant + than the suffix, because the latter stays constant when using autoconf, + while the prefix changes. When displaying the date, the time is more + important than the date (it is more likely that you know which day it + is than what time it is). +

+
+
+color +
+
+

+ To make the current state of the information easy to spot, colors can + be used. For example, the wireless block could be displayed in red + (using the color (string) entry) if the card is not associated with + any network and in green or yellow (depending on the signal strength) + when it is associated. + Colors are specified in hex (like in HTML), starting with a leading + hash sign. For example, #ff0000 means red. +

+
+
+min_width +
+
+

+ The minimum width (in pixels) of the block. If the content of the + full_text key take less space than the specified min_width, the block + will be padded to the left and/or the right side, according to the align + key. This is useful when you want to prevent the whole status line to shift + when value take more or less space between each iteration. + The value can also be a string. In this case, the width of the text given + by min_width determines the minimum width of the block. This is useful + when you want to set a sensible minimum width regardless of which font you + are using, and at what particular size. +

+
+
+align +
+
+

+ Align text on the center (default), right or left of the block, when + the minimum width of the latter, specified by the min_width key, is not + reached. +

+
+
+name and instance +
+
+

+ Every block should have a unique name (string) entry so that it can + be easily identified in scripts which process the output. i3bar + completely ignores the name and instance fields. Make sure to also + specify an instance (string) entry where appropriate. For example, + the user can have multiple disk space blocks for multiple mount points. +

+
+
+urgent +
+
+

+ A boolean which specifies whether the current value is urgent. Examples + are battery charge values below 1 percent or no more available disk + space (for non-root users). The presentation of urgency is up to i3bar. +

+
+
+separator +
+
+

+ A boolean which specifies whether a separator line should be drawn + after this block. The default is true, meaning the separator line will + be drawn. Note that if you disable the separator line, there will still + be a gap after the block, unless you also use separator_block_width. +

+
+
+separator_block_width +
+
+

+ The amount of pixels to leave blank after the block. In the middle of + this gap, a separator line will be drawn unless separator is + disabled. Normally, you want to set this to an odd value (the default + is 9 pixels), since the separator line is drawn in the middle. +

+
+
+

If you want to put in your own entries into a block, prefix the key with an +underscore (_). i3bar will ignore all keys it doesn’t understand, and prefixing +them with an underscore makes it clear in every script that they are not part +of the i3bar protocol.

+

Example:

+
+
+
{
+ "full_text": "E: 10.0.0.1 (1000 Mbit/s)",
+ "_ethernet_vendor": "Intel"
+}
+
+

In the following example, the longest (widest) possible value of the block is +used to set the minimum width:

+
+
+
{
+ "full_text": "CPU 4%",
+ "min_width": "CPU 100%",
+ "align": "left"
+}
+
+

An example of a block which uses all possible entries follows:

+

Example:

+
+
+
{
+ "full_text": "E: 10.0.0.1 (1000 Mbit/s)",
+ "short_text": "10.0.0.1",
+ "color": "#00ff00",
+ "min_width": 300,
+ "align": "right",
+ "urgent": false,
+ "name": "ethernet",
+ "instance": "eth0",
+ "separator": true,
+ "separator_block_width": 9
+}
+
+
+
+

2.3. Click events

+

If enabled i3bar will send you notifications if the user clicks on a block and +looks like this:

+
+
+name +
+
+

+ Name of the block, if set +

+
+
+instance +
+
+

+ Instance of the block, if set +

+
+
+x, y +
+
+

+ X11 root window coordinates where the click occured +

+
+
+button +
+
+

+ X11 button ID (for example 1 to 3 for left/middle/right mouse button) +

+
+
+

Example:

+
+
+
{
+ "name": "ethernet",
+ "instance": "eth0",
+ "button": 1,
+ "x": 1320,
+ "y": 1400
+}
+
+
+
+
+
+

+ + + diff --git a/docs/4.8/i3status.html b/docs/4.8/i3status.html new file mode 100644 index 0000000..c864268 --- /dev/null +++ b/docs/4.8/i3status.html @@ -0,0 +1,500 @@ + + + + + + +i3: i3status(1) + + + + + + + +
+

i3 - improved tiling WM

+ +
+
+ +
+

1. NAME

+
+

i3status - Generates a status line for dzen2 or xmobar

+
+
+
+

2. SYNOPSIS

+
+

i3status [-c configfile] [-h] [-v]

+
+
+
+

3. OPTIONS

+
+
+
+-c +
+
+

+Specifies an alternate configuration file path. By default, i3status looks for +configuration files in the following order: +

+
    +
  1. +

    +~/.i3status.conf +

    +
  2. +
  3. +

    +~/.config/i3status/config (or $XDG_CONFIG_HOME/i3status/config if set) +

    +
  4. +
  5. +

    +/etc/i3status.conf +

    +
  6. +
  7. +

    +/etc/xdg/i3status/config (or $XDG_CONFIG_DIRS/i3status/config if set) +

    +
  8. +
+
+
+
+
+
+

4. DESCRIPTION

+
+

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.

+
+
+
+

5. CONFIGURATION

+
+

The basic idea of i3status is that you can specify which "modules" should +be used (the order directive). You can then configure each module with its +own section. For every module, you can specify the output format. See below +for a complete reference.

+
+
Sample configuration
+
+
general {
+        output_format = "dzen2"
+        colors = true
+        interval = 5
+}
+
+order += "ipv6"
+order += "disk /"
+order += "run_watch DHCP"
+order += "run_watch VPN"
+order += "wireless wlan0"
+order += "ethernet eth0"
+order += "battery 0"
+order += "cpu_temperature 0"
+order += "load"
+order += "tztime local"
+order += "tztime berlin"
+
+wireless wlan0 {
+        format_up = "W: (%quality at %essid, %bitrate) %ip"
+        format_down = "W: down"
+}
+
+ethernet eth0 {
+        # if you use %speed, i3status requires the cap_net_admin capability
+        format_up = "E: %ip (%speed)"
+        format_down = "E: down"
+}
+
+battery 0 {
+        format = "%status %percentage %remaining %emptytime"
+        path = "/sys/class/power_supply/BAT%d/uevent"
+        low_threshold = 10
+}
+
+run_watch DHCP {
+        pidfile = "/var/run/dhclient*.pid"
+}
+
+run_watch VPN {
+        pidfile = "/var/run/vpnc/pid"
+}
+
+tztime local {
+        format = "%Y-%m-%d %H:%M:%S"
+}
+
+tztime berlin {
+        format = "%Y-%m-%d %H:%M:%S %Z"
+        timezone = "Europe/Berlin"
+}
+
+load {
+        format = "%5min"
+}
+
+cpu_temperature 0 {
+        format = "T: %degrees °C"
+        path = "/sys/devices/platform/coretemp.0/temp1_input"
+}
+
+disk "/" {
+        format = "%free"
+}
+
+
+

5.1. General

+

The colors directive will disable all colors if you set it to false. You can +also specify the colors that will be used to display "good", "degraded" or "bad" +values using the color_good, color_degraded or color_bad directives, +respectively. Those directives are only used if color support is not disabled by +the colors directive. The input format for color values is the canonical RGB +hexadecimal triplet (with no separators between the colors), prefixed by a hash +character ("#").

+

Example configuration:

+
+
+
color_good = "#00FF00"
+
+

Likewise, you can use the color_separator directive to specify the color that +will be used to paint the separator bar. The separator is always output in +color, even when colors are disabled by the colors directive.

+

The interval directive specifies the time in seconds for which i3status will +sleep before printing the next status line.

+

Using output_format you can chose which format strings i3status should +use in its output. Currently available are:

+
+
+i3bar +
+
+

+i3bar comes with i3 and provides a workspace bar which does the right thing in +multi-monitor situations. It also comes with tray support and can display the +i3status output. This output type uses JSON to pass as much meta-information to +i3bar as possible (like colors, which blocks can be shortened in which way, +etc.). +

+
+
+dzen2 +
+
+

+Dzen is a general purpose messaging, notification and menuing program for X11. +It was designed to be scriptable in any language and integrate well with window +managers like dwm, wmii and xmonad though it will work with any windowmanger +

+
+
+xmobar +
+
+

+xmobar is a minimalistic, text based, status bar. It was designed to work +with the xmonad Window Manager. +

+
+
+none +
+
+

+Does not use any color codes. Separates values by the pipe symbol. This should +be used with i3bar and can be used for custom scripts. +

+
+
+

It’s also possible to use the color_good, color_degraded, color_bad directives +to define specific colors per module. If one of these directives is defined +in a module section its value will override the value defined in the general +section just for this module.

+
+
+

5.2. IPv6

+

This module gets the IPv6 address used for outgoing connections (that is, the +best available public IPv6 address on your computer).

+

Example format_up: %ip

+

Example format_down no IPv6

+
+
+

5.3. Disk

+

Gets used, free, available and total amount of bytes on the given mounted filesystem.

+

These values can also be expressed in percentages with the percentage_used, +percentage_free, percentage_avail and percentage_used_of_avail formats.

+

Example order: disk /mnt/usbstick

+

Example format: %free (%avail)/ %total

+

Example format: %percentage_used used, %percentage_free free, %percentage_avail avail

+
+
+

5.4. Run-watch

+

Expands the given path to a pidfile and checks if the process ID found inside +is valid (that is, if the process is running). You can use this to check if +a specific application, such as a VPN client or your DHCP client is running.

+

Example order: run_watch DHCP

+

Example format: %title: %status

+
+
+

5.5. Wireless

+

Gets the link quality and ESSID of the given wireless network interface. You +can specify different format strings for the network being connected or not +connected.

+

Example order: wireless wlan0

+

Example format: W: (%quality at %essid, %bitrate) %ip

+
+
+

5.6. Ethernet

+

Gets the IP address and (if possible) the link speed of the given ethernet +interface. Getting the link speed requires the cap_net_admin capability. Set +it using setcap cap_net_admin=ep $(which i3status).

+

Example order: ethernet eth0

+

Example format: E: %ip (%speed)

+
+
+

5.7. Battery

+

Gets the status (charging, discharging, running), percentage, remaining +time and power consumption (in Watts) of the given battery and when it’s +estimated to be empty. If you want to use the last full capacity instead of the +design capacity (when using the design capacity, it may happen that your +battery is at 23% when fully charged because it’s old. In general, I want to +see it this way, because it tells me how worn off my battery is.), just specify +last_full_capacity = true.

+

If you want the battery percentage to be shown without decimals, add +integer_battery_capacity = true.

+

If your battery is represented in a non-standard path in /sys, be sure to +modify the "path" property accordingly. The first occurence of %d gets replaced +with the battery number, but you can just hard-code a path as well.

+

It is possible to define a low_threshold that causes the battery text to be +colored red. The low_threshold type can be of threshold_type "time" or +"percentage". So, if you configure low_threshold to 10 and threshold_type to +"time", and your battery lasts another 9 minutes, it will be colored red.

+

Example order: battery 0

+

Example format: %status %remaining (%emptytime %consumption)

+

Example low_threshold: 30

+

Example threshold_type: time

+
+
+

5.8. CPU-Temperature

+

Gets the temperature of the given thermal zone. It is possible to +define a max_threshold that will color the temperature red in case the +specified thermal zone is getting too hot. Defaults to 75 degrees C.

+

Example order: cpu_temperature 0

+

Example format: T: %degrees °C

+

Example max_threshold: 42

+
+
+

5.9. CPU Usage

+

Gets the percentual CPU usage from /proc/stat (Linux) or sysctl(3) (FreeBSD/OpenBSD).

+

Example order: cpu_usage

+

Example format: %usage

+
+
+

5.10. Load

+

Gets the system load (number of processes waiting for CPU time in the last +1, 5 and 15 minutes). It is possible to define a max_threshold that will +color the load value red in case the load average of the last minute is +getting higher than the configured threshold. Defaults to 5.

+

Example order: load

+

Example format: %1min %5min %15min

+

Example max_threshold: 5

+
+
+

5.11. Time

+

Outputs the current time in the local timezone. +To use a different timezone, you can set the TZ environment variable, +or use the tztime module. +See strftime(3) for details on the format string.

+

Example order: time

+

Example format: %Y-%m-%d %H:%M:%S

+
+
+

5.12. TzTime

+

Outputs the current time in the given timezone. +If no timezone is given, local time will be used. +See strftime(3) for details on the format string. +The system’s timezone database is usually installed in /usr/share/zoneinfo. +Files below that path make for valid timezone strings, e.g. for +/usr/share/zoneinfo/Europe/Berlin you can set timezone to Europe/Berlin +in the tztime module.

+

Example order: tztime berlin

+

Example format: %Y-%m-%d %H:%M:%S %Z

+

Example timezone: Europe/Berlin

+
+
+

5.13. DDate

+

Outputs the current discordian date in user-specified format. See ddate(1) for +details on the format string. +Note: Neither %. nor %X are implemented yet.

+

Example order: ddate

+

Example format: %{%a, %b %d%}, %Y%N - %H

+
+
+

5.14. Volume

+

Outputs the volume of the specified mixer on the specified device. Works only +on Linux because it uses ALSA. +A simplified configuration can be used on FreeBSD and OpenBSD due to +the lack of ALSA, the device, mixer and mixder_idx options can be +ignored on these systems. On these systems the OSS API is used instead to +query /dev/mixer directly.

+

Example order: volume master

+

Example format: ♪: %volume

+

Example configuration:

+
+
+
volume master {
+        format = "♪: %volume"
+        device = "default"
+        mixer = "Master"
+        mixer_idx = 0
+}
+
+
+
+
+
+

6. Using i3status with dzen2

+
+

After installing dzen2, you can directly use it with i3status. Just ensure that +output_format is set to dzen2.

+

Example for usage of i3status with dzen2:

+
+
+
i3status | dzen2 -fg white -ta r -w 1280 \
+-fn "-misc-fixed-medium-r-normal--13-120-75-75-C-70-iso8859-1"
+
+
+
+
+

7. Using i3status with xmobar

+
+

To get xmobar to start, you might need to copy the default configuration +file to ~/.xmobarrc. Also, ensure that the output_format option for i3status +is set to xmobar.

+

Example for usage of i3status with xmobar:

+
+
+
i3status | xmobar -o -t "%StdinReader%" -c "[Run StdinReader]"
+
+
+
+
+

8. What about memory usage or CPU frequency?

+
+

While talking about two specific things, please understand this section as a +general explanation why your favorite information is not included in i3status.

+

Let’s talk about memory usage specifically. It is hard to measure memory in a +way which is accurate or meaningful. An in-depth understanding of how paging +and virtual memory work in your operating system is required. Furthermore, even +if we had a well-defined way of displaying memory usage and you would +understand it, I think that it’s not helpful to repeatedly monitor your memory +usage. One reason for that is that I have not run out of memory in the last few +years. Memory has become so cheap that even in my 4 year old notebook, I have +8 GiB of RAM. Another reason is that your operating system will do the right +thing anyway: Either you have not enough RAM for your workload, but you need to +do it anyway, then your operating system will swap. Or you don’t have enough +RAM and you want to restrict your workload so that it fits, then the operating +system will kill the process using too much RAM and you can act accordingly.

+

For CPU frequency, the situation is similar. Many people don’t understand how +frequency scaling works precisely. The generally recommended CPU frequency +governor ("ondemand") changes the CPU frequency far more often than i3status +could display it. The display number is therefore often incorrect and doesn’t +tell you anything useful either.

+

In general, i3status wants to display things which you would look at +occasionally anyways, like the current date/time, whether you are connected to +a WiFi network or not, and if you have enough disk space to fit that 4.3 GiB +download.

+

However, if you need to look at some kind of information more than once in a +while (like checking repeatedly how full your RAM is), you are probably better +off with a script doing that, which pops up an alert when your RAM usage reaches +a certain threshold. After all, the point of computers is not to burden you +with additional boring tasks like repeatedly checking a number.

+
+
+
+

9. External scripts/programs with i3status

+
+

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, for example like this:

+

Example for prepending the i3status output:

+
+
+
#!/bin/sh
+# shell script to prepend i3status with more stuff
+
+i3status | while :
+do
+        read line
+        echo "mystuff | $line" || exit 1
+done
+
+

Put that in some script, say .bin/my_i3status.sh and execute that instead of i3status.

+

Note that if you want to use the JSON output format (with colors in i3bar), you +need to use a slightly more complex wrapper script. There are examples in the +contrib/ folder, see http://code.i3wm.org/i3status/tree/contrib

+
+
+
+

10. SIGNALS

+
+

When receiving SIGUSR1, i3status’s nanosleep() will be interrupted and thus +you will force an update. You can use killall -USR1 i3status to force an update +after changing the system volume, for example.

+
+
+
+

11. SEE ALSO

+
+

strftime(3), date(1), glob(3), dzen2(1), xmobar(1)

+
+
+
+

12. AUTHORS

+
+

Michael Stapelberg and contributors

+

Thorsten Toepper

+

Baptiste Daroussin

+

Axel Wagner

+

Fernando Tarlá Cardoso Lemos

+
+
+
+

+ + + diff --git a/docs/4.8/index.html b/docs/4.8/index.html new file mode 100644 index 0000000..e07f53f --- /dev/null +++ b/docs/4.8/index.html @@ -0,0 +1,132 @@ +--- +layout: default +title: Docs +group: Docs +--- +
+

Documentation for i3 v4.9

+ +

+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! +

+ +
+

For users

+ +

+User’s Guide
+Introduction and reference. Read this! +

+ +

+Layout saving/restoring
+Explains how to save a layout and restore it in a new i3 session. +

+ + +

+Multi-monitor
+Interesting for users of the nVidia driver. +

+ +

+Debugging i3
+Explains you how to enable debug logging. +

+ +

+External workspace bars
+About bar programs such as i3bar or dzen2. +

+ +

+i3 reference card
+Might be useful to memorize i3’s shortcuts. +

+
+ +
+

For developers

+ +

+Hacking Howto
+Helps you if you want to get into i3’s source code. +

+ +

+Debugging i3
+Explains you how to enable debug logging. +

+ +

+Inter process communication (IPC interface)
+Read this if you want to talk to i3 within your script. +

+ +

+i3 testsuite
+Makes you able to read and write i3 testcases. +

+ +

+i3bar protocol
+Documents the JSON based protocol which i3bar uses. +

+ +
+ +
+ +

User-contributed articles

+ +
+ +

+i3 buildbot setup (2012-09, by Michael)
+Describes the buildbot setup i3 uses for +automatic docs, compilation and debian packages. +

+ +

+Lukáš Zapletal’s i3 +configuration (2012-08, by Lukáš)
+A detailed explanation of Lukáš’s configuration of i3 and related tools. +

+ +

+Swapping +workspaces (2012-09, by Sagar)
+Shows how Sagar uses i3’s IPC interface to swap workspaces between two outputs. +

+ +

+Using conky with +i3bar (2012-11, by Gianrico)
+Shows how to configure conky to generate JSON input for i3bar (with colors)! +

+ +

+Enhanced and extensible +i3bar with py3status (2013-02, by Ultrabug)
+Introduces py3status, a wrapper script for i3status which is easily extensible. +

+ +

+i3wm T-shirts +(2013-12, by Stefan)
+Where and how to order official i3 T-shirts. +

+ +

+Switch to workspaces on the current output +(2014-08, by captnfab)
+When switching workspaces, i3 sets focus to the output of the target workspace. +With the script that is presented in this article, you always stay on the same +output, and instead the workspace is moved. +

+ +
+ +
diff --git a/docs/4.8/ipc.html b/docs/4.8/ipc.html new file mode 100644 index 0000000..1771a14 --- /dev/null +++ b/docs/4.8/ipc.html @@ -0,0 +1,1304 @@ + + + + + + +i3: IPC interface (interprocess communication) + + + + + + + +
+

i3 - improved tiling WM

+ +
+
+ +
+
+

This document describes how to interface with i3 from a separate process. This +is useful for example to remote-control i3 (to write test cases for example) or +to get various information like the current workspaces to implement an external +workspace bar.

+

The method of choice for IPC in our case is a unix socket because it has very +little overhead on both sides and is usually available without headaches in +most languages. In the default configuration file, the ipc-socket gets created +in /tmp/i3-%u.XXXXXX/ipc-socket.%p where %u is your UNIX username, %p is +the PID of i3 and XXXXXX is a string of random characters from the portable +filename character set (see mkdtemp(3)). You can get the socketpath from i3 by +calling i3 --get-socketpath.

+

All i3 utilities, like i3-msg and i3-input will read the I3_SOCKET_PATH +X11 property, stored on the X11 root window.

+
+ + + +
+
Warning
+
+
Use an existing library!
There are existing libraries for many languages. You can have a look at +[libraries] or search the web if your language of choice is not mentioned. +Usually, it is not necessary to implement low-level communication with i3 +directly.
+
+
+
+
+

1. Establishing a connection

+
+

To establish a connection, simply open the IPC socket. The following code +snippet illustrates this in Perl:

+
+
+
use IO::Socket::UNIX;
+chomp(my $path = qx(i3 --get-socketpath));
+my $sock = IO::Socket::UNIX->new(Peer => $path);
+
+
+
+
+

2. Sending messages to i3

+
+

To send a message to i3, you have to format in the binary message format which +i3 expects. This format specifies a magic string in the beginning to ensure +the integrity of messages (to prevent follow-up errors). Following the magic +string comes the length of the payload of the message as 32-bit integer, and +the type of the message as 32-bit integer (the integers are not converted, so +they are in native byte order).

+

The magic string currently is "i3-ipc" and will only be changed when a change +in the IPC API is done which breaks compatibility (we hope that we don’t need +to do that).

+

Currently implemented message types are the following:

+
+
+COMMAND (0) +
+
+

+ The payload of the message is a command for i3 (like the commands you + can bind to keys in the configuration file) and will be executed + directly after receiving it. +

+
+
+GET_WORKSPACES (1) +
+
+

+ Gets the current workspaces. The reply will be a JSON-encoded list of + workspaces (see the reply section). +

+
+
+SUBSCRIBE (2) +
+
+

+ Subscribes your connection to certain events. See [events] for a + description of this message and the concept of events. +

+
+
+GET_OUTPUTS (3) +
+
+

+ Gets the current outputs. The reply will be a JSON-encoded list of outputs + (see the reply section). +

+
+
+GET_TREE (4) +
+
+

+ Gets the layout tree. i3 uses a tree as data structure which includes + every container. The reply will be the JSON-encoded tree (see the reply + section). +

+
+
+GET_MARKS (5) +
+
+

+ Gets a list of marks (identifiers for containers to easily jump to them + later). The reply will be a JSON-encoded list of window marks (see + reply section). +

+
+
+GET_BAR_CONFIG (6) +
+
+

+ Gets the configuration (as JSON map) of the workspace bar with the + given ID. If no ID is provided, an array with all configured bar IDs is + returned instead. +

+
+
+GET_VERSION (7) +
+
+

+ Gets the version of i3. The reply will be a JSON-encoded dictionary + with the major, minor, patch and human-readable version. +

+
+
+

So, a typical message could look like this:

+
+
+
"i3-ipc" <message length> <message type> <payload>
+
+

Or, as a hexdump:

+
+
+
00000000  69 33 2d 69 70 63 04 00  00 00 00 00 00 00 65 78  |i3-ipc........ex|
+00000010  69 74                                             |it|
+
+

To generate and send such a message, you could use the following code in Perl:

+
+
+
sub format_ipc_command {
+    my ($msg) = @_;
+    my $len;
+    # Get the real byte count (vs. amount of characters)
+    { use bytes; $len = length($msg); }
+    return "i3-ipc" . pack("LL", $len, 0) . $msg;
+}
+
+$sock->write(format_ipc_command("exit"));
+
+
+
+
+

3. Receiving replies from i3

+
+

Replies from i3 usually consist of a simple string (the length of the string +is the message_length, so you can consider them length-prefixed) which in turn +contain the JSON serialization of a data structure. For example, the +GET_WORKSPACES message returns an array of workspaces (each workspace is a map +with certain attributes).

+
+

3.1. Reply format

+

The reply format is identical to the normal message format. There also is +the magic string, then the message length, then the message type and the +payload.

+

The following reply types are implemented:

+
+
+COMMAND (0) +
+
+

+ Confirmation/Error code for the COMMAND message. +

+
+
+WORKSPACES (1) +
+
+

+ Reply to the GET_WORKSPACES message. +

+
+
+SUBSCRIBE (2) +
+
+

+ Confirmation/Error code for the SUBSCRIBE message. +

+
+
+OUTPUTS (3) +
+
+

+ Reply to the GET_OUTPUTS message. +

+
+
+TREE (4) +
+
+

+ Reply to the GET_TREE message. +

+
+
+MARKS (5) +
+
+

+ Reply to the GET_MARKS message. +

+
+
+BAR_CONFIG (6) +
+
+

+ Reply to the GET_BAR_CONFIG message. +

+
+
+VERSION (7) +
+
+

+ Reply to the GET_VERSION message. +

+
+
+
+
+

3.2. COMMAND reply

+

The reply consists of a list of serialized maps for each command that was +parsed. Each has the property success (bool) and may also include a +human-readable error message in the property error (string).

+

Example:

+
+
+
[{ "success": true }]
+
+
+
+

3.3. WORKSPACES reply

+

The reply consists of a serialized list of workspaces. Each workspace has the +following properties:

+
+
+num (integer) +
+
+

+ The logical number of the workspace. Corresponds to the command + to switch to this workspace. +

+
+
+name (string) +
+
+

+ The name of this workspace (by default num+1), as changed by the + user. Encoded in UTF-8. +

+
+
+visible (boolean) +
+
+

+ Whether this workspace is currently visible on an output (multiple + workspaces can be visible at the same time). +

+
+
+focused (boolean) +
+
+

+ Whether this workspace currently has the focus (only one workspace + can have the focus at the same time). +

+
+
+urgent (boolean) +
+
+

+ Whether a window on this workspace has the "urgent" flag set. +

+
+
+rect (map) +
+
+

+ The rectangle of this workspace (equals the rect of the output it + is on), consists of x, y, width, height. +

+
+
+output (string) +
+
+

+ The video output this workspace is on (LVDS1, VGA1, …). +

+
+
+

Example:

+
+
+
[
+ {
+  "num": 0,
+  "name": "1",
+  "visible": true,
+  "focused": true,
+  "urgent": false,
+  "rect": {
+   "x": 0,
+   "y": 0,
+   "width": 1280,
+   "height": 800
+  },
+  "output": "LVDS1"
+ },
+ {
+  "num": 1,
+  "name": "2",
+  "visible": false,
+  "focused": false,
+  "urgent": false,
+  "rect": {
+   "x": 0,
+   "y": 0,
+   "width": 1280,
+   "height": 800
+  },
+  "output": "LVDS1"
+ }
+]
+
+
+
+

3.4. SUBSCRIBE reply

+

The reply consists of a single serialized map. The only property is +success (bool), indicating whether the subscription was successful (the +default) or whether a JSON parse error occurred.

+

Example:

+
+
+
{ "success": true }
+
+
+
+

3.5. OUTPUTS reply

+

The reply consists of a serialized list of outputs. Each output has the +following properties:

+
+
+name (string) +
+
+

+ The name of this output (as seen in xrandr(1)). Encoded in UTF-8. +

+
+
+active (boolean) +
+
+

+ Whether this output is currently active (has a valid mode). +

+
+
+current_workspace (string) +
+
+

+ The name of the current workspace that is visible on this output. null if + the output is not active. +

+
+
+rect (map) +
+
+

+ The rectangle of this output (equals the rect of the output it + is on), consists of x, y, width, height. +

+
+
+

Example:

+
+
+
[
+ {
+  "name": "LVDS1",
+  "active": true,
+  "current_workspace": "4",
+  "rect": {
+   "x": 0,
+   "y": 0,
+   "width": 1280,
+   "height": 800
+  }
+ },
+ {
+  "name": "VGA1",
+  "active": true,
+  "current_workspace": "1",
+  "rect": {
+   "x": 1280,
+   "y": 0,
+   "width": 1280,
+   "height": 1024
+  },
+ }
+]
+
+
+
+

3.6. TREE reply

+

The reply consists of a serialized tree. Each node in the tree (representing +one container) has at least the properties listed below. While the nodes might +have more properties, please do not use any properties which are not documented +here. They are not yet finalized and will probably change!

+
+
+id (integer) +
+
+

+ The internal ID (actually a C pointer value) of this container. Do not + make any assumptions about it. You can use it to (re-)identify and + address containers when talking to i3. +

+
+
+name (string) +
+
+

+ The internal name of this container. For all containers which are part + of the tree structure down to the workspace contents, this is set to a + nice human-readable name of the container. + For containers that have an X11 window, the content is the title + (_NET_WM_NAME property) of that window. + For all other containers, the content is not defined (yet). +

+
+
+type (string) +
+
+

+ Type of this container. Can be one of "root", "output", "con", + "floating_con", "workspace" or "dockarea". +

+
+
+border (string) +
+
+

+ Can be either "normal", "none" or "1pixel", dependending on the + container’s border style. +

+
+
+current_border_width (integer) +
+
+

+ Number of pixels of the border width. +

+
+
+layout (string) +
+
+

+ Can be either "splith", "splitv", "stacked", "tabbed", "dockarea" or + "output". + Other values might be possible in the future, should we add new + layouts. +

+
+
+orientation (string) +
+
+

+ Can be either "none" (for non-split containers), "horizontal" or + "vertical". + THIS FIELD IS OBSOLETE. It is still present, but your code should not + use it. Instead, rely on the layout field. +

+
+
+percent (float) +
+
+

+ The percentage which this container takes in its parent. A value of + null means that the percent property does not make sense for this + container, for example for the root container. +

+
+
+rect (map) +
+
+

+ The absolute display coordinates for this container. Display + coordinates means that when you have two 1600x1200 monitors on a single + X11 Display (the standard way), the coordinates of the first window on + the second monitor are { "x": 1600, "y": 0, "width": 1600, "height": + 1200 }. +

+
+
+window_rect (map) +
+
+

+ The coordinates of the actual client window inside its container. + These coordinates are relative to the container and do not include the + window decoration (which is actually rendered on the parent container). + So, when using the default layout, you will have a 2 pixel border on + each side, making the window_rect { "x": 2, "y": 0, "width": 632, + "height": 366 } (for example). +

+
+
+geometry (map) +
+
+

+ The original geometry the window specified when i3 mapped it. Used when + switching a window to floating mode, for example. +

+
+
+window (integer) +
+
+

+ The X11 window ID of the actual client window inside this container. + This field is set to null for split containers or otherwise empty + containers. This ID corresponds to what xwininfo(1) and other + X11-related tools display (usually in hex). +

+
+
+urgent (bool) +
+
+

+ Whether this container (window or workspace) has the urgency hint set. +

+
+
+focused (bool) +
+
+

+ Whether this container is currently focused. +

+
+
+

Please note that in the following example, I have left out some keys/values +which are not relevant for the type of the node. Otherwise, the example would +be by far too long (it already is quite long, despite showing only 1 window and +one dock window).

+

It is useful to have an overview of the structure before taking a look at the +JSON dump:

+
    +
  • +

    +root +

    +
      +
    • +

      +LVDS1 +

      +
        +
      • +

        +topdock +

        +
      • +
      • +

        +content +

        +
          +
        • +

          +workspace 1 +

          +
            +
          • +

            +window 1 +

            +
          • +
          +
        • +
        +
      • +
      • +

        +bottomdock +

        +
          +
        • +

          +dock window 1 +

          +
        • +
        +
      • +
      +
    • +
    • +

      +VGA1 +

      +
    • +
    +
  • +
+

Example:

+
+
+
{
+ "id": 6875648,
+ "name": "root",
+ "rect": {
+   "x": 0,
+   "y": 0,
+   "width": 1280,
+   "height": 800
+ },
+ "nodes": [
+
+   {
+    "id": 6878320,
+    "name": "LVDS1",
+    "layout": "output",
+    "rect": {
+      "x": 0,
+      "y": 0,
+      "width": 1280,
+      "height": 800
+    },
+    "nodes": [
+
+      {
+       "id": 6878784,
+       "name": "topdock",
+       "layout": "dockarea",
+       "orientation": "vertical",
+       "rect": {
+         "x": 0,
+         "y": 0,
+         "width": 1280,
+         "height": 0
+       },
+      },
+
+      {
+       "id": 6879344,
+       "name": "content",
+       "rect": {
+         "x": 0,
+         "y": 0,
+         "width": 1280,
+         "height": 782
+       },
+       "nodes": [
+
+         {
+          "id": 6880464,
+          "name": "1",
+          "orientation": "horizontal",
+          "rect": {
+            "x": 0,
+            "y": 0,
+            "width": 1280,
+            "height": 782
+          },
+          "floating_nodes": [],
+          "nodes": [
+
+            {
+             "id": 6929968,
+             "name": "#aa0000",
+             "border": "normal",
+             "percent": 1,
+             "rect": {
+               "x": 0,
+               "y": 18,
+               "width": 1280,
+               "height": 782
+             }
+            }
+
+          ]
+         }
+
+       ]
+      },
+
+      {
+       "id": 6880208,
+       "name": "bottomdock",
+       "layout": "dockarea",
+       "orientation": "vertical",
+       "rect": {
+         "x": 0,
+         "y": 782,
+         "width": 1280,
+         "height": 18
+       },
+       "nodes": [
+
+         {
+          "id": 6931312,
+          "name": "#00aa00",
+          "percent": 1,
+          "rect": {
+            "x": 0,
+            "y": 782,
+            "width": 1280,
+            "height": 18
+          }
+         }
+
+       ]
+      }
+    ]
+   }
+ ]
+}
+
+
+
+

3.7. MARKS reply

+

The reply consists of a single array of strings for each container that has a +mark. A mark can only be set on one container, so the array is unique. +The order of that array is undefined.

+

If no window has a mark the response will be the empty array [].

+
+
+

3.8. BAR_CONFIG reply

+

This can be used by third-party workspace bars (especially i3bar, but others +are free to implement compatible alternatives) to get the bar block +configuration from i3.

+

Depending on the input, the reply is either:

+
+
+empty input +
+
+

+ An array of configured bar IDs +

+
+
+Bar ID +
+
+

+ A JSON map containing the configuration for the specified bar. +

+
+
+

Each bar configuration has the following properties:

+
+
+id (string) +
+
+

+ The ID for this bar. Included in case you request multiple + configurations and want to differentiate the different replies. +

+
+
+mode (string) +
+
+

+ Either dock (the bar sets the dock window type) or hide (the bar + does not show unless a specific key is pressed). +

+
+
+position (string) +
+
+

+ Either bottom or top at the moment. +

+
+
+status_command (string) +
+
+

+ Command which will be run to generate a statusline. Each line on stdout + of this command will be displayed in the bar. At the moment, no + formatting is supported. +

+
+
+font (string) +
+
+

+ The font to use for text on the bar. +

+
+
+workspace_buttons (boolean) +
+
+

+ Display workspace buttons or not? Defaults to true. +

+
+
+binding_mode_indicator (boolean) +
+
+

+ Display the mode indicator or not? Defaults to true. +

+
+
+verbose (boolean) +
+
+

+ Should the bar enable verbose output for debugging? Defaults to false. +

+
+
+colors (map) +
+
+

+ Contains key/value pairs of colors. Each value is a color code in hex, + formatted #rrggbb (like in HTML). +

+
+
+

The following colors can be configured at the moment:

+
+
+background +
+
+

+ Background color of the bar. +

+
+
+statusline +
+
+

+ Text color to be used for the statusline. +

+
+
+separator +
+
+

+ Text color to be used for the separator. +

+
+
+focused_workspace_text/focused_workspace_bg +
+
+

+ Text color/background color for a workspace button when the workspace + has focus. +

+
+
+active_workspace_text/active_workspace_bg +
+
+

+ Text color/background color for a workspace button when the workspace + is active (visible) on some output, but the focus is on another one. + You can only tell this apart from the focused workspace when you are + using multiple monitors. +

+
+
+inactive_workspace_text/inactive_workspace_bg +
+
+

+ Text color/background color for a workspace button when the workspace + does not have focus and is not active (visible) on any output. This + will be the case for most workspaces. +

+
+
+urgent_workspace_text/urgent_workspace_bar +
+
+

+ Text color/background color for workspaces which contain at least one + window with the urgency hint set. +

+
+
+

Example of configured bars:

+
+
+
["bar-bxuqzf"]
+
+

Example of bar configuration:

+
+
+
{
+ "id": "bar-bxuqzf",
+ "mode": "dock",
+ "position": "bottom",
+ "status_command": "i3status",
+ "font": "-misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1",
+ "workspace_buttons": true,
+ "binding_mode_indicator": true,
+ "verbose": false,
+ "colors": {
+   "background": "#c0c0c0",
+   "statusline": "#00ff00",
+   "focused_workspace_text": "#ffffff",
+   "focused_workspace_bg": "#000000"
+ }
+}
+
+
+
+

3.9. VERSION reply

+

The reply consists of a single JSON dictionary with the following keys:

+
+
+major (integer) +
+
+

+ The major version of i3, such as 4. +

+
+
+minor (integer) +
+
+

+ The minor version of i3, such as 2. Changes in the IPC interface (new + features) will only occur with new minor (or major) releases. However, + bugfixes might be introduced in patch releases, too. +

+
+
+patch (integer) +
+
+

+ The patch version of i3, such as 1 (when the complete version is + 4.2.1). For versions such as 4.2, patch will be set to 0. +

+
+
+human_readable (string) +
+
+

+ A human-readable version of i3 containing the precise git version, + build date and branch name. When you need to display the i3 version to + your users, use the human-readable version whenever possible (since + this is what i3 --version displays, too). +

+
+
+

Example:

+
+
+
{
+   "human_readable" : "4.2-169-gf80b877 (2012-08-05, branch \"next\")",
+   "minor" : 2,
+   "patch" : 0,
+   "major" : 4
+}
+
+
+
+
+
+

4. Events

+
+

To get informed when certain things happen in i3, clients can subscribe to +events. Events consist of a name (like "workspace") and an event reply type +(like I3_IPC_EVENT_WORKSPACE). The events sent by i3 are in the same format +as replies to specific commands. However, the highest bit of the message type +is set to 1 to indicate that this is an event reply instead of a normal reply.

+

Caveat: As soon as you subscribe to an event, it is not guaranteed any longer +that the requests to i3 are processed in order. This means, the following +situation can happen: You send a GET_WORKSPACES request but you receive a +"workspace" event before receiving the reply to GET_WORKSPACES. If your +program does not want to cope which such kinds of race conditions (an +event based library may not have a problem here), I suggest you create a +separate connection to receive events.

+
+

4.1. Subscribing to events

+

By sending a message of type SUBSCRIBE with a JSON-encoded array as payload +you can register to an event.

+

Example:

+
+
+
type: SUBSCRIBE
+payload: [ "workspace", "focus" ]
+
+
+
+

4.2. Available events

+

The numbers in parenthesis is the event type (keep in mind that you need to +strip the highest bit first).

+
+
+workspace (0) +
+
+

+ Sent when the user switches to a different workspace, when a new + workspace is initialized or when a workspace is removed (because the + last client vanished). +

+
+
+output (1) +
+
+

+ Sent when RandR issues a change notification (of either screens, + outputs, CRTCs or output properties). +

+
+
+mode (2) +
+
+

+ Sent whenever i3 changes its binding mode. +

+
+
+window (3) +
+
+

+ Sent when a client’s window is successfully reparented (that is when i3 + has finished fitting it into a container), when a window received input + focus or when certain properties of the window have changed. +

+
+
+barconfig_update (4) +
+
+

+ Sent when the hidden_state or mode field in the barconfig of any bar + instance was updated and when the config is reloaded. +

+
+
+

Example:

+
+
+
# the appropriate 4 bytes read from the socket are stored in $input
+
+# unpack a 32-bit unsigned integer
+my $message_type = unpack("L", $input);
+
+# check if the highest bit is 1
+my $is_event = (($message_type >> 31) == 1);
+
+# use the other bits
+my $event_type = ($message_type & 0x7F);
+
+if ($is_event) {
+  say "Received event of type $event_type";
+}
+
+
+
+

4.3. workspace event

+

This event consists of a single serialized map containing a property +change (string) which indicates the type of the change ("focus", "init", +"empty", "urgent").

+

Moreover, when the change is "focus", an old (object) and a current +(object) properties will be present with the previous and current +workspace respectively. When the first switch occurs (when i3 focuses +the workspace visible at the beginning) there is no previous +workspace, and the old property will be set to null. Also note +that if the previous is empty it will get destroyed when switching, +but will still be present in the "old" property.

+

Example:

+
+
+
{
+ "change": "focus",
+ "current": {
+  "id": 28489712,
+  "type": "workspace",
+  ...
+ }
+ "old": {
+  "id": 28489715,
+  "type": "workspace",
+  ...
+ }
+}
+
+
+
+

4.4. output event

+

This event consists of a single serialized map containing a property +change (string) which indicates the type of the change (currently only +"unspecified").

+

Example:

+
+
+
{ "change": "unspecified" }
+
+
+
+

4.5. mode event

+

This event consists of a single serialized map containing a property +change (string) which holds the name of current mode in use. The name +is the same as specified in config when creating a mode. The default +mode is simply named default.

+

Example:

+
+
+
{ "change": "default" }
+
+
+
+

4.6. window event

+

This event consists of a single serialized map containing a property +change (string) which indicates the type of the change

+
    +
  • +

    +new - the window has become managed by i3 +

    +
  • +
  • +

    +focus - the window has received input focus +

    +
  • +
  • +

    +title - the window’s title has changed +

    +
  • +
  • +

    +fullscreen_mode - the window has entered or exited fullscreen mode +

    +
  • +
+

Additionally a container (object) field will be present, which consists +of the window’s parent container. Be aware that for the "new" event, the +container will hold the initial name of the newly reparented window (e.g. +if you run urxvt with a shell that changes the title, you will still at +this point get the window title as "urxvt").

+

Example:

+
+
+
{
+ "change": "new",
+ "container": {
+  "id": 35569536,
+  "type": "con",
+  ...
+ }
+}
+
+
+
+

4.7. barconfig_update event

+

This event consists of a single serialized map reporting on options from the +barconfig of the specified bar_id that were updated in i3. This event is the +same as a GET_BAR_CONFIG reply for the bar with the given id.

+
+
+
+
+

5. See also (existing libraries)

+
+

For some languages, libraries are available (so you don’t have to implement +all this on your own). This list names some (if you wrote one, please let me +know):

+
+
+C +
+
+

+ i3 includes a headerfile i3/ipc.h which provides you all constants. +

+
+
+
        https://github.com/acrisci/i3ipc-glib
+Go::
+        * https://github.com/proxypoke/i3ipc
+JavaScript::
+        * https://github.com/acrisci/i3ipc-gjs
+Lua::
+        * https:/github.com/acrisci/i3ipc-lua
+Perl::
+        * https://metacpan.org/module/AnyEvent::I3
+Python::
+        * https://github.com/acrisci/i3ipc-python
+        * https://github.com/whitelynx/i3ipc (not maintained)
+        * https://github.com/ziberna/i3-py (not maintained)
+Ruby::
+        http://github.com/badboy/i3-ipc
+
+
+
+
+
+
+

+ + + diff --git a/docs/4.8/keyboard-layer1.png b/docs/4.8/keyboard-layer1.png new file mode 100644 index 0000000000000000000000000000000000000000..52ffae0da423a9b5f0403c77dba9cb9cd2dbc4d1 GIT binary patch literal 55821 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 ouB|LYgM)2LlmuVT56(O`atum) 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�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 qYvXY1MisNL!hp{;VU<-?AI3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Caps Lock + + + + + + + + + + + + Shift + + + + Shift + + + + + + + + + + + + fullscreen + tabbedlayout + defaultlayout + dmenu + focus floating/tiling + left + down + up + right + splithoriz. + Mod1 + openterminal + splitvert. + stackedlayout + focusparent + resizemode + T + + diff --git a/docs/4.8/keyboard-layer2.png b/docs/4.8/keyboard-layer2.png new file mode 100644 index 0000000000000000000000000000000000000000..83616d935af20b2894e55d973b98d416d015a5ae GIT binary patch literal 49858 zcmY(r2Rzp8`#yeaqC!PRA&JavB_WiIL@1Gwy-QZI3rP{OGBU~*$|_})Br`jaNJeC5 zul$bp^L(Dy|NH;Ep3m!fl>5Hl_jR4uc^>C+9Oo6Ne*Ww(N+wDYiL^^e@w5hswAqhD zBI6_9hChi*@C?Jhwm8ZuX_4c99^|I?@H2(IqK+eezmxbsnH*P~EB=tt>C9y(&Fkh) zH;o+3NH=fZJZg2##?i#c-t6dg2aCALlT0MiL6XvGSuNN2@$a|vf|pm9X0)?YQv43l z9%57B&Y#Ms-ezK09s2S?kSC)E=c)#yii=6TaP5lhf>?yus>WfJ-BvOcGM}e<`pz5i zbxa(X`ZdrmwCHlaQ;Pprd2jvvmrU)vgr{EXD<0IBa&-N3a`=CG6@|YxoZy_)ejB*j zaScDl;m2a@4xZ=FpJ!ZncDE;)T;j*vXxm6YpgtjJ@mC^~4?{@;e8KfBHzCC7YXR_lw(J-T1rSTArB5T3uZ&tPruT zp`n2X=^yVZIO( zvLwCN_O~13j%}VE%d5~Rb-f`Wzh<48nfd(k%T11sjoc>n?EL(@d|18L!dg>R>JMD}?7IAi<4Un@|8Qg6$jFF# zxyP+HPNQ<=9?OGN{GXOqR~?5N7<+nprsw7&B;)nOoPTRget&z`pOTJ2%B`@c-!v{M z>ENc#n_D_NE#BYRs=GeROJ4a(<*;Ak2)^BOgEHOjL>ce$FNgiY!otqQiUv-6d$pII zezC;{%ThB~8=iUP)wQE%q9va`d&Vf?aM;Sq>RkNs3n!#4J|7Ub{p#cIzqKu0En28j zAYGm7@*5{^l_uit6iEIxb!D!#|QM9smhUjos(S!0sHuMe~gX>CMG8CY%x!qn{#^OGErBt@t2qRN{ItU z`uQi7m6dYUHTiw`mZL4twhI`RYe`BQRc^WC>zjEgC-z*}&~x^)4_{cdaqii>w<6nb zdZgu9hWU-IzXAg@oflv|~xrH>y! z{=#8M*`Unr%!7UWkHzhnY&vs?@W@-XZx^}VdvY7q0mc4Ge+j1%n)%-y&z#4;;Jem) z?&vaaOHwCsR~Zy!z|&6QBI_kMG`{Dqbp&kV{TdjT7H_;CQG?^wCVurbF!P zItAvt9zJ}iSK@G{nya9xAx32M+baRJgp*_k`T2wQ9y$Nx_wPFY9rW$Fs!B>mRrhv3 zj*GLg%};E>*-0^daq9LapZvwy09LQ&tiF!Nj~Uz+#<@9s5y1>hOq=TNK1q;ruVXYQ zmUJ0sKom|%MMp(dBlsL8p7x}wb4~yGv*}%TcWk29iqi1CeCW>SH9Mb;M&95_JwTH<)*dSCh0zXD3_qF4ws zELN*meH6ctu<%nHECxnKG8%gNvlU+JgOozwddl3jt@V!`J7)3qh0)s5K*-40Sooty zmG5qE?#MMPwA_vVor@9nzq55m-EN2CnfZCMziZ2+i-bnaQCqt_5?|c1%bMg<>cizd1pgd zgq%jy@6+)r1T%@i**jTq`-f%;V zJia%gCKlQ44pSJ7SNgV{4DawBHF3uT_8+@u+L3kf_=yuZ+xs z;;B<4$6uctQ|~!`#t}@tv=9`S$fLw(P};x|MN`7imz*mOevj?W#~+tfR;Elk=l82Au?Z<-v?H6Igh&i`i!?SiCW09e z*XnUWwa9((+TC6IxA{DHuwy&bfuyVN@9-Ix>nT%WN3zAJ4^p$73@zrp^!#36AjRUIdU$$DIRB<4Av>D3JUw&LbA{Gl?tQV{H`9lr7R2$t z)^q$+*WQy?-;rY2>lhIxl^q>)K121S<+-g$? ze0&TtUMKSm%8X}+8%M@$CKKPkcp-S==HxkDU8as~Z408F*k91s*N+k~q~iLu=X}D+ z7$o$zoGZs9Wlu|)!p5iZ>E9@qTsu2*WeD}?aM1G%HE0Y3*(v2jz%I((jLbV6&zw>bl0z6 zw|aBupk*AsE>fZn4#}%)-yboFZoOqS8Lobm_rg=ZLj6L^3&HVf+v=7Xo+$)xy1KSB zV_o~>?ae6$A>%E`_mM2Q`$a9^$!x62$BEmy&i|$x>&*Mq)y1f$rsm<{@!ESs8kzX% zt=VCRp3n3YJ9iEydjGvORkE=@<*oBj%412LDQo@{tM{O#ZC4H=>$HNxrWbDW)=c8I z87_aP`#(7NMY6}o$EQrxh94=o`hF7*qfWjl1t~2p4a;zM2mMhR8k$pMUvjLv3p4fl zy^21Cu(oAg>XU+sDVQCscdw^Q1I1G_?Bm z{kwj(qJu$oU#<7XdUQ>VqOGm1X^TYLwYK_6T^?FS!>BH zEzOv87u)SPrKJ_o&VD)lJagvO6{NMphYw#hGxLv&i<|3ak#ZaKdS{r7@8Rd~PqwjG z=Dj${jG%iYkw1>KC1u^7@gAwV>y0xnj%B#pZL;cz%nyJl~ zG&W+Po80r-Iy%fg-lx+rxobU{k=6=KfS=lPu0%&f&`$Q2@ji(|p~mqE6M7RbWcyX{ zA*&1(S9ApuD^UQE;`R8gS~-#J29W|=y{g&Xch^)`Z)0a?N3kUvBB!%^{EeUd(C+q~ zi4io&Zw?FNI!E>2_{k-|>*|Whx|r?d^mPz*sU}fI1_`0A`07x^%K-K8y>b_Chv9H$ z?~2?n2E zb;cOs`vJ)XDDRoww_>L6ZR>0}beFz$ewi1&h-AcdF^d+#yZN*nm!)(VxphktHSYOThor*c_+W7PM~5<4jBr#Mbn)qZ)BF^#uMD!+*r@uKFByKW6IaM3zd{P zk;?e4cyuM>@cIP=h)M*|Ud1#C+$aOP9_)79{h*A)sQFZYZ#5%FxPu)ZKJ@dII@l7xuw) zbzws1^VV(K_R!Lv#+j#}qKe8oxH$1m``O+~;6Xvh;d6kR@8TsKNta(-B|CCH{%TDq zn{Ld`P1gPw{|wcqi|t}!HMxFWfWr@+M6?7`zs)}ZQeLAdc4+kH#|Nzr?2OJM&9Vau zhs-$l$TrTk_)X_k{53}2Yc03Vl|#uK9Ua9N-OIxAFeIeO-7xXxF{L(?D(W3Ob{Ld< zWWJ;@($$TfW3#caIKteA0z&D3$7A`AnN?V++k94`wBfMdG(O13VI(8%Yq8ya9FZ*% z6ce+*n#j!Ze6wsf^3Cc=LxQD5dr+aS|(d*LOR$a$crRL7HB_`3@AQ z(y}r}G3yA?EFyOybgYN=?Br=_X=yDkrl!AGd)!)9EK9!m+_7stOO{4Sj~_o?Owi_c zPYo;=-K_@zD=RB2!O#_5yCm^PYROXWaeRCb&eHnoVme@nR*o(mP6)yfAchtt<7acS zeATB<*=3&_8-r0^G{<-nBe^cfVWW{hA3b_RN)dZYDmpCWSm`)ev-{L?=#v{78%UX= zN7?Y5Q&82bK7KTlc;zyo`vpM7g-=}k64O!LObrgJV&IQ#*3#&>iFmhyKc~ zISdNfss|R+8f4QK-UB&L4kYjm=Pw&P4APE zau`tWJ&?`I!on21weGiAZ4?n&O8@H5QarkaT;}HHh|K%KACnN%M|NF!<1lpJ_T{js zfPerBgANYui4!Lp;wAQ~bJj}UoJ>K_6T~W$fW9sc$YL)8L&i+Kh-DnYMn&oyQi#(? zGnx9nfv>1+Xde!9aGc4ZsRiI}SCA)c)= z=lq?CXhrWt&{+Sp|EhLlY1#-q`e=6%@8slURduy8wZZo{&f#w57N6sl&>3Lc^vXSS zK8N}*BK|T9*M}STU+XR9-j$c7|5kj*K0bnfXcYrcM?1vv>H}@QQniFHBX6y>$i)_c zB`>!#TPKXJUvEOA#&E)E#De24@@@)FXbDa7w2*OEpjx46?H((s0<4KW2!$B-72#{w zt{pgT?}MhK<<)h=Q(cdWu6;l8C_Fq9pNMZ@j9Pm@#w#A6)B)+g_}X_$u3x(lCHt^q z`00L8QBnM>*^kKFB(4CmP80>7flnbS@{Mn9P942s+x4-s@{XK8<;-}O$f=SvZNPz) zS=8|H?{Brc^De(M&i(Ybt+ln4$aCmvTlFk7H8uYX*2-&WJktGnbD~=eBn@evt)uc4 zo5@RF5`gb;Q)0-IC(IWvTmZFkcEZEfmJbE^DcbiE#{qi#ZA*EWt=^z$QfK zg7g>|8>>gcAX;4kgVG;U6&u6&T-0R8KZ8oa`dmvmP#TADUXNu4IAS|}9FBLd-gUEl zx|>}=@f(4tTUx?yPW8S-GPAX_OI@xwbDy@QZr__!mFPVzET6AetaHx$jg5^F&B!T< zpsyc3Y{s|jes!IiE1=W5zEs5S=kMQHmnatdyf;#vMq4AeE^OMrKW=d!2N*S0>~3SD zpug>-TXx@q|8Y(fe6Pf35Y0aZ=HV@VLHzvqqf0}vIK<5d81R1fIo_4I_OmuV{{L0iidyQqAwGIij@BI1pPoNgvGq?HQ zsWUcJODiiHK+(B|73UEqDSzGps)%0ed5lNQZag9aMgnYRp>@ao(p$5_|AOJ8+DnEL zSh@CW?GV6KmHHh34FiLNr_0>tv3f+8k%%Mo!h6H(((}u=0|Ej>X*CQDSuHFq6doR^ zogeG$yE1XEO%*&Fy?}ur`Zqp0`HAsy@*O*#fgaNMW0pK#Ct%P3@SkD~=Yn3NzQ3yUN zh*>h~rOBr{(3XD|7OLy($9(InBKUM3J(0ZmC@M<9!{g*uO4^zsa(@9FquY6T0_El9 zzyl^%uZD8;=YhVvba8ssU>Ck5NWt0Zet9I$4*=hS$BsoyK0lDGyIosNEu`Y_ipsF1 zU;IxHh3V<(Jw`P=vj^m*q@=**(Mb9A@vEq)0Q5AyzA+#uENl#v_4Vu5tLEl+@ys&o zb9+%X(~)`5DGZE^+ym>2180tuZVTu;d4&~hE^h3Pib z)ZAkfF(=hk3TK&x7B-^uN@ZzAFxZ&g7Lctu7s)_%;JEsv`j*qw{Wlwt-0;hS4ugur zpP$qN+P!xCMTIus@9y1Ab-kzE-Q5o`Gvff#;at$?NH8506jZnAq@>#-`_^gfOE5~# z4FC~h^}+TD0v$>|w-viNsYeP54vqo4)X*{*1durmjz_J$x2o#2?k1JyYuyX0&oj|I zsK2->n@P9tptN)X8VqC5OEJP`RRY;jyXi!?$~Myy)i_q{0b0`CbaWrl9Tghu9E{vf z&GN$Tn>Y!7oLV$S{W(D@E>knz>(4v@*uJrQlyXP+P$Y-?XJ%SOiBhmgo8(vtLQCgn;GdR+@PH@F5jg1&IYQ;2k8O>UZyaaGr<1b}k!uxKQ^4kb--x z#NL869z1>SUu6IU3JGK;y3gkeO|`WYpdd?2OCbr=F650OEe_R1estjP8Z6jbDd9N$ zV{-DmhQ=N=qm6-&%XQF7^t`^|i(@*CMzrKZ?FDeU{XqT>0b$v_<(?{fdhyU8Dz#P4 zojc6KL+LNac9Tm^{C-FX0YTBh)H5sRDxN>j$-|>ODd-R^m;7U9;8RL^dOh>~gC4sP z=ZHulF|m($Xaa<7-n_j0E3w35Ilrf$f_0`#USZeHo#Z=rRslJpOcmg{ri^zn6CIeI zzCPJVPl*VDQzV{_JO6k`mUjM09SYU0^%XHh1+9QVJQec^!CQY!8yXr0sf50P%?ZVs z21cwz7?8Lwzc>htaxUQ{Ba&JSdxIAkB4Zq$RSY%KQZXgRBW2_fA;YZu}+^Kma8jPYv@=?YEw*;(IyIAtJti|IT>A z$&yMTV)p02K#Y{TID`c@PELgr1{vyX1gDF}rRewd0#FN`o%Gl&;2|YzYaU=Av>lPC zu|yACBH!SGENg^3LZ~xfO^l%AAP<0bO+mNs5O9P%@wrB-a_g)=))_F+>34fzVWB9& zq(YQPv1w~-16w4orbd1C?Af{bg0#Z`KJ3`2uU{{ZPfP$|E{}Aosj6}ix(#x_;-`Uu z0leZFG7Jd&>@rRX2}Xap+sL(e;Q&ZLTE5GnXa}EW#})N~%XG(!{D4iuK^5`+0^}hw zMF@-3Q!E>_h@@xFp1G(3c_T26;5-YP)vf*V9J(tID{p!2+UH#Tw@47%fUMF1IY&lE z&2HNE5k%~Boq|Cs_D?&RPeg#7&t%r*qCJVNMCiZtT6e?OOTIWp&I|yD)Bk7kyJXP- zK+Hidu6xjnuv+qX0@M3~t7p!fnW-13$e0(5;MG2Fv$qn!5#mbPM(MS>2yUh)G|~{r zK>9lTUAt8@5EvLpu(N=?4!}U*dpI@yx&}bbB+jijD2DH?Tv~F?(#|`NvKHmolpr*{W*v#19;dV-8J{bxvp6ciL>fAgjV z^c#&wMc4bJ!3t%IJ7lBwHY7;x-@MtE&u|JUmCzbWz1Cw<<3&7IoLEk}zC$rN?!Lf> zE^6fWZw=H+WXUrq`y~4tH`t`5S%A#e*4FNYgltd3-$0ntOgcqI0uZ``0s|Izdqi0> z6%|#(6Uk_7zOoQDMr-1Fad`M%)Ig2a#fpvf5OCbt-?c%3ETi8P6cSoq*_bgLd5|3x z#eXFVq@Ix5oFxELfk@i*Y7{XFa`LNaceS##0s+2im^B`Lt?;hU70yUcKMTCs;U#Ed zY&`NMXFnbq>Hq;;&L&EGrkFM(31ZJQfGdll4gl5VFySjs|Clm=&3JIV|BE@;4TObq z?Nuxk>KrxJ=VNm-jr#c|#PHjAqdK{^{XAu*rR^+yhyr=YHK56(AAT=$kACmFy?(br zaoh>#EL~wsD=Q`B24vVx5i(;yifbtb-m3PKJrZ}Rn0YvSk(mj^1^s4I-RcuTqfPJM zzjwIHO`bT8r66E7HWuwAA;dvaOVY~J5VieED)OjcWR(elw5AZ@{^==wM26WJS0dR5q(~(!RX`LitVmIM!6dt zybHM{GFM4ebqLSHcIeP1kfJ9~p5#(bBK7z8yWYA*M#Ie9h#vOdg9p#hrMbGgh90|a zaOch)(D!AG4_Rqe%SDloQB#KAy|&m{qGE9q%P|D9QwBoRobHFUqV9UUBgg7jiN>Af;%by7--3=&sfHU0jt5ZMdAgIEARkg_i8yRCm} zikj<6yx4bCkah(gY`_jAY_PfYXe9_07u?j=tH?TqR&5Ho>IJIR+rJ$;bKf2a=>9(b zy0~N4?VX*6@Zlt)lgDAGqf0yJkq-!s{{1fBC!84G`9ekphUOw0ZRiR_i34vMFXbKu zk#Pn%k^~a{45|YlzMr38DC9G2A1@$EY1Pm^V2w6}h+!vm1K{%nr1mIwc05%egCpy5i zeVW(y)SoAB{c!jlC`)Cq8DxUu;=tA_%H(864a=X?Q5d$F6D2w`qBJ#?1En@%PbDgp<7g{K@U_r~4<2aR*iW{lhltvKud4FH z77C%CIklX0YwQbuQG$`|(msL|bo-)+(*%CkwkzKsbeoZ>sUJjWQKRip$5-QiG2xhgc5+6uf#_$#Bln)2)J(4nkY@8Xq)2b_<1K%P3_>E1})YL?b zv}f)G3E%i+z84haalHZPqLrrg zg!Au=;6Lj6;jyuGK4hCoDHf_7odAnHzt#kr#1FBp-2>%`LQQMsjR!$Ryi)Gt@D8z_ zdZQ7Hp{P~s>50dxyJJIXC zda(h=(Qu=W*MaE+x%wAkO7D#m1(NZ@0}^r&`BN9Uv@${q?aa(L?2a5hJiRh+^Sd)o z4U|t*R8)JeejMcStogfH#-EoGVlor>`^wzY7iN>0(qeBh*j(E~(SMefUso%q`Skgt zFSzN^Fkb6`_Mbub_snUa!1h+fsf`?quL9~D8H+m9W$*4zT|2C&P9OYgNHG=+$V-@3c=aTZRvj4Pfy zx0B!((b1HGIzx^_BVCQNLKt{ZmW>g(NMpMp-QWbKEJ}E;h{~)@`xfSCJUvaZFy1AP zEjfDh=<_SD9s=l^F2`SR&IQ)+LF_`7Eb-nbFFf6cD)JIx4cLbUL@&1bQEV)ar#aT% zdvs$sk8_V)zwf0ygB{T?c7GtNm5C4VRJ1(m`% zl~&O;d0*$YR~1Dv1O*AJ%pnPh7;q#7Aa;suAb~T$Ty+kTG7@&tIs_SldW7%_+=N7x z`J{8sPraxiOnI0^ZvX!M|FV{??s@cn*IR&%Q#SE{(6yf3ge}=|@Z!ulW#ym19RFim zGt1O~h+)(T(K715VhIBS zLnzEOSkF;lM#A)j$isdd!0FH}vi^twA*ZIcz@CEREC6Y_F!^02N4MxQHeTDCx*V1} ze?EAqD%Ka`x<8l&?%}xn)+HzC!ch4GdI4c@7u6xGiDtVPRcBxgP?UNH+{?;bmt-f* z=|@5;NJWWWoATaZ=i*X~%@eix!UwkLEQ~jU@0 zEk&FAzo3P$J@~uNY9;n5T0j&dbBW#;M)KSj=BB5AUk_0G@JtLa)x!GQT zMc}>TfE*B;L+_gJRrRe^U^_X|`x3 z#TVr2{`vUfgD=P>ntl5SMk^`44+TOM=M>!+LAIfg&vY7k-#`Zj+X)5NgOLoT0U&|% z*e5~`Ci)E{ZqOl!W9iuqmj$poNyEVHPE);42#WqwmR6>mz5RFXq=AvZf>CeXBixf#y>Da}1%?A*qPD>6bSUdg~=E0s}KuwEHQ$ zxt+j@L=At@xqP{~%>5=n^>O)^$X zH5L%O0xG@*AdgT^BKWUd%28KF#wC0U_!s1{AVez=+n|$b{f0`^ul77$UhdBkVcp?%od!Og;O<^s`T& zJ|#>9=>9b0p3bdKRcHbhK4g(nMy~{_B?VO{|Jc_De(IrU!JDCI76szcl@`<50)(T|M+DYY%ar2Qh@7^�^!L?RiOt75+m*D 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

V(1P4dJ+awr!fZc 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 ROga9up6xIzb>^a9{tX$%z6}5X literal 0 HcmV?d00001 diff --git a/docs/4.8/keyboard-layer2.svg b/docs/4.8/keyboard-layer2.svg new file mode 100644 index 0000000..70cc602 --- /dev/null +++ b/docs/4.8/keyboard-layer2.svg @@ -0,0 +1,896 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Caps Lock + + + + + + + + + + + + + + + + + + + + + Shift + + + + Shift + + + + + + + + + + + + toggle tiling/floating + killwindow + exiti3 + restarti3 + moveleft + movedown + moveup + moveright + Mod1 + + diff --git a/docs/4.8/logo-30.png b/docs/4.8/logo-30.png new file mode 100644 index 0000000000000000000000000000000000000000..207b88886036187b6db78f551d49099f5309cff2 GIT binary patch literal 2751 zcmV;w3PAOVP)00001b5ch_0Itp) z=>PxYT6^#B{(a}1nKM_&q?p6i+W zxu5Ubdo3Q017g4I{r1~?t-tpEZ5(~@*B88Gr~nZFA^{`;1OY$+MEL&$fo+e(6{NkG z5g3IXGBW}@0%j6s1ZEPk3fK`iN5V|vtOB-5*b!T+w223MUN&3^hyW=DBtawrL`DPz zKmh>ha}hZ2XmJIJiS7P=9Xz8b4vhlm2-uPQFU%=nOTt!xbqd&$SgXY5TG+A{L=hqe z07fD~BnHGgCr3cQI~C}IQ7J53!2^+^7eD#f@Z8O{?)i&L`&w%PA_67?Bm#$whzbxz z09hO=5D)|qaL5`-IaJyLfFKbgDgpXGI3nJG0w9tQf^6?M<&U2`J@w^Zd0>2HV>kcG z*Z-}3<@R1H34O!PAt_hjqySe?#fBM0V@BRGt)<`)qw#XGCiI8(bq<~1kDFI7L z0}+E#4iFhhF)GDK;-knI4WdYBl%9e_!44 z!-&0Ppa1|+T1!Vv@6Fkzox{~2nI5ZTzGvw4(aFmE@br-+FJ$?tbB+(dn0-nVG5WHe1(s>|Pv&fQaIG9`q>4 z&tJN=dEaPUni?);foJI9nel;ZOY8OP8?8nd27~}0fS}4p9(&%zl>!xs6|!6PPVPY2 zFbo6|)q^b8cz# z$Z(WR4rN*38G2;qz~JTi)&0fYycq@_5qW`%L}!w3k&t_PHu(j?c5fQ82~U2jk1oxH=2x6u+w%$z2^#2nn@`sClT&J-1wtc z-v06R_4+!3(0C;&{l&9KpEz3T4z4#{%aY$~JL-V(^NV}I+BeQ!eHTQKS>Wiwp`=ys zbxC`La-%1IrwviJm9u?kVQY7FvtEDYC-XPnT5N634Et%QSYO|sF3 zzJ9HK?PJsNST*&ta^!~(9n40~&n++gVoTKuP_EH)MWgnSlUsw@cl>eSP8DfBbCy*6G9P;NL(0;3vNE#p6$%s@l;T^P7#G9`?3c zwyQnO^S$A{Fd=kNQ}iJ|Vup4DxjTz&e1iF=)M3{^z z<5QL$bC`y()=76R++1CJbSjvrM5glAt-ZO~oz3>&eD2t%LQe;UWB2v%-#CA(`+ z8vsG251f1fgRDS8K_UiJB8U=r2KJrbId}2)>ce-H2d1i7DfG1W$l>zj+{)Jad%NLU zl*WLFl4K#y7p0vGOZE3JEbPwy=<-tSAHHs0h^?vm2Mbc7Fe7VX1@$MS%z^ zJ$~W^^fLRNsA#aCDUJ&%Sup#m+!2m+w=*!^EYKec_e z>6-^436c^)kkI#WqpO;4TwY#&_)s=5RZYuDV4^4P$_~wMu5Vwtv9s%JQ$I7-ocNQE z;!|J!#N=lOV{bqas#{yl<>$V=^sVb|tX7GXVdto?je_W%c zK;!3VyaKduwIAlY9cWD^z4TizJn+o%gVh7pvD<8P_ph!umVBet;lXfhv>a6(vqJ#9 zy3xA!2d{1X>)Vad^=bmK6dfZ)&x0a2T=a}mqaS(+{lp^y#oCx7u$typ4%KMdlOYmk4 + + + + +i3: i3(1) + + + + + + + +

+

i3 - improved tiling WM

+ +
+
+ +
+

1. NAME

+
+

i3 - an improved dynamic, tiling window manager

+
+
+
+

2. SYNOPSIS

+
+

i3 [-a] [-c configfile] [-C] [-d <loglevel>] [-v] [-V]

+
+
+
+

3. OPTIONS

+
+
+
+-a +
+
+

+Disables autostart. +

+
+
+-c +
+
+

+Specifies an alternate configuration file path. +

+
+
+-C +
+
+

+Check the configuration file for validity and exit. +

+
+
+-d +
+
+

+Specifies the debug loglevel. To see the most output, use -d all. +

+
+
+-v +
+
+

+Display version number (and date of the last commit). +

+
+
+-V +
+
+

+Be verbose. +

+
+
+
+
+
+

4. DESCRIPTION

+
+
+

4.1. INTRODUCTION

+

i3 was created because wmii, our favorite window manager at the time, didn’t +provide some features we wanted (multi-monitor done right, for example), had +some bugs, didn’t progress since quite some time and wasn’t easy to hack at all +(source code comments/documentation completely lacking). Still, we think the +wmii developers and contributors did a great job. Thank you for inspiring us to +create i3.

+

Please be aware that i3 is primarily targeted at advanced users and developers.

+
+
+

4.2. IMPORTANT NOTE TO nVidia BINARY DRIVER USERS

+

If you are using the nVidia binary graphics driver (also known as blob) +you need to use the --force-xinerama flag (in your .xsession) when starting +i3, like so:

+
+
+
exec i3 --force-xinerama -V >>~/.i3/i3log 2>&1
+
+

See also docs/multi-monitor for the full explanation.

+
+
+

4.3. TERMINOLOGY

+
+
+Client +
+
+

+A client is X11-speak for a window. +

+
+
+Table +
+
+

+Your workspace is managed using a table. You can move windows around and create +new columns (move a client to the right) or rows (move it to the bottom) +implicitly. +

+

By "snapping" a client in a specific direction, you increase its colspan/rowspan.

+
+
+Container +
+
+

+A container contains a variable number of clients. Each cell of the table is a +container. +

+

Containers can be used in various modes. The default mode is called "default" +and just resizes each client equally so that it fits.

+
+
+Workspace +
+
+

+A workspace is a set of clients (technically speaking, it’s just a table). +Other window managers call this "Virtual Desktops". +

+

In i3, each workspace is assigned to a specific virtual screen. By default, +screen 1 has workspace 1, screen 2 has workspace 2 and so on… However, when you +create a new workspace (by simply switching to it), it’ll be assigned the +screen you are currently on.

+
+
+Output +
+
+

+Using XRandR, you can have an X11 screen spanning multiple real monitors. +Furthermore, you can set them up in cloning mode or with positions (monitor 1 +is left of monitor 2). +

+

i3 uses the RandR API to query which outputs are available and which screens +are connected to these outputs.

+
+
+
+
+
+
+

5. KEYBINDINGS

+
+

Here is a short overview of the default keybindings:

+
+
+j/k/l/; +
+
+

+Direction keys (left, down, up, right). They are on your homerow (see the mark +on your "j" key). Alternatively, you can use the cursor keys. +

+
+
+Mod1+<direction> +
+
+

+Focus window in <direction>. +

+
+
+Mod3+<direction> +
+
+

+Focus container in <direction>. +

+
+
+Mod1+Shift+<direction> +
+
+

+Move window to <direction>. +

+
+
+Mod3+Shift+<direction> +
+
+

+Move container to <direction>. +

+
+
+Mod1+Control+<direction> +
+
+

+Snap container to <direction>. +

+
+
+Mod1+<number> +
+
+

+Switch to workspace <number>. +

+
+
+Mod1+Shift+<number> +
+
+

+Move window to workspace <number>. +

+
+
+Mod1+f +
+
+

+Toggle fullscreen mode. +

+
+
+Mod1+h +
+
+

+Enable stacking layout for the current container. +

+
+
+Mod1+e +
+
+

+Enable default layout for the current container. +

+
+
+Mod1+Shift+Space +
+
+

+Toggle tiling/floating for the current window. +

+
+
+Mod1+t +
+
+

+Select the first tiling window if the current window is floating and vice-versa. +

+
+
+Mod1+Shift+q +
+
+

+Kills the current window. This is equivalent to "clicking on the close button", +meaning a polite request to the application to close this window. For example, +Firefox will save its session upon such a request. If the application does not +support that, the window will be killed and it depends on the application what +happens. +

+
+
+Mod1+Shift+r +
+
+

+Restarts i3 in place (without losing any windows, but at this time, the layout +and placement of windows is not retained). +

+
+
+Mod1+Shift+e +
+
+

+Exits i3. +

+
+
+
+
+
+

6. FILES

+
+
+

6.1. ~/.i3/config (or ~/.config/i3/config)

+

When starting, i3 looks for configuration files in the following order:

+
    +
  1. +

    +~/.config/i3/config (or $XDG_CONFIG_HOME/i3/config if set) +

    +
  2. +
  3. +

    +/etc/xdg/i3/config (or $XDG_CONFIG_DIRS/i3/config if set) +

    +
  4. +
  5. +

    +~/.i3/config +

    +
  6. +
  7. +

    +/etc/i3/config +

    +
  8. +
+

You can specify a custom path using the -c option.

+
+
Sample configuration
+
+
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
+
+# Start terminal (Mod1+Enter)
+bind Mod1+36 exec /usr/bin/urxvt
+
+# Start dmenu (Mod1+v)
+bind Mod1+55 exec /usr/bin/dmenu_run
+
+# Kill current client (Mod1+Shift+q)
+bind Mod1+Shift+24 kill
+
+# Beamer on/off
+bind Mod1+73 exec /home/michael/toggle_beamer.sh
+
+# Screen locking
+bind Mod1+68 exec /usr/bin/i3lock
+
+# Restart i3 inplace (Mod1+Shift+r)
+bind Mod1+Shift+27 restart
+
+# Exit i3 (Mod1+Shift+e)
+bind Mod1+Shift+26 exit
+
+# Brightness
+bind Mod1+97 exec sudo sh -c "echo up > /proc/acpi/ibm/brightness"
+bind Mod1+103 exec sudo sh -c "echo down > /proc/acpi/ibm/brightness"
+
+# Fullscreen (Mod1+f)
+bind Mod1+41 f
+
+# Stacking (Mod1+h)
+bind Mod1+43 s
+
+# Default (Mod1+e)
+bind Mod1+26 d
+
+# Toggle tiling/floating of the current window (Mod1+Shift+Space)
+bind Mod1+Shift+65 t
+
+# Go into the tiling layer / floating layer, depending on whether
+# the current window is tiling / floating (Mod1+t)
+bind Mod1+28 focus ft
+
+# Focus (Mod1+j/k/l/;)
+bind Mod1+44 h
+bind Mod1+45 j
+bind Mod1+46 k
+bind Mod1+47 l
+
+# Focus Container (Mod3+j/k/l/;)
+bind Mod3+44 wch
+bind Mod3+45 wcj
+bind Mod3+46 wck
+bind Mod3+47 wcl
+
+# Snap (Mod1+Control+j/k/l/;)
+bind Mod1+Control+44 sh
+bind Mod1+Control+45 sj
+bind Mod1+Control+46 sk
+bind Mod1+Control+47 sl
+
+# Move (Mod1+Shift+j/k/l/;)
+bind Mod1+Shift+44 mh
+bind Mod1+Shift+45 mj
+bind Mod1+Shift+46 mk
+bind Mod1+Shift+47 ml
+
+# Move Container (Mod3+Shift+j/k/l/;)
+bind Mod3+Shift+44 wcmh
+bind Mod3+Shift+45 wcmj
+bind Mod3+Shift+46 wcmk
+bind Mod3+Shift+47 wcml
+
+# Workspaces
+bind Mod1+10 1
+bind Mod1+11 2
+...
+
+# Move to Workspace
+bind Mod1+Shift+10 1
+bind Mod1+Shift+11 2
+...
+
+
+
+

6.2. ~/.xsession

+

This file is where you should configure your locales and start i3. It is run by +your login manager (xdm, slim, gdm, …) as soon as you login.

+
+
Sample xsession
+
+
# Disable DPMS turning off the screen
+xset dpms force on
+xset s off
+
+# Disable bell
+xset -b
+
+# Enable zapping (C-A-<Bksp> kills X)
+setxkbmap -option terminate:ctrl_alt_bksp
+
+# Enforce correct locales from the beginning
+unset LC_COLLATE
+export LC_CTYPE=de_DE.UTF-8
+export LC_TIME=de_DE.UTF-8
+export LC_NUMERIC=de_DE.UTF-8
+export LC_MONETARY=de_DE.UTF-8
+export LC_MESSAGES=C
+export LC_PAPER=de_DE.UTF-8
+export LC_NAME=de_DE.UTF-8
+export LC_ADDRESS=de_DE.UTF-8
+export LC_TELEPHONE=de_DE.UTF-8
+export LC_MEASUREMENT=de_DE.UTF-8
+export LC_IDENTIFICATION=de_DE.UTF-8
+
+# Use XToolkit in java applications
+export AWT_TOOLKIT=XToolkit
+
+# Set background color
+xsetroot -solid "#333333"
+
+# Enable core dumps in case something goes wrong
+ulimit -c unlimited
+
+# Start i3 and log to ~/.i3/logfile
+echo "Starting at $(date)" >> ~/.i3/logfile
+exec /usr/bin/i3 -V -d all >> ~/.i3/logfile
+
+
+
+
+
+

7. TODO

+
+

There is still lot of work to do. Please check our bugtracker for up-to-date +information about tasks which are still not finished.

+
+
+
+

8. SEE ALSO

+
+

You should have a copy of the userguide (featuring nice screenshots/graphics +which is why this is not integrated into this manpage), the debugging guide, +and the "how to hack" guide. If you are building from source, run: + make -C docs

+

You can also access these documents online at http://i3.zekjur.net/

+

i3-input(1), i3-msg(1), i3-wsbar(1)

+
+
+
+

9. AUTHOR

+
+

Michael Stapelberg and contributors

+
+
+
+

+ + + diff --git a/docs/4.8/modes.png b/docs/4.8/modes.png new file mode 100644 index 0000000000000000000000000000000000000000..656a6dbb91d284b849aedf214a7c494baf031d16 GIT binary patch literal 5826 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 literal 0 HcmV?d00001 diff --git a/docs/4.8/multi-monitor.html b/docs/4.8/multi-monitor.html new file mode 100644 index 0000000..26ddcaa --- /dev/null +++ b/docs/4.8/multi-monitor.html @@ -0,0 +1,113 @@ + + + + + + +i3: The multi-monitor situation + + + + + + + +
+

i3 - improved tiling WM

+ +
+
+ +
+
+

Please upgrade your nVidia driver to version 302.17 or newer and i3 will just +work. This document is kept around for historic reasons only.

+
+
+
+

1. The quick fix

+
+

If you are using the nVidia binary graphics driver (also known as blob) +before version 302.17, you need to use the --force-xinerama flag (in your +.xsession) when starting i3, like so:

+
+
Example:
+
+
exec i3 --force-xinerama -V >>~/.i3/i3log 2>&1
+
+

…or use force_xinerama yes in your configuration file.

+
+
+
+

2. The explanation

+
+

Starting with version 3.ε, i3 uses the RandR (Rotate and Resize) API instead +of Xinerama. The reason for this, is that RandR provides more information +about your outputs and connected screens than Xinerama does. To be specific, +the code which handled on-the-fly screen reconfiguration (meaning without +restarting the X server) was a very messy heuristic and most of the time did +not work correctly — that is just not possible with the little information +Xinerama offers (just a list of screen resolutions, no identifiers for the +screens or any additional information). Xinerama simply was not designed +for dynamic configuration.

+

So RandR came along, as a more powerful alternative (RandR 1.2 to be specific). +It offers all of Xinerama’s possibilities and lots more. Using the RandR API +made our code much more robust and clean. Also, you can now reliably assign +workspaces to output names instead of some rather unreliable screen identifier +(position inside the list of screens, which could change, and so on…).

+

As RandR has been around for about three years as of this writing, it seemed +like a very good idea to us, and it still is a very good one. What we did not +expect, however, was the nVidia binary driver. It still does not support RandR +(as of March 2010), even though nVidia has announced that it will support RandR +eventually. What does this mean for you, if you are stuck with the binary +driver for some reason (say the free drivers don’t work with your card)? First +of all, you are stuck with TwinView and cannot use xrandr. While this ruins +the user experience, the more grave problem is that the nVidia driver not only +does not support dynamic configuration using RandR, it also does not expose +correct multi-monitor information via the RandR API. So, in some setups, i3 +will not find any screens; in others, it will find one large screen which +actually contains both of your physical screens (but it will not know that +these are two screens).

+

For this very reason, we decided to implement the following workaround: As +long as the nVidia driver does not support RandR, an option called +--force-xinerama is available in i3 (alternatively, you can use the +force_xinerama configuration file directive). This option gets the list of +screens once when starting, and never updates it. As the nVidia driver cannot +do dynamic configuration anyways, this is not a big deal.

+

Also note that your output names are not descriptive (like HDMI1) when using +Xinerama, instead they are counted up, starting at 0: xinerama-0, xinerama-1, …

+
+
+
+

3. See also

+
+

For more information on how to use multi-monitor setups, see the i3 User’s +Guide.

+
+
+
+

+ + + diff --git a/docs/4.8/refcard.html b/docs/4.8/refcard.html new file mode 100644 index 0000000..7156da3 --- /dev/null +++ b/docs/4.8/refcard.html @@ -0,0 +1,198 @@ + + + + + i3 Reference Card + + + + +
+
+ +

i3 Reference Card

+ http://i3wm.org/docs/userguide.html +

+ Throughout this guide, the i3 logo will be used to refer to the configured modifier. + This is the  key (Mod1) by default, + with super/ (Mod4) being a popular alternative. +

+
+ + +
+

Basics

+ + + + + + + +
+  + open new terminal +
+ j + focus left + +
+ k + focus down + +
+ l + focus up + +
+ ; + focus right +
+  + toggle focus mode +
+
+ +
+

Moving windows

+ + + + + +
+  + j + move window left +
+  + k + move window down +
+  + l + move window up +
+  + ; + move window right +
+
+ +
+ +
+

Modifying windows

+ + + + + +
+ f + toggle fullscreen +
+ v + split a window vertically +
+ h + split a window horizontally +
+ r + resize mode +
+

Look at the “Resizing containers / windows” section of the user guide.

+
+ +
+

Changing the container layout

+ + + + +
+ e + default + +
+ s + stacking + +
+ w + tabbed +
+
+ +
+

Floating

+ + + +
+  +  + toggle floating +
+  + drag floating +
+
+ + +
+

Using workspaces

+ + + +
+ 0-9 + switch to another workspace +
+  + 0-9 + move a window to another workspace +
+
+ +
+ +
+

Opening applications / Closing windows

+ + + +
+ d + open application launcher (dmenu) +
+  + q + kill a window +
+
+ +
+

Restart / Exit

+ + + + +
+  + c + reload the configuration file +
+  + r + restart i3 inplace + +
+  + e + exit i3 + +
+ + + + +

+ Permission is granted to copy, distribute and/or modify this document provided + the copyright notice and this permission notice are preserved on all copies. +

+
+ diff --git a/docs/4.8/refcard.pdf b/docs/4.8/refcard.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3ff733d256e49febc38ce5087cdd7fdaf07d974e GIT binary patch literal 61582 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 C;;ixj literal 0 HcmV?d00001 diff --git a/docs/4.8/refcard_style.css b/docs/4.8/refcard_style.css new file mode 100644 index 0000000..361cac6 --- /dev/null +++ b/docs/4.8/refcard_style.css @@ -0,0 +1,45 @@ +/* Generated by Font Squirrel (http://www.fontsquirrel.com) on April 12, 2012 */ + + + +@font-face { + /* This declaration targets Internet Explorer */ + font-family: 'LinuxLibertine'; + src: url('linlibertine_r-webfont.eot'); +} + +@font-face { + /* This declaration targets everything else */ + font-family: 'LinuxLibertine'; + src: url(//:) format('no404'), url(data:font/woff;charset=utf-8;base64,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) format('woff'), url(data:font/truetype;charset=utf-8;base64,AAEAAAASAQAABAAgRkZUTWDiM+AAAAEsAAAAHEdERUYBKQCkAAABSAAAADZHUE9TILE53gAAAYAAAAaeR1NVQmKUYLMAAAggAAAAcE9TLzJXwuBRAAAIkAAAAGBjbWFwEq9YiwAACPAAAAGKY3Z0IAR0B3MAAAp8AAAAHmZwZ20PtC+nAAAKnAAAAmVnYXNwAAAAEAAADQQAAAAIZ2x5ZhdMIx0AAA0MAABi1GhlYWT+VycNAABv4AAAADZoaGVhDXQGXwAAcBgAAAAkaG10eLmZGlAAAHA8AAAB5mxvY2F4nmAEAAByJAAAAPZtYXhwAZkCBQAAcxwAAAAgbmFtZVeEaE0AAHM8AAADnnBvc3SX7Th7AAB23AAAAclwcmVw0XuLwAAAeKgAAABuAAAAAQAAAADJiW8xAAAAAMusYlQAAAAAy6xiWgABAAAADgAAACQALAAAAAIAAwABABEAAQASABIAAgATAHkAAQAEAAAAAgAAAAIAAQBMAE0AAQAAAAEAAAAKAMgA+gAGREZMVAAmY3lybAA4Z3JlawBaaGVicgBsbGF0bgB6bWF0aACwAAQAAAAA//8ABAAAAAEAAgADAAoAAVNSQiAAGAAA//8ABAAAAAEAAgADAAD//wACAAIAAwAEAAAAAP//AAQAAAABAAIAAwAEAAAAAP//AAIAAgADACgABkFaRSAAKENSVCAAKERFVSAAKE1PTCAAKFJPTSAAKFRSSyAAKAAA//8ABAAAAAEAAgADAAQAAAAA//8AAgACAAMABGNwc3AAGmtlcm4AIGxmYmQAJnJ0YmQALAAAAAEAAAAAAAEAAQAAAAEAAwAAAAEAAgAEAAoAEgAaACIAAQAAAAEAIAACAAAAAQAsAAEAAAABBV4AAQAAAAEFagABAAoABQAEAAoAAgABACQAPQAAAAIE2gAEAAADWAQYABQAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMkAyQDJADEAAAAAAJYAAAAAAAAAAAAAAH0ATAAAAKQAUgAAAAAAAAAAADEAMQAx//b/nP+6AAD/nP9//3//nP+cAAAAAP+HABQAAABMADH/sAAAADEAMQAx/7T/pv/PAAD/g/+m/4P/nP+cAAAAAP+cAAAAAAAxADH/sAAAADEAMQAx/7r/nP/PAAD/G/9M/5z/pv+wAAAAAP+cAAAAAAAxADH/zwAAAAAAMQAx/8//kQAAAAAAAAAA/9f/4QAAAAAAAP/PAAAAAAAxAEwAAAAA//b/uv/PAAoAFAAUAAD/xf/FAAoACgAA/+wAAAAAAAAAAAAAAAAAAAAA/7D/5//PABQAHwAUAAD/nP+H//AAAAAE/90AAAAAAAAAAAAAAAAABAAAAAD/5//PAAAAAAAUAAAAAAAA/+H/9gAAAAAAAAAAAAAAAAAAAAAAAAAA/8X/tP+mAAD/9v/2/9f/1//XAAoAAAAA//YAAAAAAAAAAAAAAAAAAAAA/5z/kf+RAAD/8v/y/8//rv/sAA4ACgAA//YAAAAAAAAAAAAAAAAAAAAAAAD/nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/3//av8b/7r/ugAA/2oAAAAA/+f/5wAA/+cAAP+0AAAAAP+HAAD/ugAA/4P/av9q/+wAAAAA/wYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/5z/nP+cAAAAAAAAAAD/tAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/3QAAAAD/zwAA/93/5wAAAAAAlv+0AAAAGQAZABkAAAAAAEwAMQAxAAAAAAAAAAD/h//PAAAAAAAAAAAAAAAAAAAAAAAxADEAAAAAAEwAMQAxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxADEAAAAAAAAAAAAxAAAAAAAAADH/h//PAAAAAAAAAAoAAAAAABQAGQBkADsAAAAAAAAAAAAAAAAAAAAAAAD/nP+c/88AAAAAAAAAAAAAAAAAAAAAAAAAAAABAAUAXQATAAAAAAAAAAAAEwAPAAAAEwAOAA0ADgANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4AAwAGAAwAAAAAAAYAAAASAAAAEQARAAAABQALAAAAEQAGABIABgAAAAAAAgAQAAQABAAFAAMAAAAPAAAAAAAAAA0AAAAAAAkAAAAAAAoAAQAIAAAAAAAAAAgAAAAAAAAACgAKAAAABwAAAAAAAAAHAAcACAAHAAAADwAAAAAADgABAAQAXgAQAAcAAAAAAAAAAAAHAAAADQAHAA8ACQAPAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAA8ADwAQAAAACAATAAQAEwATABMABAATABMADgATABMAAAATAAQAEwAEABMAAAABABIAAwADAAAAAgAAAAAAAAANAAAAAAAAAAsAEQAKAAsACgAAAAwAEQAAAA4AEQARAAwADAAKAAwACgAMAAwAAAAUAAUABQAGAAYADAAAAAAADQAPAAEALgAFAAoACwANAA4ADwAQABEAHwAgACEAIgAjACQAJwApACsALAAuAC8AMQAyADMANAA3ADgAOQA6ADsAPAA+AEIARQBIAEkASgBOAFIAUwBVAFkAWgBbAFwAXgBhAAIADAAEAAL/wf/HAAEAAgA5AFkAAgAQAAUAAv/J/8n/xf/FAAEAAgA5ADoAAAABAAAACgBsAG4ABkRGTFQAJmN5cmwAMGdyZWsAOmhlYnIARGxhdG4ATm1hdGgAWAAEAAAAAP//AAAABAAAAAD//wAAAAQAAAAA//8AAAAEAAAAAP//AAAABAAAAAD//wAAAAQAAAAA//8AAAAAAAAABAOtAZAABQAABTMFmQAAAR4FMwWZAAAD1wBmAhIBBQIABQMAAAAAAADgAAr/UgDl+wIAACAAAAAAUGZFZADAACDhiQZm/mYAAAWqAg9gAAG/AAAAAAEKAQAAAAAgAAIAAAADAAAAAwAAABwAAQAAAAAAhAADAAEAAAAcAAQAaAAAABYAEAADAAYAfgCgAK0gCiAUIC8gX+AA4Tjhif//AAAAIACgAK0gACAQIC8gX+AA4TjhiP///+P/wv+24GTgX+BF4BYgdh8/HvAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEGAAABAAAAAAAAAAECAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYgAAAAAAcnMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+Jf/8A3MFLQBDAFAArgCiAK4ATQBLAGIAmwCpAFYAALAALLAAE0uwKlBYsEp2WbAAIz8YsAYrWD1ZS7AqUFh9WSDUsAETLhgtsAEsINqwDCstsAIsS1JYRSNZIS2wAyxpGCCwQFBYIbBAWS2wBCywBitYISMheljdG81ZG0tSWFj9G+1ZGyMhsAUrWLBGdllY3RvNWVlZGC2wBSwNXFotsAYssSIBiFBYsCCIXFwbsABZLbAHLLEkAYhQWLBAiFxcG7AAWS2wCCwSESA5Ly2wCSwgfbAGK1jEG81ZILADJUkjILAEJkqwAFBYimWKYSCwAFBYOBshIVkbiophILAAUlg4GyEhWVkYLbAKLLAGK1ghEBsQIVktsAssINKwDCstsAwsIC+wBytcWCAgRyNGYWogWCBkYjgbISFZGyFZLbANLBIRICA5LyCKIEeKRmEjiiCKI0qwAFBYI7AAUliwQDgbIVkbI7AAUFiwQGU4GyFZWS2wDiywBitYPdYYISEbINaKS1JYIIojSSCwAFVYOBshIVkbISFZWS2wDywjINYgL7AHK1xYIyBYS1MbIbABWViKsAQmSSOKIyCKSYojYTgbISEhIVkbISEhISFZLbAQLCDasBIrLbARLCDSsBIrLbASLCAvsAcrXFggIEcjRmFqiiBHI0YjYWpgIFggZGI4GyEhWRshIVktsBMsIIogiocgsAMlSmQjigewIFBYPBvAWS2wFCyzAEABQEJCAUu4EABjAEu4EABjIIogilVYIIogilJYI2IgsAAjQhtiILABI0JZILBAUliyACAAQ2NCsgEgAUNjQrAgY7AZZRwhWRshIVktsBUssAFDYyOwAENjIy0AAAAAAQAB//8ADwAFAAAAAAQABZYAAwAGAAkADAAPAIYAsgoDACu0AQUAJwQrsAAvtAcFACgEK7AJL7QLBQAXBCsBsBAvsADWtAQHABIEK7AEELEFASu0DQcAHgQrsA0QsQ4BK7QDBwASBCuxEQErsQUEERKxBwo5ObANEbEJCzk5sA4SsQwIOTkAsQkHERKxBA45ObALEbEFDTk5sAoSsQYPOTkwMTERIRElCQETIQkFEQQA/GYBXf6jPgK4/qT+pAFcAVz+4QFdBZb6asMCCAII+5MCCQK+/foCBv2e/fgEEAACALr/7AGTBUQABwAeADwAsgcBACu0AwUAEwQrsgsDACsBsB8vsAjWsAAytA0GAB0EK7AEMrQFBgAdBCuxIAErALELAxESsBY5MDE2NDYyFhQGIgM0NjIWFRQOAQcOAgcGIicuAicuAbpAWj8/WkBCVkEOGwgMDAQCBDIEAggOCQYpK1pAQFo/BMJMSkpMO3GeQWCvXggpGwyDrkY/+gAAAgCBA2gCMwUpAAgAEQBvALAHL7AQM7QDBQAKBCuwDDIBsBIvsAfWtAYHABIEK7IGBwors0AGBQkrsgcGCiuzQAcACSuwBhCxEAErtA8HABIEK7IQDwors0AQCQkrsRMBK7EGBxESsAM5sQ8QERKwDDkAsQMHERKxCQ85OTAxEzQ2MzIVAwcCJTQ2MzIHAwcCgT0rSEM4NQECPitIAUM4NQTBJUFE/o4JAUYVJUFE/o4JAUYAAgA1AB0DgQS8ABsAHwFRALAAL7MUFxgbJBcztAEFACYEK7MCERwdJBcysgABCiuzQAAVCSuyFhkaMjIysAQvswMQHh8kFzO0BQUAJgQrswYJCg0kFzKyBQQKK7NABQcJK7IICwwyMjIBsCAvsBrWtBkHABIEK7AZELEHASu0CAcAEgQrsAgQsRYBK7QVBwASBCuwFRCxCwErtAwHABIEK7EhASuwNhq6Pzn2DAAVKwq6Pz32JwAVKwqwGhCzAhoHEyuzAxoHEyuzBhoHEyuwGRCzCRkIEyuwFhCzChYLEyuwFRCzDRUMEyuzEBUMEyuzERUMEyuzFBUMEyuwFhCzFxYLEyuwGRCzGBkIEyuwGhCzGxoHEyuwGRCzHBkIEyuwFhCzHRYLEyuzHhYLEyuwGRCzHxkIEysDQBACAwYJCg0QERQXGBscHR4fLi4uLi4uLi4uLi4uLi4uLrBAGgAwMRM3MzcjNzMTMwMzEzMDMwcjBzMHIwMjEyMDIxM3MzcjNRHAJb4QvjxOPuo5TjzFEMMnww/APk035TxMOl7pJecBiW3rbQFu/pIBbv6Sbett/pQBbP6UAWxt6wAAAwA7/zcDVgWOADQAOgBBAZkAsiYBACuxKi0zM7E7BOmwBDKwOC+wGzOxDATpAbBCL7AJ1rQ1BwAqBCuzAjUJCCu0AAcAEgQrsAAvtAIHABIEK7A1ELE+ASuxIQfpsxghPggrtBYHABIEK7FDASuwNhq6P+f8cwAVKwoOsCkQsA3AsScK+bAPwAWwKRCzBCkNEyu6P+j8gwAVKwuzBSkNEysFswwpDRMruj/n/HkAFSsLsCcQsxAnDxMrBbMbJw8TK7o/5/x5ABUrC7McJw8TKwWzJicPEyuwKRCzKikNEyu6P+j8gwAVKwuzNykNEysFszgpDRMrsCcQszsnDxMruj/n/HkAFSsLs0EnDxMrsgUpDSCKIIojBg4REjmwNzmyQScPERI5sBw5sBA5AEAJBQ0PEBwnKTdBLi4uLi4uLi4uAUAQBAUMDQ8QGxwmJykqNzg7QS4uLi4uLi4uLi4uLi4uLi6wQBoBsQkAERKwMzmxNQIRErAwObA+EbEHHzk5sBgSsBM5sBYRsBQ5ALE7JhESsDM5sDgRtQABCBYYISQXObAMErAUOTAxEzYXFhcTJickJzQ2PwE2MwceAhcWFwYjLgEnAx4BFwQVFAYHBg8BBiM3LgEvAS4DIyYTFBcTDgETPgE1NCYnOx8fNdQdEw/+7AHKkQkbMQk3SUMmGwgOMh5bVxoQQg0BBmBSXH8KEjkKGTETJhMjJCkWH6+2GFN723B5bmABORAK6x4CCggGd9ePsQWjCq4DExcFhXEMYXkT/jYGGgVx21qmMzkErQq4AgYECAQIBgR9AzmGWgGxAYD8EgF5cm1zJwAEAHX/5wTJBJoAGgAlADEAPADEALIvAQArsA0zsTQE6bA6L7EpBOmwGC+xHgTpsBEvsQgF6bAjL7EDBOkBsD0vsADWtBsHABIEK7AbELEhASu0FQcAEgQrsBUQsSYBK7QyBwASBCuwMhCxNwErtCwHABIEK7E+ASuxGwARErAOObAhEbINGAM5OTmwFRKwBjmwJhGxCBE5ObE3MhEStAsMKS8PJBc5ALE0LxESsA45sDoRsSwmOTmxER4RErIVGyE5OTmwCBGxDxM5ObEDIxESsQYMOTkwMRM0NjMyFhcWMzI2NxcBJwEGIyInFhUUBiMiJjcUFjMyNjU0IyIGATQ2MzIWFRQGIyImNxQzMjY1NCYjIgZ1om4pUBBubVK3K0H8uUYC32J5WkoGkXVYZG44Ik5pWEhxAiOicUpmkHRYZ3FaTmY3H0hwA0yHvh4VMzU6IftuHwQAJysXHHfziTlIO8VkfcP9On/EVGZ58oo5g8diRjfDAAAAAwBY/+wFWAUtADsARwBSAKEAsjkBACuwMjOxPwTpsjkBACu0KwUAJgQrsggDACuxUATptBsYOQgNK7AiM7EbBOkBsFMvsADWsTwG6bA8ELEFASuxSAfpsEgQsU0BK7QLBwAqBCuwJzKxVAErsUgFERKzAzk/RSQXObBNEbEIDjk5sAsSshE3Qjk5OQCxGCsREkAKAw4AES0vNzxCRSQXObAbEbBKObBQErILSE05OTkwMRM0NjcmJzQ2MzIWFRQGBxcWFzY3PgEuAScmNDcWMzI3FhQHDgEHBgcXHgEzMjcyFw4BIyIuAS8BBiMiJjcUFjMyNjcmAicOAQEUFz4BNTQmIyIGWLLJaAGtj22ZrIUIP7tWSB0UFysvCAhScVpSCgpeRkZkUkotVhpiOhcUIXY8KTlcLTyc4bLXqIVrZoVUVMkSlmoBAk5gb0Y9MWkBP3vXcbRtZKZ9YFK4ThFt+3+HNj0hCgIKMQgEBAgxCgY4fbJ2Zz1EbxVkZApBPkzVo7CNg2BzbwEgI1KsAnFOkz+SOUZTZgAAAQBtA2gBHQUnAAgAPgCwBy+0AwUACgQrAbAJL7AH1rQGBwASBCuyBgcKK7NABgUJK7IHBgors0AHAAkrsQoBK7EGBxESsAM5ADAxEzQ2MzIVAwcCbT0rSEQ3NQTBJUFE/o4JAUYAAAABAFr+XgI3BagAEAATAAGwES+wANaxBwbpsRIBKwAwMRMQEjcWFwAREAEGByYCLgJa8sAfDP7NATMKIXmuVDEGAgQBEgHspgIj/qb92/3f/p4dBmgA/8rgZAAAAAEAK/5gAggFqgAQABMAAbARL7AC1rEMBumxEgErADAxEwAREAE2Nx4EFRACByYrATP+zQohea5UMQbxwR/+hQFaAiUCIQFiHQZo/svfZTH+7v4UpgIAAAABAFwDcwKYBZYAMwBRALApL7AhM7AyL7AYM7QDBQAeBCuwEzIBsDQvsAnWtA4HAB4EK7E1ASuxDgkREkAJBQYMERokJy8wJBc5ALEyKRESsCU5sAMRsgYQETk5OTAxEzQ2MzIWFy4BNTQ2MzIHFAYHPgEyFhUUIyIHHgIVFAYjIi4BJw4CIyImNTQ+ATcmIyJcISMneCUEKyMbRAElAid3SiGOPzEZXTQlFyMvLxAOMi0jGyA1XhkjM6YEtBklWg8peRshL0gdjR0QWykVTAgbPzMlGyBBeRsbfzsjFic1Ox0IAAABAHsAVAPsA7IAGwBgALAaL7ARM7QDBQAoBCuwCzKyGgMKK7NAGhYJK7IDGgors0ADCAkrAbAcL7AY1rAEMrQTBwASBCuwCjKyExgKK7NAEw4JK7IYEwors0AYAAkrsR0BK7ETGBESsAg5ADAxEzQ2MyERNDYzMgcRITIVFAYjIREUBiMiNREhInshEgFSMxEjAQFpHSUT/rIvFiH+mh8B8BcuAUYSJRz+nyMQM/64EiEfAVwAAAAAAQBY/vABXADDABEAKwCwEC+0AAQATQQrsAUvtAoFABYEKwGwEi+wB9axEwErALEFABESsA05MDEXPgE1NCcmJzQ2MzIWFRQGByZYSmpJWgE+Lz1Kj2MS3xJtJTcIDkwrOm9cZpASEgABAFIByQJiAkQACwAnALAKL7QDBQAiBCu0AwUAIgQrAbAML7AA1rQGBgAIBCuxDQErADAxEzQ2MyEyBxQGIyEiUiESAcEdASUS/kYfAfAdNykUPgABAHX/7AFOAMUABwA1ALIHAQArtAMFABMEK7IHAQArtAMFABMEKwGwCC+wAda0BQYAHQQrtAUGAB0EK7EJASsAMDE2NDYyFhQGInU/WkBAWitaQEBaPwAAAQAf/4cCWAUrAAMAFgABsAQvsADWtAIGAAgEK7EFASsAMDEXATMBHwHlVP4beQWk+lwAAAIAUP/sA2AE4QAQACIAQgCyDAEAK7ETBOmwHi+xAwTpAbAjL7AA1rERBumwERCxGgErsQcG6bEkASuxGhERErEMAzk5ALEeExESsQAHOTkwMRMQEjMyFxYRFAIOASMiJyYCNxAXMj4CNzYRECcmIyIOAlDroJZki058hD96VlRfstMSKTgzECN3JzUnRUQpAloBIwFkhbj+yar++Y1DVlMBII/98AEMI1A8fwEmAX9lIzJ2/AAAAAABALb//AMKBN0AHQA/ALIRAQArsRQE6bAKMgGwHi+wF9axBwfpsgcXCiuzQAcMCSuyFwcKK7NAFxMJK7EfASuxBxcRErECDzk5ADAxEyQ3MhUGFREUFhcWFAcmIyIHJjQ3PgE1ETQHIgcmtgEfcwwGP3MKCs0tVMkICHdQKTd7GQQQhUgKL+P9OXs7BQoxCAQECDEKBEB3Apx3ATMQAAAAAQBq//wDTAThAC8AggCwLy+0JAUAHwQrsAkvsRoE6QGwMC+wF9axDAfpsCQysgwXCiuzQAwRCSuyFwwKK7NAFwAJK7AMELEGASuxHQbpsCoysB0QtCgHABIEK7AoL7ExASuxDBcRErAvObAGEbQDBBohIiQXObEdKBESsCw5ALEJJBEStAMUHSkqJBc5MDEXNDY/ATYnNCYjIgYVFBYVFhUUBiMiJjU0NjMyFhUUDgEPAQYVITI2NzYXBgcmIyFqXY2YqAFsRmZkEAhDHSEx0aCLzz5HSM+YAW03PhonFQQtXkL+mQRitpCVqr+Fc04vCiUCHQ4fMy4hZr2dmkqDVEXHmGBWbwgTj7QEAAEAWv/sA04E4QA9AHoAsjsBACuxDgTpsg47CiuzAA4DCSuwFy+xGATpsB8vsS0E6QGwPi+wKNawADKxIwfpsCMQsRMBK7E4BumwGyDWEbExB+mxPwErsSMoERKwAzmwGxG3CBUOGC00NTskFzkAsRcOERKxEzg5ObEfGBESsyUoMTUkFzkwMTc0NjMyFx4HMzI+AjUQISIHJz4BNTQuASMiDgEVFAciJjU0PgIzMhcWFRQGBxceARUUBCMiJlo3HzEnAg8GDgwXGCETIUtYOv7zPyMKjrQySi8lTVBQISUnUqJokU9AX3kCc67+8b5mwXUZLjUCFgkSCA8GBB0/jGABCARCFLVXP1UlFUw7agEuGB9QXD1QQWFWgTkEEpyVw+lPAAACADn//AOPBOEAKQAtAF0Ash8BACuxIgTpsBgysCgvsA8ztCoFACsEK7AJMgGwLi+wJtawKzKxEQfpsAYyshEmCiuzQBEaCSuyJhEKK7NAJiEJK7EvASuxESYRErEFHTk5ALEqKBESsAA5MDETABM2FzMXBhURMzIHFAYrARUUHgIXFjMWFAcmIyIHJjQ3Njc2PQEhIjchEQY5AT3uEg9CBASqHwEnFI0KKxgtDgcKCoNcb4MICG4bHf5eP1oBh5wBtgHyASMXAQQStP2qIRIuvCEnEgQFAgoxCAQECDEKCBYXMLxhAk3VAAAAAAEAb//pA0QE4wArAK4AsikBACuxDQTpsg0pCiuzAA0DCSuwEy+0IwUAKAQrshMjCiuzQBMVCSuwHi+0GAUAHgQrsBYysBgQtCAFACMEK7IYIAors0AYGgkrAbAsL7AQ1rEmBumxLQErsDYauj+M+GIAFSsKsBUusCAuDrAVELEhC/kFsCAQsRYL+QMAsCEuAbMVFiAhLi4uLrBAGrEmEBESshobHDk5OQCxEw0RErAmObEgHhESsBw5MDE3NDYzMhceBjMyNjU0JiMiBxMWMzI3FwcGIyInAzYzMhYVFAYjIiZvLx43MgIUCRQQGRsQXoODaoGDRXdme9UPIX9YRqopVHWmyfS/XsSDHy1CBBoNFAoPBMOPoJcxAk4KFgiLDBL+qiHdnMP8XwAAAAIAWv/pA14E4wAVACQAWgCyEQEAK7EZBOmwIS+xCwTpsAYvtAQEAE0EKwGwJS+wANaxFgbpsBYQsRwBK7EOBumxJgErsRwWERKxEQk5ObAOEbEEBjk5ALEhGRESsQAOOTmwCxGwCTkwMRMQNzYlFhUGAgc2NzIWFRQCIyIuAjcUFjMyNjU0LgIjIgcGWr+qARYZvd0wYWDDssS3RHp/TKqFcVBqFjFnSGFIEQHbARLex1EQJUf++KAsAbuTnv7pKWXRjfKyqKAtXGJAL1IAAAABAGj/5QNkBOkAFwA7ALASL7QHBQAfBCuyBxIKK7NABwQJKwGwGC+wANa0FgcAEgQrsRkBK7EWABESsAI5ALEHEhESsAs5MDETEjc0Mx4BMyEyNxcCAwcnEgEhIg4BBwZoJwIJCDUpAaZSTCDd7YwQmAE1/pEnN0AUHwOcAQBHBgIaFhj94/0+Bw8BUgMCE1JNBAAAAwBe/+wDWgThABgAJAAwAGQAshYBACuxHATpsC4vsQoE6QGwMS+wANa0GQcAHgQrsAcg1hGxJQfpsBkQsR8BK7ETB+mwKyDWEbQNBwAqBCuxMgErsSslERK1CgQWHCIQJBc5ALEuHBEStQANEwQiKSQXOTAxEzQ3NjcnJic0NjMyFhUUBgcXFhUUBiMiJjcUFjMyNjU0LwEOARMUFh8BNjU0JiMiBl53R140tAG/mZOpnl6RoNW6pseJklZemLNgc1g8N1hApFleWGQBK41pPjIhcaR5oY9xWJUvWGDBg92lmn17aYekbDpMsgJ/OWU5J3l6TmljAAACAGb/5wNqBOEAFQAkAFoAsgwBACu0DgQAawQrsBMvsRsE6bAiL7EDBOkBsCUvsADWsRYG6bAWELEfASuxCAbpsSYBK7EWABESsQwOOTmwHxGyAxMROTk5ALEbExESsBE5sCIRsAg5MDETNBIzMh4CFRAHBgUmNTYSNwYHIiY3FB4CMzI3NjU0JiMiBmbFtkR7f0u+qv7qGb3dMGFhw7KqFzFmSGJIEYZwUGsDLZ4BFilk0ZP+7t7HUg4oRwEIoCwBu7gtXGM/L1JO8rKoAAAAAgCPACcBaANEAAcADwA3ALAHL7QDBQATBCuwDy+0CwUAEwQrAbAQL7AB1rAIMrQFBgAdBCuwDDK0BQYAHQQrsREBKwAwMTY0NjIWFAYiAjQ2MhYUBiKPQFo/P1pAQFo/P1pmWz8/Wz8Cg1pAQFpAAAIAf/7wAYMDRAARABkAOACwEC+0AAQATQQrsAUvtAoFABYEK7AZL7QVBQATBCsBsBovsBPWsAcysRsBKwCxBQARErANOTAxFz4BNTQnJjU0NjMyFhUUBgcmEjQ2MhYUBiJ/SmpKWj4vPUqPYxIQQFo/P1rfEm0lNwgOTCs6b1xmkBISA6haQEBaQAAAAQCFAJYDuAM7AAsAFgCwCy+0AwUABwQrAbAML7ENASsAMDETJjcBFhQHDQEWFAeFHR0DHxQU/XcCiRQUAbgtNgEgCkUX7O0XRQoAAAIAewElA+4C3wALABcAIACwCi+0AwUAKAQrsBYvtA8FACgEKwGwGC+xGQErADAxEzQ2MyEyFRQGIyEiETQ2MyEyFRQGIyEieyESAyMdJhL85B8hEgMjHSYS/OQfAUYXLiMQMwF1Fy4jEDMAAAEArgCRA+EDNwALABYAsAsvtAcFAAcEKwGwDC+xDQErADAxNiY3LQEuATcBFgcBrwEVAon9dxQBFQMeHR384ptGF+vuF0UK/t0tNf7fAAAAAgBe/+wDHQVGACcALwCfALIvAQArtCsFABMEK7AeL7EEBOmyHgQKK7MAHhMJKwGwMC+wANa0IAcAKgQrsiAACiuzACAjCSuwIBCxFQErtBEHABIEK7ARELMSES0OK7QpBgAdBCuwKS+0LQYAHQQrsBEQsRsBK7EHBumxMQErsRUpERKyHiovOTk5sS0RERKzDQQrLiQXObAbEbIYDB05OTkAsR4rERKxACU5OTAxEzQ3NjMyFhUUDgIHBgcGHQEUByI3NTQ3PgE1NCYiBhUUFhQGIyImEjQ2MhYUBiJeaVyinLwlUjU0VhQdIyEBjz00baxxGTEfITPJP1s/P1sEPWRVUKqMOWJULSU/KDdeWhQBFV7HgzlnR2aUQC8lIEInKfwdWkBAWj8AAAAAAgB5/rwGtgTjAEEAUACwALA/L7E5BOmwCy+wEzOxJgTpsUQF6bBML7EbBOmwLi+xAwTpAbBRL7AA1rEzB+mwMxCxGAErsUIH6bBCELENASu0JAcAKgQrsCQQsR4LK7EhB+mwIRCxKQErsQYH6bFSASuxDUIRErYDExsuOT9MJBc5sCQRsg8QSTk5ObEpIRESsTs8OTkAsQs5ERKxOzw5ObFMRBESQAkGDwAYHiQpMxAkFzmwGxGyHyAhOTk5MDETEAAhIAARFA4CIyI3NDcnDgEjIi4CNTQAMzIWFz8BFwMGFRQzMjY1NC4CIyIOAQIVFB4DMzI3Fw4BIyAAJRQXMjY3NjU0JiMiBgcGeQHtAVsBSAGtPYHwoEoBHgQ/ljtIajEXATGsM10OCm0eehsXqKl2u9FkeeO/dCdklfSY8qkbbdCg/pj+PwJMnzWILz1LOiNsKYsByQFKAdD+f/7gXq+dYVQhYAJqaThUTSXTATwxJzEaCv3wdxIZw/GY9pNQVKL+7q5ixcuaYoclUlQBv9G8AZpxk1o5SCcriwAAAAACAAT//AWFBUQANgBCADkAsjYBACuwETOxAgTpsg4YLzIyMrIIAwArtCQ7NggNK7EkBekBsEMvsUQBKwCxCDsRErEGPTk5MDE2NDc+ATcBMjcBHgMXFhQHJiMiByY0NzI+BiYnAyEiBgcDDgEeAxcWFAcmIyIHAR4CMyEDIwMGFRQECk5aJQHRLUQBpgwjPR8tCgqYUnWXCAgMJxUhEBYJBgIEd/5QJRsIcQIIHxIyHBkICJhuH5gB2wMOEw4BasAN0QIEMQoGNFgESin7bCUtFgQFCjEIBAQIMQoDAgQECAwRFA4BWw8U/tcUHxUMCgIDCjEIBAQCUAMEAQIt/e4EBAcAAAMAHf/8BGAFLQAkAC4AOQCOALIkAQArsQIE6bAnMrIRAwArsTUE6bAJMrQvLiQRDSuxLwTpAbA6L7AF1rElBumwLzKyBSUKK7NABQEJK7AKMrAlELEqASuxGgbpsxMaKggrsTIH6bAyL7ETB+mxOwErsSUFERKxDiI5ObAyEbMRFx8WJBc5ALEuAhESsBo5sC8RsRYXOTmwNRKwEzkwMTY0Nz4BNRE0JicmNDcWMzI2MyARFAYHFR4BFRQOAiMiJiMiByUUFzI2NTQmKwE1MyA1NCYjIg4BFR0Kcz8/cwoKzTstsCMBuHBSj6wxbtOSZqQhQsgBYKrXmsfHjZgBI6BpWEsPBDEKBDx7AzV7OwQIMgoEBP7FUJQpBCm0i0h/c0MEBM2JAZKBlsBG642BEh8nAAAAAQBM/+wE4wVEACIAXwCyHwEAK7EYBemyBAMAK7EPBemyDwQKK7NADwsJKwGwIy+wANaxFAbpsBQQsQ0BK7QJBwASBCuxJAErsQ0UERKyBBgfOTk5sAkRsQYbOTkAsQ8YERKzBgAbHSQXOTAxExA3NjMyBBcWFwYjIicCISIHDgEVFBIWMzI2NzIXAiEiJAJM2b76kwEZFSMKGhYLCWj+qLOUOkBi2peP4GwfENP+y9P+z4sChQFKx65bAtdmDQMBWLZHzoGe/u69aXcf/uzGAScAAAACAB3//AVEBS0AHgAuAGEAshkBACuxIgTpsAIyshEDACuxLATpsAkyAbAvL7AF1rEfBumyBR8KK7NABQEJK7AKMrAfELEnASu0FAYANAQrsTABK7EfBRESsQ4cOTmwJxGxERk5OQCxLCIRErAUOTAxNjQ3PgE1ETQmJyY0NxYzMjYzIAARFAIOASMiJiMiByUUFjMyPgI1NC4CIyIVHQpzPz9zCgrNOyHpSAEnAZx9z9t3e+UVQsgBYFSLdbScVD2E7Z6sBDEKBDx7AzV7OwQIMgoEBP5p/uG0/vuHOwQErjcxL27Rln3lyXZkAAEADP/8BCkFMQBEAMQAsiYCACuyRAEAK7ECBOmxNgXpsgwDACuxCQTpsRwF6bIcDAors0AcFgkrtCAzRCYNK7EgBemyMyAKK7NAMy0JKwGwRS+wBdaxNAbpsB8ysgU0CiuzQAUBCSuwNBCxLgErsCQytCsHABIEK7ArELEYASu0FAcAEgQrsBQQsTkBK7Q9BwASBCuxRgErsTQFERKwQjmxFBgRErAQObA5EbA/OQCxMzYRErIrOz05OTmwIBGwKTmwJhKwJzmxDAkRErALOTAxNjQ3PgE1ETQmJyY0NwUhMjcyFRYXBiMiJy4BKwEiBhURMzI2NzYyFwYVFBcGIicuAisBERQzITITNjMyFwYHJiMhBgcMCHNAQHMICAEJAgo1LwgQHhgZCQonVmrYIya6fTkECDIKBAQKMQkEEFJUukkBF8NJCwwZGBkzpGL+SKZlBDEKBDx7AzV7OwQIMgoECAZG4wwCe2QzJ/5mMVsKCns2JY8KCjcwJf4SWAEMAgyitAQCAgAAAQAM//wDvAUxADwAuQCyJAIAK7I8AQArsQIE6bA1MrIMAwArsQkE6bEbBem0HjE8JA0rsR4F6bIxHgors0AxKwkrAbA9L7AF1rEyBumwHTKyMgUKK7NAMjcJK7IFMgors0AFAQkrsDIQsSwBK7AiMrQpBwASBCuwKRCxFgErtBQHABIEK7E+ASuxMgURErA6ObAsEbA4ObEUFhESsBA5ALExAhESsCk5sB4RsCc5sCQSsCU5sBsRsRQWOTmxDAkRErALOTAxNjQ3PgE1ETQmJyY0NwUhMjcyFxYXBiMuAisBIhcRMzI2NzYyFwYVFBcGIicuAisBERQWFxYUByYjIgcMCHNAQHMICAEJAgs2KgcBFhYbJBk5f2iGSgG+fTkFCDEKBAQKMQgEEVJUvj9zCgrNO0LJBDEKBDx7AzV7OwQIMgoECAZ2swpQVjlG/lIxWwoKezYljwoKNzAl/mR7OwUKMQgEBAAAAQBC/+wFaAVEAC8AmgCyLQEAK7EVBOmyBAMAK7ENBem0Gx4tBA0rsRsF6bAlMgGwMC+wANaxEAbpsBAQsRcBK7EpBumyKRcKK7NAKSQJK7IXKQors0AXHQkrswkpFwgrtAoHABIEK7AKL7QJBwASBCuxMQErsRcQERKzBA0eLSQXObAKEbAgObAJErAHOQCxGxURErArObAeEbAAObANErEHCjk5MDETNBIkMzIEMxYXBy4BIyIAERQeAjMyNxE0JicmNDcWMzI3FhQHDgEdARQXBiEgAELQAT60jQEFLRIbRi/Jy9P+6EqH2YPBaEhgCAjBPTt7CgoxLSHf/rj+0f53AnXZAU6oXcF6DJ66/rD+9mjWuHNjATE5IQgKNQsEBAo2CgQrM+YfGr4BegAAAAEAHf/8Ba4FLQBHAJ4AskcBACuwMDOxAgTpsi03QDIyMrIMAwArsB8zsQkE6bITHCYyMjK0FzxHDA0rsRcF6QGwSC+wBdaxPQbpsBYysgU9CiuzQAUBCSuwCjKwPRCxOgErsBgysSoG6bIqOgors0AqLwkrsCQysjoqCiuzQDo2CSuwHTKxSQErsT0FERKxDkU5ObA6EbUQEh80QkMkFzmwKhKxITI5OQAwMTY0Nz4BNRE0JicmNDcWMzI3HgEHDgEVESERNCYnJjQ3FjMyNxYUBw4BFREUFhcWFAcmIyIHJjQ3PgE1ESERFBYXHgEHJiMiBx0Kcz8/cwoKzTtCyAgBCXM/Ar1AcwgIzTxCyAoKcz8/cwoKzTtCyQgIc0D9Q0ByCAEJzTtCyAQxCgQ8ewM1ezsECDIKBAQKMQkEO3v+uAFIezsECDIKBAQKMQkEO3v8y3s7BQoxCAQECDEKBDx7AZf+aXs7BQoxCAQEAAAAAQAd//wCQgUtACMAUQCyIwEAK7ECBOmwGzKyDAMAK7EJBOmwFDIBsCQvsAXWsRgG6bIYBQors0AYHQkrsBIysgUYCiuzQAUBCSuwCjKxJQErsRgFERKxDiE5OQAwMTY0Nz4BNRE0JicmNDcWMzI3FhUUBw4BFREUFhcWFRQHJiMiBx0Kcz8/cwoKzTtCyAkJcz9AcgkJzTtCyAQxCgQ8ewM1ezsECDIKBAQLGhYJBDt7/Mt7OwULGhYIBAQAAAAAAf91/qACdwUtACkAWgCyFQMAK7ESBOmwHDKwJy+0CgUALQQrsgonCiuzAAoDCSsBsCovsA7WsSAG6bIgDgors0AgGwkrsg4gCiuzQA4UCSuxKwErsSAOERKwFzkAsRIKERKwIDkwMQc0NjMyHgIXFjMyPgE1ETQmJyY0NxYzMjcWFAcOARURFA4CBwYjIiaLQRkXIA4TBBstKUVARoEICM1QLckKCmI8JUo1LWaKLWzyHzkQDiMEJTXLqgOJezsECDIKBAQKMQkEPXn8pGigczknWD0AAAAAAQAd//wFDgUtAFIAZACyUgEAK7A8M7ECBOmxOUsyMrIMAwArsCIzsQkE6bITHykyMjIBsFMvsAXWsUgG6bAWMrIFSAors0AFAQkrsAoysVQBK7FIBRESsQ5QOTkAsQJSERKwQjmwCRGyF0NHOTk5MDE2NDc+ATURNCYnJjQ3FjMyNx4BBw4BFRE2NwE+AS4BJy4BNxYzMjcWFAcGBwYHAQYVFBcBHgMfARYUByYjIgciJyYnASYnERQWFx4BByYjIgcdCnM/P3MKCs07QsgIAQlzP19DAVIfECMhJAoBC8EmAsEKCng2Kyr+00caAcEUKS8XGRgKCsEOHVEIAwhB/r47b0ByCAEJzTtCyAQxCgQ8ewM1ezsECDIKBAQKMQkEO3v+mAhIAWghKxQGBAgyCgQECjEJDx8ZK/7LSRsVH/3sGSEQCAIDCjEIBAQMOVUBlUoE/oF7OwUKMQgEBAAAAAEAGf/8BAoFLQApAHwAsikBACuxAgTpsRoF6bIaKQors0AaIAkrsgwDACuxCQTpsBMyAbAqL7AF1rEXBumyFwUKK7NAFxIJK7IFFwors0AFAQkrsAoysBcQsR4BK7QiBwASBCuxKwErsRcFERKxDic5ObAeEbAQObAiErAkOQCxCRoRErAiOTAxNjQ3PgE1ETQmJyY0NxYzMjcWFAcOARURFBY7ATI2NzYzMhcGByYjIQYHGQpzPz9zCgrNO0LICAhzPzMtlpaVIwoJGRcUIb03/kymZAQxCgQ8ewM1ezsECDIKBAQKMQkEO3v8hy83jX8CDLKkBAICAAAAAAEAIf/0Bo8FLQBSAL4AslIBACuyKz5AMzMzsQIE6bIoMksyMjKyDwMAK7AWM7EMBOmwGjIBsFMvsVQBK7A2Gro/s/nQABUrCg6wBRCwBsCxRQX5sETAusAp+3sAFSsKDrA6ELA5wLEgDPmwI8CzISAjEyuzIiAjEyuyISAjIIogiiMGDhESObAiOQBACgUGICE5OkRFIiMuLi4uLi4uLi4uAUAKBQYgITk6REUiIy4uLi4uLi4uLi6wQBoBALEMAhESshM7Qzk5OTAxNjQ3PgE3EzY1NCcmJyY0NwUBFjMyNwElHgEHBgcGFRQXEx4FFxYUByYjIgcmNDc+BCYnAyMBBiMwIyInASMDBhUUFxYXFhQHJiMiByEIVDwJUgMNFG0KCgEpAaQMBAYNAbIBDAoBC2UXEgI9AwUPDycpJwoKh1gbwAoKKCIoCwoCAzQF/jQMEAEXCP5YBE4CEhhgCAh7RjV7BDEKB1BiA0wmGzcQFwYIMgoE+/AbHQQOBAoxCQYbFTgRFPyiMTAxERAEAgoxCAQECDEKAgMOEC0wLwNY+8QWFgQn/MsYFD4gKgkKMQgEBAABABT/7AWRBS0AQQCVALIsAQArskABACuxAgTpsDkysgwDACuwHzOxCQTpsRwmMjIBsEIvsAXWtDQHABIEK7IFNAors0AFAAkrs0AFCwkrsDQQsRYBK7QqBwASBCuyKhYKK7NAKiUJK7FDASuxNAURErA+ObAWEbUNHh8uOzwkFzmwKhKxISw5OQCxAkARErEqLjk5sAkRtBAUKS8xJBc5MDE3NDc+ATURLgEnJjQ3BQEeBDMyNxE0LgInLgE3FjMyNxYUBw4BFREUIyInASYjBhURFB4CFx4BByYjIgcmFAtzPwpaPgoKARUCvg4hERIMBA4BDTE1PwoBC80WHcgICHM/Ly0l/TU1EBENMTU/CAEJzRYdyAsfFwkMQoMDVi1SBAgyCgT8dxIuFBUIPgKsSEsrDAYIMgoEBAoxCQxBg/wSPzEDh0QBZP2NSEsrDAcKMQgEBAkAAAIATP/sBVQFRAAPAB0ASgCyDQEAK7ETBOmyBQMAK7EZBOkBsB4vsADWtBAGAD8EK7AQELEWASu0CAYANAQrsR8BK7EWEBESsQUNOTkAsRkTERKxAAg5OTAxExA3PgEzIAAREAcGBCMgABMQADMyEhEQACMiDgJMjFb9lgEdAXZ/Vv71p/7y/o3EAR/HtOX+6tNKi3dKAnsBD8B2hP6T/sv/ALR7hwFoAUr+5f6uAT4BDAEtAVZIi/QAAAAAAgAZ//wEDgU3ACgAMwCOALIoAQArsQIE6bAhMrIRAwArsAwzsTEE6bAJMrQbKygRDSuxGwTpAbA0L7AF1rEeBumwKTKyHgUKK7NAHiMJK7IFHgors0AFAQkrsAoysB4QsS4BK7EWBumxNQErsR4FERKxDiY5ObAuEbIbESQ5OTkAsSsbERKwHTmwMRGyCAoWOTk5sBESsQsOOTkwMTY0Nz4BNRE0JicmNDcWMzI2MzIeAhUUDgIjIicRFBYXFhQHJiMiBwEWMzI2NTQmIyIVGQpzPz9zCgrNOy3VF4XAXicxaMeFZkBOgwoKzVpCyAFgJXeYmZx/sgQxCgQ8ewM1ezsECDIKBA5FcWg2SImBTxT+pHk7BwoxCAQEApUKlqGygoMAAAIATP5UBXMFRAApADcAewCyBQMAK7EzBOmwGC+0EwUAIwQrsB0vtBAFAEUEKwGwOC+wANa0KgYAPwQrsCoQsTABK7QIBgA0BCuxOQErsTAqERK2DAUQGCIOJyQXObAIEbETFTk5ALETGBESsSEiOTmwHRGyFRYbOTk5sTMQERK0CA0AJy0kFzkwMRMQNz4BMyAAERAHBgcGBzYzMgQzMjcXBiMiLgIjIgcGByc+ATc2NyYAExAAMzISERAAIyIOAkyMVv2WAR0Bdn+S/YeFFhJ3AXFUdT0jdbJarnOPQCEnKiNQBxILgLjx/sTEAR/HtOX+6tNKi3dKAnsBD8B2hP6T/sv/ALTNLCZhA6hLGKg9SD4aLTIpDBgLmmAdAWABMf7l/q4BPgEMAS0BVkiL9AACABn/7AS4BTcANAA9AMEAsjQBACuxAgTpsC0ysiMBACuxHQTpshEDACuwDDOxOwTpsAkytCk1IxENK7EpBOkBsD4vsAXWsSoG6bA1MrIqBQors0AqLwkrsgUqCiuzQAUBCSuwCjKwKhCxOQErsRYG6bIWOQors0AWHwkrsT8BK7EqBRESsQ4yOTmwORGzESYZMCQXObAWErAlOQCxHTQRErIAHy85OTmwAhGxAS45ObApErAlObA1EbAZObA7ErIIChY5OTmwERGxCw45OTAxNjQ3PgE1ETQmJyY0NxYzMjYzMhYXFhUUBgcBHgEzFhUUBwYjIicDLgEjERQWFxYUByYjIgcBMzI2NRAhIhUZCnM/P3MKCs07K74XeahBbbJfAQMvVj8IBh05nnDbGWB3QHIICM07QsgBYGKmsv7wqgQxCgQ8ewM1ezsECDIKBA4lPWaajbIf/lJOUA8NCwoOtgFkKSX+pns7BQoxCAQEAp6HsgEfgwAAAQA3/+wDjQVEAD4AkACyOgEAK7EGBOmyFwMAK7EmBOkBsD8vsBTWsSkH6bMEKRQIK7QABwASBCuwAC+0BAcAEgQrsCkQsQkBK7E1BumzHjUJCCu0HAcAEgQrsUABK7EUABESsQI9OTmxCSkRErUGDxcmMTokFzmxHB4RErAZOQCxBjoRErA9ObAmEbUAAhQcHjUkFzmwFxKwGjkwMRM2MzIXEiEyNjU0LgQnLgI1NDYzMhYXFhcGBy4GIyIGFRQeBBceAxUUBgcGIyImIyY3ExUNDkABJ3uFIy1TN2USWXhX5aF1qRwcCQ80ChMcIS42RypZhyw8YUJiDTxdUyxoWGyRYdU6HwFSCgT+3YF7OF05NRgnCCdVkFqexTQEjXsLASAzOCooGg+OVzBVOTgbJgUaO1V0RmGyN0MvgQAAAAABAAb//AS6BTkAMAB5ALIhAQArsSQE6bAaMrIEAwArsAkztAAFAA4EK7EPLzIyswYEAAgrsSwF6bASMgGwMS+wJ9axFwbpsicXCiuzQCcjCSuwFxCxDwErtA0HABIEK7EyASuxFycRErAfObAPEbEcHTk5sA0SsAk5ALEsABESsQwNOTkwMRM2NzQzFiEzIDcyFRYXBiMuASsBIgYVERQWFx4BByYjIgcmNDc+ATURNCYrASIGByIGKQoJzwEOsAEQuwYCGBcuGYt5LTUpRYEKAQvNT1bJCAiBRis2ZGqIHCsECrB5BhAQBoecCnNgaGn88ns7BQoxCAQECDEKBDx7AxRkZ2J3AAABAAz/7AU/BS0APACLALIzAQArsRMF6bICAwArsCIzsTwE6bIJHykyMjIBsD0vsDjWsQ0G6bINOAors0ANCAkrsjgNCiuzQDgBCSuwDRCxGQErtC4HABIEK7IuGQors0AuKAkrshkuCiuzQBkhCSuxPgErsQ04ERKwBDmwGRGyBiIzOTk5sC4SsCQ5ALE8ExESsS44OTkwMRI0NxYzMjcWFAcOARURFB4BFxYXMj4DNRE0LgInJjQ3FjMyNxYUBw4CFREUDgIjIi4CNRE0JicMCM0nTMkICHtCCDIvaolkkE4tCgw1NkUICM0gCMkICEozIC1x0ZpQlZxeO2ME8TIKBAQKMQkEO3v9+FZvjy1mAUBcknhSAfhCQyUKBggyCgQECjEJCBJMVP4tkdeuWitm05MCTHk9BAABAAL/5wUzBS0AMQAsALIrAQArsgIDACuwGzOxMQTpsgkYIjIyMgGwMi+xMwErALExKxESsBA5MDESNDcWMzI3FhQHBgcGFRQXATMBNjU0JyYnLgE3FjMyNxYUBw4EBwEGByInAS4BJwIIwRQ3wQgIZxMGGAFGCgFDGggVaQgBCcEeEKQKCic9IyQNEf5YEh8dEv5sLzVUBPMwCgQECjEJCx4KEiI8/L4DNTclEw8qCAgyCgQECjEJBRsZPR4q++wvATAEGHg7BwAAAAABAAT/5weaBS0AVABnALJOAQArsEQzsgIDACuxGzYzM7FUBOm0CRgiMz4kFzIBsFUvsVYBK7A2GrrDI+w1ABUrCg6wURCwUMCxDQ35sA7AALMNDlBRLi4uLgGzDQ5QUS4uLi6wQBoBALFUThESsSlJOTkwMRI0NxYzMjcWFAcOAhcBMwE2NTQvAS4BJyY0NxYzMjcWFAcOBBcBMwE2NC4EJyY0NxYzMjcWFRQHDgEHAQYHIicDJiMiBwEGByInAS4BJwQIpBtghwgIKy0YCgEzBAECDgofDlpKCAikKTnBCAgdGi0JDhABJwQBRgYIGRQnGxYKCqQ9G5cJCVBLFf5tECcvEfASCgwR/uMSJy8Q/osbM0oE8TIKBAQKMQkCDCUj/FACpicnGx5fL0cECDIKBAQKMQkCBBAXLSD8cAOmEh0VDggGAgIIMgoEBAsaFgkEPTv7qi8BMgLXOTP9IzEBMgRaTiQEAAABAAT//AUnBS0AZABLALJkAQArsEQzsQIE6bJBS10yMjKyEQMAK7AuM7EOBOmyGCs1MjIyAbBlL7AI1rE7BumxZgErsTsIERKwIjkAsQ4CERKxIlM5OTAxNjQ3PgE3ATY0JwEuAicmNDcWMzI3FhQHDgMeARcTFjMyNxM2NTQnJicmNDcWMzI3FhQHDgEHAQYVFBcBHgEXFhQHJiMiByY0NzY3NjU0JwMmByIHAQYVFBcWFxYUByYjIgcECkppMQEvFBz+3CpANjAKCHtWRqMKCh0lFAYLERDiEAkQEfwTBxNJCAikMz17CgpKZjP+5xQgATo/TkIKCHtWRqQICFIHASr8EA0KFf7yFAYSTAgIpDM9fAQxCgY2QwGWGykpAZ87OhEDCjAKBAQKMQkCBQwOHBoY/rEXGQFmIBILBhADCDIKBAQKMQkGN0L+lhsiFy3+Ulg1BQovCgQECDEKBBcDAxg2AWkXAR3+hiISCgYOBQoxCAQEAAAAAQAC//wEmAUtAEYAWACyNwEAK7E6BOmwMDKyAgMAK7AcM7FGBOmyCRkkMjIyAbBHL7A91rEtBumyLT0KK7NALTIJK7I9LQors0A9OQkrsUgBK7EtPRESsDU5ALFGOhESsBI5MDESNDcWMzI3FhQHBgcGFRQXEx4BNxM+AS4BJyY0NxYzMjcWFRQHDgEHAw4CFREUFhcWFAcmIyIHJjQ3PgE1ETQmJwEuAicCCHtWRqQKClUOAxzuDhIN4hAGFyokCgqkFi97CwtKTyn1EBAERoEICM1QVskKCoFGEBv+8yM5NDAE8zAKBAQKMQkFFQYIGDH+XRkCFwGsHygYCwIIMgoEBAsaFgkGM0r+Rh00KCP+6ns7BQoxCAQECDEKBDx7AQQ3OC8BxDs5EgMAAQBU//wEoAU5ADIAVwCyEQMAK7ATINYRsQoF6bAxL7EhBemyITEKK7NAISoJKwGwMy+wANa0HwYAEQQrsTQBK7EfABESsg0PETk5OQCxITERErAAObAKEbUHBQ0PGywkFzkwMTc0NzYANzY1NCMFDgEHIic2NxYzITI2MzIHFAcAAQYVFDMyMyU+BDcyFwYHIiUhIlQQpAHqjxAU/lBxgSEbIiMKy6gBxCNrCBsBMf7B/j8QKgQFAYtCZD47GxgbJSoOAf7+/RYnHxkW9AKqthcOEggCa2wKtoEQBBYdQP5k/XUdDBwIAh8lVDU3Cq6oBAAAAAEA3f51ApgFoAASACQAsBIvsQ8E6bAFL7ECBOkBsBMvsADWtAoHAB4EK7EUASsAMDETESEeAQcOAhURFB4CFx4BB90BsggBCZF3IQ0/b24IAQn+dQcrCikLCitOYvsdTEQ7FQgKKQoAAQAX/54CSAWWAAMAUwABsAQvsADWtAEHABIEK7ABELEDASu0AgcAEgQrsQUBK7A2GrrC1+0mABUrCgSwAC6wAi6wABCxAQ75sAIQsQMO+QKzAAECAy4uLi6wQBoBADAxEzMBIxdaAddaBZb6CAAAAAEAQv53AfwFogASADIAsBIvsQIE6bAML7EPBOkBsBMvsAbWtBEHAB4EK7IGEQorswAGAQkrsA0ysRQBKwAwMRI0Nz4CNRE0LgInJjQ3IREhQgiRdyENP29uCAgBsv5O/n8tCAorTmME40xDPBQICC4I+NUAAQDlAsUDQgUzAAYALQCyAQMAK7QABQAHBCuwAzIBsAcvsADWtAMGAAcEK7EIASsAsQEAERKwBTkwMRMBMwEjCwHlAQRWAQNd09ACxQJu/ZIB+f4HAAAAAAEACP7FA9v/HwAHAB0AsAcvtAIFAEUEK7QCBQBFBCsBsAgvsQkBKwAwMRI0NyEWFAchCAwDuwwM/EX+0UENDEIMAAAAAQDFBE4CCAWcAA0ALACwCi+0BQUADQQrAbAOL7AA1rQIBgANBCuxDwErALEFChESsgADCDk5OTAxEzc2MzIXExYVFAYjIifFBD9GDxCPDBINECsFVhcvBP7+GRkIDikAAgBK/+wDpAODADMAPQDtALIXAgArsQgE6bIIFworswAIEgkrsigBACuwMTOxHgXpsh4oCiuzAB4hCSsBsD4vsBTWsQ8H6bALMrAPELA9INYRsQAG6bAAL7E9BumwDxCxOQErsQY6MjKxGgfpsT8BK7A2GroPMcHUABUrCgSwOi4OsDzAsQQE+bACwLACELMDAgQTK7A8ELM7PDoTK7IDAgQgiiCKIwYOERI5sjs8OhESOQCzAwQ6Oy4uLi4BsgMEOy4uLrBAGgGxPRQRErASObE5DxEStAgXLDE1JBc5sBoRsCg5ALEeKBESsTU2OTmwCBGzABksLSQXOTAxNzQ2PwE2NRAjIgYVFBcWFRQGIyI3NDYzIBkBFB4BMzI2MzIWFRQOASMiIyInIwcOASMiJjYWMjc2NREHBhVKupiwDKZEZgQGMSlIAdV9ATUGJyUZJAIGFStWLQEBeSMEKURWRXWNqkuQbB2iwslmnCcrBBQBCisrHQsMGRctSFSP/qb+zzs+NSAYCgYrK3YgNSFqRFtZFCEBECsxrgAAAAIADf/nA6YFlgAnADQAiQCyCwIAK7QwBQBFBCuyEQEAK7AaM7EqBOmwJC+xAATpsgAkCiuzQAACCSsBsDUvsB7WsSgH6bAGMrIeKAors0AeJgkrsCgQsS0BK7EOBumxNgErsSgeERKyAhMaOTk5sC0RswQLETAkFzkAsSoRERKxFBw5ObAwEbIJDgg5OTmxJAsRErAiOTAxEzY3MhUGFREUNzYzMhYVFAAjIicmBgcOAgciJzY1ETQuAicmNTQBFjMyNjU0JiMiBwYXELZpGwgUZn+N3v7lqng8ERcQBxUKCh0QCAYtGTcQATVORY2UhV9kSiMBBV4OKhVShf6HHBJc4bLl/uEyDgESCBYJCxknagPoQkEfAgQQFwr7P2Djt5PLQh83AAAAAQBM/+wDLwODAB4AXwCyAwIAK7EPBOmyDwMKK7MADwkJK7IcAQArtBUFACkEKwGwHy+wANaxEgbpsBIQsQsBK7EGBumwGTKxIAErsQsSERKyAxUcOTk5sAYRsBc5ALEPFRESsgAXGTk5OTAxEzQAMzIWFRQGIyInLgIjIgYVFBYzMjcWFw4BIyImTAECopGoQCRGCAQTQTpmg6ByjWkhCkifZ77XAarPAQpsViswSi0zL8KmsNeHBBl3V/MAAAAAAgBQ/+kEBAWWADEARACdALIEAgArsUEE6bIvAQArsCQztDUFACsEK7MhNS8IK7QeBABrBCuwEC+xFATpAbBFL7AA1rEyBumwMhCxOQErsQooMjKxGwfpsjkbCiuzQDkSCSuxRgErsTkyERKyBCovOTk5sBsRsRYjOTkAsTUhERKwIDmwHhGzHygqLSQXObBBErIdADI5OTmwBBGwCDmwEBKwDjmwFBGwGTkwMRM0NzYzMh4BMzI3ETQuAicmNTQ3NjcyFQYHERQWFxYUBwYHBiInJjc0JiIGBwYjIiY3FBYzMjc2NRE0JicmIyIjIgcGUI2Bsh9KNQISAQctGDgQBLZpGwgBOF4KCqxMDBMIFwEFCAgElmqiurCHWlBxIQ0WPmUBAntEOwGg2417EhETAQZCQR8CBBAWCwwOKhVShfxgUD0ICiUJFD0DA0gwBQUEA3vx6LTFYh0zAYUvJxlJZlQAAAACAEz/7ANCA38AFgAhAGgAsgMCACuxHQTpshMBACu0DAUAKQQrtBcIEwMNK7EXBOkBsCIvsADWsQgG6bAXMrAIELEaASuxBQbpsBEysSMBK7EaCBESsgMMEzk5ObAFEbAPOQCxCAwRErIADxE5OTmwFxGwBTkwMRM0ADMgERQjJRQXFjMyNjcWFwYjIicmEyUyJzQmIyIOAkwBBJUBWib930FahlZtOyMIidTLbmCyAXMfAWRGGzRMPgGe2QEI/pwjBKxtkzE9Ah6yg28BZAYcdWIOLW4AAAABAC3//AMpBZYAMgB7ALIpAQArsSwE6bAiMrAxL7AdM7EDBemwFzKwFC+xCATpshQICiuzABQPCSsBsDMvsC/WsAQysR8H6bAWMrIfLwors0AfGwkrs0AfJAkrsi8fCiuzQC8ACSuwHxCxEQErsQwH6bE0ASuxHy8RErAnObAREbEIJTk5ADAxEzU0OwE1NDYzMhcWFRQGIyInLgEjIhEVMzIdARQnIxEUFhcWFAcmIyIHJjQ3PgE1ESMiLS9p2497PUI5GzUdFDgvot4QL782bAgIsEErrQoKWC6OCgMrGylS3/YsMTcfNUI1K/6TdA0pGwH923s5BwoxCAQECDEKBjp7AiUAAAADAEL+GQPZA7IANwBMAFgA/wCyDAIAK7FXBOmwVxCwGyDWEbQRBQAtBCuyGxEKK7MAGxcJK7JEAQArtC0FACEEK7AqMrICAQArsDUvsTsF6bQjUkQMDSuxIwTpAbBZL7AJ1rFNBumwACDWEbQ4BwAqBCuwOBCwJyDWEbQEBwASBCuwBC+0JwcAEgQrsE0QsVQBK7EgB+mwIBCxPwErtDEHABIEK7FaASuxJzgRErECBzk5sE0RsSVLOTmwVBK1IyotNTsMJBc5sCARshsOHjk5ObA/ErAZObAxEbERFzk5ALFEOxESsjEAODk5ObAtEbBLObAjErAEObBSEbAlObBXErIHHiA5OTmwGxGwDjkwMRc0NyY1NDY3JjU0NjMyFz4BMzIWFRQGIyInJiMiBgcWFRQGIyInBhUUFjM3NjMyFxYVFAYEIyImNxQWMzI+ATU0JicmIyIjIgYjJicGExQeAjMyNTQmIyJCp14xKWrRjX9WJXstKTUvHScSEBkSNAxYy49xSSVONT1SONlSWq7++42JvI2sSmC0fS07PbEFBQpnJS0lP1QMJVA9rGZgpP6TZS9vN3UiZoCJrjkxNyshHy4kGSEQWnuPqiszRDs6BApDSlxqp1FupFxrMmpGJzUjIgYBCkwCyjlUWC/lf4oAAQAc//wENwWWAEYApACyHAIAK7Q2BQAnBCuyRgEAK7AnM7ECBOmyJC4/MjIysA0vsREE6bIRDQors0AREwkrAbBHL7AH1rE7B+mwFzKyBzsKK7NABw8JK7A7ELExASuxIQfpsiExCiuzQCEmCSuyMSEKK7NAMS0JK7FIASuxOwcRErETRDk5sDERtRQaHCtBQiQXObAhErApOQCxNgIRErIZGiA5OTmxDRwRErALOTAxNjQ3PgM1ETQuAicmNTQ3NjcyBwYVAxY3NjMyFxYVERQWFxYUByYjIgcmNDc+ATURNCcmIyIHBhURFB4BFx4BByYjIgccCTMtJgkGLRk3EAS2aRsBCAICEpbHdTU3L1oICLApJawICFQrGCVIi3sjFSw5CQEKrB44qQUxCQQKJ0RCA39CQR8CBBAWCwwOKhVShf4zFhamRkjK/s95OQkIMQoEBAgxCgg6eQE3bTFKeSYw/rBXSRYFCTEJBAQAAAACADX//AIQBS0AIAAsAJUAsg0CACuyIAEAK7ECBOmwGTKyJAMAK7QqBQAUBCuxCw0QIMAvtAkEAIoEKwGwLS+wBdaxFgfpshYFCiuzQBYbCSuyBRYKK7NABQEJK7AWELMoFicOK7QhBgAoBCuwIS+0JwYAKAQrsS4BK7EWBRESsw0eJCokFzmwJxGwDzkAsQkCERKwEzmwCxGwEjmwDRKwETkwMTY0Nz4BNRE0JicmNzY3MhUUDgMVERQWFxYUByYjIgcTNDYzMhYVFAYjIiY1CGIyL1YMCL5aGwICAwExYgoKsDM5rXtGJSc7QSklPgQxCgg4ewGPVi0IIxcZIg4FEzk1Rh3+aHs5BwoxCAQEBM8lPUQmI0BEAAAAAAL/nv43AZgFLQAjAC8AhwCyFwIAK7InAwArtC0FABQEK7AhL7QMBQBFBCuyDCEKK7MADAMJK7ATL7QVBACKBCsBsDAvsA/WsRwH6bIPHAorswAPAAkrsBwQsygcKg4rtCQGACgEK7AkL7QqBgAoBCuwGTKxMQErsRwPERKyFyctOTk5sCoRsBg5ALETDBESsRscOTkwMQM0NjMyHgQXFjMyEjURNCYnJjc2NzIHBhUREAIHBiMiJgE0NjMyFhUUBiMiJmIvEgoVDhMIEAIXKUYoL1YMCMNWGwEITE1UjiVLAS1FJSc8QiklPf6PGzMGBg4HEgIXAQ/8Ae1WLQgjFxkiDoNn/lD+7P7vP0YvBmUlPUQmI0BEAAABAB3//AQQBZYATgB3ALIiAgArsR8E6bApMrJOAQArsDczsQIE6bE0RzIysAsvsQ8E6bIPCwors0APEQkrAbBPL7AF1rFEB+mwFTKyBUQKK7NABQ0JK7AAMrFQASuxRAURErERTDk5ALECThESsD05sB8RshZBQzk5ObELIhESsAk5MDE2NDc+ATURNC4CJyY1NDc2NzIVBhURNjc2Nz4CJicmNDcWMzI3FhQHBg8BBgcUFwEeARcWFAcmIgciJyYvASYnJicVFBYXHgEHJiMiBx0KWi8GLRk3EAS2aBsIQklKWgoNCCUpCAiYMRuXCgqPSLQIAQ8BDiVMPwoKe1pSBgIMSpUhIRs9J0MKAQuwCi+sBDEKBjp7A39CQR8CBBAWCwwOKhVShf02CTY3cQwbJBsCCDELBAQKMggOTLoIDQoT/q0vHwkKMQgEBAorZcgsFwkCsnk7BwoxCAQEAAAAAQAl//wCAAWWACAAWQCyIAEAK7ECBOmwGTKwCy+xDwTpsg8LCiuzQA8RCSsBsCEvsAXWsRYH6bIWBQors0AWGwkrsgUWCiuzQAUNCSuxIgErsRYFERKxER45OQCxDwsRErAUOTAxNjQ3PgE1ETQuAicmNTQ3NjcyFQYHERQWFxYUByYjIgclCmA0By0YOBAEtmkbCAE0YAgIsDQ5rAQxCgQ8ewN/QkEfAgQQFgsMDioVUoX8UHs7BQoxCAQEAAAAAQAt//wGPwOJAF8A7ACyFgIAK7ENHzMztE8FACcEK7EJNzIysE8QtAsEAIoEK7JfAQArsSlCMzOxAgTptCYwP0lYJBcyAbBgL7AF1rFUB+mwETKyVAUKK7NAVFoJK7IFVAors0AFAQkrsFQQsUwBK7E8B+myPEwKK7NAPEEJK7JMPAors0BMSAkrsDwQsTMBK7EjB+myIzMKK7NAIygJK7IzIwors0AzLwkrsWEBK7FUBRESsQ1dOTmwTBGyFkZbOTk5sDwSshoZRDk5ObAzEbQbHy03QiQXObAjErArOQCxTwIRErcREhQZGhsiOSQXObALEbAcOTAxNjQ3PgE1ETQmJyY3NjcyFxYVFD8BNjMyFhcWNz4CMzIWFREUFhcWFAcmIyIHJjQ3PgE1ETQmIyIHFhURFBYXFhQHJiMiByY0Nz4BNRE0JyIHBhURFB4BFxYUByYjIgctCFoyMFYMCKBiEAkQDgWemU5wDwURM3puN31WK1gICLAjJawICFQrPT2TfAIpUAgIsBklrAgIVimHYnsjFSw6CQmsHzWoBDEKBjx5AY9WLQgjFxQnECV3GRQFplVBFBM2Rhuonv69ezkHCDEKBAQKMQgGPHkBaGJViBk5/rt7OQcIMwgEBAgxCgY6ewFkugF5JTH+sFZIFwYJMQkEBAAAAQAt//wEOwOJAD4AmQCyFQIAK7ANM7QvBQAnBCuwCTKwLxC0CwQAigQrsj4BACuwIDOxAgTpsh0nNzIyMgGwPy+wBdaxNAfpsBEysgU0CiuzQAUBCSuwNBCxKgErsRoH6bIaKgors0AaHwkrsioaCiuzQComCSuxQAErsTQFERKxDTw5ObAqEbMVJDk6JBc5sBoSsCI5ALEvAhESsxESExkkFzkwMTY0Nz4BNRE0JicmNzY3MhcWFRY3NjMyFxYVERQWFxYUByYjIgcmNDc+ATURNCcmIyIHBhURFBYXHgEHJiMiBy0IYDAvVwwIoGIQCRABEpa6dTU3L1oICLApJawICFQrGCdGfX0jKVIKAQusHjmpBDEKCDh7AY9WLQgjFxQnECV3GRmmRkrI/s95OQkIMQoEBAgxCgg6eQE3bTFKeScv/rB5OQkKMQgEBAAAAgBU/+wDtAODABAAHQBGALIEAgArsRwE6bIOAQArsRYE6QGwHi+wANaxEQbpsBEQsRkBK7EIBumxHwErsRkRERKyBA4MOTk5ALEcFhESsQAIOTkwMRM0NzYzMh4BFRQHBiMiIyICNxQeAjMyNjU0JiMiVHF6x5PLUIV0tgIBzeGwHz1zTFqLmIXjAaTLhY+RyXPWgnIBCt1Ch4NUlK7b6wAAAAACAAj+IQPZA4kALwBEAJUAshYCACuwDTO0PwUALAQrsD8QsAkg1hG0CwQAigQrsi8AACuxAgTpsCgysh8BACuxNwTpAbBFL7AF1rElB+mxETAyMrIlBQors0AlKgkrsgUlCiuzQAUBCSuwJRCxPAErsRkG6bFGASuxJQURErENLTk5sDwRsxYhKz8kFzkAsTcfERKwIjmwCRG0ERMUGTwkFzkwMRI0Nz4BNRE0JicmNzY3MhcWFRQWNzYzMhYVFAcGIyIjIicmBh0BFBYXFhQHJiMiBwEUHgEXHgEzMj4CNTQmIyIGBwYXCAhgNC9WDAigYhAIEQwEg5aa0Jd4swECZE4QDDdxCgqwSDmtATYIEhcZVSNSdz0bjWcreykhAf4pMQoEPHsDalYtCCMXFCcQJWIKBQaa+qjwk3IfCAQT3Xs6BgoxCAQEArYmJxkVFhVEdHtGqNNMMykxAAACAEj+IQQEA4kALQBBAJEAsgMCACuwEDOxPwTpsh0AACuxIATpsBYysisBACu0MwUARQQrAbBCL7AA1rEuBumwLhCxIwErsDgysRMH6bITIwors0ATGAkrsiMTCiuzQCMfCSuxQwErsSMuERKyHQMpOTk5sBMRsgsQGzk5OQCxKyARErATObAzEbAmObA/ErEADDk5sAMRsgsOEjk5OTAxEzQSMzIeBRcWNjc2MzIHERQWFxYUByYjIgcmNDc+AT0BNCYHBiMiIyICNxQeAjMyNz4BNRE0LgEnJiMiBkj3uxMkIyIhHx4NExQVHQ4fATJiCgqwMzmtCAhiMhQkNWIDA8vdsDleYTFTNBMKCBYUQ153gwGoywEQAgUHCQ0PCQsKHCcz+8d7OgQKMQgEBAgxCgQ6e+MfAhYfARbPb6FUJxsKFh0B1xolJxdLyAAAAAABAC3//ALdA4kAMwB9ALIXAgArsA0ztCQFACEEK7IkFworswAkHQkrswkXJAgrtAsEAIoEK7IzAQArsQIE6bAsMgGwNC+wBdaxKQfpsBEysikFCiuzQCkuCSuyBSkKK7NABQEJK7E1ASuxKQURErENMTk5ALEkAhESshETFDk5ObELCRESsBU5MDE2NDc+ATURNCYnJjc2NzIXFhUUFjc+ATMyFhUUBiMiLgInJiMiBwYVERQWFxYUByYjIgctCGQ0L1YMCKBiEAgRBgopeUE7QDslDh0OFwQOHRlFMTdxCgqwSD2tBDEKBjp7AY9WLQgjFxQnECV3CggORmQ/IydADw4bBA5kSj/+43s3CQoxCAQEAAABAGL/7ALNA4MAOQCwALITAgArsSIE6bIiEworswAiHAkrsjIBACuxBwTpAbA6L7AQ1rQlBwAqBCuwACDWEbQDBwASBCuwJRCxCgErsS0H6bMaLQoIK7QdBwASBCuwHS+0GgcAEgQrshodCiuzQBoXCSuxOwErsRAAERKxATg5ObADEbACObAlErIONDY5OTmwChG1Bw0TIisyJBc5sRodERKwFjkAsQcyERKxNjg5ObAiEbMAARAtJBc5MDETNjIXFhcWMzI2NTQmJy4BNTQ2MzIeARcUBhUGIicuAyMiBhUUHgMXFhUUDgIjIicmIyIHJmIKLAojLS1kQmxUfXtmrHUvYm0ODAouCgovQC8WN1kWG0AsMPBEamcxZFYOGxQfAQEbCgiRLDFKRURSMzN3bWCFDhcCG5UpCgg9UiMMRzwhNCEjEhNbtUhrNxgWBAZrAAAAAQAz/+wCaASoAC8AbwCyKgEAK7QkBQAlBCuyJCoKK7NAJBQJK7QDLioUDSuwHzOxAwXpsBkyAbAwL7As1rEECTIysSEH6bAWMrIhLAors0AhHQkrsiwhCiuzQCwACSuxMQErsSEsERKyDxQqOTk5ALEuJBESsSYoOTkwMRM1NDsBNC4BLwE0NTQ+Ajc+AjMyFQYdATMyHQEUJyMRFBYzMjcWFwYjIjURIyIzJV4BAgECEBMhCgwmGgYQCPYQMdUdJ15KHwV5m555CgMrGyk/WyoMEgYFBwwGCgQFFAwSUoZPDSkbAf36ZFk6AiGHygJpAAAAAAEALf/pBCkDcwA6AKYAsgICACuwGTOxOgTpsBYysjMBACuwKzO0DgUAKwQrsygOMwgrtCUEAGsEKwGwOy+wNtaxCwfpsjYLCiuzQDYBCSuwCxCxEgErsC8ysSIH6bISIgors0ASGAkrsTwBK7ELNhESsQYEOTmwEhG0CA4ZMTMkFzmwIhKyGx0qOTk5ALEOKBESsCc5sCURsiYvMTk5ObA6ErIkMDY5OTmwAhGxCB85OTAxEjQ3FjMyNzIVBhURFBYzMjc2JxE0JicmNDcWMzI3MhUGFREUFhcWFAcGBwYiJyY1NAcGIyImNRE0JictCJg5MxUQCGRAXHEhATFOCgqYOTMVEAg4XgoKrEwMEwgXGJZ/jXszTAM3MQsEBA2WPf6MeVpiHTMBi2JABAgxCwQEDZY9/ndQPQgKJQkUPQMDSi4XFXqdeQGJYD4GAAAAAAEADP/nA/ADcwA9ACwAsgICACuwIzOxPATpsgkgLDIyMrI0AQArAbA+L7E/ASsAsTw0ERKwFzkwMRM0NxYzMjcWFAcOBB4CFxMWFzIVMjcTNjU0JyYnLgE3FjI3FhUUFRQHDgMHAQYHIicBJicuAScmDAuYHEKXCgoYIRgJBwgDEgSUGQ0BDRilFwUPUgoBC5hZWgsLKjcoFBL+7xQdIxD++gMEHTNNCwNSFwoEBAoyCAIHBRIHHgwuCv51PwIBOwGSNh0NCBoHCDELBAQKGQEBFwgEFC8mKv1/LwErAogHC0owCQkAAAABAAz/5wXsA3MAWgA3ALICAgArsSA+MzOxWQTptAkdJztIJBcyslMBACuwTTMBsFsvsVwBKwCxWVMRErISMVA5OTkwMRM0NxYzMjcWFAcGBwYHFBcTHgE2NxMnJicuAycmNDcWMzI3FhQHBgcGFRQXExYXFjc2NxM+ATQuAScmNDcWMzI3FhUUFRQHDgEHAQYiJwsBBiMiJwEuAScmDAtqSj2YCgpGDAMBGKQODw4OkA0DBQ8RIjAjCAiYHDWYCAhQDAQVsQ4GBQcBDKwLCBc3LQoKmD0pZgsLSEgd/vUQPhLTzxQdHxL+9CE6RwsDUhcKBAQKMggEHggLHjb+WiMQEiUBayAHDCckLBMDCDELBAQKMggFGAcMGzL+QCQCAhABHwGqGx4oFhICCDELBAQKGQEBFwgER0j9dispAfz+CC0pApZRMQcJAAAAAAEAIf/8A8sDcwBnADwAsg8CACuwKzOxDATpshYoMjIyMrJnAQArsEEzsQIE6bI+SF4yMjIBsGgvsWkBKwCxDAIRErEiVTk5MDE2NDc+Aj8BNicDJicmNDcWMzI3FhQHDgEiDgIeAh8BFj8BNi4BJy4BNxYzMjcWFAcOAQ8BBhcTHgMXFhQHJiMiByY0NzI2Mj4CLgIvAS4BBg8BBhUGFxYXHgEHJiMiDgEjIQotK0YprAoMs1BoCAiYGDeYCgoKIQwVBAgEBA0IfRQThRkDHCsKAQuYFC9mCAg/UjasCgq5ITM9FScKCpgVPZgKCgYdCBMCCAYIEwx3CAwICYESAQQMMAoBC5gUISQxHQQxCgILMTXdDBMBBHMKCDELBAQKMggCBAYCCgkQEw64HRm6IyMIBggxCwQECjIIBilC2w4Q/vwtNhYEBQoxCAQECDEKBwYGCg4VHRCkCgQGDLshEQgEDQcKMQgEAgIAAAABABn+JQQQA3MARwA3ALICAgArsCEzsUcE6bIJHigyMjKyMQAAK7Q3BQAZBCsBsEgvsUkBKwCxRzcRErIULkA5OTkwMRI0NxYzMjcWFAcOAh4BFxYXEx4BPgE3EzY1NCcmJyY0NxYzMjcWFAcOAQcCAwYHBiMiJjU0NjMyFjMyNzY3NjU0JwMuAicZCFJUUJcICCQpFAMKDAMCtgYNDAwGywoRHj4KCpgjK2YKCjVYGYPnKylSdSk3MycKIw5GITEfCCXoHiUvLwM3MQsEBAoyCAMNDyMbHQcE/lYPDgENDQHVFRAUChMGCDELBAQKMggETjH+7v3OZkqTKyEbPQY7ZFgWHDtUAhtFOBgEAAAAAAEATP/6AzsDgwAoAFoAsg8CACuyFwIAK7AnL7EdBOmwBC+xFATpsgQUCiuzQAQJCSsBsCkvsAvWtAcHABIEK7EqASuxBwsRErANOQCxHScRErACObAEEbMDCyIkJBc5sBQSsBo5MDE3NDcAEwUGBwYjIic2NzQzHgIzITI+ATMyFAcAAyE+AT8BMhcGByUiTBIBM8X++nMzDAwWFh0CDAooKxwBdxs5KQIZJf765gERTFMpHScWFyr9gS8ZEBkBnAFLBgK5AwqwWAwCDAYCAh09/lD+3QJDVjwNmnwGAAAAAQAd/k4CGQWoACQAXQCwHy+0HAQATQQrsAAvtAIEAE0EK7ALL7QIBABNBCsBsCUvsCLWsAUysRkH6bAQMrERB+mxJgErsREZERKwGDkAsQAcERKxGCI5ObACEbEUFTk5sAsSsQYSOTkwMRMmNz4BNQMCIR4BBw4DFxMWBgcVHgEHAwYWMx4BByImNxM2HRkZaGAMCgFBCAEJJS87GAQQBmpzcWwGEAZiRwgBCaaZCAwGAeEZGAqCWAF5ATkKHQoKGTdnTP6tf3khCC+Odv7Oe5cIIQiPvwFc0QAAAAEApv4lAQAFlgADACIAsgAAACsBsAQvsADWtAMHABIEK7QDBwASBCuxBQErADAxExEzEaZa/iUHcfiPAAEAFP5MAhIFpgAkAF4AsCQvtAIEAE0EK7AeL7QcBABNBCuwEy+0FgQATQQrAbAlL7AH1rAQMrEiB+mwGTKwIhCxCAfpsAgvsA8zsSYBKwCxHgIRErEJIjk5sBwRsQwLOTmwExKxDxk5OTAxEiY3PgMnAyY2NzUuATcTNiYjLgE3MhYHAwYXFgcOARUTEiEVAQslLzsZBBEGa3JxbAYRBmNHCgELppkIDAbOGRloYAwK/r/+Vh0KChk3ZkwBVH95IQgvjXcBMXuYCCEIj7/+pNEZGRgKgVj+h/7HAAABADUBpANWArYAGAA1ALAQL7QHBQAiBCuwFC+0AwUAIgQrsAoyAbAZL7EaASsAsQcQERKwEjmxAxQRErEFDDk5MDETPgEzMhcWMzI2NzIXDgIjIicmByIGByI1FJhaQlhcNzV3HxkKHWpMI0JZWD43fSMTAaxonkFEREUMZHcbREIBVEEAAAAAAQBSAckCYgJEAAsAJwCwCi+0AwUAIgQrtAMFACIEKwGwDC+wANa0BgYACAQrsQ0BKwAwMRM0NjMhMgcUBiMhIlIhEgHBHQElEv5GHwHwHTcpFD4AAQBSAckCYgJEAAsAJwCwCi+0AwUAIgQrtAMFACIEKwGwDC+wANa0BgYACAQrsQ0BKwAwMRM0NjMhMgcUBiMhIlIhEgHBHQElEv5GHwHwHTcpFD4AAQBSAckCYgJEAAsAJwCwCi+0AwUAIgQrtAMFACIEKwGwDC+wANa0BgYACAQrsQ0BKwAwMRM0NjMhMgcUBiMhIlIhEgHBHQElEv5GHwHwHTcpFD4AAQBSAckCYgJEAAsAJwCwCi+0AwUAIgQrtAMFACIEKwGwDC+wANa0BgYACAQrsQ0BKwAwMRM0NjMhMgcUBiMhIlIhEgHBHQElEv5GHwHwHTcpFD4AAQBSAckEUgJEAAsAHQCwCi+0AwUAIgQrtAMFACIEKwGwDC+xDQErADAxEzQ2MyEyBxQGIyEiUkAjA2c4Akgj/Kc8AfAdNykUPgAAAAEAUgHJCFICRAALAB0AsAovtAMFACIEK7QDBQAiBCsBsAwvsQ0BKwAwMRM0NjMhMgcUBiMhIlKARgbNcQSQRflNeAHwHTcpFD4AAAABAAAAAAN1A3UAAwAAESERIQN1/IsDdfyLAAAABwBS/6YHjQVEAB8AJAAtADQAOgBAAEQAqACyBgMAK7Q+BAAuBCuwGC+0JwQALgQrsCsvtDUEAC4EK7A6L7RBBAAuBCsBsEUvsCHWtC4HABIEK7IhLgors0AhAAkrsC4QsS8BK7Q7BwASBCuyOy8KK7NAOw8JK7FGASuxLiERErIYJys5OTmwLxGwNTmwOxKwOjkAsSsnERKyGgAgOTk5sDURsCE5sDoSsC45sEERsC85sD4StggPMDQ7IkQkFzkwMTc0EjcSACEyFzIeBBUUBgIHAgAFBiMiJyIuAzcBEQYCExYzICQ3BQYECQERDgIHEyE+ATchNwEmIyIHEyE2E1KMgsUCVAFM18QCEQYMBAQRRjiV/d3+sm1c8r4CFQYMBC0BmI/wArrFARkBzpr8mSD+pAGLAfF3738MLwNWIZ0+/Y8MAui4yabBMQJKbRoQpgGlsAEKAS8+BgIICA0IKov+/XH+0f5sNxA7CAMKECUBGwJSh/5H/rA3x4sBFPABRgFaAh0lg2QV/ZQXxHU/AgI6Mv3i3wEUAAAAAAMAOQLsAuEFkwALABUAIQCoALAJL7QPBABrBCuwFi+wHTOxFwTpsBsyshYXCiuzQBYgCSuyFxYKK7NAFxkJK7AUL7QDBACKBCsBsCIvsADWtA0HABIEK7ANELEgASuwGDK0HwcAEgQrsBoysh8gCiuzQB8dCSuyIB8KK7NAIBYJK7AfELESASu0BgcAEgQrsSMBK7EfIBESswkPFAMkFzkAsRYPERKwETmwFxGxBgA5ObAUErASOTAxEzQ2MzIWFRQGIyImEhQWMzI2NCYjIgM1MzUzFTMVIxUjNTnJi43Hxo6LyTykdHekpHd1XLM/sLA/BD+LyciMjcbGAQLppqbppP7JP7KyP7CwAAADADkC7ALhBZMACwAVABkAYgCwCS+0DwQAawQrsBYvsRcE6bAUL7QDBACKBCsBsBovsADWtA0HABIEK7ANELESASu0BgcAEgQrsRsBK7ESDRESswkDFhgkFzkAsRYPERKwETmwFxGxBgA5ObAUErASOTAxEzQ2MzIWFRQGIyImEhQWMzI2NCYjIgM1IRU5yYuNx8aOi8k8pHR3pKR3dVwBogQ/i8nIjI3GxgEC6aam6aT+yT8/AAAAAQAAAAUZmfAh7EhfDzz1AB8IAAAAAADLrGJaAAAAAMusYlr/df4ZCFIFqgAAAAgAAgAAAAAAAAABAAAFqv3xAAAIo/91/1EIUgABAAAAAAAAAAAAAAAAAAAAeQQAAAAAAAAAAqoAAAIAAAACTQC6ArAAgQO4ADUDuAA7BRgAdQWjAFgBhQBtAmIAWgJiACsC8wBcBGYAewHCAFgCtABSAcIAdQKVAB8DuABQA7gAtgO4AGoDuABaA7gAOQO4AG8DuABaA7gAaAO4AF4DuABmAeMAjwHjAH8EZgCFBGYAewRmAK4DegBeBygAeQWPAAQEtAAdBSsATAWbAB0EZAAMA9AADAWPAEIF1wAdAmAAHQKT/3UFGAAdBDUAGQa2ACEFlwAUBZ0ATAQ/ABkFnQBMBLIAGQPhADcExgAGBUkADAU3AAIHoQAEBUcABASZAAIE1ABUAtkA3QJLABcC2QBCBCQA5QPjAAgDIgDFA6cASgPxAA0DbABMBAwAUAOTAEwCegAtBAAAQgRNABwCKwA1Ai3/ngQYAB0CHAAlBlEALQRWAC0ECABUBCYACAQGAEgC+QAtAx4AYgKHADMEPwAtA/kADAX5AAwD6wAhBB4AGQNkAEwCNwAdAaMApgI3ABQDlwA1AgAAAAK0AFIC1QAABaoAAALVAAAFqgAAAeMAAAFqAAAA8QAAAPEAAAC1AAABIgAAAFAAAAK0AFICtABSArQAUgSjAFIIowBSASIAAAFqAAADdQAACBwAUgMaADkAOQAAAAAAbABsAGwAbAC8ARYB9AMqA+YEsgTmBRQFQAWyBg4GQgZsBpgGsgcOB14H5Ah2COwJggnqCjQKsAsYC1ALlgu8C/IMGgywDYAOAg6cDwYPfBBAEPQRjBJEEqQTEBPAFD4VGBXEFiIWtBdMGAgYqBksGcgaLhriG54cNByuHOIdGh1UHYAdoh3SHqAfNB+UIEYgsiE2Ii4i5iN0JAAksCUQJgwmtCcGJ7QoXCjmKZAqCiqyKyYrzCyCLQotei3oLgYudC64Lrgu4i7iLuIu4i7iLuIu4i7iLuIu4i7iLuIvDC82L2Avhi+sL6wvrC+6MIgxDjFqAAAAAQAAAHoAaAAHAAAAAAACAAEAAgAWAAABAAGZAAAAAAAAAAgAZgADAAEECQAAAi4AAAADAAEECQABAB4CLgADAAEECQACAA4CTAADAAEECQADAA4CWgADAAEECQAEAC4CaAADAAEECQAFABwClgADAAEECQAGABgCsgADAAEECQDIAG4CygBMAGkAbgB1AHgAIABMAGkAYgBlAHIAdABpAG4AZQAgAGIAeQAgAFAAaABpAGwAaQBwAHAAIABIAC4AIABQAG8AbABsACwACgBPAHAAZQBuACAARgBvAG4AdAAgAHUAbgBkAGUAcgAgAFQAZQByAG0AcwAgAG8AZgAgAGYAbwBsAGwAbwB3AGkAbgBnACAARgByAGUAZQAgAFMAbwBmAHQAdwBhAHIAZQAgAEwAaQBjAGUAbgBzAGUAcwA6AAoARwBQAEwAIAAoAEcAZQBuAGUAcgBhAGwAIABQAHUAYgBsAGkAYwAgAEwAaQBjAGUAbgBzAGUAKQAgAHcAaQB0AGgAIABmAG8AbgB0AC0AZQB4AGMAZQBwAHQAaQBvAG4AIABhAG4AZAAgAE8ARgBMACAAKABPAHAAZQBuACAARgBvAG4AdAAgAEwAaQBjAGUAbgBzAGUAKQAuAAoAQwByAGUAYQB0AGUAZAAgAHcAaQB0AGgAIABGAG8AbgB0AEYAbwByAGcAZQAgACgAaAB0AHQAcAA6AC8ALwBmAG8AbgB0AGYAbwByAGcAZQAuAHMAZgAuAG4AZQB0ACkACgBTAGUAcAB0ACAAMgAwADAAMwAsACAAMgAwADAANAAsACAAMgAwADAANQAsACAAMgAwADAANgAsACAAMgAwADAANwAsACAAMgAwADAAOAAsACAAMgAwADAAOQAsACAAMgAwADEAMAAsACAAMgAwADEAMQBMAGkAbgB1AHgAIABMAGkAYgBlAHIAdABpAG4AZQBSAGUAZwB1AGwAYQByAHcAZQBiAGYAbwBuAHQATABpAG4AdQB4ACAATABpAGIAZQByAHQAaQBuAGUAIABSAGUAZwB1AGwAYQByAFYAZQByAHMAaQBvAG4AIAA1AC4AMQAuADMAIABMAGkAbgBMAGkAYgBlAHIAdABpAG4AZQBUAGgAaQBzACAAZgBvAG4AdAAgAHcAYQBzACAAZwBlAG4AZQByAGEAdABlAGQAIABiAHkAIAB0AGgAZQAgAEYAbwBuAHQAIABTAHEAdQBpAHIAcgBlAGwAIABHAGUAbgBlAHIAYQB0AG8AcgAuAAAAAgAAAAAAAP8PAFEAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERALIAswESARMBFAEVARYBFwd1bmkwMEEwB3VuaTAwQUQHdW5pMjAwMAd1bmkyMDAxB3VuaTIwMDIHdW5pMjAwMwd1bmkyMDA0B3VuaTIwMDUHdW5pMjAwNgd1bmkyMDA3B3VuaTIwMDgHdW5pMjAwOQd1bmkyMDBBB3VuaTIwMTAHdW5pMjAxMQpmaWd1cmVkYXNoB3VuaTIwMkYHdW5pMjA1Rgd1bmlFMDAwB3VuaUUxMzgHdW5pRTE4OAd1bmlFMTg5AAAAuAH/hbABjQBLsAhQWLEBAY5ZsUYGK1ghsBBZS7AUUlghsIBZHbAGK1xYALAEIEWwAytEsAUgRbIEZwIrsAMrRAGwBiBFsAMrRLAHIEWyBmQCK7EDRnYrRLAIIEW6AAZ//wACK7EDRnYrRFmwFCsAAA==) format('truetype'), url('linlibertine_r-webfont.svg#LinuxLibertineRegular') format('svg'); + font-weight: normal; + font-style: normal; +} + +@font-face { + /* This declaration targets Internet Explorer */ + font-family: 'LinuxBiolinumKeyboard'; + src: url('linbiolinum_k-webfont.eot'); +} + +@font-face { + /* This declaration targets everything else */ + font-family: 'LinuxBiolinumKeyboard'; + src: url(//:) format('no404'), url(data:font/woff;charset=utf-8;base64,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) format('woff'), url(data:font/truetype;charset=utf-8;base64,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AAEAAAC7BQEAEwAAAAAAAgABAAIAFgAAAQACEgAAAAAAAAAIAGYAAwABBAkAAAIuAAAAAwABBAkAAQAuAi4AAwABBAkAAgAOAlwAAwABBAkAAwAOAmoAAwABBAkABAA+AngAAwABBAkABQAcArYAAwABBAkABgAYAtIAAwABBAkAyABuAuoATABpAG4AdQB4ACAATABpAGIAZQByAHQAaQBuAGUAIABiAHkAIABQAGgAaQBsAGkAcABwACAASAAuACAAUABvAGwAbAAsAAoATwBwAGUAbgAgAEYAbwBuAHQAIAB1AG4AZABlAHIAIABUAGUAcgBtAHMAIABvAGYAIABmAG8AbABsAG8AdwBpAG4AZwAgAEYAcgBlAGUAIABTAG8AZgB0AHcAYQByAGUAIABMAGkAYwBlAG4AcwBlAHMAOgAKAEcAUABMACAAKABHAGUAbgBlAHIAYQBsACAAUAB1AGIAbABpAGMAIABMAGkAYwBlAG4AcwBlACkAIAB3AGkAdABoACAAZgBvAG4AdAAtAGUAeABjAGUAcAB0AGkAbwBuACAAYQBuAGQAIABPAEYATAAgACgATwBwAGUAbgAgAEYAbwBuAHQAIABMAGkAYwBlAG4AcwBlACkALgAKAEMAcgBlAGEAdABlAGQAIAB3AGkAdABoACAARgBvAG4AdABGAG8AcgBnAGUAIAAoAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABmAG8AcgBnAGUALgBzAGYALgBuAGUAdAApAAoAUwBlAHAAdAAgADIAMAAwADMALAAgADIAMAAwADQALAAgADIAMAAwADUALAAgADIAMAAwADYALAAgADIAMAAwADcALAAgADIAMAAwADgALAAgADIAMAAwADkALAAgADIAMAAxADAALAAgADIAMAAxADEATABpAG4AdQB4ACAAQgBpAG8AbABpAG4AdQBtACAASwBlAHkAYgBvAGEAcgBkAFIAZQBnAHUAbABhAHIAdwBlAGIAZgBvAG4AdABMAGkAbgB1AHgAIABCAGkAbwBsAGkAbgB1AG0AIABLAGUAeQBiAG8AYQByAGQAIABSAGUAZwB1AGwAYQByAFYAZQByAHMAaQBvAG4AIAAwAC4ANgAuADEAIABMAGkAbgBCAGkAbwBsAGkAbgB1AG0ASwBUAGgAaQBzACAAZgBvAG4AdAAgAHcAYQBzACAAZwBlAG4AZQByAGEAdABlAGQAIABiAHkAIAB0AGgAZQAgAEYAbwBuAHQAIABTAHEAdQBpAHIAcgBlAGwAIABHAGUAbgBlAHIAYQB0AG8AcgAuAAAAAgAAAAAAAP8PAFEAAAAAAAAAAAAAAAAAAAAAAAAAAAC7AAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERALIAswESARMBFAEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAEtAS4BLwEwATEBMgEzATQBNQE2ATcBOAE5AToBOwE8AT0BPgE/AUABQQFCAUMBRAFFAUYBRwFIAUkBSgFLAUwBTQFOAU8BUAFRAVIBUwFUAVUBVgFXAVgHdW5pMDBBMAd1bmkwMEFEB3VuaTIwMDAHdW5pMjAwMQd1bmkyMDAyB3VuaTIwMDMHdW5pMjAwNAd1bmkyMDA1B3VuaTIwMDYHdW5pMjAwNwd1bmkyMDA4B3VuaTIwMDkHdW5pMjAwQQd1bmkyMDEwB3VuaTIwMTEKZmlndXJlZGFzaAd1bmkyMDJGB3VuaTIwNUYHdW5pRTAwMAd1bmlFMTMxB3VuaUUxMzIHdW5pRTEzMwd1bmlFMTM0B3VuaUUxMzUHdW5pRTEzOAd1bmlFMTM5B3VuaUUxM0EHdW5pRTEzQwd1bmlFMTNEB3VuaUUxNjgHdW5pRTE2RQd1bmlFMTcwB3VuaUUxNzEHdW5pRTE3Mgd1bmlFMTczB3VuaUUxNzQHdW5pRTE3NQd1bmlFMTc2B3VuaUUxNzcHdW5pRTE3OAd1bmlFMTc5B3VuaUUxN0EHdW5pRTE3Qgd1bmlFMTdDB3VuaUUxN0QHdW5pRTE3RQd1bmlFMTdGB3VuaUUxODAHdW5pRTE4MQd1bmlFMTgyB3VuaUUxODMHdW5pRTE4NAd1bmlFMTg1B3VuaUUxODYHdW5pRTE4Nwd1bmlFMTg4B3VuaUUxODkHdW5pRTE4QQd1bmlFMThCB3VuaUUxOEMHdW5pRTE4RQd1bmlFMTkwB3VuaUUxOTEHdW5pRTE5Mgd1bmlFMTkzB3VuaUUxOTQHdW5pRTE5NQd1bmlFMTk2B3VuaUUxOTgHdW5pRTE5OQd1bmlFMTlBB3VuaUUxOUIHdW5pRTFBMAd1bmlFMUExB3VuaUUxQTIHdW5pRTFBMwd1bmlFMUE0B3VuaUUxQTUHdW5pRTFBNgd1bmlFMUE3B3VuaUUxQTgHdW5pRTFBOQd1bmlFMUFBB3VuaUUxQUIHdW5pRTFBQwd1bmlFMUFEB3VuaUUxQUUAuAH/hbABjQBLsAhQWLEBAY5ZsUYGK1ghsBBZS7AUUlghsIBZHbAGK1xYALABIEWwAytEsAIgRbIBFAIrsAMrRAGwAyBFsAMrRLAEIEWyAxACK7EDRnYrRLAFIEW6AAN//wACK7EDRnYrRFmwFCsAAA==) format('truetype'), url('linbiolinum_k-webfont.svg#LinuxBiolinumKeyboardRegular') format('svg'); + font-weight: normal; + font-style: normal; +} + +@font-face { + /* This declaration targets Internet Explorer */ + font-family: 'LinuxBiolinum'; + src: url('linbiolinum_r-webfont.eot'); +} + +@font-face { + /* This declaration targets everything else */ + font-family: 'LinuxBiolinum'; + src: url(//:) format('no404'), url(data:font/woff;charset=utf-8;base64,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) format('woff'), url(data:font/truetype;charset=utf-8;base64,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) format('truetype'), url('linbiolinum_r-webfont.svg#LinuxBiolinumRegular') format('svg'); + font-weight: normal; + font-style: normal; +} diff --git a/docs/4.8/repositories.html b/docs/4.8/repositories.html new file mode 100644 index 0000000..2edeb66 --- /dev/null +++ b/docs/4.8/repositories.html @@ -0,0 +1,155 @@ + + + + + + +i3: Debian and Ubuntu repositories + + + + + + + +
+

i3 - improved tiling WM

+ +
+
+ +
+

1. When should you use our repositories?

+
+

In general, you should use the repositories of your distribution. Adding +third-party repositories to your /etc/sources.list has security implications +and makes your apt-get update take longer. However, in some cases, using our +repositories makes sense:

+
+
+You are using Debian stable +
+
+

+ The latest version of i3 will be in Debian testing quite soon. The version + in Debian stable can be old, however (we cannot update it after stable has + been released). The best way is to add Debian testing and tell apt to + prefer Debian stable. You should not use our repository. + Alternatively, you can also use + stable-backports (e.g. wheezy-backports for + Debian wheezy). +

+
+
+You are using Ubuntu +
+
+

+ Only a handful of packages are maintained by Ubuntu developers. The rest is + synchronized periodically from Debian, every 6 months. Therefore, Ubuntu + often includes old versions of i3. You should use our Ubuntu repository. +

+
+
+You want the latest i3 development version +
+
+

+ If you are using Debian (Debian-derived systems might work, too) or Ubuntu + and want the latest development version of i3, you should use our Debian + repository. +

+
+
+
+
+
+

2. Ubuntu repository

+
+
+

2.1. Stable releases

+

This Ubuntu repository is provided by sur5r and contains the latest stable +release of i3. To use it, run the following commands:

+
+
+
# echo "deb http://debian.sur5r.net/i3/ $(lsb_release -c -s) universe" >> /etc/apt/sources.list
+# apt-get update
+# apt-get --allow-unauthenticated install sur5r-keyring
+# apt-get update
+# apt-get install i3
+
+

The following Ubuntu versions are currently available: oneiric, precise, quantal, +raring, saucy, trusty.

+
+
+

2.2. Development releases

+

This Ubuntu repository contains packages which are automatically built a few +minutes after every commit. To use it, run the following commands:

+
+
+
# echo 'deb http://build.i3wm.org/ubuntu/trusty trusty main' >> /etc/apt/sources.list
+# apt-get update
+# apt-get --allow-unauthenticated install i3-autobuild-keyring
+# apt-get update
+# apt-get install i3
+
+

Development versions are only available for the latest version of Ubuntu, which +is trusty at the moment.

+
+
+
+
+

3. Debian repository

+
+

Our Debian repository contains packages which are automatically built a few +minutes after every commit. To use it, run the following commands:

+
+
+
# echo 'deb http://build.i3wm.org/debian/sid sid main' > /etc/apt/sources.list.d/i3-autobuild.list
+# apt-get update
+# apt-get --allow-unauthenticated install i3-autobuild-keyring
+# apt-get update
+# apt-get install i3
+
+
+
+
+

4. Preferring the autobuilder version of i3

+
+

On installations where you have multiple sources (stable and testing, or +testing and unstable for example), apt-get install i3 might not get you the +autobuilder version.

+

To ensure that the autobuilt i3 packages will be preferred to the packages of +your distribution, create the file +/etc/apt/preferences.d/00-i3-autobuild.pref with the following contents:

+
+
+
Package: i3*
+Pin: origin "build.i3wm.org"
+Pin-Priority: 1001
+
+

Then, run apt-get update and install i3.

+
+
+
+

+ + + diff --git a/docs/4.8/single_terminal.png b/docs/4.8/single_terminal.png new file mode 100644 index 0000000000000000000000000000000000000000..4fe918cd2089f16a3b72b9291f655b57b0adefbf GIT binary patch literal 3382 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 B=(_*_ literal 0 HcmV?d00001 diff --git a/docs/4.8/stacklimit.png b/docs/4.8/stacklimit.png new file mode 100644 index 0000000000000000000000000000000000000000..ab5bed7a6c4a424bdf7f1ed5607d875f99668dcf GIT binary patch literal 4988 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 literal 0 HcmV?d00001 diff --git a/docs/4.8/testsuite.html b/docs/4.8/testsuite.html new file mode 100644 index 0000000..ca7b75f --- /dev/null +++ b/docs/4.8/testsuite.html @@ -0,0 +1,659 @@ + + + + + + +i3: i3 testsuite + + + + + + + +
+

i3 - improved tiling WM

+ +
+
+ +
+
+

This document explains how the i3 testsuite works, how to use it and extend it. +It is targeted at developers who not necessarily have been doing testing before +or have not been testing in Perl before. In general, the testsuite is not of +interest for end users.

+
+
+
+

1. Introduction

+
+

The i3 testsuite is a collection of files which contain testcases for various +i3 features. Some of them test if a certain workflow works correctly (moving +windows, focus behaviour, …). Others are regression tests and contain code +which previously made i3 crash or lead to unexpected behaviour. They then check +if i3 still runs (meaning it did not crash) and if it handled everything +correctly.

+

The goal of having these tests is to automatically find problems and to +automatically get a feel for whether a change in the source code breaks any +existing feature. After every modification of the i3 sourcecode, the developer +should run the full testsuite. If one of the tests fails, the corresponding +problem should be fixed (or, in some cases, the testcase has to be modified). +For every bugreport, a testcase should be written to test the correct +behaviour. Initially, it will fail, but after fixing the bug, it will pass. +This ensures (or increases the chance) that bugs which have been fixed once +will never be found again.

+

Also, when implementing a new feature, a testcase might be a good way to be +able to easily test if the feature is working correctly. Many developers will +test manually if everything works. Having a testcase not only helps you with +that, but it will also be useful for every future change.

+
+
+
+

2. Relevant documentation

+
+

Apart from this document, you should also have a look at:

+
    +
  1. +

    +The "Modern Perl" book, which can be found at + http://onyxneon.com/books/modern_perl/modern_perl_a4.pdf +

    +
  2. +
  3. +

    +The latest Perl documentation of the "i3test" (general testcase setup) and + "i3test::Test" (additional test instructions) modules: + http://build.i3wm.org/docs/lib-i3test.html respectively + http://build.i3wm.org/docs/lib-i3test-test.html +

    +
  4. +
  5. +

    +The latest documentation on i3’s IPC interface: + http://build.i3wm.org/docs/ipc.html +

    +
  6. +
+
+
+
+

3. Implementation

+
+

For several reasons, the i3 testsuite has been implemented in Perl:

+
    +
  1. +

    +Perl has a long tradition of testing. Every popular/bigger Perl module which + you can find on CPAN will not only come with documentation, but also with + tests. Therefore, the available infrastructure for tests is comprehensive. + See for example the excellent http://search.cpan.org/perldoc?Test::More + and the referenced http://search.cpan.org/perldoc?Test::Tutorial. +

    +
  2. +
  3. +

    +Perl is widely available and has a well-working package infrastructure. +

    +
  4. +
  5. +

    +The author is familiar with Perl :). +

    +
  6. +
  7. +

    +It is a good idea to use a different language for the tests than the + implementation itself. +

    +
  8. +
+

Please do not start programming language flamewars at this point.

+
+

3.1. Installing the dependencies

+

As usual with Perl programs, the testsuite ships with a Makefile.PL. +This file specifies which Perl modules the testsuite depends on and can be used +to install all of them.

+

Perl modules are distributed via CPAN, and there is the official, standard CPAN +client, simply called cpan. It comes with every Perl installation and can be +used to install the testsuite. Many users prefer to use the more modern +cpanminus instead, though (because it asks no questions and just works):

+
+
Installing testsuite dependencies using cpanminus (preferred)
+
+
$ cd ~/i3/testcases
+$ sudo apt-get install cpanminus
+$ sudo cpanm .
+
+

If you don’t want to use cpanminus for some reason, the same works with cpan:

+
+
Installing testsuite dependencies using cpan
+
+
$ cd ~/i3/testcases
+$ sudo cpan .
+
+

In case you don’t have root permissions, you can also install into your home +directory, see http://michael.stapelberg.de/cpan/

+
+
+

3.2. Mechanisms

+
+

3.2.1. Script: complete-run

+

The testcases are run by a script called complete-run.pl. It runs all +testcases by default, but you can be more specific and let it only run one or +more testcases. Also, it takes care of starting up a separate instance of i3 +with an appropriate configuration file and creates a folder for each run +containing the appropriate i3 logfile for each testcase. The latest folder can +always be found under the symlink latest/. Unless told differently, it will +run the tests on a separate X server instance (using the Xdummy script).

+
+
Example invocation of complete-run.pl+
+
+
$ cd ~/i3/testcases
+
+$ ./complete-run.pl
+# output omitted because it is very long
+All tests successful.
+Files=78, Tests=734, 27 wallclock secs ( 0.38 usr  0.48 sys + 17.65 cusr  3.21 csys = 21.72 CPU)
+Result: PASS
+
+$ ./complete-run.pl t/04-floating.t
+[:3] i3 startup: took 0.07s, status = 1
+[:3] Running t/04-floating.t with logfile testsuite-2011-09-24-16-06-04-4.0.2-226-g1eb011a/i3-log-for-04-floating.t
+[:3] t/04-floating.t finished
+[:3] killing i3
+output for t/04-floating.t:
+ok 1 - use X11::XCB::Window;
+ok 2 - The object isa X11::XCB::Window
+ok 3 - Window is mapped
+ok 4 - i3 raised the width to 75
+ok 5 - i3 raised the height to 50
+ok 6 - i3 did not map it to (0x0)
+ok 7 - The object isa X11::XCB::Window
+ok 8 - i3 let the width at 80
+ok 9 - i3 let the height at 90
+ok 10 - i3 mapped it to x=1
+ok 11 - i3 mapped it to y=18
+ok 12 - The object isa X11::XCB::Window
+ok 13 - i3 let the width at 80
+ok 14 - i3 let the height at 90
+1..14
+
+All tests successful.
+Files=1, Tests=14,  0 wallclock secs ( 0.01 usr  0.00 sys +  0.19 cusr  0.03 csys =  0.23 CPU)
+Result: PASS
+
+$ less latest/i3-log-for-04-floating.t
+
+

If your attempt to run the tests with a bare call to ./complete-run.pl fails, try this:

+
+
+
$ ./complete-run.pl --parallel=1 --keep-xdummy-output
+
+

One common cause of failures is not having the X dummy server module +installed. Under Debian and Ubuntu this is the package +xserver-xorg-video-dummy.

+
+
+

3.2.2. IPC interface

+

The testsuite makes extensive use of the IPC (Inter-Process Communication) +interface which i3 provides. It is used for the startup process of i3, for +terminating it cleanly and (most importantly) for modifying and getting the +current state (layout tree).

+

See [http://i3wm.org/docs/ipc.html] for documentation on the IPC interface.

+
+
+

3.2.3. X11::XCB

+

In order to open new windows, change attributes, get events, etc., the +testsuite uses X11::XCB, a new (and quite specific to i3 at the moment) Perl +module which uses the XCB protocol description to generate Perl bindings to +X11. They work in a very similar way to libxcb (which i3 uses) and provide +relatively high-level interfaces (objects such as X11::XCB::Window) aswell as +access to the low-level interface, which is very useful when testing a window +manager.

+
+
+
+

3.3. Filesystem structure

+

In the git root of i3, the testcases live in the folder testcases. This +folder contains the complete-run.pl and Xdummy scripts and a base +configuration file which will be used for the tests. The different testcases +(their file extension is .t, not .pl) themselves can be found in the +conventionally named subfolder t:

+
+
Filesystem structure
+
+
├── testcases
+│   ├── complete-run.pl
+│   ├── i3-test.config
+│   ├── lib
+│   │   ├── i3test.pm
+│   │   ├── SocketActivation.pm
+│   │   └── StartXDummy.pm
+│   ├── t
+│   │   ├── 00-load.t
+│   │   ├── 01-tile.t
+│   │   ├── 02-fullscreen.t
+│   │   ├── ...
+│   │   ├── omitted for brevity
+│   │   ├── ...
+│   │   └── 74-regress-focus-toggle.t
+│   └── Xdummy
+
+
+
+
+
+

4. Anatomy of a testcase

+
+

Learning by example is definitely a good strategy when you are wondering how to +write a testcase. Let’s take t/11-goto.t as an easy example and go through it +step by step:

+
+
t/11-goto.t: Boilerplate
+
+
#!perl
+# vim:ts=4:sw=4:expandtab
+
+use i3test;
+use File::Temp;
+
+my $x = X11::XCB::Connection->new;
+
+

This is what we call boilerplate. It exists at the top of every test file (to +some extent). The first line is the shebang, which specifies that this file is +a Perl script. The second line contains VIM specific settings on how to +edit/format this file (use spaces instead of tabs, indent using 4 spaces). +Afterwards, the i3test module is used. This module contains i3 testsuite +specific functions which you are strongly encouraged to use. They make writing +testcases a lot easier and will make it easier for other people to read your +tests.

+

The next line uses the File::Temp module. This is specific to this testcase, +because it needs to generate a temporary name during the test. Many testcases +use only the i3test module.

+

The last line opens a connection to X11. You might or might not need this in +your testcase, depending on whether you are going to open windows (etc.) or +only use i3 commands.

+
+
t/11-goto.t: Setup
+
+
my $tmp = fresh_workspace;
+
+cmd 'split h';
+
+

The first line calls i3test’s fresh_workspace function which looks for a +currently unused workspace, switches to it, and returns its name. The variable +$tmp will end up having a value such as "/tmp/87kBVcHbA9". Note that this +is not (necessarily) a valid path, it’s just a random workspace name.

+

So, now that we are on a new workspace, we ensure that the workspace uses +horizontal orientation by issuing the split h command (see the i3 User’s +Guide for a list of commands). This is not strictly necessary, but good style. +In general, the cmd function executes the specified i3 command by using the +IPC interface and returns once i3 acknowledged the command.

+
+
t/11-goto.t: Setup
+
+
#####################################################################
+# Create two windows and make sure focus switching works
+#####################################################################
+
+my $top = open_window($x);
+my $mid = open_window($x);
+my $bottom = open_window($x);
+
+

In every major section of a testcase, you should put a comment like the one +above. This makes it immediately clear how the file is structured.

+

The open_window function opens a standard window, which will then be put into +tiling mode by i3. If you want a floating window, use the +open_floating_window function. These functions accept the same parameters as +X11::XCB::Window→new, see the i3test documentation at TODO.

+
+
t/11-goto.t: Helper function
+
+
#
+# Returns the input focus after sending the given command to i3 via IPC
+# and syncing with i3
+#
+sub focus_after {
+    my $msg = shift;
+
+    cmd $msg;
+    sync_with_i3 $x;
+    return $x->input_focus;
+}
+
+

This section defines a helper function which will be used over and over in this +testcase. If you have code which gets executed more than once or twice +(depending on the length of your test, use your best judgement), please put it +in a function. Tests should be short, concise and clear.

+

The focus_after function executes a command and returns the X11 focus after +the command was executed. The sync_with_i3 command makes sure that i3 could +push its state to X11. See [i3_sync] to learn how this works exactly.

+
+
t/11-goto.t: Test assumptions
+
+
$focus = $x->input_focus;
+is($focus, $bottom->id, "Latest window focused");
+
+$focus = focus_after('focus left');
+is($focus, $mid->id, "Middle window focused");
+
+

Now, we run the first two real tests. They use Test::More's is function, +which compares two values and prints the differences if they are not the same. +After the arguments, we supply a short comment to indicate what we are testing +here. This makes it vastly more easy for the developer to spot which testcase +is the problem in case one fails.

+

The first test checks that the most recently opened window is focused. +Afterwards, the command focus left is issued and it is verified that the +middle window now has focus.

+

Note that this is not a comprehensive test of the focus command — we would +have to test wrapping, focus when using a more complex layout, focusing the +parent/child containers, etc. But that is not the point of this testcase. +Instead, we just want to know if $x→input_focus corresponds with what we are +expecting. If not, something is completely wrong with the test environment and +this trivial test will fail.

+
+
t/11-goto.t: Test that the feature does not work (yet)
+
+
#####################################################################
+# Now goto a mark which does not exist
+#####################################################################
+
+my $random_mark = mktemp('mark.XXXXXX');
+
+$focus = focus_after(qq|[con_mark="$random_mark"] focus|);
+is($focus, $mid->id, "focus unchanged");
+
+

Syntax hint: The qq keyword is the interpolating quote operator. It lets you +chose a quote character (in this case the | character, a pipe). This makes +having double quotes in our string easy.

+

In this new major section, a random mark (mark is an identifier for a window, +see "VIM-like marks" in the i3 User’s Guide) will be generated. Afterwards, we +test that trying to focus that mark will not do anything. This is important: Do +not only test that using a feature has the expected outcome, but also test that +using it without properly initializing it does no harm. This command could for +example have changed focus anyways (a bug) or crash i3 (obviously a bug).

+
+
t/11-goto.t: Test that the feature does work
+
+
cmd "mark $random_mark";
+
+$focus = focus_after('focus left');
+is($focus, $top->id, "Top window focused");
+
+$focus = focus_after(qq|[con_mark="$random_mark"] focus|);
+is($focus, $mid->id, "goto worked");
+
+

Remember: Focus was on the middle window (we verified that earlier in "Test +assumptions"). We now mark the middle window with our randomly generated mark. +Afterwards, we switch focus away from the middle window to be able to tell if +focusing it via its mark will work. If the test works, the goto command seems +to be working.

+
+
t/11-goto.t: Test corner case
+
+
# check that we can specify multiple criteria
+
+$focus = focus_after('focus left');
+is($focus, $top->id, "Top window focused");
+
+$focus = focus_after(qq|[con_mark="$random_mark" con_mark="$random_mark"] focus|);
+is($focus, $mid->id, "goto worked");
+
+

Now we test the same feature, but specifying the mark twice in the command. +This should have no effect, but let’s be sure: test it and see if things go +wrong.

+
+
t/11-goto.t: Test second code path
+
+
#####################################################################
+# Check whether the focus command will switch to a different
+# workspace if necessary
+#####################################################################
+
+my $tmp2 = fresh_workspace;
+
+is(focused_ws(), $tmp2, 'tmp2 now focused');
+
+cmd qq|[con_mark="$random_mark"] focus|;
+
+is(focused_ws(), $tmp, 'tmp now focused');
+
+

This part of the test checks that focusing windows by mark works across +workspaces. It uses i3test’s focused_ws function to get the current +workspace.

+
+
t/11-goto.t: Test second code path
+
+
done_testing;
+
+

The end of every testcase has to contain the done_testing line. This tells +complete-run.pl that the test was finished successfully. If it does not +occur, the test might have crashed during execution — some of the reasons why +that could happen are bugs in the used modules, bugs in the testcase itself or +an i3 crash resulting in the testcase being unable to communicate with i3 via +IPC anymore.

+
+
+
+

5. Appendix A: The i3 sync protocol

+
+

Consider the following situation: You open two windows in your testcase, then +you use focus left and want to verify that the X11 focus has been updated +properly. Sounds simple, right? Let’s assume you use this straight-forward +implementation:

+
+
Racey focus testcase
+
+
my $left = open_window($x);
+my $right = open_window($x);
+cmd 'focus left';
+is($x->input_focus, $left->id, 'left window focused');
+
+

However, the test fails. Sometimes. Apparantly, there is a race condition in +your test. If you think about it, this is because you are using two different +pieces of software: You tell i3 to update focus, i3 confirms that, and then you +ask X11 to give you the current focus. There is a certain time i3 needs to +update the X11 state. If the testcase gets CPU time before X11 processed i3’s +requests, the test will fail.

+
+
+Diagram of the race condition +
+
Figure 1. Diagram of the race condition
+
+

One way to "solve" this would be to add sleep 0.5; after the cmd call. +After 0.5 seconds it should be safe to assume that focus has been updated, +right?

+

In practice, this usually works. However, it has several problems:

+
    +
  1. +

    +This is obviously not a clean solution, but a workaround. Ugly. +

    +
  2. +
  3. +

    +On very slow machines, this might not work. Unlikely, but in different + situations (a delay to wait for i3 to startup) the necessary time is much + harder to guess, even for fast machines. +

    +
  4. +
  5. +

    +This wastes a lot of time. Usually, your computer is much faster than 0.5s + to update the status. However, sometimes, it might take 0.4s, so we can’t + make it sleep 0.1. +

    +
  6. +
+

To illustrate how grave the problem with wasting time actually is: Before +removing all sleeps from the testsuite, a typical run using 4 separate X +servers took around 50 seconds on my machine. After removing all the sleeps, +we achieved times of about 25 seconds. This is very significant and influences +the way you think about tests — the faster they are, the more likely you are +to check whether everything still works quite often (which you should).

+

What I am trying to say is: Delays adds up quickly and make the test suite +less robust.

+

The real solution for this problem is a mechanism which I call "the i3 sync +protocol". The idea is to send a request (which does not modify state) via X11 +to i3 which will then be answered. Due to the request’s position in the event +queue (after all previous events), you can be sure that by the time you +receive the reply, all other events have been dealt with by i3 (and, more +importantly, X11).

+
+
+Diagram of the i3 sync solution +
+
Figure 2. Diagram of the i3 sync solution
+
+
+

5.1. Implementation details

+

The client which wants to sync with i3 initiates the protocol by sending a +ClientMessage to the X11 root window:

+
+
Send ClientMessage
+
+
# Generate a ClientMessage, see xcb_client_message_t
+my $msg = pack "CCSLLLLLLL",
+    CLIENT_MESSAGE, # response_type
+    32,     # format
+    0,      # sequence
+    $root,  # destination window
+    $x->atom(name => 'I3_SYNC')->id,
+
+    $_sync_window->id,    # data[0]: our own window id
+    $myrnd, # data[1]: a random value to identify the request
+    0,
+    0,
+    0;
+
+# Send it to the root window -- since i3 uses the SubstructureRedirect
+# event mask, it will get the ClientMessage.
+$x->send_event(0, $root, EVENT_MASK_SUBSTRUCTURE_REDIRECT, $msg);
+
+

i3 will then reply with the same ClientMessage, sent to the window specified in +data[0]. In the reply, data[0] and data[1] are exactly the same as in the +request. You should use a random value in data[1] and check that you received +the same one when getting the reply.

+
+
+
+
+

6. Appendix B: Socket activation

+
+

Socket activation is a mechanism which was made popular by systemd, an init +replacement. It basically describes creating a listening socket before starting +a program. systemd will invoke the program only when an actual connection to +the socket is made, hence the term socket activation.

+

The interesting part of this (in the i3 context) is that you can very precisely +detect when the program is ready (finished its initialization).

+
+

6.1. Preparing the listening socket

+

complete-run.pl will create a listening UNIX socket which it will then pass +to i3. This socket will be used by i3 as an additional IPC socket, just like +the one it will create on its own. Passing the socket happens implicitly +because children will inherit the parent’s sockets when fork()ing and sockets +will continue to exist after an exec() call (unless CLOEXEC is set of course).

+

The only explicit things complete-run.pl has to do is setting the LISTEN_FDS +environment variable to the number of sockets which exist (1 in our case) and +setting the LISTEN_PID environment variable to the current process ID. Both +variables are necessary so that the program (i3) knows how many sockets it +should use and if the environment variable is actually intended for it. i3 will +then start looking for sockets at file descriptor 3 (since 0, 1 and 2 are used +for stdin, stdout and stderr, respectively).

+

The actual Perl code which sets up the socket, fork()s, makes sure the socket +has file descriptor 3 and sets up the environment variables follows (shortened +a bit):

+
+
Setup socket and environment
+
+
my $socket = IO::Socket::UNIX->new(
+    Listen => 1,
+    Local => $args{unix_socket_path},
+);
+
+my $pid = fork;
+if ($pid == 0) {
+    $ENV{LISTEN_PID} = $$;
+    $ENV{LISTEN_FDS} = 1;
+
+    # Only pass file descriptors 0 (stdin), 1 (stdout),
+    # 2 (stderr) and 3 (socket) to the child.
+    $^F = 3;
+
+    # If the socket does not use file descriptor 3 by chance
+    # already, we close fd 3 and dup2() the socket to 3.
+    if (fileno($socket) != 3) {
+        POSIX::close(3);
+        POSIX::dup2(fileno($socket), 3);
+    }
+
+    exec "/usr/bin/i3";
+}
+
+
+
+

6.2. Waiting for a reply

+

In the parent process, we want to know when i3 is ready to answer our IPC +requests and handle our windows. Therefore, after forking, we immediately close +the listening socket (i3 will handle this side of the socket) and connect to it +(remember, we are talking about a named UNIX socket) as a client. This connect +call will immediately succeed because the kernel buffers it. Then, we send a +request (of type GET_TREE, but that is not really relevant). Writing data to +the socket will also succeed immediately because, again, the kernel buffers it +(only up to a certain amount of data of course).

+

Afterwards, we just blockingly wait until we get an answer. In the child +process, i3 will setup the listening socket in its event loop. Immediately +after actually starting the event loop, it will notice a new client connecting +(the parent process) and handle its request. Since all initialization has been +completed successfully by the time the event loop is entered, we can now assume +that i3 is ready.

+
+
+

6.3. Timing and conclusion

+

A beautiful feature of this mechanism is that it does not depend on timing. It +does not matter when the child process gets CPU time or when the parent process +gets CPU time. On heavily loaded machines (or machines with multiple CPUs, +cores or unreliable schedulers), this makes waiting for i3 much more robust.

+

Before using socket activation, we typically used a sleep(1) and hoped that +i3 was initialized by that time. Of course, this breaks on some (slow) +computers and wastes a lot of time on faster computers. By using socket +activation, we decreased the total amount of time necessary to run all tests +(72 files at the time of writing) from > 100 seconds to 16 seconds. This makes +it significantly more attractive to run the test suite more often (or at all) +during development.

+

An alternative approach to using socket activation is polling for the existance +of the IPC socket and connecting to it. While this might be slightly easier to +implement, it wastes CPU time and is considerably uglier than this solution +:). After all, lib/SocketActivation.pm contains only 54 SLOC.

+
+
+
+
+

+ + + diff --git a/docs/4.8/tree-layout1.png b/docs/4.8/tree-layout1.png new file mode 100644 index 0000000000000000000000000000000000000000..ee69f1ab33f84ba594df749e45fabcaa97a4ce77 GIT binary patch literal 27856 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%0AAS)VcSGd^QdijL;;37`s8;(R8Kj}b^ko`vA$ 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 literal 0 HcmV?d00001 diff --git a/docs/4.8/tree-migrating.html b/docs/4.8/tree-migrating.html new file mode 100644 index 0000000..9949384 --- /dev/null +++ b/docs/4.8/tree-migrating.html @@ -0,0 +1,269 @@ + + + + + + +i3: Tree branch: Migrating + + + + + + + +
+

i3 - improved tiling WM

+ +
+
+ +
+

1. Introduction

+
+

The tree branch (referring to a branch of i3 in the git repository) is the new +version of i3. Due to the very deep changes and heavy refactoring of the source +source, we decided to develop it in a seperate branch (instead of using the +next/master-branch system like before).

+
+
+
+

2. Current status

+
+

Currently, the code is mostly working. Some of the i3 core developers have been +using the tree branch version for a few weeks now. So, if you are eager to try +out the new features and help us find bugs, give it a try!

+

At the same time, a word of warning is appropriate: This version of i3 might +crash unexpectedly, so please be careful with important data (do not work for +two days without saving…).

+
+
+
+

3. Getting the latest tree branch version

+
+

Check out the latest version:

+
+
+
$ git clone -b tree git://code.stapelberg.de/i3
+
+

Then build and install it (has the same dependencies as the latest stable i3 +version):

+
+
+
$ cd i3
+$ make
+$ sudo cp i3 /usr/bin/i3-tree
+
+

…and execute i3-tree instead of i3 in your Xsession.

+

IMPORTANT: Please note that configuration file compatibility is not yet done. +So, make sure you use/customize the provided i3.config file.

+
+
+
+

4. Tree

+
+

The most important change and reason for the name is that i3 stores all +information about the X11 outputs, workspaces and layout of the windows on them +in a tree. The root node is the X11 root window, followed by the X11 outputs, +then workspaces and finally the windows themselve. In previous versions of i3 +we had multiple lists (of outputs, workspaces) and a table for each workspace. +That approach turned out to be complicated to use (snapping), understand and +implement.

+
+

4.1. The tree consists of Containers

+

The building blocks of our tree are so called Containers. A Container can +host a window (meaning an X11 window, one that you can actually see and use, +like a browser). Alternatively, it could contain one or more Containers. A +simple example is the workspace: When you start i3 with a single monitor, a +single workspace and you open two terminal windows, you will end up with a tree +like this:

+
+
+layout2 +
+
+
+
+shot4 +
+
Figure 1. Two terminals on standard workspace
+
+
+
+

4.2. Orientation and Split Containers

+

It is only natural to use so-called Split Containers in order to build a +layout when using a tree as data structure. In i3, every Container has an +orientation (horizontal, vertical or unspecified). So, in our example with the +workspace, the default orientation of the workspace Container is horizontal +(most monitors are widescreen nowadays). If you change the orientation to +vertical (Alt+v in the default config) and then open two terminals, i3 will +configure your windows like this:

+
+
+shot2 +
+
Figure 2. Vertical Workspace Orientation
+
+

An interesting new feature of the tree branch is the ability to split anything: +Let’s assume you have two terminals on a workspace (with horizontal +orientation), focus is on the right terminal. Now you want to open another +terminal window below the current one. If you would just open a new terminal +window, it would show up to the right due to the horizontal workspace +orientation. Instead, press Alt+v to create a Vertical Split Container (to +open a Horizontal Split Container, use Alt+h). Now you can open a new +terminal and it will open below the current one:

+
+
+Layout +
+
+
+
+shot +
+
Figure 3. Vertical Split Container
+
+
+

You probably guessed it already: There is no limit on how deep your hierarchy +of splits can be.

+
+
+

4.3. Level up

+

Let’s stay with our example from above. We have a terminal on the left and two +vertically split terminals on the right, focus is on the bottom right one. When +you open a new terminal, it will open below the current one.

+

So, how can you open a new terminal window to the right of the current one? +The solution is to use level up, which will focus the Parent Container of +the current Container. In this case, you would focus the Vertical Split +Container which is inside the horizontally oriented workspace. Thus, now new +windows will be opened to the right of the Vertical Split Container:

+
+
+shot3 +
+
Figure 4. Level Up, then open new terminal
+
+
+
+
+
+

5. Commands

+
+

The authoritive reference for commands is src/cmdparse.y. You can also find +most commands in i3.config. Here comes a short overview over the important +commands:

+
+

5.1. Manipulating layout

+
+
+
layout <default|stacked|tabbed>
+
+
+
+

5.2. Changing Focus

+
+
+
next <horizontal|vertical>
+prev <horizontal|vertical>
+
+
+
Examples:
+
+
bindsym Mod1+Left prev h
+bindsym Mod1+Right next h
+bindsym Mod1+Down next v
+bindsym Mod1+Up prev v
+
+
+
+

5.3. Moving

+
+
+
move <before|after> <horizontal|vertical>
+
+
+
Examples:
+
+
bindsym Mod1+Shift+Left move before h
+bindsym Mod1+Shift+Right move after h
+bindsym Mod1+Shift+Down move before v
+bindsym Mod1+Shift+Up move after v
+
+
+
+

5.4. Changing workspace

+
+
+
workspace <name>
+
+
+
Examples:
+
+
bindsym Mod1+1 workspace 1
+bindsym Mod1+2 workspace 2
+…
+
+
+
+

5.5. Moving Containers to workspaces

+
+
+
move workspace <name>
+
+
+
+
bindsym Mod1+Shift+1 move workspace 1
+bindsym Mod1+Shift+2 move workspace 2
+…
+
+
+
+

5.6. Changing border style

+
+
+
border <normal|none|1pixel>
+
+
+
+

5.7. Changing container mode

+
+
+
mode <tiling|floating|toggle>
+
+
+
+
+
+

6. The rest

+
+

What is not mentioned here explicitly is either unchanged and can be read in +the i3 User’s Guide or it is not yet +implemented.

+
+
+
+

+ + + diff --git a/docs/4.8/tree-shot1.png b/docs/4.8/tree-shot1.png new file mode 100644 index 0000000000000000000000000000000000000000..3bbeae1c583cbbf411c5c2fb0ef823db9c63fff7 GIT binary patch literal 3665 zcmeHKX*e6$8jehQC8(v8nOeuzTHD&HNQ>H4DUG$Gv{OqAT5CxVnIY5=ZBZ3k%UFX% z5w(l-Dp6ZBF-n70#9C|Y;->dL_y7HIfA-Hg=lRZezUMse_nz-PU#im$>yrX!1ONcQ zNn0BWX8?dNleg{#19_uuv_d0q`XSuh_7)fno|ti*1^|R1wiaf$9(k`!jyzOu66<+5 z5?LBuYI;D9qC9Ngs{7}p4$?tUwLy;y)IU;-yOIQ*F2tp z#@Q2HyKf3oX+_>pK|3ZhtI99G)ZgV2uJuQMg+hW~MR)q#gKd9zjZ&M?(E(hKx$=Pp zKxH8i?i##2;MC|pd;1CnqUTi+_`!{mrhg$(itHI^7e67MR8Jcya$R2nv#NWG)I4>4 zbgW2Y<@If1iLe(N6ZjA3FmMuiLwkQQUENrHIn9SPqI!1ZurBnBk}W%9e6)l!G7vx( z&X|4A_5^Lw8*LsxgS5pb!(xL}_zw~^3^*$8D9@T$>3+3!t#+qnH|0V?E!d@^M&y&Y z?A1fhSuOB9zNs+wk6eO$3tP_UGUbwNUJv^GP=M615Q+28_477;IpL6be0b{ml)~ED z?rv_58!dB+VNOIY+qEi+U{!igh$K6ZJ@02zw9}KRgHP{=AAO`VCWR?>IvhVS_B4WrUP@2w zOwI;|LiO}5R}L}MQj^kTFRtn&Zu8>y65g+X0~7C0eyHUxT{}>!Xf;6p^?E^Gr>n5T zz4JD`-gsE3mvi0WluJCcTnYiNjLoHXDyM}NfPMFn!2Ly}ALj2mt`J@>Z`V9{$Xmi9s?rH@y2h2T*is{@A9c>TbYwkq_Xjn6IsSf~arQg@{(4 zQ;P>HT*wEI&v*kN3MkVo0QvFL&lmuZ!rPot$^7p29gzPYLy##(8`q|hKr9x^4t@PY zqBftnt5o_4kZ5i?3KB$mJZXC+;ba^`GMekGKzd;$sey)oY5iptzP8#zH>f zMwikI{fWRMNMg40Urm-FVQ-Y>$K8tw%#i%N9meKOtzR1*g}o3VGX4uIym(FbG&cH2 zC++UW7C(?A6bDSSQazqrb9r9|cE$(yt~T2dna{Ro20b$@2jmaRE~3>0oh*`LM;1$P zBWUX1#z{vlAY^jnFE5L0AQA(feP)vAGOOxq5zN(bFFcH$xk~+y9v<)zI1;in#G&N5 z^-spvu6HRFSv~Rsdf=$}*}_3pu+gGG&4sz2R?y2h$cKm88Fw&unZ1V?AZRtLr!Z@=TU1adCOZV@m58G=G%CBDO z7`r)mS(FbQS$MaT4cojry)%_?ya^SFWXOu|ZekseleNe#Urx1tls&b(!LpCTW96?h zdRiNHg_gAY7oEYAXZge#aSV=X2xn!YDT_^^P^?H|uhLfn)vOI;hFvntBb?2Lrbd@w z-u?9K@R)-(4hx@9!^(=tp9$!j`#c6(x*K7@{70g4ie)`XXD~L)gqo(c3J+Fu#ECui z)Ut#h1V_FfISE>tm%XsY+P%L>GD$gMuEv+3xSn~3$L1V)miM*npBDeBg}vL!I*0YdC*nWGMf@)E3CrYL z4L?>?Y23;JJubdq=~+2M&1KFJ8lZ@f-=+}nVgulhKkkWS+sD|Mlk$n%bI9@o2%|u9 zyN3XKTM>;_cH9eM4eM>A|5$GHyB zW3g_1n;&jvQw-?pS}IS}#TjOJxi=(;1|YS+5u*97SVy~bCO}P3x}HYW^&gvLngpx{ z=XBqa(1HqS>*M!+9t-7v?yD}HvzavxZ#4o1;jr{}P)>`B_s-i2(xs;IeE3jV-9l7P zc3#V<-W6GSf$LArbB%7uL5zKJ#Y}y!09C8^;EGD1eUR{#!WYE-8s8IqAXOz(qN+wp zgs5quBg%&}?rsK1?BhMMJ^@8pkm$U)f_t2StEj1u4iFUd8g0YR$2$&oeU*NiS5f}t z)sJcg8t=pvJ~Z9`-uH0dvHRbN@~vYq^su8f^8=?6_SfZVXM~@LUGQ~q6$rKop*CPUKEpJ%Vn){&t1^&!pfdBvi literal 0 HcmV?d00001 diff --git a/docs/4.8/tree-shot2.png b/docs/4.8/tree-shot2.png new file mode 100644 index 0000000000000000000000000000000000000000..f00326487a6eaa249d50d2f3438e601585f21c8f GIT binary patch literal 3383 zcmeH~`#03<9>>ksU|d2&$R?6YLyWV#xSMa22#pb$T*BBTA)*jUOv18+3L|$lnD&gz zxD%Sei5Mkm*e+!p%@%{g9)}EbzWobl?eoJ~t6!eySv$f4Kupczxng2+UmfjEo{#lgp6-s+ zZQUnH9C-ylAu%a6;b9$i#0^n&Pvc%mPbx93H#vb}ma>NgNXsmRbgp!lqvY(@>(Bcf zRkODKYkZRVuF>dY!me;j3Ij(dwn>tbACA=Y1vtGkwIO1Y6Yhos#=CMu}Zd^-VCEuEwf;x?V z;w9jY?WdJaydT$qTwuAz3_`)Q>N6`Es(_flQ4g+q=EF~mvp%of)dFnzw1W|J z07nuCg~fMPR#swiz5iUwrDm_m82r+8WUZm3>FK!tD4+9^Tvn@}-&$9B9W#~R{6H;@ zQduw#H_>^g?0G4M4Afs9^Xo5m2)2)_H|zL*Z9l%lsG`X`^~3HIEfZ=CTfcG?V`G@0 z#r!?Th}`H=*q+!)Gst~)L8?9nr>e9zU?f`n9Gz9%4wskilp@4c`PfXS;6vDycfY<} z9GD%7U?{_5gr^#gyLo_N#L(xe9p}QAMA%TcHkH$ z5Rw>!3N zJ4$2sWyIK(r`sOWT(}_bjvn~- z-64}_U}o8{nKWrha~r+WIf!mK@Qc(EP8Kjb9P!uv=x^mw4B<{{vsT^vA$KaR^V$=_ z0!7)4cRxB=)YoIxL;_UU@M$SkFrIfV=d?hsxm8``ZJy=|2ST9pc_sge_zHKWuz17p5zk!p@ zsLGfvrib#VYqRNvx|d z(sA#L7y$l40!}b1!2)o5Sw!{7zrOF)eg|2^WLVmwm& zon8dfUr?5~Lpi(2A5KKqt#97YO;DC!sbdO{<;_d5Gro<+ck}eusq{>ao;{?y_M|SB zw}gY{VYak@8Wj0?&6L&?O+MN?Ek~C_YDaK@APlnhzoLoUDOd01L)*EmX4y^&g6-tz z4C%zFv}9w|GV$knsVxNh|C%S+m@Z-eF#YQ5>-@hHDd@zz=B<5qew4zFyPU}V_e`Q_ zU1#~Y9+(7XfV*?uN{I^ez=JojBr25}FI-)%KX4421X7Z|GSr`*Jp^*s0GvVf{QP{= zXh%m!$xh4A1PZUk+vjp3-s^LqRq&}gX4N=7!5HI^{5K7Vc%5wBjT<(=z)!U8qVe)EI2iA!mcxIVdGpVKxa_1xpfl$#k!D^9Z`)?LL zl?B`V^mwe-ooGd?iKu@ZEbCmWbMc#hUEs`p$hu9;3wpun_1&y!v6eBOt1i`eD<|bs zN74PTL7Comy3ri)+j2!mjnt?HS$;PDX!X8&E(bF6I@u=5igKElc0zL_BWLYu_WoPusrjv$eS922yN^GIVGIg_JC!pHp9KAvfw z6nP#MM5o+xupzBWd=d{Wu;K{_YMi-%xJkUtQ4Kk2Nu))<%Kc>Ya*>LPBkrvJUNwkn zk0Q8)X6R~;Nw`=eKUofw__si-Bx){rgnNHqhngNp#6mon#ntNp@ZVshpIbjO@ptzG xsY5IAdtgu41QL2*hQJJ}C;y3n0XZ^4nI4R-I#1$@2lNvXb3E;0SBoXy`wy4GwW0t3 literal 0 HcmV?d00001 diff --git a/docs/4.8/tree-shot3.png b/docs/4.8/tree-shot3.png new file mode 100644 index 0000000000000000000000000000000000000000..fe4c11e156584f48ce8c74a11d7a3d41c6249594 GIT binary patch literal 4001 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 literal 0 HcmV?d00001 diff --git a/docs/4.8/tshirts.html b/docs/4.8/tshirts.html new file mode 100644 index 0000000..d5cc62b --- /dev/null +++ b/docs/4.8/tshirts.html @@ -0,0 +1,213 @@ + + + + + + +i3: i3wm T-shirts + + + + + + + +
+

i3 - improved tiling WM

+ +
+
+ +
+

1. You can show everybody your appreciation for i3wm by wearing our t-shirt

+
+

The i3wm team is collaborating with a shirt manufacturer in Germany +that provides high quality t-shirts with a cool i3wm logo.

+

Since the website is in German only, we want to help with your order +in case that German is not your primary language.

+
+

1.1. The shirt

+

The shirt is black, has white text and the light blue official i3wm logo. It is +available in eight sizes (XS, S, M, L, XL, XXL, XXXL, XXXXL).

+
+
+

1.2. The order process for new customers

+

Open http://www.freddruck.de/ in your browser.

+

In the navigation bar on the left, select i3-tiling window manager.

+

Select the link below the shirt of your choice. (At the time of +this writing only black was available.)

+

On the next page you can select the size (Größe) and +the number of shirts (=Anzahl) of that size you want to order.

+

Add to cart by clicking in den Korb.

+

In the upper right corner click Kasse (checkout).

+

You now have to register with the freddruck-website. Click +"Weiter" below the left white box titled "Neuer Kunde" +(new customer).

+

On the next page you have to supply your personal information:

+
+
+Vorname +
+
+

+First name +

+
+
+Nachname +
+
+

+Last name +

+
+
+Geburtsdatum +
+
+

+Birth date, format DD.MM.YYYY +

+
+
+Firmenname +
+
+

+Company name, if applicable +

+
+
+Address +
+
+Strasse/Nr. +
+
+

+Street and number +

+
+
+Postleitzahl +
+
+

+ZIP code +

+
+
+Ort +
+
+

+City +

+
+
+Land +
+
+

+Country (“Bitte wählen” means please choose) +

+
+
+Telefonnummer +
+
+

+Phone number. Don’t forget your country code, e.g. +1-555-2368. +

+
+
+Telefaxnummer +
+
+

+Fax number +

+
+
+Newsletter +
+
+

+A checkbox for whether you want to receive their newsletter. +

+
+
+Passwort +
+
+

+Password +

+
+
+Bestätigung +
+
+

+Confirmation +

+
+
+

Then click “Weiter” (Continue).

+

On the next page you should get the confirmation +that your account was successfully created. (“Ihr Konto wurde mit Erfolg eröffnet!”)

+

You will also get a confirmation email about the +creation of the account (that’s not your order yet!).

+

Click “Weiter” (Next) to continue.

+

On the next page you can review your destination address.

+

The text field allows you to add a comment. Just leave it blank.

+

Click “Weiter” again, to choose the payment options.

+

On the payment page you can choose your method of payment:

+

Offered are

+
    +
  • +

    +Check (to be sent in advance) +

    +
  • +
  • +

    +Paypal +

    +
  • +
  • +

    +on pickup +

    +
  • +
+

On the next page you can finally confirm your order.

+
+
+
+
+

+ + + diff --git a/docs/4.8/two_columns.png b/docs/4.8/two_columns.png new file mode 100644 index 0000000000000000000000000000000000000000..6dc8c40c9021a3cdf6a3728d8c48afe29db4f277 GIT binary patch literal 4624 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 xz{KSTCJj3}& literal 0 HcmV?d00001 diff --git a/docs/4.8/two_terminals.png b/docs/4.8/two_terminals.png new file mode 100644 index 0000000000000000000000000000000000000000..20b45acfa66534e8803b4cf454ba44b6d7aba9f0 GIT binary patch literal 4901 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 literal 0 HcmV?d00001 diff --git a/docs/4.8/userguide.html b/docs/4.8/userguide.html new file mode 100644 index 0000000..8192d6a --- /dev/null +++ b/docs/4.8/userguide.html @@ -0,0 +1,2288 @@ + + + + + + +i3: i3 User’s Guide + + + + + + + +
+

i3 - improved tiling WM

+ +
+
+ +
+
+

This document contains all the information you need to configure and use the i3 +window manager. If it does not, please check http://faq.i3wm.org/ first, then +contact us on IRC (preferred) or post your question(s) on the mailing list.

+
+
+
+

1. Default keybindings

+
+

For the "too long; didn’t read" people, here is an overview of the default +keybindings (click to see the full size image):

+

Keys to use with $mod (Alt):

+

+ +Keys to use with $mod (Alt) + +

+

Keys to use with Shift+$mod:

+

+ +Keys to use with Shift+$mod + +

+

The red keys are the modifiers you need to press (by default), the blue keys +are your homerow.

+
+
+
+

2. Using i3

+
+

Throughout this guide, the keyword $mod will be used to refer to the +configured modifier. This is the Alt key (Mod1) by default, with the Windows +key (Mod4) being a popular alternative.

+
+

2.1. Opening terminals and moving around

+

One very basic operation is opening a new terminal. By default, the keybinding +for this is $mod+Enter, that is Alt+Enter in the default configuration. By +pressing $mod+Enter, a new terminal will be opened. It will fill the whole +space available on your screen.

+

+Single terminal +

+

If you now open another terminal, i3 will place it next to the current one, +splitting the screen size in half. Depending on your monitor, i3 will put the +created window beside the existing window (on wide displays) or below the +existing window (rotated displays).

+

+Two terminals +

+

To move the focus between the two terminals, you can use the direction keys +which you may know from the editor vi. However, in i3, your homerow is used +for these keys (in vi, the keys are shifted to the left by one for +compatibility with most keyboard layouts). Therefore, $mod+J is left, $mod+K +is down, $mod+L is up and $mod+; is right. So, to switch between the +terminals, use $mod+K or $mod+L. Of course, you can also use the arrow keys.

+

At the moment, your workspace is split (it contains two terminals) in a +specific direction (horizontal by default). Every window can be split +horizontally or vertically again, just like the workspace. The terminology is +"window" for a container that actually contains an X11 window (like a terminal +or browser) and "split container" for containers that consist of one or more +windows.

+

TODO: picture of the tree

+

To split a window vertically, press $mod+v before you create the new window. +To split it horizontally, press $mod+h.

+
+
+

2.2. Changing the container layout

+

A split container can have one of the following layouts:

+
+
+splith/splitv +
+
+

+Windows are sized so that every window gets an equal amount of space in the +container. splith distributes the windows horizontally (windows are right next +to each other), splitv distributes them vertically (windows are on top of each +other). +

+
+
+stacking +
+
+

+Only the focused window in the container is displayed. You get a list of +windows at the top of the container. +

+
+
+tabbed +
+
+

+The same principle as stacking, but the list of windows at the top is only +a single line which is vertically split. +

+
+
+

To switch modes, press $mod+e for splith/splitv (it toggles), $mod+s for +stacking and $mod+w for tabbed.

+

+Container modes +

+
+
+

2.3. Toggling fullscreen mode for a window

+

To display a window in fullscreen mode or to go out of fullscreen mode again, +press $mod+f.

+

There is also a global fullscreen mode in i3 in which the client will span all +available outputs (the command is fullscreen global).

+
+
+

2.4. Opening other applications

+

Aside from opening applications from a terminal, you can also use the handy +dmenu which is opened by pressing $mod+d by default. Just type the name +(or a part of it) of the application which you want to open. The corresponding +application has to be in your $PATH for this to work.

+

Additionally, if you have applications you open very frequently, you can +create a keybinding for starting the application directly. See the section +[configuring] for details.

+
+
+

2.5. Closing windows

+

If an application does not provide a mechanism for closing (most applications +provide a menu, the escape key or a shortcut like Control+W to close), you +can press $mod+Shift+q to kill a window. For applications which support +the WM_DELETE protocol, this will correctly close the application (saving +any modifications or doing other cleanup). If the application doesn’t support +the WM_DELETE protocol your X server will kill the window and the behaviour +depends on the application.

+
+
+

2.6. Using workspaces

+

Workspaces are an easy way to group a set of windows. By default, you are on +the first workspace, as the bar on the bottom left indicates. To switch to +another workspace, press $mod+num where num is the number of the workspace +you want to use. If the workspace does not exist yet, it will be created.

+

A common paradigm is to put the web browser on one workspace, communication +applications (mutt, irssi, …) on another one, and the ones with which you +work, on the third one. Of course, there is no need to follow this approach.

+

If you have multiple screens, a workspace will be created on each screen at +startup. If you open a new workspace, it will be bound to the screen you +created it on. When you switch to a workspace on another screen, i3 will set +focus to that screen.

+
+
+

2.7. Moving windows to workspaces

+

To move a window to another workspace, simply press $mod+Shift+num where +num is (like when switching workspaces) the number of the target workspace. +Similarly to switching workspaces, the target workspace will be created if +it does not yet exist.

+
+
+

2.8. Resizing

+

The easiest way to resize a container is by using the mouse: Grab the border +and move it to the wanted size.

+

See [resizingconfig] for how to configure i3 to be able to resize +columns/rows with your keyboard.

+
+
+

2.9. Restarting i3 inplace

+

To restart i3 in place (and thus get into a clean state if there is a bug, or +to upgrade to a newer version of i3) you can use $mod+Shift+r.

+
+
+

2.10. Exiting i3

+

To cleanly exit i3 without killing your X server, you can use $mod+Shift+e.

+
+
+

2.11. Floating

+

Floating mode is the opposite of tiling mode. The position and size of +a window are not managed automatically by i3, but manually by +you. Using this mode violates the tiling paradigm but can be useful +for some corner cases like "Save as" dialog windows, or toolbar +windows (GIMP or similar). Those windows usually set the appropriate +hint and are opened in floating mode by default.

+

You can toggle floating mode for a window by pressing $mod+Shift+Space. By +dragging the window’s titlebar with your mouse you can move the window +around. By grabbing the borders and moving them you can resize the window. You +can also do that by using the [floating_modifier]. Another way to resize +floating windows using the mouse is to right-click on the titlebar and drag.

+

For resizing floating windows with your keyboard, see [resizingconfig].

+

Floating windows are always on top of tiling windows.

+
+
+
+
+

3. Tree

+
+

i3 stores all information about the X11 outputs, workspaces and layout of the +windows on them in a tree. The root node is the X11 root window, followed by +the X11 outputs, then dock areas and a content container, then workspaces and +finally the windows themselves. In previous versions of i3 we had multiple lists +(of outputs, workspaces) and a table for each workspace. That approach turned +out to be complicated to use (snapping), understand and implement.

+
+

3.1. The tree consists of Containers

+

The building blocks of our tree are so called Containers. A Container can +host a window (meaning an X11 window, one that you can actually see and use, +like a browser). Alternatively, it could contain one or more Containers. A +simple example is the workspace: When you start i3 with a single monitor, a +single workspace and you open two terminal windows, you will end up with a tree +like this:

+
+
+layout2 +
+
+
+
+shot4 +
+
Figure 1. Two terminals on standard workspace
+
+
+
+

3.2. Orientation and Split Containers

+

It is only natural to use so-called Split Containers in order to build a +layout when using a tree as data structure. In i3, every Container has an +orientation (horizontal, vertical or unspecified) and the orientation depends +on the layout the container is in (vertical for splitv and stacking, horizontal +for splith and tabbed). So, in our example with the workspace, the default +layout of the workspace Container is splith (most monitors are widescreen +nowadays). If you change the layout to splitv ($mod+v in the default config) +and then open two terminals, i3 will configure your windows like this:

+
+
+shot2 +
+
Figure 2. Vertical Workspace Orientation
+
+

An interesting new feature of i3 since version 4 is the ability to split anything: +Let’s assume you have two terminals on a workspace (with splith layout, that is +horizontal orientation), focus is on the right terminal. Now you want to open +another terminal window below the current one. If you would just open a new +terminal window, it would show up to the right due to the splith layout. +Instead, press $mod+v to split the container with the splitv layout (to +open a Horizontal Split Container, use $mod+h). Now you can open a new +terminal and it will open below the current one:

+
+
+Layout +
+
+
+
+shot +
+
Figure 3. Vertical Split Container
+
+
+

You probably guessed it already: There is no limit on how deep your hierarchy +of splits can be.

+
+
+

3.3. Focus parent

+

Let’s stay with our example from above. We have a terminal on the left and two +vertically split terminals on the right, focus is on the bottom right one. When +you open a new terminal, it will open below the current one.

+

So, how can you open a new terminal window to the right of the current one? +The solution is to use focus parent, which will focus the Parent Container of +the current Container. In this case, you would focus the Vertical Split +Container which is inside the horizontally oriented workspace. Thus, now new +windows will be opened to the right of the Vertical Split Container:

+
+
+shot3 +
+
Figure 4. Focus parent, then open new terminal
+
+
+
+

3.4. Implicit containers

+

In some cases, i3 needs to implicitly create a container to fulfill your +command.

+

One example is the following scenario: You start i3 with a single monitor and a +single workspace on which you open three terminal windows. All these terminal +windows are directly attached to one node inside i3’s layout tree, the +workspace node. By default, the workspace node’s orientation is horizontal.

+

Now you move one of these terminals down ($mod+Shift+k by default). The +workspace node’s orientation will be changed to vertical. The terminal window +you moved down is directly attached to the workspace and appears on the bottom +of the screen. A new (horizontal) container was created to accommodate the +other two terminal windows. You will notice this when switching to tabbed mode +(for example). You would end up having one tab called "another container" and +the other one being the terminal window you moved down.

+
+
+
+
+

4. Configuring i3

+
+

This is where the real fun begins ;-). Most things are very dependent on your +ideal working environment so we can’t make reasonable defaults for them.

+

While not using a programming language for the configuration, i3 stays +quite flexible in regards to the things you usually want your window manager +to do.

+

For example, you can configure bindings to jump to specific windows, +you can set specific applications to start on specific workspaces, you can +automatically start applications, you can change the colors of i3, and you +can bind your keys to do useful things.

+

To change the configuration of i3, copy /etc/i3/config to ~/.i3/config +(or ~/.config/i3/config if you like the XDG directory scheme) and edit it +with a text editor.

+

On first start (and on all following starts, unless you have a configuration +file), i3 will offer you to create a configuration file. You can tell the +wizard to use either Alt (Mod1) or Windows (Mod4) as modifier in the config +file. Also, the created config file will use the key symbols of your current +keyboard layout. To start the wizard, use the command i3-config-wizard. +Please note that you must not have ~/.i3/config, otherwise the wizard will +exit.

+
+

4.1. Comments

+

It is possible and recommended to use comments in your configuration file to +properly document your setup for later reference. Comments are started with +a # and can only be used at the beginning of a line:

+

Examples:

+
+
+
# This is a comment
+
+
+
+

4.2. Fonts

+

i3 has support for both X core fonts and FreeType fonts (through Pango) to +render window titles.

+

To generate an X core font description, you can use xfontsel(1). To see +special characters (Unicode), you need to use a font which supports the +ISO-10646 encoding.

+

A FreeType font description is composed by a font family, a style, a weight, +a variant, a stretch and a size. +FreeType fonts support right-to-left rendering and contain often more +Unicode glyphs than X core fonts.

+

If i3 cannot open the configured font, it will output an error in the logfile +and fall back to a working font.

+

Syntax:

+
+
+
font <X core font description>
+font pango:[family list] [style options] [size]
+
+

Examples:

+
+
+
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
+font pango:DejaVu Sans Mono 10
+font pango:DejaVu Sans Mono, Terminus Bold Semi-Condensed 11
+font pango:Terminus 11px
+
+
+
+

4.3. Keyboard bindings

+

A keyboard binding makes i3 execute a command (see below) upon pressing a +specific key. i3 allows you to bind either on keycodes or on keysyms (you can +also mix your bindings, though i3 will not protect you from overlapping ones).

+
    +
  • +

    +A keysym (key symbol) is a description for a specific symbol, like "a" + or "b", but also more strange ones like "underscore" instead of "_". These + are the ones you use in Xmodmap to remap your keys. To get the current + mapping of your keys, use xmodmap -pke. To interactively enter a key and + see what keysym it is configured to, use xev. +

    +
  • +
  • +

    +Keycodes do not need to have a symbol assigned (handy for custom vendor + hotkeys on some notebooks) and they will not change their meaning as you + switch to a different keyboard layout (when using xmodmap). +

    +
  • +
+

My recommendation is: If you often switch keyboard layouts but you want to keep +your bindings in the same physical location on the keyboard, use keycodes. +If you don’t switch layouts, and want a clean and simple config file, use +keysyms.

+

Some tools (such as import or xdotool) might be unable to run upon a +KeyPress event, because the keyboard/pointer is still grabbed. For these +situations, the --release flag can be used, which will execute the command +after the keys have been released.

+

Syntax:

+
+
+
bindsym [--release] [Modifiers+]keysym command
+bindcode [--release] [Modifiers+]keycode command
+
+

Examples:

+
+
+
# Fullscreen
+bindsym $mod+f fullscreen
+
+# Restart
+bindsym $mod+Shift+r restart
+
+# Notebook-specific hotkeys
+bindcode 214 exec --no-startup-id /home/michael/toggle_beamer.sh
+
+# Simulate ctrl+v upon pressing $mod+x
+bindsym --release $mod+x exec --no-startup-id xdotool key --clearmodifiers ctrl+v
+
+# Take a screenshot upon pressing $mod+x (select an area)
+bindsym --release $mod+x exec --no-startup-id import /tmp/latest-screenshot.png
+
+

Available Modifiers:

+
+
+Mod1-Mod5, Shift, Control +
+
+

+Standard modifiers, see xmodmap(1) +

+
+
+Mode_switch +
+
+

+Unlike other window managers, i3 can use Mode_switch as a modifier. This allows +you to remap capslock (for example) to Mode_switch and use it for both: typing +umlauts or special characters and having some comfortably reachable key +bindings. For example, when typing, capslock+1 or capslock+2 for switching +workspaces is totally convenient. Try it :-). +

+
+
+
+
+

4.4. The floating modifier

+

To move floating windows with your mouse, you can either grab their titlebar +or configure the so called floating modifier which you can then press and +click anywhere in the window itself to move it. The most common setup is to +use the same key you use for managing windows (Mod1 for example). Then +you can press Mod1, click into a window using your left mouse button, and drag +it to the position you want.

+

When holding the floating modifier, you can resize a floating window by +pressing the right mouse button on it and moving around while holding it. If +you hold the shift button as well, the resize will be proportional (the aspect +ratio will be preserved).

+

Syntax:

+
+
+
floating_modifier <Modifiers>
+
+

Example:

+
+
+
floating_modifier Mod1
+
+
+
+

4.5. Constraining floating window size

+

The maximum and minimum dimensions of floating windows can be specified. If +either dimension of floating_maximum_size is specified as -1, that dimension +will be unconstrained with respect to its maximum value. If either dimension of +floating_maximum_size is undefined, or specified as 0, i3 will use a default +value to constrain the maximum size. floating_minimum_size is treated in a +manner analogous to floating_maximum_size.

+

Syntax:

+
+
+
floating_minimum_size <width> x <height>
+floating_maximum_size <width> x <height>
+
+

Example:

+
+
+
floating_minimum_size 75 x 50
+floating_maximum_size -1 x -1
+
+
+
+

4.6. Orientation for new workspaces

+

New workspaces get a reasonable default orientation: Wide-screen monitors +(anything wider than high) get horizontal orientation, rotated monitors +(anything higher than wide) get vertical orientation.

+

With the default_orientation configuration directive, you can override that +behavior.

+

Syntax:

+
+
+
default_orientation <horizontal|vertical|auto>
+
+

Example:

+
+
+
default_orientation vertical
+
+
+
+

4.7. Layout mode for new containers

+

This option determines in which mode new containers on workspace level will +start.

+

Syntax:

+
+
+
workspace_layout <default|stacking|tabbed>
+
+

Example:

+
+
+
workspace_layout tabbed
+
+
+
+

4.8. Border style for new windows

+

This option determines which border style new windows will have. The default is +"normal". Note that new_float applies only to windows which are starting out as +floating windows, e.g. dialog windows.

+

Syntax:

+
+
+
new_window <normal|1pixel|none|pixel>
+new_float <normal|1pixel|none|pixel>
+
+

Example:

+
+
+
new_window 1pixel
+
+

The "normal" and "pixel" border styles support an optional border width in +pixels:

+

Example:

+
+
+
# The same as new_window none
+new_window pixel 0
+
+# A 3 px border
+new_window pixel 3
+
+
+
+

4.9. Hiding vertical borders

+

You can hide vertical borders adjacent to the screen edges using +hide_edge_borders. This is useful if you are using scrollbars, or do not want +to waste even two pixels in displayspace. Default is none.

+

Syntax:

+
+
+
hide_edge_borders <none|vertical|horizontal|both>
+
+

Example:

+
+
+
hide_edge_borders vertical
+
+
+
+

4.10. Arbitrary commands for specific windows (for_window)

+

With the for_window command, you can let i3 execute any command when it +encounters a specific window. This can be used to set windows to floating or to +change their border style, for example.

+

Syntax:

+
+
+
for_window <criteria> command
+
+

Examples:

+
+
+
# enable floating mode for all XTerm windows
+for_window [class="XTerm"] floating enable
+
+# Make all urxvts use a 1-pixel border:
+for_window [class="urxvt"] border 1pixel
+
+# A less useful, but rather funny example:
+# makes the window floating as soon as I change
+# directory to ~/work
+for_window [title="x200: ~/work"] floating enable
+
+

The valid criteria are the same as those for commands, see [command_criteria].

+
+
+

4.11. Variables

+

As you learned in the section about keyboard bindings, you will have +to configure lots of bindings containing modifier keys. If you want to save +yourself some typing and be able to change the modifier you use later, +variables can be handy.

+

Syntax:

+
+
+
set $name value
+
+

Example:

+
+
+
set $m Mod1
+bindsym $m+Shift+r restart
+
+

Variables are directly replaced in the file when parsing. Variables expansion +is not recursive so it is not possible to define a variable with a value +containing another variable. There is no fancy handling and there are +absolutely no plans to change this. If you need a more dynamic configuration +you should create a little script which generates a configuration file and run +it before starting i3 (for example in your ~/.xsession file).

+
+
+

4.12. Automatically putting clients on specific workspaces

+

To automatically make a specific window show up on a specific workspace, you +can use an assignment. You can match windows by using any criteria, +see [command_criteria]. It is recommended that you match on window classes +(and instances, when appropriate) instead of window titles whenever possible +because some applications first create their window, and then worry about +setting the correct title. Firefox with Vimperator comes to mind. The window +starts up being named Firefox, and only when Vimperator is loaded does the +title change. As i3 will get the title as soon as the application maps the +window (mapping means actually displaying it on the screen), you’d need to have +to match on Firefox in this case.

+

Assignments are processed by i3 in the order in which they appear in the config +file. The first one which matches the window wins and later assignments are not +considered.

+

Syntax:

+
+
+
assign <criteria> [→] workspace
+
+

Examples:

+
+
+
# Assign URxvt terminals to workspace 2
+assign [class="URxvt"] 2
+
+# Same thing, but more precise (exact match instead of substring)
+assign [class="^URxvt$"] 2
+
+# Same thing, but with a beautiful arrow :)
+assign [class="^URxvt$"] → 2
+
+# Assignment to a named workspace
+assign [class="^URxvt$"] → work
+
+# Start urxvt -name irssi
+assign [class="^URxvt$" instance="^irssi$"] → 3
+
+

Note that the arrow is not required, it just looks good :-). If you decide to +use it, it has to be a UTF-8 encoded arrow, not -> or something like that.

+

To get the class and instance, you can use xprop. After clicking on the +window, you will see the following output:

+

xprop:

+
+
+
WM_CLASS(STRING) = "irssi", "URxvt"
+
+

The first part of the WM_CLASS is the instance ("irssi" in this example), the +second part is the class ("URxvt" in this example).

+

Should you have any problems with assignments, make sure to check the i3 +logfile first (see http://i3wm.org/docs/debugging.html). It includes more +details about the matching process and the window’s actual class, instance and +title when starting up.

+

Note that if you want to start an application just once on a specific +workspace, but you don’t want to assign all instances of it permanently, you +can make use of i3’s startup-notification support (see [exec]) in your config +file in the following way:

+

Start iceweasel on workspace 3 (once):

+
+
+
# Start iceweasel on workspace 3, then switch back to workspace 1
+# (Being a command-line utility, i3-msg does not support startup notifications,
+#  hence the exec --no-startup-id.)
+# (Starting iceweasel with i3’s exec command is important in order to make i3
+#  create a startup notification context, without which the iceweasel window(s)
+#  cannot be matched onto the workspace on which the command was started.)
+exec --no-startup-id i3-msg 'workspace 3; exec iceweasel; workspace 1'
+
+
+
+

4.13. Automatically starting applications on i3 startup

+

By using the exec keyword outside a keybinding, you can configure +which commands will be performed by i3 on initial startup. exec +commands will not run when restarting i3, if you need a command to run +also when restarting i3 you should use the exec_always +keyword. These commands will be run in order.

+

Syntax:

+
+
+
exec [--no-startup-id] command
+exec_always [--no-startup-id] command
+
+

Examples:

+
+
+
exec chromium
+exec_always ~/my_script.sh
+
+# Execute the terminal emulator urxvt, which is not yet startup-notification aware.
+exec --no-startup-id urxvt
+
+

The flag --no-startup-id is explained in [exec].

+
+
+

4.14. Automatically putting workspaces on specific screens

+

If you assign clients to workspaces, it might be handy to put the +workspaces on specific screens. Also, the assignment of workspaces to screens +will determine which workspace i3 uses for a new screen when adding screens +or when starting (e.g., by default it will use 1 for the first screen, 2 for +the second screen and so on).

+

Syntax:

+
+
+
workspace <workspace> output <output>
+
+

The output is the name of the RandR output you attach your screen to. On a +laptop, you might have VGA1 and LVDS1 as output names. You can see the +available outputs by running xrandr --current.

+

If you use named workspaces, they must be quoted:

+

Examples:

+
+
+
workspace 1 output LVDS1
+workspace 5 output VGA1
+workspace "2: vim" output VGA1
+
+
+
+

4.15. Changing colors

+

You can change all colors which i3 uses to draw the window decorations.

+

Syntax:

+
+
+
colorclass border background text indicator
+
+

Where colorclass can be one of:

+
+
+client.focused +
+
+

+ A client which currently has the focus. +

+
+
+client.focused_inactive +
+
+

+ A client which is the focused one of its container, but it does not have + the focus at the moment. +

+
+
+client.unfocused +
+
+

+ A client which is not the focused one of its container. +

+
+
+client.urgent +
+
+

+ A client which has its urgency hint activated. +

+
+
+client.placeholder +
+
+

+ Background and text color are used to draw placeholder window contents + (when restoring layouts). Border and indicator are ignored. +

+
+
+

You can also specify the color to be used to paint the background of the client +windows. This color will be used to paint the window on top of which the client +will be rendered.

+

Syntax:

+
+
+
client.background color
+
+

Only clients that do not cover the whole area of this window expose the color +used to paint it.

+

Colors are in HTML hex format (#rrggbb), see the following example:

+

Examples (default colors):

+
+
+
# class                 border  backgr. text    indicator
+client.focused          #4c7899 #285577 #ffffff #2e9ef4
+client.focused_inactive #333333 #5f676a #ffffff #484e50
+client.unfocused        #333333 #222222 #888888 #292d2e
+client.urgent           #2f343a #900000 #ffffff #900000
+client.placeholder      #000000 #0c0c0c #ffffff #000000
+
+

Note that for the window decorations, the color around the child window is the +background color, and the border color is only the two thin lines at the top of +the window.

+

The indicator color is used for indicating where a new window will be opened. +For horizontal split containers, the right border will be painted in indicator +color, for vertical split containers, the bottom border. This only applies to +single windows within a split container, which are otherwise indistinguishable +from single windows outside of a split container.

+
+
+

4.16. Interprocess communication

+

i3 uses Unix sockets to provide an IPC interface. This allows third-party +programs to get information from i3, such as the current workspaces +(to display a workspace bar), and to control i3.

+

The IPC socket is enabled by default and will be created in +/tmp/i3-%u.XXXXXX/ipc-socket.%p where %u is your UNIX username, %p is +the PID of i3 and XXXXXX is a string of random characters from the portable +filename character set (see mkdtemp(3)).

+

You can override the default path through the environment-variable I3SOCK or +by specifying the ipc-socket directive. This is discouraged, though, since i3 +does the right thing by default. If you decide to change it, it is strongly +recommended to set this to a location in your home directory so that no other +user can create that directory.

+

Examples:

+
+
+
ipc-socket ~/.i3/i3-ipc.sock
+
+

You can then use the i3-msg application to perform any command listed in +the next section.

+
+
+

4.17. Focus follows mouse

+

By default, window focus follows your mouse movements. However, if you have a +setup where your mouse usually is in your way (like a touchpad on your laptop +which you do not want to disable completely), you might want to disable focus +follows mouse and control focus only by using your keyboard. The mouse will +still be useful inside the currently active window (for example to click on +links in your browser window).

+

Syntax:

+
+
+
focus_follows_mouse <yes|no>
+
+

Example:

+
+
+
focus_follows_mouse no
+
+
+
+

4.18. Mouse warping

+

By default, when switching focus to a window on a different output (e.g. +focusing a window on workspace 3 on output VGA-1, coming from workspace 2 on +LVDS-1), the mouse cursor is warped to the center of that window.

+

With the mouse_warping option, you can control when the mouse cursor should +be warped. none disables warping entirely, whereas output is the default +behavior described above.

+

Syntax:

+
+
+
mouse_warping <output|none>
+
+

Example:

+
+
+
mouse_warping none
+
+
+
+

4.19. Popups during fullscreen mode

+

When you are in fullscreen mode, some applications still open popup windows +(take Xpdf for example). This is because these applications may not be aware +that they are in fullscreen mode (they do not check the corresponding hint). +There are three things which are possible to do in this situation:

+
    +
  1. +

    +Display the popup if it belongs to the fullscreen application only. This is + the default and should be reasonable behavior for most users. +

    +
  2. +
  3. +

    +Just ignore the popup (don’t map it). This won’t interrupt you while you are + in fullscreen. However, some apps might react badly to this (deadlock until + you go out of fullscreen). +

    +
  4. +
  5. +

    +Leave fullscreen mode. +

    +
  6. +
+

Syntax:

+
+
+
popup_during_fullscreen <smart|ignore|leave_fullscreen>
+
+

Example:

+
+
+
popup_during_fullscreen smart
+
+
+
+

4.20. Focus wrapping

+

When being in a tabbed or stacked container, the first container will be +focused when you use focus down on the last container — the focus wraps. If +however there is another stacked/tabbed container in that direction, focus will +be set on that container. This is the default behavior so you can navigate to +all your windows without having to use focus parent.

+

If you want the focus to always wrap and you are aware of using focus +parent to switch to different containers, you can use the +force_focus_wrapping configuration directive. After enabling it, the focus +will always wrap.

+

Syntax:

+
+
+
force_focus_wrapping <yes|no>
+
+

Example:

+
+
+
force_focus_wrapping yes
+
+
+
+

4.21. Forcing Xinerama

+

As explained in-depth in http://i3wm.org/docs/multi-monitor.html, some X11 +video drivers (especially the nVidia binary driver) only provide support for +Xinerama instead of RandR. In such a situation, i3 must be told to use the +inferior Xinerama API explicitly and therefore don’t provide support for +reconfiguring your screens on the fly (they are read only once on startup and +that’s it).

+

For people who cannot modify their ~/.xsession to add the +--force-xinerama commandline parameter, a configuration option is provided:

+

Syntax:

+
+
+
force_xinerama <yes|no>
+
+

Example:

+
+
+
force_xinerama yes
+
+

Also note that your output names are not descriptive (like HDMI1) when using +Xinerama, instead they are counted up, starting at 0: xinerama-0, xinerama-1, …

+
+
+

4.22. Automatic back-and-forth when switching to the current workspace

+

This configuration directive enables automatic workspace back_and_forth (see +[back_and_forth]) when switching to the workspace that is currently focused.

+

For instance: Assume you are on workspace "1: www" and switch to "2: IM" using +mod+2 because somebody sent you a message. You don’t need to remember where you +came from now, you can just press $mod+2 again to switch back to "1: www".

+

Syntax:

+
+
+
workspace_auto_back_and_forth <yes|no>
+
+

Example:

+
+
+
workspace_auto_back_and_forth yes
+
+
+
+

4.23. Delaying urgency hint reset on workspace change

+

If an application on another workspace sets an urgency hint, switching to this +workspace may lead to immediate focus of the application, which also means the +window decoration color would be immediately reset to client.focused. This +may make it unnecessarily hard to tell which window originally raised the +event.

+

In order to prevent this, you can tell i3 to delay resetting the urgency state +by a certain time using the force_display_urgency_hint directive. Setting the +value to 0 disables this feature.

+

The default is 500ms.

+

Syntax:

+
+
+
force_display_urgency_hint <timeout> ms
+
+

Example:

+
+
+
force_display_urgency_hint 500 ms
+
+
+
+
+
+

5. Configuring i3bar

+
+

The bar at the bottom of your monitor is drawn by a separate process called +i3bar. Having this part of "the i3 user interface" in a separate process has +several advantages:

+
    +
  1. +

    +It is a modular approach. If you don’t need a workspace bar at all, or if + you prefer a different one (dzen2, xmobar, maybe even gnome-panel?), you can + just remove the i3bar configuration and start your favorite bar instead. +

    +
  2. +
  3. +

    +It follows the UNIX philosophy of "Make each program do one thing well". + While i3 manages your windows well, i3bar is good at displaying a bar on + each monitor (unless you configure it otherwise). +

    +
  4. +
  5. +

    +It leads to two separate, clean codebases. If you want to understand i3, you + don’t need to bother with the details of i3bar and vice versa. +

    +
  6. +
+

That said, i3bar is configured in the same configuration file as i3. This is +because it is tightly coupled with i3 (in contrary to i3lock or i3status which +are useful for people using other window managers). Therefore, it makes no +sense to use a different configuration place when we already have a good +configuration infrastructure in place.

+

Configuring your workspace bar starts with opening a bar block. You can have +multiple bar blocks to use different settings for different outputs (monitors):

+

Example:

+
+
+
bar {
+    status_command i3status
+}
+
+
+

5.1. i3bar command

+

By default i3 will just pass i3bar and let your shell handle the execution, +searching your $PATH for a correct version. +If you have a different i3bar somewhere or the binary is not in your $PATH you can +tell i3 what to execute.

+

The specified command will be passed to sh -c, so you can use globbing and +have to have correct quoting etc.

+

Syntax:

+
+
+
i3bar_command command
+
+

Example:

+
+
+
bar {
+    i3bar_command /home/user/bin/i3bar
+}
+
+
+
+

5.2. Statusline command

+

i3bar can run a program and display every line of its stdout output on the +right hand side of the bar. This is useful to display system information like +your current IP address, battery status or date/time.

+

The specified command will be passed to sh -c, so you can use globbing and +have to have correct quoting etc.

+

Syntax:

+
+
+
status_command command
+
+

Example:

+
+
+
bar {
+    status_command i3status --config ~/.i3status.conf
+}
+
+
+
+

5.3. Display mode

+

You can either have i3bar be visible permanently at one edge of the screen +(dock mode) or make it show up when you press your modifier key (hide mode). +It is also possible to force i3bar to always stay hidden (invisible +mode). The modifier key can be configured using the modifier option.

+

The mode option can be changed during runtime through the bar mode command. +On reload the mode will be reverted to its configured value.

+

The hide mode maximizes screen space that can be used for actual windows. Also, +i3bar sends the SIGSTOP and SIGCONT signals to the statusline process to +save battery power.

+

Invisible mode allows to permanently maximize screen space, as the bar is never +shown. Thus, you can configure i3bar to not disturb you by popping up because +of an urgency hint or because the modifier key is pressed.

+

In order to control whether i3bar is hidden or shown in hide mode, there exists +the hidden_state option, which has no effect in dock mode or invisible mode. It +indicates the current hidden_state of the bar: (1) The bar acts like in normal +hide mode, it is hidden and is only unhidden in case of urgency hints or by +pressing the modifier key (hide state), or (2) it is drawn on top of the +currently visible workspace (show state).

+

Like the mode, the hidden_state can also be controlled through i3, this can be +done by using the bar hidden_state command.

+

The default mode is dock mode; in hide mode, the default modifier is Mod4 (usually +the windows key). The default value for the hidden_state is hide.

+

Syntax:

+
+
+
mode <dock|hide|invisible>
+hidden_state <hide|show>
+modifier <Modifier>
+
+

Example:

+
+
+
bar {
+    mode hide
+    hidden_state hide
+    modifier Mod1
+}
+
+

Available modifiers are Mod1-Mod5, Shift, Control (see xmodmap(1)).

+
+
+

5.4. Bar ID

+

Specifies the bar ID for the configured bar instance. If this option is missing, +the ID is set to bar-x, where x corresponds to the position of the embedding +bar block in the config file (bar-0, bar-1, …).

+

Syntax:

+
+
+
id <bar_id>
+
+

Example:

+
+
+
bar {
+    id bar-1
+}
+
+
+
+

5.5. Position

+

This option determines in which edge of the screen i3bar should show up.

+

The default is bottom.

+

Syntax:

+
+
+
position <top|bottom>
+
+

Example:

+
+
+
bar {
+    position top
+}
+
+
+
+

5.6. Output(s)

+

You can restrict i3bar to one or more outputs (monitors). The default is to +handle all outputs. Restricting the outputs is useful for using different +options for different outputs by using multiple bar blocks.

+

To make a particular i3bar instance handle multiple outputs, specify the output +directive multiple times.

+

Syntax:

+
+
+
output <output>
+
+

Example:

+
+
+
# big monitor: everything
+bar {
+    # The display is connected either via HDMI or via DisplayPort
+    output HDMI2
+    output DP2
+    status_command i3status
+}
+
+# laptop monitor: bright colors and i3status with less modules.
+bar {
+    output LVDS1
+    status_command i3status --config ~/.i3status-small.conf
+    colors {
+        background #000000
+        statusline #ffffff
+    }
+}
+
+
+
+

5.7. Tray output

+

i3bar by default provides a system tray area where programs such as +NetworkManager, VLC, Pidgin, etc. can place little icons.

+

You can configure on which output (monitor) the icons should be displayed or +you can turn off the functionality entirely.

+

Syntax:

+
+
+
tray_output <none|primary|output>
+
+

Example:

+
+
+
# disable system tray
+bar {
+    tray_output none
+}
+
+# show tray icons on the primary monitor
+tray_output primary
+
+# show tray icons on the big monitor
+bar {
+    tray_output HDMI2
+}
+
+

Note that you might not have a primary output configured yet. To do so, run:

+
+
+
xrandr --output <output> --primary
+
+
+
+

5.8. Font

+

Specifies the font to be used in the bar. See [fonts].

+

Syntax:

+
+
+
font <font>
+
+

Example:

+
+
+
bar {
+    font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
+    font pango:DejaVu Sans Mono 10
+}
+
+
+
+

5.9. Workspace buttons

+

Specifies whether workspace buttons should be shown or not. This is useful if +you want to display a statusline-only bar containing additional information.

+

The default is to show workspace buttons.

+

Syntax:

+
+
+
workspace_buttons <yes|no>
+
+

Example:

+
+
+
bar {
+    workspace_buttons no
+}
+
+
+
+

5.10. Strip workspace numbers

+

Specifies whether workspace numbers should be displayed within the workspace +buttons. This is useful if you want to have a named workspace that stays in +order on the bar according to its number without displaying the number prefix.

+

When strip_workspace_numbers is set to yes, any workspace that has a name of +the form "[n]:[NAME]" will display only the name. You could use this, for +instance, to display Roman numerals rather than digits by naming your +workspaces to "1:I", "2:II", "3:III", "4:IV", …

+

The default is to display the full name within the workspace button.

+

Syntax:

+
+
+
strip_workspace_numbers <yes|no>
+
+

Example:

+
+
+
bar {
+    strip_workspace_numbers yes
+}
+
+
+
+

5.11. Binding Mode indicator

+

Specifies whether the current binding mode indicator should be shown or not. +This is useful if you want to hide the workspace buttons but still be able +to see the current binding mode indicator. +For an example of a mode definition, see [resizingconfig].

+

The default is to show the mode indicator.

+

Syntax:

+
+
+
binding_mode_indicator <yes|no>
+
+

Example:

+
+
+
bar {
+    binding_mode_indicator no
+}
+
+
+
+

5.12. Colors

+

As with i3, colors are in HTML hex format (#rrggbb). The following colors can +be configured at the moment:

+
+
+background +
+
+

+ Background color of the bar. +

+
+
+statusline +
+
+

+ Text color to be used for the statusline. +

+
+
+separator +
+
+

+ Text color to be used for the separator. +

+
+
+focused_workspace +
+
+

+ Border, background and text color for a workspace button when the workspace + has focus. +

+
+
+active_workspace +
+
+

+ Border, background and text color for a workspace button when the workspace + is active (visible) on some output, but the focus is on another one. + You can only tell this apart from the focused workspace when you are + using multiple monitors. +

+
+
+inactive_workspace +
+
+

+ Border, background and text color for a workspace button when the workspace + does not have focus and is not active (visible) on any output. This + will be the case for most workspaces. +

+
+
+urgent_workspace +
+
+

+ Border, background and text color for a workspace button when the workspace + contains a window with the urgency hint set. Also applies to mode indicators. +

+
+
+

Syntax:

+
+
+
colors {
+    background <color>
+    statusline <color>
+    separator <color>
+
+    colorclass <border> <background> <text>
+}
+
+

Example (default colors):

+
+
+
bar {
+    colors {
+        background #000000
+        statusline #ffffff
+        separator #666666
+
+        focused_workspace  #4c7899 #285577 #ffffff
+        active_workspace   #333333 #5f676a #ffffff
+        inactive_workspace #333333 #222222 #888888
+        urgent_workspace   #2f343a #900000 #ffffff
+    }
+}
+
+
+
+
+
+

6. List of commands

+
+

Commands are what you bind to specific keypresses. You can also issue commands +at runtime without pressing a key by using the IPC interface. An easy way to +do this is to use the i3-msg utility:

+

Example:

+
+
+
# execute this on your shell to make the current container borderless
+i3-msg border none
+
+

Commands can be chained by using ; (a semicolon). So, to move a window to a +specific workspace and immediately switch to that workspace, you can configure +the following keybinding:

+

Example:

+
+
+
bindsym $mod+x move container to workspace 3; workspace 3
+
+

Furthermore, you can change the scope of a command - that is, which containers +should be affected by that command, by using various criteria. The criteria +are specified before any command in a pair of square brackets and are separated +by space.

+

When using multiple commands, separate them by using a , (a comma) instead of +a semicolon. Criteria apply only until the next semicolon, so if you use a +semicolon to separate commands, only the first one will be executed for the +matched window(s).

+

Example:

+
+
+
# if you want to kill all windows which have the class Firefox, use:
+bindsym $mod+x [class="Firefox"] kill
+
+# same thing, but case-insensitive
+bindsym $mod+x [class="(?i)firefox"] kill
+
+# kill only the About dialog from Firefox
+bindsym $mod+x [class="Firefox" window_role="About"] kill
+
+# enable floating mode and move container to workspace 4
+for_window [class="^evil-app$"] floating enable, move container to workspace 4
+
+

The criteria which are currently implemented are:

+
+
+class +
+
+

+ Compares the window class (the second part of WM_CLASS) +

+
+
+instance +
+
+

+ Compares the window instance (the first part of WM_CLASS) +

+
+
+window_role +
+
+

+ Compares the window role (WM_WINDOW_ROLE). +

+
+
+id +
+
+

+ Compares the X11 window ID, which you can get via xwininfo for example. +

+
+
+title +
+
+

+ Compares the X11 window title (_NET_WM_NAME or WM_NAME as fallback). +

+
+
+urgent +
+
+

+ Compares the urgent state of the window. Can be "latest" or "oldest". + Matches the latest or oldest urgent window, respectively. + (The following aliases are also available: newest, last, recent, first) +

+
+
+con_mark +
+
+

+ Compares the mark set for this container, see [vim_like_marks]. +

+
+
+con_id +
+
+

+ Compares the i3-internal container ID, which you can get via the IPC + interface. Handy for scripting. +

+
+
+

The criteria class, instance, role, title and mark are actually +regular expressions (PCRE). See pcresyntax(3) or perldoc perlre for +information on how to use them.

+
+

6.1. Executing applications (exec)

+

What good is a window manager if you can’t actually start any applications? +The exec command starts an application by passing the command you specify to a +shell. This implies that you can use globbing (wildcards) and programs will be +searched in your $PATH.

+

Syntax:

+
+
+
exec [--no-startup-id] command
+
+

Example:

+
+
+
# Start the GIMP
+bindsym $mod+g exec gimp
+
+# Start the terminal emulator urxvt which is not yet startup-notification-aware
+bindsym $mod+Return exec --no-startup-id urxvt
+
+

The --no-startup-id parameter disables startup-notification support for this +particular exec command. With startup-notification, i3 can make sure that a +window appears on the workspace on which you used the exec command. Also, it +will change the X11 cursor to watch (a clock) while the application is +launching. So, if an application is not startup-notification aware (most GTK +and Qt using applications seem to be, though), you will end up with a watch +cursor for 60 seconds.

+
+
+

6.2. Splitting containers

+

The split command makes the current window a split container. Split containers +can contain multiple windows. Depending on the layout of the split container, +new windows get placed to the right of the current one (splith) or new windows +get placed below the current one (splitv).

+

If you apply this command to a split container with the same orientation, +nothing will happen. If you use a different orientation, the split container’s +orientation will be changed (if it does not have more than one window). Use +layout toggle split to change the layout of any split container from splitv +to splith or vice-versa.

+

Syntax:

+
+
+
split <vertical|horizontal>
+
+

Example:

+
+
+
bindsym $mod+v split vertical
+bindsym $mod+h split horizontal
+
+
+
+

6.3. Manipulating layout

+

Use layout toggle split, layout stacking, layout tabbed, layout splitv +or layout splith to change the current container layout to splith/splitv, +stacking, tabbed layout, splitv or splith, respectively.

+

To make the current window (!) fullscreen, use fullscreen, to make +it floating (or tiling again) use floating enable respectively floating disable +(or floating toggle):

+

Syntax:

+
+
+
layout <default|tabbed|stacking|splitv|splith>
+layout toggle [split|all]
+
+

Examples:

+
+
+
bindsym $mod+s layout stacking
+bindsym $mod+l layout toggle split
+bindsym $mod+w layout tabbed
+
+# Toggle between stacking/tabbed/split:
+bindsym $mod+x layout toggle
+
+# Toggle between stacking/tabbed/splith/splitv:
+bindsym $mod+x layout toggle all
+
+# Toggle fullscreen
+bindsym $mod+f fullscreen
+
+# Toggle floating/tiling
+bindsym $mod+t floating toggle
+
+
+
+

6.4. Focusing/Moving containers

+

To change the focus, use the focus command: focus left, focus right, focus +down and focus up.

+

There are a few special parameters you can use for the focus command:

+
+
+parent +
+
+

+ Sets focus to the Parent Container of the current Container. +

+
+
+child +
+
+

+ The opposite of focus parent, sets the focus to the last focused + child container. +

+
+
+floating +
+
+

+ Sets focus to the last focused floating container. +

+
+
+tiling +
+
+

+ Sets focus to the last focused tiling container. +

+
+
+mode_toggle +
+
+

+ Toggles between floating/tiling containers. +

+
+
+output +
+
+

+ Followed by a direction or an output name, this will focus the + corresponding output. +

+
+
+

For moving, use move left, move right, move down and move up.

+

Syntax:

+
+
+
focus <left|right|down|up>
+focus <parent|child|floating|tiling|mode_toggle>
+focus output <<left|right|down|up>|output>
+move <left|right|down|up> [<px> px]
+move [absolute] position [[<px> px] [<px> px]|center]
+
+

Note that the amount of pixels you can specify for the move command is only +relevant for floating containers. The default amount is 10 pixels.

+

Examples:

+
+
+
# Focus container on the left, bottom, top, right:
+bindsym $mod+j focus left
+bindsym $mod+k focus down
+bindsym $mod+l focus up
+bindsym $mod+semicolon focus right
+
+# Focus parent container
+bindsym $mod+u focus parent
+
+# Focus last floating/tiling container
+bindsym $mod+g focus mode_toggle
+
+# Focus the output right to the current one
+bindsym $mod+x focus output right
+
+# Focus the big output
+bindsym $mod+x focus output HDMI-2
+
+# Move container to the left, bottom, top, right:
+bindsym $mod+j move left
+bindsym $mod+k move down
+bindsym $mod+l move up
+bindsym $mod+semicolon move right
+
+# Move container, but make floating containers
+# move more than the default
+bindsym $mod+j move left 20 px
+
+# Move floating container to the center
+# of all outputs
+bindsym $mod+c move absolute position center
+
+
+
+

6.5. Changing (named) workspaces/moving to workspaces

+

To change to a specific workspace, use the workspace command, followed by the +number or name of the workspace. To move containers to specific workspaces, use +move container to workspace.

+

You can also switch to the next and previous workspace with the commands +workspace next and workspace prev, which is handy, for example, if you have +workspace 1, 3, 4 and 9 and you want to cycle through them with a single key +combination. To restrict those to the current output, use workspace +next_on_output and workspace prev_on_output. Similarly, you can use move +container to workspace next, move container to workspace prev to move a +container to the next/previous workspace and move container to workspace current +(the last one makes sense only when used with criteria).

+

See [move_to_outputs] for how to move a container/workspace to a different +RandR output.

+

To switch back to the previously focused workspace, use workspace +back_and_forth; likewise, you can move containers to the previously focused +workspace using move container to workspace back_and_forth.

+

Syntax:

+
+
+
workspace <next|prev|next_on_output|prev_on_output>
+workspace back_and_forth
+workspace <name>
+workspace number <name>
+
+move [window|container] [to] workspace <name>
+move [window|container] [to] workspace number <name>
+move [window|container] [to] workspace <prev|next|current>
+
+

Examples:

+
+
+
bindsym $mod+1 workspace 1
+bindsym $mod+2 workspace 2
+...
+
+bindsym $mod+Shift+1 move container to workspace 1
+bindsym $mod+Shift+2 move container to workspace 2
+...
+
+# switch between the current and the previously focused one
+bindsym $mod+b workspace back_and_forth
+bindsym $mod+Shift+b move container to workspace back_and_forth
+
+# move the whole workspace to the next output
+bindsym $mod+x move workspace to output right
+
+# move firefox to current workspace
+bindsym $mod+F1 [class="Firefox"] move workspace current
+
+
+

6.5.1. Named workspaces

+

Workspaces are identified by their name. So, instead of using numbers in the +workspace command, you can use an arbitrary name:

+

Example:

+
+
+
bindsym $mod+1 workspace mail
+...
+
+

If you want the workspace to have a number and a name, just prefix the +number, like this:

+

Example:

+
+
+
bindsym $mod+1 workspace 1: mail
+bindsym $mod+2 workspace 2: www
+...
+
+

Note that the workspace will really be named "1: mail". i3 treats workspace +names beginning with a number in a slightly special way. Normally, named +workspaces are ordered the way they appeared. When they start with a number, i3 +will order them numerically. Also, you will be able to use workspace number 1 +to switch to the workspace which begins with number 1, regardless of which name +it has. This is useful in case you are changing the workspace’s name +dynamically. To combine both commands you can use workspace number 1: mail to +specify a default name if there’s currently no workspace starting with a "1".

+
+
+

6.5.2. Renaming workspaces

+

You can rename workspaces. This might be useful to start with the default +numbered workspaces, do your work, and rename the workspaces afterwards to +reflect what’s actually on them. You can also omit the old name to rename +the currently focused workspace. This is handy if you want to use the +rename command with i3-input.

+

Syntax:

+
+
+
rename workspace <old_name> to <new_name>
+rename workspace to <new_name>
+
+

Examples:

+
+
+
i3-msg 'rename workspace 5 to 6'
+i3-msg 'rename workspace 1 to "1: www"'
+i3-msg 'rename workspace "1: www" to "10: www"'
+i3-msg 'rename workspace to "2: mail"
+bindsym $mod+r exec i3-input -F 'rename workspace to "%s"' -P 'New name: '
+
+
+
+
+

6.6. Moving workspaces to a different screen

+

See [move_to_outputs] for how to move a container/workspace to a different +RandR output.

+
+
+

6.7. Moving containers/workspaces to RandR outputs

+

To move a container to another RandR output (addressed by names like LVDS1 or +VGA1) or to a RandR output identified by a specific direction (like left, +right, up or down), there are two commands:

+

Syntax:

+
+
+
move container to output <<left|right|down|up>|<output>>
+move workspace to output <<left|right|down|up>|<output>>
+
+

Examples:

+
+
+
# Move the current workspace to the next output
+# (effectively toggles when you only have two outputs)
+bindsym $mod+x move workspace to output right
+
+# Put this window on the presentation output.
+bindsym $mod+x move container to output VGA1
+
+
+
+

6.8. Resizing containers/windows

+

If you want to resize containers/windows using your keyboard, you can use the +resize command:

+

Syntax:

+
+
+
resize <grow|shrink> <direction> [<px> px [or <ppt> ppt]]
+
+

Direction can either be one of up, down, left or right. Or you can be +less specific and use width or height, in which case i3 will take/give +space from all the other containers. The optional pixel argument specifies by +how many pixels a floating container should be grown or shrunk (the default +is 10 pixels). The ppt argument means percentage points and specifies by how +many percentage points a tiling container should be grown or shrunk (the +default is 10 percentage points).

+

I recommend using the resize command inside a so called mode:

+
+
Example: Configuration file, defining a mode for resizing
+
+
mode "resize" {
+        # These bindings trigger as soon as you enter the resize mode
+
+        # Pressing left will shrink the window’s width.
+        # Pressing right will grow the window’s width.
+        # Pressing up will shrink the window’s height.
+        # Pressing down will grow the window’s height.
+        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
+
+        # same bindings, but for the arrow keys
+        bindsym Left        resize shrink width 10 px or 10 ppt
+        bindsym Down        resize grow height 10 px or 10 ppt
+        bindsym Up          resize shrink height 10 px or 10 ppt
+        bindsym Right       resize grow width 10 px or 10 ppt
+
+        # back to normal: Enter or Escape
+        bindsym Return mode "default"
+        bindsym Escape mode "default"
+}
+
+# Enter resize mode
+bindsym $mod+r mode "resize"
+
+
+
+

6.9. Jumping to specific windows

+

Often when in a multi-monitor environment, you want to quickly jump to a +specific window. For example, while working on workspace 3 you may want to +jump to your mail client to email your boss that you’ve achieved some +important goal. Instead of figuring out how to navigate to your mail client, +it would be more convenient to have a shortcut. You can use the focus command +with criteria for that.

+

Syntax:

+
+
+
[class="class"] focus
+[title="title"] focus
+
+

Examples:

+
+
+
# Get me to the next open VIM instance
+bindsym $mod+a [class="urxvt" title="VIM"] focus
+
+
+
+

6.10. VIM-like marks (mark/goto)

+

This feature is like the jump feature: It allows you to directly jump to a +specific window (this means switching to the appropriate workspace and setting +focus to the windows). However, you can directly mark a specific window with +an arbitrary label and use it afterwards. You can unmark the label in the same +way, using the unmark command. If you don’t specify a label, unmark removes all +marks. You do not need to ensure that your windows have unique classes or +titles, and you do not need to change your configuration file.

+

As the command needs to include the label with which you want to mark the +window, you cannot simply bind it to a key. i3-input is a tool created +for this purpose: It lets you input a command and sends the command to i3. It +can also prefix this command and display a custom prompt for the input dialog.

+

Syntax:

+
+
+
mark identifier
+[con_mark="identifier"] focus
+unmark identifier
+
+

Example (in a terminal):

+
+
+
$ i3-msg mark irssi
+$ i3-msg '[con_mark="irssi"] focus'
+$ i3-msg unmark irssi
+
+
+
+

6.11. Changing border style

+

To change the border of the current client, you can use border normal to use the normal +border (including window title), border 1pixel to use a 1-pixel border (no window title) +and border none to make the client borderless.

+

There is also border toggle which will toggle the different border styles.

+

Examples:

+
+
+
bindsym $mod+t border normal
+bindsym $mod+y border 1pixel
+bindsym $mod+u border none
+
+
+
+

6.12. Enabling shared memory logging

+

As described in http://i3wm.org/docs/debugging.html, i3 can log to a shared +memory buffer, which you can dump using i3-dump-log. The shmlog command +allows you to enable or disable the shared memory logging at runtime.

+

Note that when using shmlog <size_in_bytes>, the current log will be +discarded and a new one will be started.

+

Syntax:

+
+
+
shmlog <size_in_bytes>
+shmlog <on|off|toggle>
+
+

Examples:

+
+
+
# Enable/disable logging
+bindsym $mod+x shmlog toggle
+
+# or, from a terminal:
+# increase the shared memory log buffer to 50 MiB
+i3-msg shmlog $((50*1024*1024))
+
+
+
+

6.13. Enabling debug logging

+

The debuglog command allows you to enable or disable debug logging at +runtime. Debug logging is much more verbose than non-debug logging. This +command does not activate shared memory logging (shmlog), and as such is most +likely useful in combination with the above-described [shmlog] command.

+

Syntax:

+
+
+
debuglog <on|off|toggle>
+
+

Examples:

+
+
+
# Enable/disable logging
+bindsym $mod+x debuglog toggle
+
+
+
+

6.14. Reloading/Restarting/Exiting

+

You can make i3 reload its configuration file with reload. You can also +restart i3 inplace with the restart command to get it out of some weird state +(if that should ever happen) or to perform an upgrade without having to restart +your X session. To exit i3 properly, you can use the exit command, +however you don’t need to (simply killing your X session is fine as well).

+

Examples:

+
+
+
bindsym $mod+Shift+r restart
+bindsym $mod+Shift+w reload
+bindsym $mod+Shift+e exit
+
+
+
+

6.15. Scratchpad

+

There are two commands to use any existing window as scratchpad window. move +scratchpad will move a window to the scratchpad workspace. This will make it +invisible until you show it again. There is no way to open that workspace. +Instead, when using scratchpad show, the window will be shown again, as a +floating window, centered on your current workspace (using scratchpad show on +a visible scratchpad window will make it hidden again, so you can have a +keybinding to toggle). Note that this is just a normal floating window, so if +you want to "remove it from scratchpad", you can simple make it tiling again +(floating toggle).

+

As the name indicates, this is useful for having a window with your favorite +editor always at hand. However, you can also use this for other permanently +running applications which you don’t want to see all the time: Your music +player, alsamixer, maybe even your mail client…?

+

Syntax:

+
+
+
move scratchpad
+
+scratchpad show
+
+

Examples:

+
+
+
# Make the currently focused window a scratchpad
+bindsym $mod+Shift+minus move scratchpad
+
+# Show the first scratchpad window
+bindsym $mod+minus scratchpad show
+
+# Show the sup-mail scratchpad window, if any.
+bindsym mod4+s [title="^Sup ::"] scratchpad show
+
+
+
+

6.16. i3bar control

+

There are two options in the configuration of each i3bar instance that can be +changed during runtime by invoking a command through i3. The commands bar +hidden_state and bar mode allow setting the current hidden_state +respectively mode option of each bar. It is also possible to toggle between +hide state and show state as well as between dock mode and hide mode. Each +i3bar instance can be controlled individually by specifying a bar_id, if none +is given, the command is executed for all bar instances.

+

Syntax:

+
+
+
bar hidden_state hide|show|toggle [<bar_id>]
+
+bar mode dock|hide|invisible|toggle [<bar_id>]
+
+

Examples:

+
+
+
# Toggle between hide state and show state
+bindsym $mod+m bar hidden_state toggle
+
+# Toggle between dock mode and hide mode
+bindsym $mod+n bar mode toggle
+
+# Set the bar instance with id 'bar-1' to switch to hide mode
+bindsym $mod+b bar mode hide bar-1
+
+# Set the bar instance with id 'bar-1' to always stay hidden
+bindsym $mod+Shift+b bar mode invisible bar-1
+
+
+
+
+
+

7. Multiple monitors

+
+

As you can see in the goal list on the website, i3 was specifically developed +with support for multiple monitors in mind. This section will explain how to +handle multiple monitors.

+

When you have only one monitor, things are simple. You usually start with +workspace 1 on your monitor and open new ones as you need them.

+

When you have more than one monitor, each monitor will get an initial +workspace. The first monitor gets 1, the second gets 2 and a possible third +would get 3. When you switch to a workspace on a different monitor, i3 will +switch to that monitor and then switch to the workspace. This way, you don’t +need shortcuts to switch to a specific monitor, and you don’t need to remember +where you put which workspace. New workspaces will be opened on the currently +active monitor. It is not possible to have a monitor without a workspace.

+

The idea of making workspaces global is based on the observation that most +users have a very limited set of workspaces on their additional monitors. +They are often used for a specific task (browser, shell) or for monitoring +several things (mail, IRC, syslog, …). Thus, using one workspace on one monitor +and "the rest" on the other monitors often makes sense. However, as you can +create an unlimited number of workspaces in i3 and tie them to specific +screens, you can have the "traditional" approach of having X workspaces per +screen by changing your configuration (using modes, for example).

+
+

7.1. Configuring your monitors

+

To help you get going if you have never used multiple monitors before, here is +a short overview of the xrandr options which will probably be of interest to +you. It is always useful to get an overview of the current screen configuration. +Just run "xrandr" and you will get an output like the following:

+
+
+
$ xrandr
+Screen 0: minimum 320 x 200, current 1280 x 800, maximum 8192 x 8192
+VGA1 disconnected (normal left inverted right x axis y axis)
+LVDS1 connected 1280x800+0+0 (normal left inverted right x axis y axis) 261mm x 163mm
+   1280x800       60.0*+   50.0
+   1024x768       85.0     75.0     70.1     60.0
+   832x624        74.6
+   800x600        85.1     72.2     75.0     60.3     56.2
+   640x480        85.0     72.8     75.0     59.9
+   720x400        85.0
+   640x400        85.1
+   640x350        85.1
+
+

Several things are important here: You can see that LVDS1 is connected (of +course, it is the internal flat panel) but VGA1 is not. If you have a monitor +connected to one of the ports but xrandr still says "disconnected", you should +check your cable, monitor or graphics driver.

+

The maximum resolution you can see at the end of the first line is the maximum +combined resolution of your monitors. By default, it is usually too low and has +to be increased by editing /etc/X11/xorg.conf.

+

So, say you connected VGA1 and want to use it as an additional screen:

+
+
+
xrandr --output VGA1 --auto --left-of LVDS1
+
+

This command makes xrandr try to find the native resolution of the device +connected to VGA1 and configures it to the left of your internal flat panel. +When running "xrandr" again, the output looks like this:

+
+
+
$ xrandr
+Screen 0: minimum 320 x 200, current 2560 x 1024, maximum 8192 x 8192
+VGA1 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 338mm x 270mm
+   1280x1024      60.0*+   75.0
+   1280x960       60.0
+   1152x864       75.0
+   1024x768       75.1     70.1     60.0
+   832x624        74.6
+   800x600        72.2     75.0     60.3     56.2
+   640x480        72.8     75.0     66.7     60.0
+   720x400        70.1
+LVDS1 connected 1280x800+1280+0 (normal left inverted right x axis y axis) 261mm x 163mm
+   1280x800       60.0*+   50.0
+   1024x768       85.0     75.0     70.1     60.0
+   832x624        74.6
+   800x600        85.1     72.2     75.0     60.3     56.2
+   640x480        85.0     72.8     75.0     59.9
+   720x400        85.0
+   640x400        85.1
+   640x350        85.1
+
+

Please note that i3 uses exactly the same API as xrandr does, so it will see +only what you can see in xrandr.

+

See also [presentations] for more examples of multi-monitor setups.

+
+
+

7.2. Interesting configuration for multi-monitor environments

+

There are several things to configure in i3 which may be interesting if you +have more than one monitor:

+
    +
  1. +

    +You can specify which workspace should be put on which screen. This + allows you to have a different set of workspaces when starting than just + 1 for the first monitor, 2 for the second and so on. See + [workspace_screen]. +

    +
  2. +
  3. +

    +If you want some applications to generally open on the bigger screen + (MPlayer, Firefox, …), you can assign them to a specific workspace, see + [assign_workspace]. +

    +
  4. +
  5. +

    +If you have many workspaces on many monitors, it might get hard to keep + track of which window you put where. Thus, you can use vim-like marks to + quickly switch between windows. See [vim_like_marks]. +

    +
  6. +
  7. +

    +For information on how to move existing workspaces between monitors, + see [_moving_containers_workspaces_to_randr_outputs]. +

    +
  8. +
+
+
+
+
+

8. i3 and the rest of your software world

+
+
+

8.1. Displaying a status line

+

A very common thing amongst users of exotic window managers is a status line at +some corner of the screen. It is an often superior replacement to the widget +approach you have in the task bar of a traditional desktop environment.

+

If you don’t already have your favorite way of generating such a status line +(self-written scripts, conky, …), then i3status is the recommended tool for +this task. It was written in C with the goal of using as few syscalls as +possible to reduce the time your CPU is woken up from sleep states. Because +i3status only spits out text, you need to combine it with some other tool, like +i3bar. See [status_command] for how to display i3status in i3bar.

+

Regardless of which application you use to display the status line, you +want to make sure that it registers as a dock window using EWMH hints. i3 will +position the window either at the top or at the bottom of the screen, depending +on which hint the application sets. With i3bar, you can configure its position, +see [i3bar_position].

+
+
+

8.2. Giving presentations (multi-monitor)

+

When giving a presentation, you typically want the audience to see what you see +on your screen and then go through a series of slides (if the presentation is +simple). For more complex presentations, you might want to have some notes +which only you can see on your screen, while the audience can only see the +slides.

+
+

8.2.1. Case 1: everybody gets the same output

+

This is the simple case. You connect your computer to the video projector, +turn on both (computer and video projector) and configure your X server to +clone the internal flat panel of your computer to the video output:

+
+
+
xrandr --output VGA1 --mode 1024x768 --same-as LVDS1
+
+

i3 will then use the lowest common subset of screen resolutions, the rest of +your screen will be left untouched (it will show the X background). So, in +our example, this would be 1024x768 (my notebook has 1280x800).

+
+
+

8.2.2. Case 2: you can see more than your audience

+

This case is a bit harder. First of all, you should configure the VGA output +somewhere near your internal flat panel, say right of it:

+
+
+
xrandr --output VGA1 --mode 1024x768 --right-of LVDS1
+
+

Now, i3 will put a new workspace (depending on your settings) on the new screen +and you are in multi-monitor mode (see [multi_monitor]).

+

Because i3 is not a compositing window manager, there is no ability to +display a window on two screens at the same time. Instead, your presentation +software needs to do this job (that is, open a window on each screen).

+
+
+
+
+
+

+ + + diff --git a/docs/4.8/wsbar.html b/docs/4.8/wsbar.html new file mode 100644 index 0000000..a50da7f --- /dev/null +++ b/docs/4.8/wsbar.html @@ -0,0 +1,141 @@ + + + + + + +i3: External workspace bars + + + + + + + +
+

i3 - improved tiling WM

+ +
+
+ +
+
+

i3 comes with i3bar by default, a simple bar that is sufficient for most users. +In case you are unhappy with it, this document explains how to use a different, +external workspace bar. Note that we do not provide support for external +programs.

+
+
+
+

1. Internal and external bars

+
+

The internal workspace bar of i3 is meant to be a reasonable default so that +you can use i3 without having too much hassle when setting it up. It is quite +simple and intended to stay this way.

+
+
+
+

2. dock mode

+
+

You typically want to see the same workspace bar on every workspace on a +specific screen. Also, you don’t want to place the workspace bar somewhere +in your layout by hand. This is where dock mode comes in: When a program sets +the appropriate hint (_NET_WM_WINDOW_TYPE_DOCK), it will be managed in dock +mode by i3. That means it will be placed at the bottom or top of the screen +(while other edges of the screen are possible in the NetWM standard, this is +not yet implemented in i3), it will not overlap any other window and it will be +on every workspace for the specific screen it was placed on initially.

+
+
+
+

3. The IPC interface

+
+

In the context of using an external workspace bar, the IPC interface needs to +provide the bar program with the current workspaces and output (as in VGA-1, +LVDS-1, …) configuration. In the other direction, the program has to be able +to switch to specific workspaces.

+

By default, the IPC interface is enabled and you can get the path to the socket +by calling i3 --get-socketpath.

+

To learn more about the protocol which is used for IPC, see docs/ipc.

+
+
+
+

4. Output changes (on-the-fly)

+
+

i3 implements the RandR API and can handle changing outputs quite well. So, an +external workspace bar implementation needs to make sure that when you change +the resolution of any of your screens (or enable/disable an output), the bars +will be adjusted properly.

+
+
+
+

5. i3-wsbar, an example implementation

+
+

i3-wsbar used to be the reference implementation before we had i3bar. +Nowadays, it is not shipped with release tarballs, but you can still get it at +http://code.stapelberg.de/git/i3/tree/contrib/i3-wsbar

+
+

5.1. The big picture

+

The most common reason to use an external workspace bar is to integrate system +information such as what i3status or conky provide into the workspace bar. +So, we have i3status or a similar program, which only provides +text output (formatted in some way). To display this text nicely on the screen, +there are programs such as dzen2, xmobar and similar. We will stick to dzen2 +from here on. So, we have the output of i3status, which needs to go into dzen2 +somehow. But we also want to display the list of workspaces. i3-wsbar takes +input on stdin, combines it with a formatted workspace list and pipes it to +dzen2.

+

Please note that i3-wsbar does not print its output to stdout. Instead, it +launches the dzen2 instances on its own. This is necessary to handle changes +in the available outputs (to place a new dzen2 on a new screen for example).

+

+ +Overview + +

+
+
+

5.2. Running i3-wsbar

+

The most simple usage of i3-wsbar looks like this:

+
+
+
i3-wsbar -c "dzen2 -x %x -dock"
+
+

The %x in the command name will be replaced by the X position of the output +for which this workspace bar is running. i3 will automatically place the +workspace bar on the correct output when dzen2 is started in dock mode. The +bar which you will see should look exactly like the internal bar of i3.

+

To actually get a benefit, you want to give i3-wsbar some input:

+
+
+
i3status | i3-wsbar -c "dzen2 -x %x -dock"
+
+
+
+
+
+

+ + + diff --git a/docs/4.8/wsbar.png b/docs/4.8/wsbar.png new file mode 100644 index 0000000000000000000000000000000000000000..0789dec532bea9c358c782f14f6c95a0cece5319 GIT binary patch literal 14339 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- 2.39.5