]> git.sur5r.net Git - i3/i3/blob - website/index.html
Fix unaligned memory access on sparc (Thanks David Coppa)
[i3/i3] / website / index.html
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <title>i3 - an improved dynamic tiling window manager</title>
5 <link rel="icon" type="image/png" href="/favicon.png">
6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
7 <meta name="description" content="i3 is a dynamic tiling window manager with clean, readable and documented code, featuring extended XRandR support, usage of libxcb instead of xlib and several improvements over wmii">
8 <meta name="keywords" content="i3, window, manager, tiling, keyboard, wmii, x11, xcb, xinerama, utf8">
9 <meta name="author" content="i3 developers">
10 <style type="text/css">
11 body {
12         text-align: justify;
13         max-width: 900px;
14         background-color: #1e1e1e;
15         color: #c0c0c0;
16 }
17
18 ol li {
19         margin-bottom: 10px;
20 }
21
22 #menu {
23         margin-left: -15px;
24         overflow: hidden;
25         list-style-type: none;
26 }
27
28 #menu li {
29         margin-left: 30px;
30         margin-right: 30px;
31         float: left;
32 }
33
34 a {
35         color: #c0c0c0;
36         text-decoration: underline;
37 }
38
39 </style>
40 </head>
41 <body>
42
43 <img width="131" height="125" src="http://i3.zekjur.net/logo.png" style="margin-right: 15px" alt="logo" id="logo" align="left">
44
45 <h1 style="color: red; font-family: georgia; font-size: 3em;margin-bottom: 0;">i3</h1>
46 <h1 style="font-family: georgia; font-size: 2em;margin-bottom: 0;">improved tiling wm</h1>
47
48 <br style="height: 0; clear: both;">
49 <hr style="border: 1px solid black; clear: both; margin-top: 5px;">
50
51 <ul id="menu">
52   <li>
53     <a href="/">Goals</a>
54   </li>
55   <li>
56     <a href="/docs/">Docs</a>
57   </li>
58   <li>
59     <a href="/downloads/">Downloads</a>
60   </li>
61   <li>
62     <a href="/screenshots/">Screens</a>
63   </li>
64   <li>
65     <a href="/bugs">Bugtracker</a>
66   </li>
67   <li>
68     <a href="/contact/">Contact</a>
69   </li>
70   <li>
71     <a href="/impress.html">Impressum</a>
72   </li>
73 </ul>
74
75 <hr style="border: 1px solid black; clear: both; margin-top: 15px;">
76
77 <p>
78   i3 is a tiling window manager, completely written from scratch.
79 </p>
80
81 <p>
82   i3 was created because wmii, our favorite window manager at the time, didn’t
83   provide some features we wanted (multi-monitor done right, for example), had
84   some bugs, didn’t progress since quite some time and wasn’t easy to hack at
85   all (source code comments/documentation completely lacking). Still, we think
86   the wmii developers and contributors did a great job. Thank you for inspiring
87   us to create i3.
88 </p>
89
90 <p>
91   Please be aware that i3 is primarily targeted at advanced users and developers.
92 </p>
93
94 <h2>Goals</h2>
95
96 <p>
97   Based upon the experiences we made when wanting to hack/fix wmii, we agreed
98   upon the following goals for i3:
99 </p>
100
101 <ol>
102   <li>
103     Write well readable, well <strong>documented</strong> code. Create additional
104     documentation on how to extend i3 by explaining its internal workings.
105     <br />
106     This includes being modifyable by people who do know how to program but who are
107     not necessarily familiar with all of X11’s internals. That is, document why
108     things happen and when they happen so that the user gets a picture of the whole
109     process a Window Manager is responsible of by just reading the source code.
110   </li>
111   <li>
112     Use xcb as far as possible (it does not provide functions for some features
113     yet, like XKB) instead of Xlib. xcb has a much cleaner API and should be faster
114     in quite a lot of situations.
115   </li>
116   <li>
117     Implement multi-monitor correctly, that is by assigning each workspace to a
118     virtual screen. Especially make sure that attaching and detaching new monitors
119     like video projectors works during operation and does the right thing.
120   </li>
121   <li>
122     Use the metaphor of a table for abstraction. You can create horizontal and
123     vertical columns (in wmii, you can only create vertical columns). See the documentation
124     for more information on how this works, it really is an important principle in i3.
125     (TODO: documentation :-))
126   </li>
127   <li>
128     Implement a command mode, like in vim. You can easily combine multiple
129     actions (like focusing, moving, snapping) by using the command mode.
130   </li>
131   <li>
132     Implement XRandR support for flipping monitors.
133   </li>
134   <li>
135     Do <strong>not</strong> use programs such as autoconf/automake for configuration and
136     creating unreadable/broken makefiles. Instead, use a clean makefile which automatically
137     enables/disables features for specific platforms. Also, document the dependencies
138     properly, so that package maintainers have an easy job packaging i3.
139   </li>
140   <li>
141     Provide hooks/callbacks for other programs to integrate. Using this mechanism, one
142     can easily extend i3 in whatever language, without ever touching the C code. Also,
143     to communicate with a running i3 instance, messages can be sent.
144     <br />
145     This approach should be more lightweight than wmii’s usage of the 9P filesystem.
146     Furthermore, core functionality does not depend on a separate program, so that i3
147     runs faster, especially when your system is under load.
148   </li>
149   <li>
150     Be UTF-8 clean.
151   </li>
152   <li>
153     The usual elitism amongst minimal window managers: Don’t be bloated, don’t be fancy
154     (simple borders are the most decoration we want to have), don’t add support for Xft
155     and blurred fonts.
156     <br />
157     However, we do not enforce unnecessary limits such as a maximum amount of source lines
158     of code. If it needs to be a bit bigger, it will be.
159   </li>
160 </ol>
161
162 <h3>Special Features</h3>
163
164 <ul>
165   <li>
166     We can bind on Mode_switch (Alt Gr). Other window managers fail to do that because
167     of an X11-bug, which causes the modifier state to not be correctly set in KeyPress-
168     events. We use XKB for making sure to get the correct state.
169   </li>
170 </ul>
171
172 <h2>Development</h2>
173
174 <p>
175   i3 is currently developed at <a href="http://code.stapelberg.de/git/i3" title="cgit">
176   http://code.stapelberg.de/git/i3</a>. Checkouts of the master branch are intended to
177   be stable and working all the time. Integration of new features happens in a separate branch.
178 </p>
179
180 <h2>License</h2>
181
182 <pre>
183 Copyright © 2009, Michael Stapelberg
184 All rights reserved.
185
186 Redistribution and use in source and binary forms, with or without
187 modification, are permitted provided that the following conditions are met:
188
189     * Redistributions of source code must retain the above copyright
190       notice, this list of conditions and the following disclaimer.
191
192     * Redistributions in binary form must reproduce the above copyright
193       notice, this list of conditions and the following disclaimer in the
194       documentation and/or other materials provided with the distribution.
195
196     * Neither the name of Michael Stapelberg nor the
197       names of contributors may be used to endorse or promote products
198       derived from this software without specific prior written permission.
199
200 THIS SOFTWARE IS PROVIDED BY Michael Stapelberg ''AS IS'' AND ANY
201 EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
202 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
203 DISCLAIMED. IN NO EVENT SHALL Michael Stapelberg BE LIABLE FOR ANY
204 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
205 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
206 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
207 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
208 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
209 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
210 </pre>
211
212 </body>
213 </html>