root / trunk / NEWS

Revision 187, 12.2 kB (checked in by petli, 3 years ago)

Rewrote yesterdays hack to get dynamic border colors. Now it is much more flexible, implemented as a client filter map to border color managers, allowing fine-tuned control of which clients get which colors.

Line 
1-*-outline-*-
2
3* Version ?.? (? ??? ????)
4
5** New synthetic events for iconification
6
7When a client window is iconified or deiconified, the synthetic events
8wmevents.ClientIconified and wmevents.ClientDeiconified is sent,
9respectively.
10
11** border.BorderClient rewritten
12
13The ancient BorderClient mixin has been rewritten to allow more
14dynamic color choosing schemes.  It should be backward-compatible, but
15for those willing to change their wm scripts it is now possible to
16choose different colors for different windows.
17
18This is handled by letting client filters map to a certain
19BorderColorManager subclass object.  FixedBorderColor gives clients a
20static color, while TitleBorderColor chooses a color based on the
21window title.  This is useful to distinguish different xterm windows,
22if e.g. the current directory is included in the window title.
23
24It should be easy to define your own color managers, to get even more
25dynamic colors.
26
27For details, run "pydoc plwm.border".
28
29
30* Version 2.6a (7 Apr 2004)
31
32This is mostly a bug fix release, to get the latest set of fixes out
33the door.
34
35** Distutils is now used to build and install plwm.
36
37** We now require Python 2.0 or later. Python 1.5 is no longer supported.
38
39** Mike Meyer (mwm@mired.org) is now administering PLWM.
40
41** New mixin: mixer.py.
42
43This is a new mixin for controlling the audio mixer. Currently, it
44only supports "rexima", but it should be easy to extend to "aumix"
45etc.
46
47** Menu screen mixin is now configurable.
48
49The menu screen mixin has been extended to use menu_font,
50menu_foreground, menu_background, menu_bordercolor, and
51menu_borderwidth when it draws menus on the screen. The default is
529x15Bold, black, white, black and 3. menu_seconds is the number of
53seconds the menu will be onscreen before it vanishes of it's own
54accord. The default value is 0, which means to stay until a selection
55is made or the menu is cancelled.
56
57** Message screen mixin is now configurable.
58
59The message screen mixin can now be configured with message_font,
60message_foreground, message_background, message_bordercolor and
61message_borderwidth. message_seconds controls how long the message is
62displayed for, with a default value of 5 seconds.
63
64** Screen.system now allows i/o redirection.
65
66The Screen.system method now takes an extra argument, redirect. This
67argument should either be a single integer between 0 and 2 inclusive,
68or a tuple of such integers. These fd's are redirected to pipes, and
69the resulting pipes are returned as a three-tuple. Supplying redirect
70implies that the command will be run in the background.
71
72* Version 2.5 (6 Mar 2002)
73
74This is mostly a get-it-out-of-the-door release, and is identical with
75the preceeding 2.5 alpha.  Some of the new features are not
76documented, so you may have to resort to reading code to use them.
77
78** Abstraction for internal windows
79
80The core class Client now subclasses the new class Window.  The new
81class InternalWindow is also a subclass of Window.  The main advantage
82of this is that wm-internal windows (e.g. the ModeWindow) can be
83wrapped in an InternalWindow.  The internal window can use the same
84event system as Client windows, and also use a number of methods
85previously only provided for Client windows.
86
87** New extensions: message and input
88
89Message is an abstraction refactored out of menu for displaying
90windows containing text.  The new input extension uses this to display
91a text input window.  It can e.g. be used to let the user input
92shell commands or python code.
93
94** New mode window mixin: mw_load
95
96mw_load displays the current load average in the mode window.  It
97has support for Linux /proc and the more general Unix
98/usr/bin/uptime.
99
100** Code reorganization: plwm.misc
101
102The module plwm.misc contains various useful hacks.  Most of these
103were previously found in the example wm petliwm.py, but having them
104here makes them easier to use in other peoples wms.  Take a look in
105the file to see what is available, it is self-documented.
106
107** New feature: Screen border allocation
108
109The Screen class now provides the method alloc_border(), which can be
110used by mixins to reserve screen area at the edges.  Client windows
111will not be allowed to cover these borders.  Initially it is used by
112the mode window.
113
114
115* Version 2.4 (12 Dec 2001)
116
117** New extensions: panes and menu
118
119Mike Meyer has written two nice extension modules.  Panes provides a
120ratpoison-ish, or screen(1)-ish, or Emacs-ish way of handling windows
121on the screen.  See the comment at the top of plwm.panes for more
122details, and try out the example window manager example/plpwm.py.
123
124Menu opens a keyboard-controlled menu in the middle of the screen, and
125can be used to start applications, selecting among windows and other
126niceties.
127
128** Focus management rewritten
129
130There is now a WindowManager method set_current_client() which takes
131care of all the details in switching focus between different clients.
132
133The extension module plwm.focus now uses the new method, much reducing
134the former clutter in that module.  The mixin FocusHandler has been
135renamed to PointToFocus, and the mixin FocusClient is no longer
136needed.  If the old names are used, a warning is printed.
137
138The method move_focus() has been moved to the new mixin MoveFocus.
139
140** Internal events collected in plwm.wmevents, and also documented
141
142The various internal events previously scattered over plwm.wmanager
143and plwm.focus has now been collected in the new module plwm.wmevents.
144
145They have also been documented in the manual chapter "Core Events".
146
147** Dropped support for old xmodewin
148
149The old stand-alone xmodewin, the utilities xmwbiff and xmwclock, and
150the related modules modewinctl and modetitle have been removed.  They
151were superceded by the plwm.modewindow and plwm.mw_* extension modules
152in 2.1.
153
154** View remembers focus, and stores info at exit
155
156Views now also remembers the focused client, and is thus able to give
157it focus no matter where the pointer is located.  Very nice when using
158SloppyFocus.
159
160The current view configuration is now stored when exiting the window
161manager, in addition to when switching views.  This allows even more
162view configuration to be restored when PLWM is restarted.
163
164** CycleActivate improved
165
166plwm.cycle.CycleActivate has been improved to work well with both
167iconified and deiconified clients.  Inspiration came from Meik
168Hellmund.
169
170** Fixed bug in Screen.system()
171
172If PLWM was killed by a signal, all programs started with
173Screen.system() also got that signal.  This has been fixed by creating
174a new process group for the child process executing the program.
175
176** WindowOutlineClient added
177
178An outline client mixin drawing the outline using a set of windows has
179been added.  It is less effecient than the XorOutlineClient, but
180avoids some of its problems.  See the section for the "outline"
181extension in the documentation for further details.
182
183** NetBSD APM interface added to mw_apm
184
185The modewindow APM mixin can now fetch battery status both from Linux'
186/proc/apm and NetBSD's /dev/apm, thanks to Henrik Rindlöw.
187
188** Finalization methods added
189
190Mixin classes can now clean up after themselves, by providing the
191appropriate method of __wm_del__, __screen_del__, or __client_del__.
192
193** Bugfix in MapRequest handling
194
195An if-expression missed a "not", which resulted in that windows
196created after PLWM has started always was mapped, no matter the value
197of Client.start_iconified.  Consequently existing windows' map
198requests always was ignored.  The first effect is a bug, the second
199one turned out to be the correct behaviour.  (This is because Netscape
2006.1 abuses window mapping by attempting to deiconify whenever a web
201page has loaded.  This is _not_ what you want if the Netscape windows
202is iconified because it is on another view than the current one...)
203
204** Python 2.1 incompitability fixed
205
206It turned out that Python 2.1 is very picky about the __all__ list in
207__init__.py, so installation failed since a now removed module was
208listed in it.  Fixed now.
209
210
211* Version 2.3 (29 Aug 2001)
212
213** Documentation revised
214
215The oldest part of the documentation have been revised for grammar,
216correctness and prettyness.
217
218** Key handling modified
219
220The key handling of keys.py has been modified so that keymaps can now
221be bound to specific screens or windows.  For the first time in the
222history of PLWM, this is a modification that is backward-compatible.
223However, when the old interface is used, a warning is issued.
224
225** Focus tracking conforms better to ICCCM
226
227focus.py has been somewhat revised to comply more fully with ICCCM.
228Now no-input clients will never get focus, which is required for
229applications like xvkbd.  This introduces a new WindowManager
230attribute: current_client.  This should replace most instances where
231focus_client previously was used.
232
233A new event is sent when focus changes: CurrentClientChange.  The
234modestatus.py code that displays the currently active client has been
235rewritten as a result of this: the Screen mixin ModeFocusedTitle is
236now replaced by the Client mixin ModeFocusedTitleClient together with
237the new Screen mixin ModeFocusedTitleScreen.
238
239** New modewindow module: mw_apm
240
241mw_apm displays the battery status of laptops, by reading from the
242special file /proc/apm provided by Linux systems.  It should be easy
243to extend the module to support other APM systems.
244
245
246* Version 2.2 (6 Feb 2001)
247
248** Complete documentation available
249
250The documentation has been extended with detailed descriptions for all
251relevant extension modules, plus a chapter on client filters.  Now
252there are no excuses for not writing your own plwm.py!
253
254** Changed default window manager
255
256The old default window manager, examples/petliwm.py, has been
257transformed into something not necessarily useful for other people
258than Petli himself, so now examples/examplewm.py is the default
259instead.  It has the same key bindings as the old petliwm.py, though,
260so most default window manager users will not notice any difference.
261
262** Event system improvements
263
264The core event system has been extended to provide support for file
265events.  This allows events to be generated when a file is ready for
266reading or writing.  Also, a bug causing the modewindow clock to
267freeze has been fixed.
268
269** Functionality to inspect the internals of a running PLWM
270
271The module plwm.inspect together with the utility inspect_plwm can be
272used to inspect and modify the internals of a running PLWM.  This can
273be thought of as telnetting, or logging in, to the window manager.
274You get a prompt, and any entered expression is evaluated inside the
275running window manager.  See the documentation for details.
276
277** Modewindow cleanups
278
279Modewindow is a little cleaner coded, and now avoids redrawing more of
280the modewindow than necessary.  A single Message object can also be
281added to several modewindows.
282
283** Key grabbing improved
284
285PLWM now grabs all keys that have a certain keysym, not just the first
286one.  PLWM also knows about shifting, so a handler for C_Q is
287equivalent to C_S_q.
288
289** move_focus bug fix
290
291move_focus failed to move focus when there was only one mapped
292window.
293
294
295* Version 2.1 (12 Jan 2001)
296
297** Python 2.0 fixes.
298
299Some incompatibilities with Python 2.0 has been fixed.
300
301** Modewindow is now a PLWM module.
302
303xmodewin has been replaced by the module plwm.modewindow.  It contains
304a Screen mixin which opens a modewindow on all screens, removing the
305need for separate xmodewin instances.  xmwbiff and xmwclock has also
306been replaced by the modules plwm.mw_biff and plwm.mw_clock,
307respectively.  These contains WindowManager mixins that perform those
308functions, using plwm.modewindow.
309
310The reason for this change is the quite large footprint of Python
311Xlib, which causes even these very modest applications to be some 3Mb
312large.  This makes a PLWM environment somewhat more lightweight.
313
314** keys: support for handling KeyRelease events.
315
316The keys.KeyHandler has been extended to allow methods to be bound to
317key releases, and not just key presses.  This is done by prefixing the
318KeyHandler method name with "R_", e.g. "R_C_Return".
319
320
321* Version 2.0 (8 Jan 2001)
322
323** Testing completed.
324
325PLWM 2.0a1 has been run for a while, and has uncovered a number of
326bugs and performance problems with Python Xlib.  These have been fixed
327in version 0.7 of Python Xlib.  No bugs have been found in PLWM 2.0
328(relatively easy, as there is no new functionality), so lets call this
329a real release.
330
331
332* Version 2.0a1 (21 Dec 2000)
333
334** plxlib no more
335
336PLWM has been rewritten to use the Python X Library, instead of the
337disgusting pile of C code that was plxlib.  Well, it seems to work...
Note: See TracBrowser for help on using the browser.