| 1 | -*-outline-*- |
|---|
| 2 | |
|---|
| 3 | * Version 1.4 (15 Dec 2000) |
|---|
| 4 | |
|---|
| 5 | ** PLWM |
|---|
| 6 | |
|---|
| 7 | *** Abstraction: Client filters |
|---|
| 8 | |
|---|
| 9 | Client filters are a way to create arbitrarily complex conditional |
|---|
| 10 | expressions to select clients. This can be used to e.g. cycle among |
|---|
| 11 | all iconified windows with a name matching "xterm*". |
|---|
| 12 | Client filters are located in plwm.cfilter, see the documentation |
|---|
| 13 | in it for details. |
|---|
| 14 | |
|---|
| 15 | All code which previously used Client.client_in_list (e.g. the client |
|---|
| 16 | attributes no_border_clients, start_iconified) and also some new |
|---|
| 17 | pieces of code now use client filters. The query_clients methods in |
|---|
| 18 | WindowManager and Screen also uses client filters now. |
|---|
| 19 | |
|---|
| 20 | *** Client cycle module completely rewritten |
|---|
| 21 | |
|---|
| 22 | Module plwm.cycle has been completely rewritten. It is now much more |
|---|
| 23 | general and uses the new client filters to select which filters to |
|---|
| 24 | use. A keyhandler template class, plwm.cycle.CycleKeys is also |
|---|
| 25 | provided to make it easier to define cycling key bindings. |
|---|
| 26 | |
|---|
| 27 | *** New feature: mouse clicks can be simulated |
|---|
| 28 | |
|---|
| 29 | If the XTEST extension is available (see below), mouse clicks can be |
|---|
| 30 | simulated by calling the function WindowManager.fake_button_click(). |
|---|
| 31 | More complicated button press simulations could also be implemented by |
|---|
| 32 | the adventurous. |
|---|
| 33 | |
|---|
| 34 | *** Better keymaps: `Any' modifier |
|---|
| 35 | |
|---|
| 36 | Key handlers can now be bound to a certain key, ignoring any |
|---|
| 37 | modifiers. This is done by using the special prefix `Any_' for key |
|---|
| 38 | handlers, e.g. `Any_F9'. |
|---|
| 39 | |
|---|
| 40 | *** Abstraction: outline drawing as client mixin classes |
|---|
| 41 | |
|---|
| 42 | Outline drawing has been generalised into client mixin classes. This |
|---|
| 43 | means that any code which needs to draw an outline simply calls |
|---|
| 44 | methods on the client. It is therefore now easy to write different |
|---|
| 45 | outline mixin classes. Currently the classic xor outline is provided, |
|---|
| 46 | but future outline methods could, e.g., use a shaped window or a |
|---|
| 47 | number of small windows, one for each line. |
|---|
| 48 | |
|---|
| 49 | |
|---|
| 50 | ** plxlib |
|---|
| 51 | |
|---|
| 52 | *** New Display methods: FakeKeyEvent and FakeButtonEvent |
|---|
| 53 | |
|---|
| 54 | If the X library support the XTEST extension, the Display methods |
|---|
| 55 | FakeKeyEvent and FakeButtonEvent are available. These can be used |
|---|
| 56 | to simulate user input. |
|---|
| 57 | |
|---|
| 58 | *** New Window method: Reparent |
|---|
| 59 | |
|---|
| 60 | The Window method Reparent has been implemented. This will make it |
|---|
| 61 | possible to have real window frame support in PLWM, but for now it is |
|---|
| 62 | only used to work around a bug in a stupid client application (Sun's |
|---|
| 63 | Java AWT for Linux). |
|---|
| 64 | |
|---|
| 65 | |
|---|
| 66 | * Version 1.3 (4 Jul 2000) |
|---|
| 67 | |
|---|
| 68 | ** PLWM |
|---|
| 69 | |
|---|
| 70 | *** Abstraction: template key binding class for moveresize |
|---|
| 71 | |
|---|
| 72 | plwm.moveresize.MoveResizeKeys is a template class providing functions |
|---|
| 73 | for all move and resize functions. To use it, simple subclass it and |
|---|
| 74 | assign the functions to key bindings. This is meant to make it easier |
|---|
| 75 | to define your own plwm.py keybindings, and more template classes will |
|---|
| 76 | probably follow. |
|---|
| 77 | |
|---|
| 78 | *** Bug fix: Resizing windows with size hints (WMNormalHints) |
|---|
| 79 | |
|---|
| 80 | In some quite obscure situations the size hints (WMNormalHints) on |
|---|
| 81 | windows wasn't used correctly when moving or resizing. This meant |
|---|
| 82 | that windows (typically Emacs windows created with C-x 5 2) became a |
|---|
| 83 | little too large, quite ugly. A more careful study of the ICCCM |
|---|
| 84 | pointed out the misusage. |
|---|
| 85 | |
|---|
| 86 | |
|---|
| 87 | ** plxlib |
|---|
| 88 | |
|---|
| 89 | *** Ridiculously large memory leaks fixed |
|---|
| 90 | |
|---|
| 91 | A misunderstanding of the Python object C API meant that window |
|---|
| 92 | objects never freed their memory when garbed. This is now fixed, and |
|---|
| 93 | means that the large and annoying memory leaks which previously had |
|---|
| 94 | been attributed to circular reference chains are finally fixed. |
|---|
| 95 | Additionally, a few cases of incorrect refcounts (too high) has also |
|---|
| 96 | been fixed, again mostly affecting window objects. |
|---|
| 97 | |
|---|
| 98 | *** New module: XK |
|---|
| 99 | |
|---|
| 100 | XK provided constants for keysyms. |
|---|
| 101 | |
|---|
| 102 | *** Small new function: Window objects can be hashed |
|---|
| 103 | |
|---|
| 104 | A hash function is now provided for window objects, which, together |
|---|
| 105 | with the compare function, means that window objects can be used as |
|---|
| 106 | dictionary keys. |
|---|
| 107 | |
|---|
| 108 | |
|---|
| 109 | ** Miscellaneous |
|---|
| 110 | |
|---|
| 111 | *** New configure flag: --with-python |
|---|
| 112 | |
|---|
| 113 | The new configure script flag --with-python tells PLWM to use a |
|---|
| 114 | specific Python binary. Can be used if Python isn't in your $PATH, or |
|---|
| 115 | if you want to use a special Python, e.g. one with refcount debugging |
|---|
| 116 | enabled. |
|---|
| 117 | |
|---|
| 118 | |
|---|
| 119 | |
|---|
| 120 | * Version 1.2 (4 Apr 2000) |
|---|
| 121 | |
|---|
| 122 | ** PLWM |
|---|
| 123 | |
|---|
| 124 | *** New feature: window manager status display. |
|---|
| 125 | |
|---|
| 126 | The window title display in an xmodewin has been incorporated in a |
|---|
| 127 | new, more flexible system. PLWM can now display a status message |
|---|
| 128 | about what it is doing, and temporarily switch this to some other |
|---|
| 129 | message temporarily. Typically, the title of the currently focused |
|---|
| 130 | window is displayed by default. But when moving/resizing a window it |
|---|
| 131 | is replaced with the title and current geometry of the moved/resized |
|---|
| 132 | window. |
|---|
| 133 | |
|---|
| 134 | There are currently no other modules using of this feature, but more |
|---|
| 135 | will probably follow. An example: when deiconifying, display the |
|---|
| 136 | title of the currently selected window. |
|---|
| 137 | |
|---|
| 138 | *** Yet more memory leaks fixed. |
|---|
| 139 | |
|---|
| 140 | Those annoying circular references continue to hog memory. This time |
|---|
| 141 | it was the Client objects which never got garbed because of the |
|---|
| 142 | circular reference Client -> WindowDispatcher -> Client method -> |
|---|
| 143 | Client. Solved by having the Client object dropping the reference to |
|---|
| 144 | the WindowDispatcher when its window is withdrawn. |
|---|
| 145 | |
|---|
| 146 | |
|---|
| 147 | ** Utilities/plxlib |
|---|
| 148 | |
|---|
| 149 | *** Better handling when no X resources are set. |
|---|
| 150 | |
|---|
| 151 | xmodewin, xmwbiff and friends crashed at startup if no X resources had |
|---|
| 152 | been set with xrdb. The function plxlib.GetStringDatabase is now more |
|---|
| 153 | permissive and allows the input argument None, which solves this |
|---|
| 154 | problem. |
|---|
| 155 | |
|---|
| 156 | |
|---|
| 157 | ** Miscellaneous |
|---|
| 158 | |
|---|
| 159 | *** Fully controllable ./configure |
|---|
| 160 | |
|---|
| 161 | ./configure now has the option --with-python-path which controls where |
|---|
| 162 | the plwm and plxlib modules is installed. This path does not have to |
|---|
| 163 | be in sys.path by default, the various PLWM programs will insert it if |
|---|
| 164 | necessary. |
|---|
| 165 | |
|---|
| 166 | *** Better installation |
|---|
| 167 | |
|---|
| 168 | The install target now depends on all. All modules will be compiled |
|---|
| 169 | at installation. |
|---|
| 170 | |
|---|
| 171 | |
|---|
| 172 | * Version 1.1 (24 Feb 2000) |
|---|
| 173 | |
|---|
| 174 | ** PLWM |
|---|
| 175 | |
|---|
| 176 | *** Better documentation. |
|---|
| 177 | |
|---|
| 178 | The documentation (doc/plwm.texi) has been revised and extended, most |
|---|
| 179 | importantly with a section on how to actually use PLWM and the various |
|---|
| 180 | utilities together. The Makefile now contains rules for building |
|---|
| 181 | PostScript and HTML in addition to info files. |
|---|
| 182 | |
|---|
| 183 | *** Module import bug fixed. |
|---|
| 184 | |
|---|
| 185 | Embarrasingly, when changing to module layout to use packages I forgot |
|---|
| 186 | to update an import statement in modetitle.py. I didn't find this |
|---|
| 187 | myself because an old PLWM installation lurked in a dark corner of my |
|---|
| 188 | $PYTHONPATH. |
|---|
| 189 | |
|---|
| 190 | *** Multihead has been tested, bugfixed and now actually works. |
|---|
| 191 | |
|---|
| 192 | Multihead required two improvements to the core classes. First, event |
|---|
| 193 | handling was modified to make a global, screen-independent |
|---|
| 194 | EventDispatcher possible. Second, instaed of using os.system to run |
|---|
| 195 | program PLWM now has a system call for the screens. This system sets |
|---|
| 196 | the $DISPLAY correctly, and also have some nice bells-and-whistles |
|---|
| 197 | (unused right now, however). |
|---|
| 198 | |
|---|
| 199 | *** Memory leak fixed. |
|---|
| 200 | |
|---|
| 201 | There was a memory leak in the KeyHandler class, caused by a nasty |
|---|
| 202 | circular reference preventing KeyHandler objects to be deleted. So |
|---|
| 203 | each time one moved a window or deiconified a window, a few kilobytes |
|---|
| 204 | was lost. |
|---|
| 205 | |
|---|
| 206 | *** Better font and color handling. |
|---|
| 207 | |
|---|
| 208 | The font and color allocation routines have been rewritten to better |
|---|
| 209 | use a fallback font or color. This means that PLWM will not crash |
|---|
| 210 | disgustingly just because a font cannot be found, instead using |
|---|
| 211 | "fixed". Fonts and colors are now set with standard X resources |
|---|
| 212 | instead of using methods in the plwm. This makes it easier to have a |
|---|
| 213 | single PLWM executable for different environments. |
|---|
| 214 | |
|---|
| 215 | *** More view featuritis. |
|---|
| 216 | |
|---|
| 217 | Views can be tagged with arbitrary strings. You can then jump to a |
|---|
| 218 | view based on these tags, similar to the way you could previously |
|---|
| 219 | jump to a view based on the clients on it. |
|---|
| 220 | |
|---|
| 221 | |
|---|
| 222 | ** Utilites |
|---|
| 223 | |
|---|
| 224 | *** xmodewin and wmm |
|---|
| 225 | |
|---|
| 226 | Easier to use in new environments: if the desired font doesn't exist |
|---|
| 227 | they use "fixed" instead. wmm doesn't crash if its configuration file |
|---|
| 228 | .wmmrc doesn't exist, and uses a default configuration instead. |
|---|
| 229 | |
|---|
| 230 | |
|---|
| 231 | ** Miscellaneous |
|---|
| 232 | |
|---|
| 233 | *** Build procedure |
|---|
| 234 | |
|---|
| 235 | A common error is that the development files of Python isn't |
|---|
| 236 | installed. The ./configure script now detects this and prints a |
|---|
| 237 | helpful message. |
|---|
| 238 | |
|---|
| 239 | * Version 1.0 (8 Jan 2000) |
|---|
| 240 | |
|---|
| 241 | First public release. |
|---|