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