]> git.sur5r.net Git - i3/i3.github.io/blob - index.html.mako
add text for the info box on the main page
[i3/i3.github.io] / index.html.mako
1 <%!
2         section = "index"
3 %>
4 <%inherit file="_templates/i3.mako" />
5 <div id="info" class="clearfix">
6
7     <div id="screens">
8         <img id="screenshot" src="/screenshots/i3-6.png" width="375" height="219">
9     </div>
10
11     <h2>Do What I Mean. Good Docs. Clean Code. Sounds good?</h2>
12     <p>
13     Then you will love i3. Watch the <a href="/screenshots/">screencast</a>,<br>
14     read the <a href="/docs/userguide.html">User’s Guide</a> and <a
15     href="/downloads/">install i3</a>!
16     </p>
17     <div id="download">
18         <a href="/downloads">
19         <span style="font-weight: bold; color: #3A8ECD; margin-right: .5em">➡</span>
20         Download the latest version
21         <span style="margin-left: 2em; color: #c0c0c0">3.ε</span>
22         </a>
23     </div>
24 </div>
25
26 <div id="content">
27 <p>
28 i3 is a tiling window manager, completely written from scratch. It is primarily
29 targeted at advanced users and developers. Based upon the experiences we made
30 when wanting to hack/fix wmii, we agreed upon the following goals for i3:
31 </p> 
32  
33 <ol> 
34   <li> 
35     Write well readable, well <strong>documented</strong> code. Create additional
36     documentation on how to extend i3 by explaining its internal workings.
37     <br /> 
38     This includes being modifiable by people who do know how to program but who are
39     not necessarily familiar with all of X11’s internals. That is, document why
40     things happen and when they happen so that the user gets a picture of the whole
41     process a Window Manager is responsible of by just reading the source code.
42   </li> 
43   <li> 
44     Use xcb as far as possible (it does not provide functions for some features
45     yet, like XKB) instead of Xlib. xcb has a much cleaner API and should be faster
46     in quite a lot of situations.
47   </li> 
48   <li> 
49     Implement multi-monitor correctly, that is by assigning each workspace to a
50     virtual screen. Especially make sure that attaching and detaching new monitors
51     like video projectors works during operation and does the right thing. Also
52     provide support for rotated monitors.
53   </li> 
54   <li> 
55     Use a tree as data structure. This allows for more flexible layouts than
56     the column-based approach used by other window managers.
57   </li> 
58   <li> 
59     Implement different modes, like in vim. You can use different keybindings
60     when in the 'resize' mode than when you are in the default mode, for
61     example.
62   </li> 
63   <li> 
64     Do <strong>not</strong> use programs such as autoconf/automake for configuration and
65     creating unreadable/broken makefiles. Instead, use a clean makefile which automatically
66     enables/disables features for specific platforms. Also, document the dependencies
67     properly, so that package maintainers have an easy job packaging i3.
68   </li> 
69   <li> 
70     Implement an IPC interface for other programs. Provide subscription to
71     certain events and accept commands.
72     <br /> 
73     This approach should be more lightweight than wmii’s usage of the 9P filesystem.
74     Furthermore, core functionality does not depend on a separate program, so that i3
75     runs faster, especially when your system is under load.
76   </li> 
77   <li> 
78     Be UTF-8 clean.
79   </li> 
80   <li> 
81     The usual elitism amongst minimal window managers: Don’t be bloated, don’t be fancy
82     (simple borders are the most decoration we want to have), don’t add support for Xft
83     and blurred fonts.
84     <br /> 
85     However, we do not enforce unnecessary limits such as a maximum amount of source lines
86     of code. If it needs to be a bit bigger, it will be.
87   </li> 
88 </ol> 
89  
90 </div>