root / README.parti

Revision 29009acfbe56cac3e922b6c936e5dfdc8623fdf3, 11.9 kB (checked in by njs@…, 9 months ago)

update dependencies in README files

Line 
1FAQ for the Parti window manager
2================================
3
4What is Parti?
5--------------
6
7Parti is a tabbing/tiling (one might say "partitioning") window
8manager.  Its goal is to bring this superior window management
9interface to modern, mainstream desktop environments.  It is written
10in Python, uses GTK+, has an automated test suite, and is released
11under the GPL.
12
13
14Could you say that again, slower?  There are like seven thousand
15window managers out there.  What makes Parti special?
16----------------------------------------------------------------
17
18Parti is a window manager (WM), i.e., it is a program that provides an
19interface for arranging and switching between all the other programs
20you run on your computer.  People generally use exactly one WM at a
21time, like KWin or Metacity or, now, Parti.
22
23There are lots of WMs like KWin or Metacity or Compiz that focus on
24integrating cleanly with modern Unix desktops, and looking good while
25doing it.  These WMs all use the traditional "desktop" metaphor where
26applications are like sheets of paper that you can put anywhere you
27want and in whatever arrangement makes sense to you.  The problem with
28this is that my real-world desk is a total mess, and the windows on my
29computer desktop are not much better.  Until they invent
30self-organizing paper, my real-world desktop is a lost cause, but my
31computer desktop doesn't have to be.  Those gigahertz in there could
32be doing all sorts of things to help me keep track of windows and
33arrange them for me.
34
35There are also lots of lesser-known WMs like ion or wmii that focus on
36providing exactly this kind of assistance, by helping you pick from a
37few good layouts (tiled, or tabbed, or one window full-screen, etc.),
38and automatically keeping windows arranged for you.  The result is
39vastly more usable, because you stop having to screw around arranging
40windows by hand, the resulting arrangements are actually better, and
41more powerful keyboard control becomes possible.  The problem with
42these is that they're visually ugly, their desktop integration is
43poor, and their acceptance by the mainstream community is nil.
44
45So Parti attempts to bring the usability of tabbing/tiling WMs to
46modern desktop environments, and serve as a test-bed where people can
47try out new ideas for how the computer can help us keep track of our
48tasks and manage our attention.  To make this as easy as possible,
49Parti is written in (almost) pure Python and GTK+.  The basic approach
50taken by Parti is to expose client windows as a special Gtk widget, so
51now if you can write a Gtk program, you can write a window manager
52too.
53
54Our development priorities are usability, hackability, and standards
55compliance, in that order.  For us a usable program is one that is
56unobtrusive, to the point of becoming an invisible and unnoticed
57extension of the user's will.  (It's also nice if it doesn't make our
58eyes hurt while it's doing that.)  For us a hackable program is one
59that has as little code as possible, and what code exists is clean and
60has automated tests.  For us standards compliance does not include
61conforming to pointless rules that make the code more complicated
62without improving user experience, but it does include defining and
63submitting new standards as it becomes clearer how to improve
64interaction between clients and a tiling WM.
65
66
67So should I start using it?
68---------------------------
69
70Probably not, it's still really alpha.  You can help fix that, though.
71
72
73How is Parti licensed?
74----------------------
75
76Copyright (C) 2007 to Nathaniel Smith <njs@pobox.com>
77Released under the terms of the GNU GPL v2 or (at your option) any
78later version.  See the file COPYING for details (and note in
79particular the LACK OF ANY WARRANTY).
80
81
82How can I try Parti?
83--------------------
84
85Running './try-parti' in the source directory will build Parti, and
86start a parti session inside a Xephyr nested X server.  Currently you
87may need to hit "tab" to get a client window focused, and you may find
88running the "parti-repl" command interesting.
89
90Running Parti requires at least:
91   python
92   xlib (including extension libraries like libXtst.so)
93   pygobject
94   pygtk
95   dbus-python
96   ipython
97And an X server with support for Composite.
98
99Developing on Parti also requires:
100   pyrex
101   Xephyr
102   Xvfb
103As well as development packages of all of the above (i.e., you need
104all the C header files, which may be split out into a package whose
105name ends in "-dev" or "-devel").
106
107If you are doing development, it is recommended that you also install:
108   nose
109   py.test
110as these will allow our test harness to give better diagnostics when
111tests fail.
112
113The ipython dependency should probably become optional (it is only
114needed for the REPL support).  Patches accepted.
115
116On Debian-based OSes, try:
117  # aptitude install libx11-dev libxtst-dev libxcomposite-dev \
118    libxdamage-dev python-pyrex python-gobject-dev \
119    python-gtk2-dev python-dbus ipython xserver-xephyr \
120    xvfb python-nose python-codespeak-lib
121
122(If you work out a similar line for another OS, like Fedora or FreeBSD
123or whatever, please send it in.)
124
125
126Why GTK+?  Don't you know Qt is way better, you Gnome bigot?
127------------------------------------------------------------
128
129Yeah, Qt is pretty sweet.  Unfortunately, I did have to pick one or
130the other.  I started with no experience with either API, and the
131initial prototype actually used Qt; I guess I could have stuck with
132that and then had to answer the same question in reverse...  I mostly
133switched to GTK+, though, because the Python Qt bindings seemed to
134make some evil hacks harder.  (Window managers need to muck around in
135the guts of X, and getting both Python and the high-level toolkits to
136play along with that means you need a few evil hacks.)
137
138So the important thing is, Parti has no desire to be a Gnome-specific
139kind of thing.  We might use some parts of Gnome where appropriate,
140but really we'd like it to be a first class citizen on any desktop
141environment (including the critical polish details like
142auto-configuring to local expectations), and will be happy to accept
143patches to that effect.
144
145Also, because Parti aims for full ICCCM and EWMH compliance (where
146possible for a primarily tiling window manager), it should mostly just
147work on any EWMH-compliant desktop environment (which should be pretty
148much all of them, these days).  This is just about the more subtle
149integration details.
150
151
152These answers are all way too temperate.  Can't you say the same
153things as a rant?  It's not really a window manager without a rant.
154-------------------------------------------------------------------
155
156Well, if you insist.
157
158These days, let's start by saying, the Unix desktop totally rocks.  We
159have beautiful widgets, fantastic hardware integration, best GUI APIs
160ever, highly usable and accessible apps, incredible i18n, you name it.
161
162Except for one thing.  Our mainstream window managers suck, suck,
163suck.  Fundamentally.  Suck.
164
165What do I mean by this?  Think about it: the basic job of a window
166manager is to help you manage and switch between the different tasks
167you're engaged in.  That's a pretty basic and pervasive part of user
168experience, and so it carries a heavy responsibility.  Modern window
169managers rise to this responsibility by... ignoring it totally.  We
170have startup notification and wobbly windows and the basic user
171experience of TWM, with windows as boxes dropped on the screen in some
172arbitrary size and position.  If you want the windows arranged
173differently, then you, the human, get to reach over and slide them
174around one by one.  But at least you're free to have a bunch of
175overlapping partially visible windows that you can't read.
176
177Most of the time I don't really need that freedom.  I just want to
178look at one window, or at two windows, or maybe an editor and two
179terminals.  These are not complicated layout problems.  I think I have
180better things to do with my time than solving them by hand, myself,
181every time.  Let the computer do it.  It'll do a better job, too; half
182the time I end up leaving big gaps that I can see my desktop through,
183and while my desktop background is very pretty, I have seen it many
184times and on this tiny laptop screen there are probably better things
185those pixels could be doing.
186
187Most of the time, I don't want to do fiddly high-precision work with
188the mouse just to switch to a different window.  I'm not even making
189the standard old complaint about moving the hand away from the
190keyboard, that's pretty quick and I can do it without looking; but
191using a pointer accurately is a high-precision motor task.  It takes
192careful attention and hand-eye coordination.  That's *exactly* the
193kind of distraction I *don't* need when I'm trying to juggle state and
194maintain flow.  So perhaps once the computer has become smart enough
195to put windows into two columns, it can devote some extra cycles to
196figuring out how to have a single-key command for "switch to other
197column"?
198
199It's not like I'm the first person to notice this.  Think of all the
200hue and cry over tabs in web browsers.  This isn't just a geeky
201preoccupation; it's gotten so my mom won't use a browser without tab
202support.  Even Microsoft has figured this one out.  And then there are
203the tabbed terminals, tabbed editors, tabbed chat clients, on and on.
204In the app space, traditional MDI is dead, and tabbing rules the
205world.
206
207Or in other words, the app developers have universally decided that
208the standard sliding-little-rectangles-around-a-big-rectangle world is
209annoying, to the point that it is considered a major feature if you
210implement a little private tabbed window manager so that users can
211avoid dealing with their main one as much as possible.  In the mean
212time, according to the usability studies, lots of users are hacking up
213their work style to approximate between-app tabbed as closely as they
214can, by keeping ever window maximized all the time.  So there's some
215room for improvement here.
216
217The app developers have all sorts of cool new ideas, too.  Browser
218tabs that show mini progress bars and visually track whether you've
219looked at the tab since it finished loading, chat windows that change
220color to show what sort of activity is going on, the genius iswitchb
221buffer-switching interface for Emacs.  Let's give every app this
222richer experience.  Let's expose it to the desktop, and make it better
223at the same time -- let's write window managers that, say, let you
224maximize one window on a small laptop screen, and still get the rich
225little notification cues from the apps that aren't visible.  Let's do
226something *new*.
227
228Not that the basic idea of tabbing window managers is new.  Parti owes
229a huge debt to the likes of pwm, ratpoison, stumpwm, trswm, xmonad and
230especially the brilliant ion and wmii.  For some reason, though, the
231previous window managers exploring these ideas seem to all be written
232by extreme minimalists.  They like raw Xlib and write rants about
233desktop bloat, and I have nothing against that per se, but honestly I
234just want NetworkManager and pleasant looking fonts *and* the ability
235to switch between tasks without gnashing my teeth.
236
237So here's the Parti line: Parti is aimed first and foremost at
238usability, and for us, a usable program is one that is unobtrusive to
239the point of becoming an invisible and unnoticed extension of the
240user's will.  Because we can't do this without fresh blood and
241experimentation, Parti is written in Python, and writing new layout
242schemes is as easy packing some GTK+ widgets.  Because this is too big
243a job to do on our own, we use pre-existing libraries whereever
244possible.  Because we need seamless integration into the desktop, we
245will reach out to other developers, to extend EWMH and existing apps
246to perfect our user experience.
247
248And our goal is nothing less than acceptance as a, or the, default
249window manager for a major desktop environment.  Is that an
250unreasonable goal?  Possibly, and there's a long, long way between
251here and there.  But let's see how far we can get.
252
253
254I'm making a window manager feature comparison table.  Is Parti fast,
255dynamic, light-weight, bloat-free, modern, flexible, and/or clean?
256---------------------------------------------------------------------
257
258Probably.
Note: See TracBrowser for help on using the browser.