source: trunk/third/sawfish/NEWS @ 18410

Revision 18410, 90.1 KB checked in by ghudson, 22 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r18409, which included commits to RCS files with non-trunk default branches.
Line 
1News
2****
3
4This lists the user-visible changes made to Sawfish, and which releases
5they occurred between. For more detailed information see the
6`ChangeLog' files in the Sawfish source tree.
7
81.2
9===
10
11   * Added an `OPTIONS' file describing the variables that may be
12     customized
13
14   * Some drawing optimizations: don't reinstall frame shape at each
15     redraw, turn off graphics exposures in all contexts
16
17   * Added a cache for X properties to minimize server round-trips
18
19   * Added support for Xft fonts
20
21   * Color objects now store alpha as well as rgb data
22
23   * Support useful parts of 1.1 NET WM spec; also fixed some bugs /
24     omissions in support for 1.0 spec (e.g. `_NET_WORKAREA')
25
26   * Support for two dimensional workspace layouts and edge flipping
27     (Michael Toomin)
28
29   * Translation updates (Dmitry G. Mastrukov, Jordi Mallach, Vincent
30     van Adrighem, Christian Rose, Stanislav Visnovsky, Daniel Yacob,
31     Andras Timar, Sava Chankov, Christian Neumair, Peteris Krisjanis,
32     Gustavo Noronha Silva, Christian Meyer, Fatih Demir, Hasbullah Bin
33     Pit, Christophe Fergeau)
34
35   * Bug fixes:
36
37        - Don't pass null pointers to `accept ()'
38
39        - Stacking list assertions no longer abort execution, they just
40          print an error message
41
42        - Handle minimum-size hints that are zero
43
44        - Understand the Pango font names that the Gtk2 font selector
45          uses
46
47        - Fixed bugs when iconifying sticky windows
48
49        - When servicing configure-window requests, respect the window's
50          locked dimensions. Also handle moving in only one direction
51
52        - `grow-pack' bug fixes (Daniel Pfeiffer)
53
54        - Fixed some problems with fullscreen mode
55
56        - Fixed some problems in the Gtk2 config tool
57
58        - Other bug fixes (Greg Morris, Claudio Bley)
59
60
611.1
62===
63
64   * Reorganized the customization options. Removed user levels.
65     Removed many obscure options (most are still available as lisp
66     variables, just not from the UI). Viewports are no longer
67     available in the UI
68
69   * Updates to the `grow-pack' module (Kai Großjohann, Daniel Pfeiffer)
70
71   * In matched windows, boolean options can be turned off as well as
72     on (me, merlin)
73
74   * New full screen maximization mode
75
76   * Bug fixes:
77
78        - Miscellaneous focus fixes
79
80        - Be more selective about which X errors imply window deletion
81
82        - Don't trigger a stacking-list assertion on logout
83
84        - Check for window-ness in window-visibility (Michal Maru¹ka)
85
86        - Reread WM_WINDOW_PROTOCOLS when it changes
87
88        - Fixed bug of nautilus windows not being focused in focus
89          follows mouse modes
90
91        - Recover "lost" windows when selecting windows (merlin)
92
93        - Show correct size when resizing windows (merlin)
94
95        - Most placement modes now respect workarea (Federico Mena
96          Quintero, me)
97
98        - Miscellaneous fixes to wm-spec implementation. Includes code
99          to support _NET_WM_STRUT
100
101        - Call `bindtextdomaincodeset' function if rep implements it
102          (Christophe Fergeau)
103
104        - Make the current-directory stored in the session a valid
105          filename
106
107        - Don't put windows below the default depth just because their
108          parent is
109
110        - Miscellaneous viewport fixes (Federico Mena Quintero)
111
112        - Don't let "transients above" and "layer" stacking constraints
113          conflict with one another
114
115
1161.0.1
117=====
118
119   * Translation updates: pt (Carlos Perelló Marín), it (Michele
120     Campeotto), pl (Zbigniew Chyla), zh_CN (Wang Jian), zh_TW (Abel
121     Cheung), es (Eneko Lacunza), tr (Ömer Fadýl USTA), sv (Göran
122     Uddeborg, Christian Rose), da (Ole Laursen), gl (Jesus Bravo
123     Alvarez)
124
125   * Bug fixes:
126
127        - Fixed typo in `apply-command-keys' function (David Bustos)
128
129        - Fixed bug in `wm-spec' module causing nautilus desktop window
130          to cover panel
131
132        - Adopt windows with a maximized hint correctly
133
134        - Fixed bug in `display-window' function that can prevent the
135          window getting focused
136
137        - Don't allow windows to be moved or resized by third-parties
138          when they're maximized (and the necessary option is set)
139
140        - Fixed problem with localizing property names in the
141          matched-windows configuration widget
142
143        - Handle window gravity more correctly (Owen Taylor)
144
145        - Forget everything about withdrawn windows - better ICCCM
146          compliance
147
148        - Fixed root-window event proxying (the infamous gmc bug)
149
150        - Don't use dlmalloc on sparcs (Brian Nitz)
151
152
1530.99
154====
155
156   * Requires `librep' 0.14 or newer
157
158   * Translation updates: ja (Sato Satoru), no (Kjartan Maraas), es
159     (Carlos Perelló Marín), fi (Antti Ahvensalmi), cs (Jiri Cerny), fr
160     (Christian Marillat), de (Matthias Warkus, Christian Meyer), da
161     (Ole Laursen), sk (Stanislav Visnovsky), tr (Özgür), sv (Christian
162     Rose, Peter Winnberg), gl (Jesus Bravo Alvarez)
163
164   * Do i18n on more text strings (Vlad Harchev, me)
165
166   * Broken support for multiple-screen displays. Supplying the new
167     `--multihead' option will fork extra copies of sawfish for each
168     extra screen. This has some fundamental problems, but some people
169     seem to want it (Michael Vogt, Mahmood Ali, me)
170
171   * Window manager virtual modifier once again defaults to `M-'
172     instead of `C-'
173
174   * Added support for `Off2' and `Off3' events
175
176   * `menu-program-stays-running' variable now defaults to true by
177     popular demand
178
179   * New command `focus-desktop'
180
181   * Switch viewports more efficiently (by choosing the best order to
182     move windows, to minimize the exposed area)
183
184   * Monitor the `_WIN_WORKSPACE' property of each window
185
186   * Bug fixes:
187
188        - Check for X SHAPE extension, exit if it's not available
189
190        - Wait for the focus-in event before changing sawfish's
191          knowledge of the focused window when moving focus from one
192          window to another
193
194        - Be more ICCCM-compliant, don't send synthetic configure notify
195          events when the window was resized
196
197        - Fixed locale font handling
198
199        - Don't leave grid traces when trying to move/resize a window
200          that's locked in place
201
202        - Fixed bug where the pointer being over the message window
203          could confuse focus after window cycling
204
205        - `decorate-transients' option works again with shaded windows
206
207        - Documentation appears in tooltips again
208
209        - Handle sticky properties better in the `window-history' module
210
211        - Maximization fixes for multi-headed displays (Florent
212          Guillaume)
213
214        - Cancelling a resize of a maximized window no longer discards
215          the window's maximized state
216
217
2180.38
219====
220
221   * Translation updates: gl (Jesus Bravo Alvarez), sv (Martin
222     Norbäck), de (Matthias Warkus, Christian Meyer), ru (Vlad
223     Harchev), es (Joseba García Etxebarria), pl (Daniel Koc), fi
224     (Antti Ahvensalmi), sk (Stanislav Visnovsky), az (Pablo
225     Saratxaga), cz (Stanislav Brabec), no (Kjartan Maraas), el (Simos
226     Xenitellis), it (Michele Campeotto), fr (Christian Marillat), ro
227     (Marius Andreiana), ko (?)
228
229     Extract some more translatable strings (Vlad Harchev)
230
231   * `Crux' theme now has an extra button mode: `Default', like Mac OS
232     Platinum but also has an iconify button. Used by default
233
234   * The `grow-pack' module now works with windows which specify
235     increments (Kai Großjohann)
236
237   * New command `kill-client'
238
239   * Fixed bugs:
240
241        - Don't return a null pointer when no default cursor has been
242          set, return `nil' instead
243
244        - Avoid triggering assertions in the stacking list code when
245          raising or lowering windows and the given sibling has been
246          destroyed
247
248        - Turned off the annoying code that beeps and prints a message
249          when unfocusable windows are detected
250
251        - The GNOME hints now listen for the `_WIN_WORKSPACE' property
252          changing and will move the window in response
253
254        - Don't forget maximized state of windows when they're moved,
255          only if they're resized
256
257        - Don't show special cursors when moving or resizing windows, or
258          when hovering over the title bar
259
260        - Corrected off-by-one error in `smart' placement modes
261
262        - Identified and fixed some problems in the new GNOME/KDE window
263          manager hints implementation (Rob Hodges, me)
264
265
2660.37
267====
268
269   * New command line option `--window-history-file=FILE'
270
271   * Search for user's rc file in this order: `~/.sawfishrc',
272     `~/.sawfish/rc', `~/.sawmillrc'
273
274   * New option `configure-ignore-stacking-requests' and a
275     similarly-named window property. When set stacking requests from
276     windows are ignored (Matt Tucker)
277
278   * When restarting sawfish, reselect the previously selected workspace
279
280   * Added a function that can recolour multiple image channels
281     simultaneously
282
283   * New function `exit-type' - returns the type of exit in progress
284
285   * Translation updates: ja (Sato Satoru), sk (Stanislav Visnovsky),
286     es (Iñaki García Etxebarria), hu (Robert Vanyi), tr (Fatih Demir),
287     ro (Tutu Valentin), no (Kjartan Maraas), it (Michele Campeotto), pl
288     (Daniel Koc)
289
290   * Fixed bugs:
291
292        - Fixed focus-handling in enter-only mode on window close and
293          viewport switch
294
295        - Fixed overflow error in the image recolouring module (Simon
296          Budig)
297
298        - Session management always uses a unique session file (Timo
299          Korvola, me)
300
301        - Fixed bug in random placement mode where windows could
302          sometimes be placed off-screen
303
304        - Fixed some auto-raise problems by reverting a misguided bug
305          fix
306
307        - Fixed bugs with aborted session saves
308
309        - Cache stacking order of windows locally - this allows us to
310          keep the order consistent, especially after window
311          reparenting operations
312
313        - Don't call `XParseColor' unless we actually _have_ a display
314          connection (merlin)
315
316        - Merged two calls to `setlocale' to avoid trashing the locale
317          preferences
318
319        - Check for presence of Xinerama extension before trying to use
320          it - removes the annoying error message at startup
321
322        - Added some more X server timestamp logic to correct for the
323          timestamp discontinuities after APM resume
324
325
3260.36
327====
328
329   * Added a new default theme: `Crux'. By default it recolours itself
330     to match the current GTK+ selection colour. (Arlo Rose, me)
331
332   * Updated translations: it (Michele Campeotto), fr (Christian
333     Marillat)
334
335   * Added a `shade-button' button class (many themes created it anyway)
336
337   * Added a `sawfish.wm.util.recolor-image' module, currently contains
338     a single function for recolouring parts of images based on a given
339     colour gradient
340
341   * Added new command `delete-group'. Deletes a whole group of
342     windows. With default bindings, shift-click on the close button to
343     invoke this command
344
345   * Added support for KDE-style mini-icons. If the window has no
346     normal icon, then `window-icon-image' will return the mini-icon
347
348   * Fixed bugs:
349
350        - Themes that use the module for reading the user's gtk
351          preferences will once again get updated when the gtk theme
352          changes
353
354        - Fix another of the null-string translation bugs (Christian
355          Marillat)
356
357        - Work around `XUrgencyHint' not being defined before X11R6
358
359        - Fixed some long-standing bugs when decorating windows (use the
360          correct mask when creating the overall window shape; for
361          frame parts with no mask, set the local shape to the
362          appropriate rectangle; be sure to generate at least one
363          Expose event when reconfiguring frame parts)
364
365        - Fixed crashing bug when `bind-keys' is called with zero
366          arguments
367
368        - Fixed typo in `crop-image' function when checking validity of
369          HEIGHT parameter (martin@whoever.com)
370
371
3720.35
373====
374
375   * Translation updates: ja (SATO Satoru), it (Michele Campeotto),
376     zh_TW.Big5 (Chun-Chung Chen), pl (Daniel Koc), sk (Stanislav
377     Visnovsky)
378
379   * Items in `choice' widgets may now contain descriptive names,
380     syntax is `(SYMBOL "DESCRIPTION")'
381
382   * Changed `focus-windows-when-mapped' option to only apply to
383     non-transient windows (this option is now enabled by default)
384
385   * New placement modes `top-left' and `off-center'.  `top-left' is
386     now the default mode for non-transients
387
388   * Enabled the module supporting the newly standardized GNOME/KDE
389     window manager hints. Also made random changes to support KDE2 a
390     lot better
391
392   * Added WM_PROTOCOLS `_SAWFISH_WM_RAISE_WINDOW' and
393     `_SAWFISH_WM_LOWER_WINDOW'. Used by `maybe-raise-window' and
394     `maybe-lower-window' functions.
395
396     These are similar to `WM_TAKE_FOCUS', in that if the window
397     supports the protocol, it's up to it whether or not it raises (or
398     lowers) the window in question. These functions should only be used
399     where the user hasn't explicitly requested the restacking
400
401     An example usage is an application that doesn't want its window to
402     be raised due to a button-press event that initiates a drag
403     operation
404
405   * New option `menus-include-shortcuts', disabled by default (Unai
406     Uribarri)
407
408   * Don't interpret windows with `WM_TRANSIENT_FOR' set to the root
409     window as children of all windows in the group (it causes too many
410     annoying effects), instead just decorate these windows as
411     transients
412
413   * Handle `group' and `transient' iconification modes better, don't
414     use a recursive method, instead use one pass to identify the
415     windows to change, then another to make the changes. In
416     `transients' mode, only change the state of shared transients if
417     they will have no visible parents afterwards
418
419   * In the (old) GNOME hints code, support a `_WIN_HINTS' client
420     message (with a similar format to the `_WIN_STATE' message)
421
422   * New module `sawfish.wm.commands.viewport-extras', some commands
423     for viewport for viewport navigation (Dams Nadé)
424
425   * Check for `never-iconify' and `never-maximize' window properties
426     when appropriate
427
428   * Support sixth and seventh mouse buttons (Steve Haslam)
429
430   * Bug fixes:
431
432        - Fixed problems with reverting changes to list-based options
433
434        - Don't allow the empty list as a valid modifier list
435
436        - Fixed bug where restarting the wm with
437          `focus-windows-when-mapped' set would cause any shaded
438          windows to be deleted
439
440        - Ignore iconified windows in the grow-pack code
441
442        - Added `font-ascent' and `font-descent' functions to the gaol
443
444        - Catch errors when loading site-init and rep-defaults files
445
446        - Don't use `""' to denote a null doc string (which has bad
447          side effects when internationalized)
448
449        - Don't need to run `sawfish-client -' to get a repl anymore,
450          just `sawfish-client'
451
452        - Fixed bugs in `composite-images' function
453
454        - Fixed ordering of states output by `gtk-style' program
455          (michaelj@maine.rr.com)
456
457        - Fixed grabbing mono window icons in gdk-pixbuf mode
458
459        - Reject button event descriptions that don't specify at least
460          one mouse button
461
462        - Accept `()' as a valid image modifier color component
463
464        - Now grabs translatable strings from `defgroup' forms correctly
465
466
4670.34
468====
469
470   * Added a virtual modifier key, the `W-' modifier. This modifier is
471     used for all standard window-manager key bindings, it may be set
472     to any of the standard X modifiers using the configuration tool
473
474   * Optionally show window-icons when cycling through windows (Unai
475     Uribarri Rodríguez, me)
476
477   * Event handlers for low-level X windows now get passed the window
478     as their second argument (Unai Uribarri Rodríguez)
479
480   * Translation updates: fr (Christian Marillat), sv (Richard Hult),
481     pt_BR (Flávio Bruno Leitner), it (Michele Campeotto)
482
483   * Error handler module (`sawfish.wm.ext.error-handler'). When loaded
484     it records the most recent errors, and the time at which they
485     occurred. Use the `display-errors' command to display all recorded
486     errors.
487
488   * Added an option to not save window-history data for transient
489     windows. Also added a `window-history-clear' command to forget
490     history for all windows.
491
492   * Rearranged window operations menu to hopefully be clearer
493
494   * Attempt to catch and handle errors while loading custom options
495
496   * Labels in menu items can now be functions, they should return the
497     label text when called (with any menu arguments)
498
499   * Moved installed message catalogues to $datadir/locale
500
501   * `defcustom' forms may now a `:widget-flags' keyword, a constant
502     list of symbols passed to the configuration tool. Current flags
503     include: `expand-vertically' and `expand-horizontally'
504
505   * Added a `sawfish.wm.util.ping' module, it implements the
506     `_NET_WM_PING' protocol of the new window manager spec.
507
508   * `destroy-notify-hook' is no longer called asynchronously
509
510   * Bug fixes:
511
512        - Fixed various bugs when dragging/resizing windows
513
514        - Reverted the changes to make the click-to-focus click-through
515          setting apply to window decorations
516
517        - Fixed bug when handling 32-bit data in client messages and X
518          properties
519
520        - Fixed window-focus problems when switching viewports
521
522        - Many bug-fixes to handling of maximized window state.
523          Maximized state should now be preserved across wm and session
524          restarts. It's also saved in the window-history attributes
525
526        - Support the function hints of the MWM window manager
527          properties
528
529        - Updated the `sawfish.wm.state.wm-spec' module to match the
530          current (almost final) draft of the new GNOME/KDE window
531          manager spec
532
533        - Fixed sporadic stacking bugs when unmapped windows exist
534
535        - Fixed miscellaneous click-to-focus and focus-click-through
536          related bugs
537
538
5390.33
540====
541
542   * Added support for user-levels associated with individual commands
543
544   * The GNOME hints code now understands that the do-not-cover flag is
545     the same as sawfish's `avoid' property
546
547   * Swap properties of sticky windows when entering and leaving
548     workspaces as for normal windows (fixes the old problem where
549     sticky windows can grab focus when a workspace is entered)
550
551   * Changed the default settings of some customization options,
552     hopefully to give a more "conventional" feel for new users
553
554   * Better support for Xinerama (Geoff Reedy)
555
556   * Added a new set of window stacking commands: `raise-window',
557     `lower-window', `raise-lower-window'. The set of windows affected
558     by these commands is determined by the `user-raise-type' (either
559     the individual window, the window and any transients, or the
560     entire group). The old commands of these names are now called
561     `FOO-single-window'.
562
563     Most modules now use these commands when raising or lowering
564     windows, allowing the stacking model to be configured globally.
565
566   * Translation updates: no (Kjartan Maraas), fi (Antti Ahvensalmi),
567     it (Christopher R. Gabriel), pt_BR (Douglas Moura Ferreira), uk
568     (Yuri Syrota), de (Matthias Warkus)
569
570   * Fixed bugs:
571
572        - If committing changes in the configurator causes new
573          customization options or groups to be added, update the UI to
574          reflect this
575
576        - Added code to detect and correct the sporadic bug where
577          windows become unfocusable in click-to-focus mode
578
579        - Sanitized how the focus gets passed to and from transient
580          windows (when passing focus back from a transient, give it to
581          the most recently focused window in the group, not the
582          transient's parent)
583
584          Also, try to avoid displaying maximize buttons in windows
585          whose hints prevent them from being maximized
586
587        - Many fixes to how maximized windows are handled across session
588          and window manager restarts. Also support GNOME window
589          maximized hints when windows are created
590
591        - Fixed some bugs in the `wm-spec' module
592
593        - Don't trigger auto-raise hooks on leave/enter events
594          generated by pointer grabs
595
596        - The `edge-flip-delay' option now applies when dragging windows
597
598        - Fixed the preview command in `sawfish-themer'
599
600        - Miscellaneous fixes to the "smart" window placement modes
601
602        - Fixed type description of `persisitent-group-ids' option
603
604        - In `enter-exit' focus mode, focus isn't removed due to
605          enter/leave events due to pointer grabs (fixes the bug with
606          Mozilla URL completion)
607
608        - Fixed (again) the `focus-click-through' behaviour with
609          respect to frame decorations
610
611        - Re-added hack to make GMC icons unfocusable
612
613        - Fixed interactive placement to check for window destruction
614          (merlin)
615
616        - Fixed bug with tiled images with shapes (the shape mask would
617          always be applied an integer number of times, ignoring the
618          size of the frame part it's associated with)
619
620        - Fixed `window-wants-input-p' to check if the `InputHint' is
621          set before reading the value
622
623
6240.32
625====
626
627   * `M-TAB' window cycling now works in both directions, bind keys to
628     `CYCLE-COMMAND-backwards', e.g.  `cycle-windows-backwards'
629     (Merlin, me)
630
631   * Added support for X `Urgency' hint: `window-urgent-p' and
632     `window-state-change-hook' is called with `urgency' state when it
633     changes
634
635   * Some improvements to `shade-hover' mode (adapted from Eli Barzilay)
636
637   * Functions that raise/lower groups of windows now generate the
638     minimum number of expose events (Rob Hodges, me)
639
640   * New window property `window-list-skip'. Unified with GNOME
641     skip-winlist hint
642
643   * Custom options may have tooltips, use `:tooltip' tag
644
645   * Catch errors when applying custom changes and revert to previous
646     state
647
648   * Translation updates: uk (Yuri Syrota), pt_BR (Douglas Moura
649     Ferreira), hu (Róbert Ványi), de (Christian Meyer), ja (SATO
650     Satoru), da (Keld Jørn Simonsen), es (Iñaki García Etxebarria), fr
651     (Christian Marillat)
652
653   * Fixed bugs:
654
655        - With click-to-focus in non-click-through mode, don't
656          click-through into window decorations
657
658        - `dimensions' property in window matching was called `size' by
659          mistake
660
661        - Export the various `sp-cost:' functions from the
662          `sawfish.wm.placement.smart' module
663
664        - Don't allow cycles in the transient-for relationship
665
666        - Fixed some maximize bugs
667
668        - GNOME skip-focus property no longer causes the window to be
669          unfocusable, just uncyclable-to
670
671        - Coerce auto-raise timeout to be at least one millisecond;
672          support `disable-auto-raise' correctly
673
674        - Window input hints defaults to true not false
675
676        - Fixed typo when loading the defaults file (Ronald Wahl)
677
678        - Fixed command spec of `move-window-FOO' commands (Yoshiki
679          Hayashi)
680
681        - When sending `WM_TAKE_FOCUS' message, only focus the window
682          if its `Input' hint is set
683
684
6850.31.1
686======
687
688   * Translation updates: da (Kenneth Christiansen), de (Christian
689     Meyer), no (Kjartan Maraas), pt_BR (Rui Miguel Silva Seabra), sv
690     (Johan Dahlin), uk (Yuri Syrota)
691
692   * Bug fixes:
693
694        - Fixed typos in `sawfish.wm.gnome.integration' and
695          `sawfish-themer' (Christian Marillat)
696
697        - Fixed bug when building on Tru64 (John H. Palmieri)
698
699        - Remember to check return value when initializing Imlib
700
701
7020.31
703====
704
705   * Requires librep version `0.13'
706
707   * Organized all lisp code into a hierarchy of modules. Root points
708     are `sawfish.wm' for window manager code, `sawfish.ui' for
709     configurator and `sawfish.gtk' for GTK+ utilities
710
711     Compatibility should have been preserved as far as possible,
712     through the use of module aliases. The `user' module that
713     unmodularized user code is loaded in should look very similar to
714     the old environment.  However, code using private functions,
715     probably will not work
716
717     New features written as modules can either import modules
718     individually, or just open `sawfish.wm' to get the core
719     functionality
720
721   * All command handling is now written in Lisp. It's fully compatible
722     except for how commands are defined. Since there is no longer a
723     unified namespace the mapping from names to command definitions is
724     maintained separately.
725
726     `define-command' and `autoload-command' add entries to this
727     mapping. `define-command' takes a name and a function (and some
728     other optional arguments). The old style of defining commands still
729     works, but only in the user module
730
731   * `sawfish-client' now provides the same repl as the normal `rep'
732     program. E.g. this allows the module system to be easily inspected
733
734     Also, the module of each loaded theme is available for inspection
735     under `themes.THEME-NAME'. (With themes using top-level defines
736     instead of a single `let*' block, this is useful for debugging)
737
738   * `sawfish.client' module provides lisp functions for communicating
739     with a running window manager. Also, the protocol has been
740     modified to support proper communication of errors, which are then
741     re-raised on the client-side. This should make debugging
742     client-server code more obvious
743
744   * `Action' parts of menu items may now be lisp objects that don't
745     have a read syntax. (E.g. this allows closures to be used,
746     avoiding the problems arising from modularization)
747
748   * Support for checked and radio-group menu items. Also a new
749     function `add-window-menu-toggle' to add items to the `Toggle'
750     sub-menu of each window
751
752   * Handle `ConfigureRequest' events in a way that is compliant with
753     the ICCCM--honour the window's `win_gravity' setting (defaulting
754     to `NorthWest' gravity), instead of assuming `Static' gravity
755
756   * Support more GC attributes in the `sawfish.wm.util.x' plugin (Ryan
757     Pavlik)
758
759   * Support for handling arbitrary windows as extra "root" windows.
760     Used, e.g., to support Nautilus' desktop window. Allows the focus
761     modes to work correctly
762
763     To support this, new window property `desktop' denoting a
764     "desktop" window; new function `desktop-window-p' recognizing one
765     of these things (or the symbol `root')
766
767   * Added `pointer-motion-threshold' option. Pointer motion events are
768     only generated when the pointer moves at this many pixes away from
769     the position it had when the button was pressed
770
771   * New functions: `scale-image', `composite-images', and `crop-image'.
772
773   * New option `maximize-avoid-avoided' (Jonas Linde)
774
775   * New functions exported by `sawfish.wm.ext.tooltips' module:
776     `display-tooltip', `remove-tooltip'
777
778   * New function exported from `sawfish.wm.viewports' module:
779     `select-workspace-and-viewport'. Renamed some workspace functions:
780
781     `ws-move-window' => `move-window-to-workspace', `ws-copy-window'
782     => `copy-window-to-workspace', `ws-insert-workspace' =>
783     `insert-workspace', `ws-move-workspace' => `move-workspace',
784     `ws-remove-window' => `remove-workspace'.
785
786   * Changed interface of `get-visible-window-edges' function to use
787     proper keyword parameters, and added some new keywords
788
789   * New commands `help:about' and `gnome-about'. Added a
790     `sawfish-about' script to implement the first of these. Added
791     associate menu items to the `Help' menu
792
793   * New window property `cycle-skip', defines whether the window is
794     included when cycling the focused window. (Dave Dribin, me)
795
796   * Translation additions and updates: es (Iñaki García Etxebarria),
797     tr (Fatih Demir), zh_CN.GB2312 (zw@zhaoway.com), fr (Christian
798     Marillat), ja (SATO Satoru), de (Kai Lahmann), el (Simos
799     Xenitellis), ga (Seán Ó Ceallaigh), ru (Valek Filippov), sl
800     (Andraz Tori)
801
802   * Bug fixes:
803
804        - Don't let errors in `.sawfishrc' prevent customization
805          settings being loaded
806
807        - initialize event handler when creating X window proxies (Matt
808          Tucker)
809
810        - No longer able to `throw' out the top of the program by
811          mistake
812
813        - Fixed `find-head' function, to allow Xinerama support to work
814
815        - When exiting, leave window configurations exactly as they were
816          found (E. Jay Berkenbilt)
817
818        - Fixed `synthesize-event' to scan the window tree for a child
819          window accepting button events (E. Jay Berkenbilt)
820
821        - Removed "yow! ..." debugging messages
822
823        - `image-set' and related functions will add an alpha channel
824          to the image when necessary (when using gdk-pixbuf)
825
826        - Canonify `S-x' as `X' where possible
827
828        - Catch and handle errors when matching properties in the
829          `sawfish.wm.ext.match-window'
830
831        - Escape underscores in menu items where they shouldn't
832          introduce accelerators. (Added `quote-menu-item' function to
833          help with this)
834
835        - Fixed race-condition when exiting configurator embedded into
836          the GNOME control center (Havoc Pennington, me)
837
838        - Fixed bug in `set' method of the `icon' widget
839
840        - Fixed shading behaviour of included themes (Daniel Lundell)
841
842        - Compute the shape of the frame window each time the
843          background of one of its parts changes
844
8450.30.3
846======
847
848   * If a frame part has a non-nil `hidden' attribute, ignore it
849
850   * When reframing windows, keep the absolute position of the client
851     window constant
852
853   * Support `FIXED_POSITION' GNOME hint (renamed old `fixed-position'
854     property as `client-set-position'; `fixed-position' now means
855     don't allow the window to be moved by the user)
856
857   * `transients-above' option can now be set per-window
858
859   * Translation updates: fr (Christian Marillat), en_GB (Robert
860     Brady), de (Kai Lahmann), da (Keld Simonsen), ru (Valek Filippov),
861     sl (Andraz Tori), no (Kjartan Maraas), gl (Jesus Bravo Alvarez), it
862     (Michele Campeotto)
863
864   * Fixed bugs when converting option values
865
866   * Fixed `:require' keyword in `defcustom' always causing the module
867     to be loaded, not just when the option is non-nil
868
869   * Fixed bug when adding windows that are shaded
870
871   * Fixed some minor bugs in the configurator
872
873
8740.30.2
875======
876
877   * Window cycling now forwards terminating events to external
878     applications as well as internal bindings (e.g. `M-TAB M-w' closes
879     an activated Netscape window)
880
881   * `quote-event' command now works with applications that ignore
882     synthetic events (adapted from code by Timo Korvola)
883
884   * Reorganized frame style and window type management. New function
885     `define-frame-type-mapper' allows modules to affect the mapping
886     from window type to frame type. E.g. the shading module uses this.
887     (fixes the bug that changing the frame type of a shaded window
888     didn't work)
889
890   * Added function `variable-customized-p'; use this to avoid
891     redefining user-modified options
892
893   * Do type-directed deep conversion of values when converting to/from
894     readable representations. This fixes the bug that options with
895     `:type (optional color)' weren't being converted when passed
896     between the wm and the configurator, leading to reader errors
897
898     A side-effect of this is that updated custom files will not be
899     compatible with previous versions of the wm (though old custom
900     files will work with new versions)
901
902   * Translation updates: no (Kjartan Maraas), de (Kai Lahmann), nl
903     (Dennis Smit), sl (Andraz Tori)
904
905   * Added primitives `map-windows' and `filter-windows'
906
907   * Fixed bug of not retaining focus on startup when originally in
908     PointerRoot mode and moving to click-to-focus mode (Brad Thompson)
909
910   * Ensure that apps get sent a synthetic ConfigureNotify event after
911     ConfigureRequest events are handled (fixes bug where menus in Java
912     apps can appear at wrong position until window is moved)
913
914   * When referencing known variables from subroutines, make sure that
915     restricted environment doesn't prevent the variable being accessed
916     (fixes bug where `default-bevel-percent' was being ignored)
917
918   * When creating transient groups, don't compare null group ids
919     (fixes xfmail related bugs)
920
921   * Fixed `move-window-to-viewport' command to correct for 1...
922     indexing
923
924   * Fixed non-gnome workspace widget in configurator
925
926
9270.30
928====
929
930   * New commands `activate-viewport-column', `activate-viewport-row'
931
932   * New commands `raise-window-and-transients',
933     `lower-window-and-transients' and
934     `raise-lower-window-and-transients',
935     `raise-transients-and-pass-through-click'.
936
937     As the normal window stacking commands, but restacks the
938     "transient-group" of the window. This includes the window itself
939     and any transients it has, and any windows that it itself is a
940     transient of.
941
942     These commands are used in the default keymaps
943
944   * Functions that deal with transient windows now understand the de
945     facto standard of setting the `WM_TRANSIENT_FOR' property to the
946     root window denotes that the window is a transient for the whole
947     group
948
949   * New image manipulation functions: `image-ref', `image-set',
950     `image-fill', `image-map'. New color accessor function
951     `color-rgb-8'. New function `root-window-id'
952
953   * Improvements to `sawfish-ui': optionally use some GNOME widgets,
954     more lisp widget types, some bug fixes
955
956   * New command `command-sequence'. Allows individual bindings to
957     invoke a sequence of commands
958
959   * Options `iconify-group-mode' and `uniconify-group-mode' replace
960     `iconify-whole-group' and `uniconify-whole-group'.  New commands
961     `iconify-transient-group', and `uniconify-transient-group'
962
963   * Added `:type*' key to `defcustom', like `:type', but value is left
964     unquoted
965
966   * Translation updates: pl (Daniel Koc), ru (Valek Filippov), uk
967     (Yuri Syrota), es (Iñaki García Etxebarria)
968
969   * Fixed handling of `WM_NORMAL_HINTS' (was using base-size instead
970     of min-size in places)
971
972   * Fixed further locale / FontSet bug (Tomohiro KUBOTA)
973
974   * `window-history' module won't resize a window to a size that
975     violates its size constraints
976
977
9780.29
979====
980
981   * Rewrote the configuration user interface. Improvements include:
982
983        - Key bindings may now include parameters. E.g. this finally
984          allows shell commands to be bound to keys using the GUI (use
985          the new `run-shell-command' command)
986
987        - Nautilus-like user-levels to tailor the options shown to the
988          expertise of the user
989
990        - Options may have much richer type descriptions (including
991          `match-window' options). Also, extra widget types and
992          containers may be added as extra Lisp modules
993
994        - By default the stand-alone configurator commits changes to the
995          window manager as they are made, instead of waiting for the
996          `Try' button to be pressed
997
998        - Added dependences--options with dependences are only editable
999          when the value of their dependence is non-`nil'
1000
1001   * Rewrote window stacking code to be based on "stacking
1002     predicates"--functions that accept or reject a possible stacking
1003     configuration. This allows the "stack-transients-above-parents"
1004     option to work correctly, only keeping transient windows above
1005     their _own_ parent windows
1006
1007   * The configure-event handler now understands and handles the full
1008     complexity of stacking requests (Brad Thompson)
1009
1010   * New frame-part attribute: `scale-foreground'. The `cursor'
1011     attribute may now be a function
1012
1013   * Made the `centered', `centered-on-parent' and `under-pointer'
1014     placement modes clamp the window into the current work area (i.e.
1015     without overlapping windows that shouldn't be covered).  Added a
1016     `stagger' placement mode
1017
1018   * When grabbing window icons to images, preserve their shape masks
1019
1020   * Moved `window-history' options to `placement' group.  Fixed some
1021     more bugs and sub-optimal default option values
1022
1023   * Don't set cursors for button classes, use the default value
1024
1025   * GNOME `SKIP_FOCUS' window hint sets `never-focus' property on
1026     window, as well as the `ignored' property
1027
1028   * Translation updates: de (Karl Eichwalder), ru (Valek Filippov), da
1029     (Kenneth Christiansen)
1030
1031   * Added mostly-complete support for using gdk-pixbuf instead of
1032     Imlib (requires an experimental Xlib version of the gdk-pixbuf
1033     library)
1034
1035   * Various bug fixes and other minor changes...
1036
1037
10380.28.1
1039======
1040
1041   * New options `--visual=TYPE' and `--depth=DEPTH'. These tell the
1042     window manager to use a different visual than the default
1043
1044   * Made the `window-history' module behave more sanely (don't save
1045     iconified or shaded state; include window name when generating
1046     keys for transient windows)
1047
1048   * Made `beos-window-module' the standard window menu (require
1049     `old-window-menu' to get the original version). Also made this
1050     display the windows' class names
1051
1052   * Updated translations: es (Iñaki García Etxebarria), tr (Fatih
1053     Demir)
1054
1055
10560.28
1057====
1058
1059   * New module `window-history'--automatically saves window attributes
1060     when they are explicitly set by the user, then copies these
1061     attributes to windows with the same `WM_CLASS' as they are
1062     created. This is loaded automatically if you have no `.sawfishrc'
1063
1064   * New method of allowing themes to implement only some of the
1065     (currently) four frame types. The variable
1066     `frame-type-fallback-alist' maps each frame type to the type to
1067     try if the original type isn't available in the chosen frame style.
1068
1069     Note that for this to work, themes must return `nil' when they
1070     don't support the requested frame type, until now, the convention
1071     had been to return the default frame definition, so most if not
1072     all themes will need changing. (This doesn't include themes
1073     created using the `make-theme' module.)
1074
1075   * Made the metrics used by the `best-fit' placement mode
1076     user-controllable. Set the `sp-cost-components' variable to a list
1077     of cost functions and the weight to apply to that metric. E.g. by
1078     default it gives 50% importance to the distance from the placement
1079     to the focused window, and 25% each to the distance to the pointer
1080     and to the "future-unusefulness" of the area being covered
1081
1082   * New module `beos-window-menu' to redefine the window menu to group
1083     items by the window group that they are a member of (in the
1084     absence of actual group information, it will heuristically build
1085     groups by matching window titles)
1086
1087   * New option `edge-flip-warp-pointer', whether or not to warp the
1088     pointer after edge-flipping (Paul Warren)
1089
1090   * New option `display-window:uniconify-to-current-workspace',
1091     controls whether windows uniconified by `display-window' should be
1092     moved to the current workspace (John N S Gill)
1093
1094   * Changed method of selecting when to use multi-byte aware rendering
1095     functions (except when initializing the locale fails, or returns a
1096     7-bit locale); also, when creating a fontset fails, try to
1097     intelligently fall back to a similar group of fonts (Tomohiro
1098     Kubota)
1099
1100   * The `x' library now supports creating and then drawing to pixmaps.
1101     The pixmaps can then be grabbed to images using the
1102     `make-image-from-x-drawable' function
1103
1104   * Added a `Help' item to the root menu
1105
1106   * Translation updates: fi (Antti Ahvensalmi), gl (Jesus Bravo
1107     Alvarez), de (Karl Eichwalder), nl (Jan Nieuwenhuizen), pl (Daniel
1108     Koc), tr (Fatih Demir)
1109
1110   * Now supports the `Super' modifier
1111
1112   * Fixed bug of sometimes ignoring pending X events
1113
1114   * Fixed bug of calling focus change hooks too many times (only when
1115     our view of the focused window has actually changed)
1116
1117   * Avoid problems when windows set weird size hints structures
1118
1119   * Raise windows _after_ possibly moving them to a different layer,
1120     when they have been mapped
1121
1122   * When the `cycle-windows' sequence is terminated by an unknown
1123     event, re-handle that event after exiting (so that e.g.  `M-TAB'
1124     can be followed by another `M-' qualified event without releasing
1125     Meta)
1126
1127
11280.27.2
1129======
1130
1131   * Translation updates: da (Kenneth Christiansen), de (Karl
1132     Eichwalder), es (Iñaki García Etxebarria), ja (SATO Satoru)
1133
1134   * Attempt to destructure the language code when parsing GNOME
1135     desktop items (e.g. if `LANG=de_DE' look for both `de_DE' and `de'
1136     translations)
1137
1138   * New focus handler events `enter-root' and `leave-root'
1139
1140   * Removed `raise-groups-on-focus' option, it caused unstable window
1141     flickering in certain cases
1142
1143   * Fixed bug When transferring focus after a window is unmapped
1144     (inverted choice of when to look under pointer, and when to look in
1145     focus history)
1146
1147
11480.27
1149====
1150
1151   * Changed the name from `sawmill' to `sawfish'; all user-visible
1152     binaries have been renamed appropriately, the old programs will
1153     still work for now...
1154
1155   * Added support for accelerators in menu definitions (this requires
1156     a new rep-gtk package) (Richard Kilgore). Added accelerators to
1157     many of the standard menu items
1158
1159   * Added some (untested) support for Xinerama: `current-head',
1160     `current-head-dimensions', `current-head-offset'. Some placement
1161     modes should handle multiple heads sensibly, as should window
1162     maximization and edge snapping.
1163
1164   * Added icons for GNOME control center applets (all icons by Tigert,
1165     except for the saw-blade logo by Glyph Lefkowitz)
1166
1167   * New functions `map-window-properties' (me), `window-icon-image'
1168     (Bruce Miller)
1169
1170   * Changed behaviour of `raise-group' and `lower-group' to preserve
1171     the stacking of the group, then change the selected window.  Added
1172     new command `raise-lower-group'
1173
1174   * New option `raise-groups-on-focus'
1175
1176   * Updated translations: de (Hubert Nachbaur), es (Iñaki García
1177     Etxebarria), gl (Jesus Bravo Alvarez), ko (Man-Yong Lee), tr
1178     (Fatih Demir)
1179
1180   * Try to handle errors more gracefully when creating window frames
1181
1182   * Better handling of errors in the control center applet
1183
1184   * Fixed the `below-client' frame-part attribute
1185
1186   * Fixed the disappearing items in the match-windows dialog
1187
1188   * Fixed the non-beautified entries in the keymaps dialog
1189
1190   * Fixed interactive placement mode (Timo Korvola)
1191
1192   * Invoke audio playing program asynchronously, may avoid deadlocks
1193
1194   * Fixed `workspace-menu' to add the focus-marking asterisk (John N S
1195     Gill)
1196
1197   * Fixed menu-obscuring bug after auto-raising windows
1198
1199   * Ensure that `WM_STATE' property is set each time a window is
1200     mapped, not just the first time
1201
1202   * Fixed bug when discarding grab in click-to-focus mode, even though
1203     successive events may be in the window's keymap
1204
1205   * Only focus windows when they're mapped when they're visible
1206
1207   * Fixed click-to-focus problems when unmapping transient windows
1208
1209
12100.26
1211====
1212
1213   * Added plugin `selection', adds functions `x-selection-active-p'
1214     and `x-get-selection' for retrieving X selections (Mark Probst)
1215
1216   * New functions `prompt-for-window', `prompt-for-workspace' and
1217     `select-workspace-interactively' (Dave Pearson)
1218
1219   * `window-anim' module enabling asynchronous animations after window
1220     events. Currently only two animation styles `wireframe' and
1221     `solid', and they only animate window iconification
1222
1223   * `audio-events' module; maps window manager events to audio samples
1224     (played using esd by default, but can be configured to use any
1225     program)
1226
1227   * When running programs in terminals from the GNOME apps menu, use
1228     the value of `xterm-program' to decide which terminal program to
1229     use (James Antill)
1230
1231   * Translation updates: gl (Jesus Bravo Alvarez), pl (Daniel Koc)
1232
1233   * New command `toggle-window-iconified' (Jens-Ulrik Petersen)
1234
1235   * New option `raise-windows-when-unshaded'
1236
1237   * Customization options for tooltip colors (Erik Assum)
1238
1239   * Removed default binding to `A-x'
1240
1241   * Added support for librep-with-module-system (cvs version)
1242
1243   * Note that `ko' and `zh' languages need FontSets
1244
1245   * When sticking a window not on the current viewport, move it to the
1246     current viewport (Merlin)
1247
1248   * Fixed bug (?) of placing over avoided windows in `random' mode;
1249     also increased `sp-avoided-windows-weight' by an order of
1250     magnitude (Dan Winship)
1251
1252   * Fixed bug of maximizing a window changing its viewport
1253
1254   * Fixed window cycling losing grab if originally focused window is
1255     unmapped
1256
1257   * Fixed `get-cursor' to use the correct background color when
1258     creating cursors from vectors (Alexander Barinov)
1259
1260   * Fixed `get-font' to set `descent' property correctly
1261
1262   * Changed double-buffering semantics in `x' plugin, also only
1263     support this if configure finds the correct header files
1264
1265   * Fixed `synthesize-event' to generate correct relative pointer
1266     positions
1267
1268   * Don't focus on non-visible windows (crashes GNOME control center)
1269
1270   * Fixed bug of using `cp' to install GNOME desktop files
1271
1272
12730.25.2
1274======
1275
1276   * If no user customization file when saving options, inherit from
1277     the custom-defaults file
1278
1279   * Rewrote window stacking (fixes bugs, more efficient)
1280
1281   * Added `input-focus' to theme-callable functions
1282
1283   * When focused window is unmapped, don't try to focus non-visible
1284     windows
1285
1286   * Fixed `display-window' when it's applied to iconified windows
1287
1288   * New variables `fonts-are-fontsets' and `fontset-languages-re' to
1289     work around broken X servers
1290
1291   * Update edges for snapping to when dragging windows across
1292     workspaces or viewports
1293
1294   * When passing keymaps to customization system, filter out, then
1295     later restore, bindings that aren't symbols
1296
1297   * Most commands to move/copy windows between workspaces can now be
1298     told whether to select the destination workspace or not
1299
1300   * In GNOME hints, never place windows on workspaces that don't exist
1301     (from the pager's POV). (Rob Hodges)
1302
1303   * Fixed `ws-move-window' to not remove the window if source and dest
1304     are the same (Rob Hodges)
1305
1306   * Fixed `sp-prune-points' function (Dan Winship)
1307
1308   * Fixed `move-viewport-to-window' to only flip viewports if window
1309     isn't already on the current viewport (Merlin)
1310
1311   * Try to detect and handle system clock being rewound
1312
1313   * Optional second arg to `x-raise-window'; added symmetrical
1314     function `x-lower-window'
1315
1316   * Fixed unix-domain server code assuming atomic writes to sockets
1317
1318   * Added double buffering support to `x' module
1319
1320   * Fixed grabs during multi-key sequences; also, print the current
1321     prefix keys if idle during a multi-key sequence
1322
1323
13240.25.1
1325======
1326
1327   * Only force windows onto the visible screen if they didn't
1328     explicitly set their position
1329
1330   * Redefine `/' in themes to be the `quotient' function (integer
1331     division), which is what they expect. The `divide' function can be
1332     used for real division
1333
13340.25
1335====
1336
1337   * New plugin `x', a basic Xlib binding for creating and drawing in
1338     windows (Merlin, me)
1339
1340   * Added a method of reading textual input from the user from
1341     completion. Provision for completing functions, variables,
1342     commands, files, directories, etc.... Also supports reading
1343     passwords. (Topi Paavola, me)
1344
1345   * Re-enabled the following interactive codes: `a' (function), `C'
1346     (command), `D' (directory), `f' (existing file), `F' (file), `k'
1347     (event), `n' (number), `N' (prefix or number), `s' (string), `S'
1348     (symbol), `v' (variable)
1349
1350   * Support prefix keys in bindings (binding an event to a keymap, or
1351     the name of a keymap, marks that event as a prefix key for the
1352     associated keymap)
1353
1354   * New command `call-command-with-output-to-screen', prompts for and
1355     invokes a command, then displays any output it emitted (bound to
1356     `A-x' in default keymaps)
1357
1358   * New variable `multi-click-delay', maximum time in milliseconds
1359     between button presses to count as `click2' or `click3' events
1360     (Martin Blais)
1361
1362   * New option `edge-flip-only-when-moving' (Yaron M. Minsky)
1363
1364   * New window cycling commands `cycle-prefix', `cycle-class' (Kai
1365     Großjohann); can now be bound to events with more than one
1366     modifier (Timo Korvola)
1367
1368   * New command `uniquify-window-name'; new property `unique-name'.
1369     Forces the window to have a unique name
1370
1371   * New commands `size-window-add-column',
1372     `size-window-subtract-column', `size-window-add-row',
1373     `size-window-subtract-row'
1374
1375   * Window edge snapping now has three variants: `magnetism' (the old
1376     method), `attraction' and `resistance'. (Merlin, me)
1377
1378   * New commands `grow-window-{left,right,up,down}' and
1379     `pack-window-{left,right,up,down}' (Kai Großjohann)
1380
1381   * Support the `WM_COLORMAP_WINDOWS' protocol
1382
1383   * New functions `synthesize-event', `font-ascent', `font-descent',
1384     `call-with-keyboard-grabbed'
1385
1386   * New functions `define-placement-mode' and
1387     `define-focus-mode'--make defining these things easier. Focus
1388     modes are now settable for each window individually
1389
1390   * Made the tree-organised customization groups work better with the
1391     GNOME control center. Add the sawmill capplet desktop entries to
1392     the GNOME programs menu (under Settings). Also, beautify the names
1393     displayed in the bindings widget
1394
1395   * When applicable, load the GNOME applications menu when the wm is
1396     first idle, reduces the latency of displaying the first root menu
1397
1398   * Translation updates: de (Hubert Nachbaur), es (Iñaki García
1399     Etxebarria), ja (Sato Satoru), sv (Andreas Persenius)
1400
1401   * Fix bug of not noticing when the keyboard / pointer / modifier
1402     mappings change
1403
1404   * Fixed `current-event-string' function
1405
1406   * Better method of reconfiguring frames when they're resized (helps
1407     opaque resizing)
1408
1409   * Added some kludges to try and break the intermittent lockups some
1410     people have seen
1411
1412   * Made the auto-gravity option work a lot better (John N S Gill, me)
1413
1414   * Fixed bug where unmapped windows were being included in the
1415     snapping calculation
1416
1417   * Fixed bug when uniconifying windows and merging workspaces
1418
1419   * Fixed bug of warp-cursor-to-window trying to put the pointer
1420     outside the screen boundaries (Merlin)
1421
1422   * Fixed bug of losing keyboard grab when originally focused window
1423     is deleted during `x-cycle' command
1424
1425   * Fixed bug of trying to focus unviewable parent windows when
1426     focused window is unmapped
1427
1428
14290.24
1430====
1431
1432   * Configure requests events are now passed to the hook
1433     `configure-request-hook'. The new configure handler respects
1434     window gravity when resizing
1435
1436   * New option `configure-auto-gravity'. When enabled the window
1437     gravity is implied by the position of the center of the window.
1438     (e.g.  try placing the GNOME control center in the bottom right
1439     corner of the screen, then click on an item that causes it to
1440     resize)
1441
1442   * Worked around the numerous reports of non-existent font errors
1443     that using `XCreateFontSet' causes--fall back to `XLoadQueryFont'
1444     if possible
1445
1446   * There's now a library `custom-defaults' giving default
1447     customization options (only if the user has no `~/.sawmill/custom')
1448
1449     Also, remove the need to call `custom-add-required' in
1450     `.sawmillrc', it's always done now
1451
1452   * New window properties `focus-when-mapped', and `gravity'
1453     (overrides the hinted gravity value)
1454
1455   * New placement modes `under-pointer' and `centered-on-parent'
1456
1457   * New option `resize-edge-mode', replaces `resize-by-frame-class'
1458     and `resize-add-edges'>. Also allows twm-style resizing (Mark
1459     Probst, me)
1460
1461   * Optionally display command documentation in tooltips; tooltips are
1462     now aligned into columns (if you use a monospaced font for them)
1463
1464   * Variables `default-cursor', `synthetic-configure-mutex',
1465     `frame-draw-mutex', `frame-state-mutex' are now functions
1466
1467   * New functions `x-keysym-name', `x-lookup-keysym', `decode-event',
1468     `encode-event'.
1469
1470   * New option `move-resize-inhibit-configure'
1471
1472   * Translation updates: es (Iñaki García Etxebarria), fr (Christian
1473     Gillot), gl (Jesus Bravo Alvarez), nl (Han-Wen Nienhuys), pt_PT
1474     (Rui Silva), sv (Andreas Persenius)
1475
1476   * Fixed single-quoting in client readline (Matt Krai), copied
1477     bouncing parentheses hack
1478
1479   * Removed `fp->win == 0' assertion, it should be harmless and was
1480     triggering for some people
1481
1482   * Fixed bug of sending configure notify events to too many windows
1483
1484   * Fixed off-by-one error in `ws-insert-workspace' (Kirk Saranathan)
1485
1486   * Fixed maximization in single directions to work additively
1487
1488   * Fixed bug of leaving tooltips displayed after the associated
1489     window has been deleted
1490
1491   * Fixed bug of not removing `-clientId' option from restart
1492     parameters
1493
1494   * Fixed bug of not translating customize group names
1495
1496
14970.23
1498====
1499
1500   * Customization groups are now organized as a tree structure, with
1501     groups able to contain subgroups
1502
1503   * Define the list of features that will be presented to the user in
1504     `sawmill-defaults.jl', by calling `custom-add-required'. If you
1505     have a `.sawmillrc' you'll need to do this manually
1506
1507   * New function `move-resize-window-to' doing a combined move/resize.
1508     New variable `synthetic-configure-mutex', when set holds off
1509     sending synthetic `ConfigureNotify' events to windows until it's
1510     unset (this is held while interactively moving or resizing windows)
1511
1512   * New hook `after-add-window-hook'. Called with a single parameter,
1513     the window that's has just been adopted
1514
1515   * New functions `x-kill-client', `delete-window-safely'.
1516     `send-client-message' now groks long integers (i.e. cons cells) in
1517     32-bit data (Timo Korvola)
1518
1519   * `window-put', `window-get', `image-put', `image-get', `font-put',
1520     `font-get': use `equal' to compare keys, not `eq'
1521
1522   * New module `error-handler', implements a simple alternative error
1523     handler (and allows the much-maligned beep to be turned off),
1524     requires rep 0.11+
1525
1526   * Allow the pointer-warp position to be defined relative to the
1527     window (Kai Großjohann)
1528
1529   * New module `shade-hover', unshades windows while the pointer is
1530     over them
1531
1532   * Don't automatically warp to the new workspace when opening windows
1533     on a different workspace
1534
1535   * Include iconified sticky windows in the `window-menu', shorten
1536     sticky entries as usual (James Antill)
1537
1538   * Support the `TryExec' field in GNOME desktop files (Ian)
1539
1540   * New commands: `raise-or-pass-through-click',
1541     `raise-and-pass-through-click-if-focused'
1542
1543   * New module `move-cursor', various commands for moving the mouse
1544     pointer; these commands are bound to the cursor keys when moving
1545     or resizing windows
1546
1547   * Translation updates: es (Iñaki García Etxebarria), fr (Fabien
1548     Ninoles), gl (Jesus Bravo Alvarez), ja (Satoru Sato), nl (Jan
1549     Nieuwenhuizen), tr (Fâtih Demir)
1550
1551   * Fix bug of leaving window-name unset when `WM_NAME' is a null text
1552     property
1553
1554   * Don't fail catastrophically if unable to open the default font
1555
1556   * Fixed method of truncating maximized window dimensions
1557
1558   * Fixed the match-window `skip-winlist' and `skip-tasklist'
1559     properties I'd stupidly broken
1560
1561   * Fixed bug of trying to edge-flip sticky windows
1562
1563   * Fixed the `move-workspace-forwards' and `move-workspace-backwards'
1564     commands
1565
1566   * Fixed `uniconify-to-current-viewport' option
1567
1568   * Fixed infinite-loop bug in `delete-empty-workspaces' command
1569
1570   * Avoid generating empty sub-menus when reading GNOME menu tree
1571
1572
15730.22
1574====
1575
1576   * Window frame parts are now first-class lisp data objects, allowing
1577     a higher level of control by themes
1578
1579     New or updated functions to access frame parts directly:
1580
1581     `frame-part-get', `frame-part-put', `frame-part-window',
1582     `frame-part-x-window', `frame-part-position',
1583     `frame-part-dimensions', `frame-part-state', `map-frame-parts',
1584     `refresh-frame-part', `rebuild-frame-part'
1585
1586     Other new functions: `refresh-window'
1587
1588   * Updated `sawmill-themer' to emit code to tell the window manager
1589     that the theme is editable. The wm adds an `Edit Theme...' option
1590     to the Customize menu when appropriate
1591
1592   * The `call-after-property-changed' function can now be given a list
1593     of properties to monitor (James Antill)
1594
1595   * New function `call-after-state-changed', monitors a list of window
1596     states (i.e. things like iconified, shaded, ...) and calls a
1597     function when any of them change. The `window-state-change-hook'
1598     now has a second argument (apart from the window), the list of
1599     symbolic states that changed (James Antill)
1600
1601   * Add support for `skip-winlist' and `skip-tasklist' to the window
1602     matcher when GNOME support is enabled (Ben Liblit)
1603
1604   * Integrated patch supporting multi-byte languages from the Kondara
1605     MNU/Linux distribution (forwarded by Yukihiro Nakai)
1606
1607   * Translation updates: de (Christoph Rauch), es (Iñaki García
1608     Etxebarria), gl (Jesus Bravo Alvarez), ja (Satoru Sato), tr (Fâtih
1609     Demir)
1610
1611   * Use a combo box in the configurator to display the list of themes
1612     (it gets given scroll bars when too big for the screen)
1613
1614   * Changed timestamp handling--attempt to detect and discard
1615     timestamps that arrive out of order
1616
1617   * Added option controlling title justification to `mono' theme
1618
1619   * Filter <Scroll_Lock> modifiers as well as the other lock modifiers
1620     (Matt Krai)
1621
1622   * Fixed `display-message' function update background color, and
1623     gracefully handle invalid color specifiers (Matt Krai)
1624
1625   * Reverted to grabbing events on the client window, not the frame,
1626     avoids some awkward-to-fix-correctly problems
1627
1628   * Load i18n support _before_ other libraries; ensures that some
1629     static strings get translated
1630
1631   * Fixed annoying flicker when cycling to an iconified window
1632
1633
16340.21.1
1635======
1636
1637   * Fixed problem causing spurious double-click events to be reported
1638     in click-to-focus mode
1639
1640   * Fixed problem with binding `-Off' events in the `window-keymap'.
1641     (Matt Krai)
1642
1643   * Don't try to grab non-existent keys (which actually grabs the
1644     entire keyboard)
1645
1646   * Fixed some problems with reading unusually formatted GNOME menu
1647     entries
1648
1649
16500.21
1651====
1652
1653   * Frame pattern definitions (foreground, background, font) may now
1654     take alists as well as the old single object, or list of four
1655     objects.  Possible states are `inactive', `focused',
1656     `highlighted', `clicked', `inactive-highlighted',
1657     `inactive-clicked'. (Last two are new)
1658
1659   * New program `sawmill-themer'. A GUI for creating simple themes
1660     (those without any parts defined by functions)
1661
1662   * New module `gnome-int', loaded by `sawmill-defaults' if GNOME is
1663     around, sets up some GNOME'ish things
1664
1665   * New command `toggle-single-window-mode'
1666
1667   * Translation updates/additions: de (Christoph Rauch), es (Iñaki
1668     García Etxebarria), nl (Han-Wen Nienhuys)
1669
1670   * Optional removal of tooltips after time period (Morgan Schweers)
1671
1672   * `Any-RET' completes interactive move or resize
1673
1674   * Work around Imlib's annoying image caching, `make-image' now
1675     _always_ returns a new image
1676
1677   * Fixed gc bug when building window frames
1678
1679   * Fixed X property handling on Alpha's (George Lebl)
1680
1681   * Make `call-command' accept closures
1682
1683   * Make `(cursor . nil)' work correctly in frame definitions
1684
1685   * Grab on frame window, not client window (ICCCM compliant)
1686
1687   * Fixed the "uniconify to current workspace" option
1688
1689   * Added window-maximization predicates to the gaol
1690
1691
16920.20
1693====
1694
1695   * Rewrote workspace handling--windows can now appear on multiple
1696     workspaces, with each instance having different properties
1697     (position, size, whatever...)
1698
1699     Create new window instances by using the `copy-to-next-workspace',
1700     `copy-to-previous-workspace', and `copy-to-workspace:N' commands.
1701     Merge instances by moving them to the same workspace, or using the
1702     `delete-window-instance' command
1703
1704   * Added linear-viewport commands--indexing two-dimensional virtual
1705     workspace areas by one-dimensional values (adapted from code by
1706     Eric Kidd)
1707
1708   * Rewrote tooltips; especially how they're removed (also, don't show
1709     null keymaps)
1710
1711   * Added new match-window property `ungrouped'. Means to put the
1712     window in a group on its own
1713
1714   * Translation additions/updates: da (Wandy Christiansen), en_GB
1715     (me), es (Iñaki García Etxebarria), fr (Christian Gillot), gl
1716     (Jesus Bravo Alvarez)
1717
1718   * Fixed bug of not refocusing unshaded windows
1719
1720   * Fixed bug of not notifying windows of their actual position after
1721     placing them
1722
1723   * Fixed bug when grabbing Hyper-modified buttons
1724
1725   * Fixed the focus-flickering when moving windows opaquely
1726
1727   * Fixed the `commandp' function when applied to autoload stubs
1728
1729   * Fixed typo in `gnome-logout' command (Jens Finke)
1730
1731   * Fixed `raise-window-and-pass-through-click' command to pass
1732     <click2>, etc, events through to frame parts
1733
1734   * Fixed infinite-regress bug when reading GNOME menu entries
1735     (`Type=directory', but actually a file)
1736
1737   * Fixed bug when showing window-move position with snapped movement
1738     (adapted from merlin@merlin.org)
1739
1740   * Fixed bug when matching null text properties
1741
1742
17430.19
1744====
1745
1746   * Added tooltips for window frames (disabled by default)
1747
1748   * Added `Grab...' button to match-windows dialogue, grabs the value
1749     of an X property from a window
1750
1751   * Support for creating cursors from bitmaps, and for changing the
1752     colors of cursors
1753
1754   * Internationalized all strings in the configurator
1755
1756   * New functions: `frame-part-get', `server-grabbed-p',
1757     `forget-button-press', `resize-window-with-hints',
1758     `window-in-workspace-p', `windows-share-workspace-p'
1759
1760   * New window properties: `never-focus', `raise-on-focus'
1761
1762   * New pseudo-property (for window matching): `size', in terms of the
1763     window's size hints
1764
1765   * Message catalogue additions/updates: Galician (Jesus Bravo
1766     Alvarez); Danish (Birger Langkjer)
1767
1768   * Don't ignore initial state property of windows
1769
1770   * Option to control height of drawn bevels (Chris Hanson)
1771
1772   * More logical method of drawing diagonal gradients (Chris Hanson)
1773
1774   * Fixed typo when looking for i18n theme README files (Jesus Bravo
1775     Alvarez)
1776
1777   * Fixed `popup-apps-menu' command (Gérard Milmeister)
1778
1779   * Fixed `define-frame-class' when creating keymaps
1780
1781   * Fixed conversion of old-style `(set ...)' custom types
1782
1783   * Fixed `raise-window-and-pass-through-click' command to
1784     pass-through subsequent clicks
1785
1786   * Fixed problems when grabbing/ungrabbing customized keymaps
1787
1788   * Fixed screen corruption when doing wireframe moving and
1789     `move-resize-raise-window' is set
1790
1791   * Hacked around window-order problem when sticky windows exist
1792
1793
17940.18
1795====
1796
1797   * General subsystem for matching windows to properties as they're
1798     created. Allows matching on one or more of the window's X
1799     properties (e.g. name, class, etc...), and then setting any number
1800     of window manager properties as a result. See the `Matched Windows'
1801     customize group
1802
1803   * Removed all `auto-FOO-alist' and `BAR-windows-re' variables,
1804     they're obsoleted by the general match-windows mechanism
1805
1806   * Respect window's size hints when maximizing (both to see if the
1807     window is maximizable, and to truncate the maximized dimensions to
1808     an integral number of rows and columns)
1809
1810   * Show actual colors in the configurator, not just their names
1811
1812   * Added a new directory to the theme search path:
1813     `PREFIX/share/sawmill/themes'. Use this for system-wide themes
1814     (don't use the version specific directory)
1815
1816   * Included a new theme `mono'
1817
1818   * Deprecated the `show-message' function, replaced by
1819     `display-message' with a better calling interface; also displays
1820     multi-line strings
1821
1822   * Deprecated the menu "expand variables when first in list"
1823     behaviour. Instead expand variables when the list is dotted to
1824     them, as is done for functions
1825
1826   * Support the `Hyper' modifier, prefix is `H-'
1827
1828   * In the configurator, look for i18n'd theme README files (Yukihiro
1829     Nakai)
1830
1831   * Added option to disable the ability to grab a second edge while
1832     resizing (`resize-add-edges')
1833
1834   * Included Danish message catalogue (Kenneth Christiansen)
1835
1836   * Renamed `fixed-position' property as `sticky-viewport', and
1837     `focus-proxy-click' as `focus-click-through'
1838
1839   * When evaluating mouse events, look in the window that the pointer
1840     was in when the button was pressed, not where the pointer
1841     currently is
1842
1843   * Fixed bug where focus gets totally lost after closing a Motif
1844     application that has grabbed the keyboard
1845
1846   * Fixed (again) the problems when handling remapped windows; also
1847     should be more ICCCM-compliant
1848
1849   * Fixed typos in one-dimensional maximisation (Gérard Milmeister)
1850
1851   * Fixed the logic deciding when it's necessary to switch workspaces
1852     after merging an empty one
1853
1854   * Fixed interactive placement showing the window when edge-flipping
1855     (but it still doesn't work properly, rubber band traces are left)
1856
1857   * Removed flicker when focusing already-focused windows
1858
1859
18600.17
1861====
1862
1863   * First version to use lexically scoped librep. This enables themes
1864     to run in a "safe" environment, but all existing themes will need
1865     to be ported; other language changes include the use of a single
1866     symbol namespace, and scheme-like function call semantics
1867
1868   * Support for internationalization of messages and run-time
1869     documentation; an en_GB catalogue is the only translation
1870     currently, so please send me .po files for your native languages!
1871
1872     New option `--disable-nls' to disable i18n
1873
1874   * New functions `call-after-property-changed' and
1875     `gtkrc-call-after-changed' to allow themes to receive these events
1876     (hooks are now off-limits to themes)
1877
1878   * New command `raise-window-and-pass-through-click'; bind it to a
1879     mouse button in the `window-keymap' to get the "raise window on
1880     click" behaviour that seems popular
1881
1882   * New commands to move windows incrementally: `slide-window-X' and
1883     `slide-group-X' for X one of: `left', `right', `up', `down'
1884
1885   * New commands to control `ignored' property of windows (Julian
1886     Missig)
1887
1888   * New commands to toggle GNOME skip-winlist and skip-tasklist
1889     properties of windows
1890
1891   * Respect window gravity with program-specified window placement
1892     (<merlin@merlin.org>)
1893
1894   * Fixed a memory leak in the `stacking-order' function
1895
1896   * Fixed the `bevel-image' function (Scott Sams)
1897
1898   * Never look in the focused window's keymap by default with mouse
1899     events
1900
1901   * Hacked around the "need an X11 connection to compile" misfeature
1902
1903   * Fixed bug in `gnome-menu' code when GNOME binaries aren't in the
1904     first $PATH item; also accept non-alphanumeric language codes
1905
1906   * Fixed interactive window placement (again)
1907
1908   * Rewrote obscure documentation for some custom options
1909
1910   * Fixed bug when grabbing events with `AnyModifier' and a specific
1911     button
1912
1913
19140.16
1915====
1916
1917   * Support window groups, both as defined by applications, and
1918     defined by the user (either interactively through the window's
1919     menu, or via the `auto-group-alist' and `persistent-group-ids'
1920     variables).
1921
1922     For most commands working on single windows, there's also one
1923     operating on the group that the current window is a member of.
1924     (With the notable exception currently of moving windows.) There's
1925     also options controlling whether (de)iconification operates on
1926     windows or groups
1927
1928   * Improved GNOME menu support--merge duplicate sub-menus, scan PATH
1929     for `gnome-share-directory', also look in `/etc/X11/applnk' for
1930     menu entries
1931
1932   * Option to control whether edge-flipping flips viewports or
1933     workspaces (`edge-flip-type')
1934
1935   * New hook `after-framing-hook': called whenever a window's frame is
1936     changed or recalibrated
1937
1938   * New window placement mode: `first-fit-or-interactive'
1939
1940   * Variables specifying common cursor shapes: (`move-cursor-shape',
1941     `resize-cursor-shape', `select-window-cursor-shape')
1942
1943   * Fix interactive placement
1944
1945   * Fix problem of window losing focus when `cycle-windows' only finds
1946     a single window; also, abort immediately if there's no windows to
1947     cycle through at all
1948
1949   * Fix how the `WM_NORMAL_HINTS' property is read after it's been
1950     updated
1951
1952   * Fix `maximize-fill' functions to respect the
1953     `maximize-ignore-when-filling' option
1954
1955   * Fix interactive move/resize aborting if keyboard is already grabbed
1956
1957   * Ungrab the keyboard as well as the pointer before popping menus
1958
1959
19600.15
1961====
1962
1963   * Changed how themes are loaded from tar files--the tar file must
1964     now contain a directory with the same name as the theme; it's this
1965     directory that stores the data files
1966
1967   * Allow viewport edge-flipping to be enabled by the customization
1968     system, also enable flipping while moving windows
1969
1970   * Unified the method of marking which windows should be avoided when
1971     maximizing, and which windows should be avoided when using the
1972     fitted placement methods. Set the `avoid' property instead of the
1973     `maximize-avoid' property; new functions `window-avoided-p' and
1974     `avoided-windows'; new regexp `avoided-windows-re'
1975
1976   * New command `delete-empty-workspaces'
1977
1978   * Default theme is now `microGUI'
1979
1980   * When resizing only one edge of a window, moving the pointer past
1981     one of the perpendicular edges grabs that edge also
1982
1983   * Only the first three buttons focus a window in click-to-focus mode
1984
1985   * Changed behaviour of `window-id' and `window-frame-dimensions'
1986     functions. Replaced `query-last-pointer' function by
1987     `query-button-press-pointer'
1988
1989   * New hooks: `while-moving-hook', `while-resizing-hook'
1990
1991   * Notice when `WM_TRANSIENT_FOR' property changes
1992
1993   * More bug fixes to the maximization code, mainly for efficiency;
1994     also make first-fit placement work from top-left again
1995
1996   * Fix bug when matching events with `Any' modifier as well as other
1997     modifiers
1998
1999   * Fix bug in `window-outside-viewport-p' (Andreas Degert)
2000
2001   * Fix bug in `sawmill-client --' with long inputs
2002
2003   * Fix bug when matching windows with session data--`SM_CLIENT_ID' or
2004     `WM_COMMAND' _has_ to match
2005
2006   * Fix bugs when passive grabbing non-button-press pointer events
2007
2008
20090.14
2010====
2011
2012   * Rewrote window-maximization, many new options
2013
2014   * New option `resize-by-frame-class', when enabled (the default),
2015     the resized window edges are chosen to match the class of the
2016     clicked frame part (i.e. matching the cursor shape)
2017
2018   * Load GNOME support code automatically if it looks like GNOME is
2019     being used
2020
2021   * Create unix-domain sockets in `/tmp'
2022
2023   * New hooks: `window-moved-hook', `window-resized-hook',
2024     `after-initialization-hook', `shape-notify-hook'.
2025
2026   * Improved how menus are displayed; the window-ops menu is shown by
2027     ButtonPress not ButtonRelease events
2028
2029   * Refocus most-recently-focused window when switching viewport
2030
2031   * Added `centered' placement style
2032
2033   * Added symbol-completion to readline-based client
2034
2035   * Fix bug of not noticing WM_NORMAL_HINTS property changes; follow
2036     the window's maximum size hints
2037
2038   * Fix bug of not reframing windows when they change from unshaped to
2039     shaped, or vice versa
2040
2041
20420.13
2043====
2044
2045   * New option to only highlight frame parts when their window is
2046     focused (`highlight-when-unfocused')
2047
2048   * Typing `ESC' while moving/resizing a window cancels the operation,
2049     restoring the original geometry
2050
2051   * New session management hook `sm-after-restore-hook'
2052
2053   * New function `set-frame-part-value'--makes customizing the
2054     `frame-part-classes' variables easier
2055
2056   * Support for loading themes from tar files; needs librep 0.7
2057
2058   * Fix bug when allocating colors (choosing an incorrect cached color)
2059
2060   * Fix image tiling in frame part backgrounds
2061
2062   * Handle shifted keysyms when passive grabbing
2063
2064   * Fix another race condition when active grabbing
2065
2066   * Fix `_WIN_CLIENT_LIST' property not being set properly (both
2067     missing windows immediately after they're adopted, and of
2068     intentionally skipping ignored windows)
2069
2070   * Fix some problems with viewports when exiting/restarting
2071
2072   * Fix broken stacking of windows after they're mapped
2073
2074   * Prevent smart window placement blowing up when large numbers of
2075     windows are open/opened (throttle back to random placement when the
2076     event queue is too large, as well as trying to prune the search
2077     space)
2078
2079
20800.12
2081====
2082
2083   * Remember most recently focused windows on each workspace, activate
2084     that window after changing workspaces; also, try to preserve focus
2085     when moving windows between workspaces
2086
2087   * Option to disable auto-raise while cycling through windows
2088     (`cycle-disable-auto-raise'); option to restrict cycling to the
2089     current viewport (`cycle-all-viewports')
2090
2091   * Option `lock-first-workspace' is now enabled by default, and
2092     prevents both the first and last interesting workspaces being moved
2093     inwards
2094
2095   * Added readline support to the client program, pass
2096     `--with-readline' option to configure (from Christopher P Goller
2097     <goller@eng.utah.edu>)
2098
2099   * Added shaped-transient frame to microGUI theme
2100
2101   * New frame part attribute `below-client'
2102
2103   * Release passive grabs when unadopting windows
2104
2105   * When no window has the focus, the `root-window-keymap' is searched
2106     for key-press events
2107
2108   * Fix bug when binding to the unix-domain socket
2109
2110   * Fix focus sometimes being lost when the focused window is destroyed
2111
2112   * Fix bug when reading GNOME menu entries without `Type' fields
2113
2114   * Fix bug when removing title or border of `shaped-transient' window
2115     types (make the window completely unframed)
2116
2117   * Fix bug when shading a transient window with `decorate-transients'
2118     enabled
2119
2120   * Fix some bugs when placing windows that are almost as big or
2121     bigger than the screen
2122
2123   * Fix some race-conditions between wm-generated and client-generated
2124     map/unmap/reparent events
2125
2126   * Fix infamous "jerky pointer" bug, this will also make overlapping
2127     shaped frame-parts display correctly
2128
2129   * Fix bug where `cycle-windows' could leave a window originally
2130     under the pointer that's unfocused, drawn as though it is focused
2131
2132
21330.11
2134====
2135
2136   * New option `lock-first-workspace', prevent the first workspace
2137     from being deleted when it's empty
2138
2139   * New option `ignore-window-input-hint', to always give windows the
2140     focus, whether they say they will accept it or not
2141
2142   * New options when cycling windows: `cycle-warp-pointer' and
2143     `cycle-focus-windows'
2144
2145   * Restore the old method of setting the focus, should fix bug of
2146     losing focus totally when switching to a new workspace
2147
2148
21490.10
2150====
2151
2152   * Implemented virtual workspaces, bind to the `move-viewport-X' and
2153     `move-window-X' commands (for X being `left', `right', `up', or
2154     `down')
2155
2156   * Added a new theme: `microGUI' by Ryan Lovett
2157     <ryan@ocf.berkeley.edu>, based on the QNX Photon screenshots
2158
2159   * Added a `Grab key' button in the bindings widget, replaces the
2160     current binding with the next pressed key
2161
2162   * Lisp module to load the GNOME menus and use them to replace the
2163     applications menu. Add `(require 'gnome-menu)' to your
2164     `~/.sawmillrc' file to load it
2165
2166   * Network server is disabled by default (since it can provide a
2167     security hole if X access control is disabled); re-enabled the old
2168     unix domain socket code (see the FAQ for more details)
2169
2170   * Only give the input focus to windows that actually want it
2171
2172   * New option to keep transient windows above their parents
2173     (`transients-above-parents')
2174
2175   * New option to control how the workspace boundary is handled when
2176     moving windows between workspaces (`workspace-send-boundary-mode')
2177
2178   * New commands `send-to-workspace:X' for X from 1 to 9
2179
2180   * While windows are hidden or shaded, unmap the client (for ICCCM
2181     compliance)
2182
2183   * Slightly different method of handling destroyed clients, hopefully
2184     results in fewer annoying error messages
2185
2186   * Support X installations without X11R6 session management (by not
2187     doing any session management)
2188
2189   * Don't ask the session manager to save our environment
2190
2191   * Fix bug where a window is destroyed/unmapped while it's being
2192     resized or moved
2193
2194   * Fix bug where window can still be auto-raised even if it's been
2195     defocused
2196
2197   * Fix problems when `--prefix' option has a trailing slash
2198
2199   * Now handles client windows being reparented by a third party (i.e.
2200     swallowing apps)
2201
2202
22030.9
2204===
2205
2206   * The first-fit and best-fit algorithms are now much more
2207     intelligent, e.g. instead of falling back to random placement when
2208     a window can't be placed without overlapping an existing window,
2209     they will attempt to minimize this degree of overlapping
2210
2211   * The `foreground' property of each frame part may now be an image
2212     instead of a piece of text
2213
2214   * New theme `smaker', uses the foreground images capability to do a
2215     somewhat WindowMaker-like theme (with the absolute-e images). This
2216     theme is extensively customizable--all images, colors, dimensions,
2217     etc...
2218
2219   * Use Imlib's fuzzy color matching for all color allocation; this
2220     should help on `PseudoColor' visuals
2221
2222   * Added an `xterm' command to launch an xterm
2223
2224   * Improved the bindings customization widget layout; added a `Copy'
2225     button to insert a copy of the current binding
2226
2227   * Added `next-workspace-row' and `previous-workspace-row' commands.
2228     Together with the `workspace-columns' variable these mimic a 2d
2229     desktop
2230
2231   * Removed the `cycle-through-workspaces' option, there's now
2232     `workspace-boundary-mode'--one of `stop', `wrap-around' or
2233     `keep-going'
2234
2235   * Added option to include ignored windows when edge snapping
2236     (`move-snap-ignored-windows')
2237
2238   * Fix race condition between startup of sawmill and gmc; sawmill now
2239     has earlier priority
2240
2241   * Fix seg fault when running out of color cells while generating a
2242     window frame
2243
2244   * Fix bug where the window-workspace mapping wasn't reloaded from
2245     saved sessions
2246
2247   * Fix cancel/revert problems in bindings widget
2248
2249   * Fix problems binding to shifted keys when using the XKEYBOARD
2250     extension and XFree86
2251
2252   * Be ICCCM compliant when a client requests to be moved
2253
2254   * Fix crash when tiling small images into large images
2255
2256   * Fix bug where windows could be snapped totally off-screen
2257
2258   * Fix bug when windows change their `override_redirect' attribute
2259     while unmapped
2260
2261   * Fix bug associated with WordPerfect's menu window
2262
2263
22640.8
2265===
2266
2267   * First attempt at best-fit window placement (doesn't really work
2268     properly yet...)
2269
2270   * Added a customization option to focus windows when they're
2271     un-iconified (`focus-windows-on-uniconify')
2272
2273   * Fix bug in click-to-focus mode where the click is only passed
2274     through to the client window, not to any local bindings of the wm
2275
2276   * Don't leave windows unframed if there's an error in the user's
2277     startup files
2278
2279   * Fix bug in `preallocated-workspaces' option
2280
2281   * Don't place windows off-screen in first-fit mode
2282
2283
22840.7
2285===
2286
2287   * Added stack-based window cycling, bound to `M-TAB' by default.
2288     Hold <Meta>, keep pressing <TAB> until the correct window is
2289     reached, then let go of <Meta>.
2290
2291   * Added first-fit window placement (a.k.a smart-placement)
2292
2293   * Completed first stage of workspace rewrite--shouldn't go ballistic
2294     when windows are removed anymore
2295
2296   * Added `override-frame-part-classes' variable--allows all frame
2297     properties to be overridden on a per-class basis
2298
2299   * Click-to-focus now accepts any button and any modifiers
2300
2301   * Don't snap to gmc icons or panels
2302
2303   * Added an `auto-window-type-alist' variable mapping window names to
2304     border types
2305
2306   * New variables `eval-modifier-events' and `eval-key-release-events'
2307     to allow catching these types of keyboard events, disabled by
2308     default
2309
2310   * Added functions for actively grabbing the keyboard
2311
2312   * Removed the long names of the keyboard modifiers, only the single
2313     character modifiers are left
2314
2315   * If no alt modifier, set it to the same as meta; new variables
2316     `alt-keysyms' and `meta-keysyms' describe the virtual modifier
2317     assignments
2318
2319   * Fix bug when handling shaped frame parts--it was possible to go
2320     into a long enter-, leave-notify loop when the old shape was
2321     cleared
2322
2323   * Fix bug where opaque resizing with snap-to-edges on moved the
2324     window as well as resizing it
2325
2326   * Fix bug when raising the only managed window
2327
2328   * Fix bug where very small client windows got weirdly shaped frames
2329
2330
23310.6
2332===
2333
2334   * Define the standard "classes" of frame parts (i.e. things like
2335     close button, title, left border, etc...) then allow the state of
2336     members of these classes to be set in one place (the
2337     `frame-part-classes' variable). This should ensure that different
2338     themes have the same feel (but a feel that may be customized by the
2339     user)
2340
2341   * Allow frame parts to be removed if possible (if they have the
2342     `removable' property). Nothing makes use of this yet
2343
2344   * Added window-shading, double-click button1 on the title bar
2345
2346   * Created a sawmill capplet for the GNOME control center. Use the
2347     `--enable-capplet' configure option to build it
2348
2349   * First attempt at a technical manual (very quickly written, so
2350     probably some inaccuracies)
2351
2352   * In the `gtk' theme, draw bevels on window decorations
2353
2354   * Use spin-buttons in the configurator to enter numbers
2355
2356   * Add option `focus-proxy-click' controlling whether to pass the
2357     focus-inducing button-press event to the underlying window (in
2358     click-to-focus mode)
2359
2360   * Changed the bindings in window borders, it's now the more usual
2361     button1 to resize, button2 to move
2362
2363   * When clicking and dragging windows, ensure that the clicked frame
2364     part stays clicked until the button is released
2365
2366   * If in click-to-focus mode, and there's no parent window to focus
2367     when the focused window is closed, focus the topmost window (not
2368     the window under the pointer as in the other focus modes)
2369
2370   * Changing window frames is _much_ less ugly, no flicker at all!
2371
2372   * Try to optimise window restacking some more
2373
2374   * Sped up opaque window moving when the position display is enabled
2375
2376   * Preserve iconified state across restarts
2377
2378   * Optimise updating the shape of an unframed window (this stops gmc
2379     icons flashing annoyingly)
2380
2381   * Fix bugs in click-to-focus mode where some windows were
2382     un-focusable
2383
2384   * Fix bug where cycling through windows in click-to-focus mode
2385     didn't focus the activated window
2386
2387   * Fix bug where comparing sawmill lisp objects caused a crash
2388
2389   * Fix bug where initiating a resize in the middle of the window
2390     didn't allow any of the edges to be moved
2391
2392   * Fix bug where changing the "decorate transients" option didn't
2393     alter any existing transient windows
2394
2395   * Fix bug where iconifying a sticky or ignored window gave no way of
2396     reclaiming it--these windows now appear at the end of the window
2397     menu
2398
2399
24000.5
2401===
2402
2403   * Now does session management. The scheme is extensible, arbitrary
2404     Lisp modules can save and restore window state due to their own
2405     functionality (using the `sm-window-save-functions' and
2406     `sm-restore-window-hook' hooks). See `lisp/workspace.jl' for an
2407     example
2408
2409   * Displays window position or dimensions whilst interactively moving
2410     or resizing a window (`move-show-position',
2411     `resize-show-dimensions')
2412
2413   * Mechanism for setting frame styles on a per-window basis (this was
2414     always possible, just not easy). The `auto-frame-style-alist'
2415     variable associates window name regular expressions with frame
2416     styles.  Also, the `window-ops-menu' has a new submenu with all
2417     possible styles
2418
2419   * New option `preallocated-workspaces', the number of workspaces to
2420     create at startup
2421
2422   * Window-workspace mapping is preserved through restart (as long as
2423     the GNOME hints are enabled)
2424
2425   * Theme directories may contain a short `README' file that will be
2426     displayed in the configuration tool
2427
2428   * Changed the custom file to `~/.sawmill/custom' instead of
2429     `~/.sawmill-custom'. The old file will be moved to the new
2430     location if it exists
2431
2432   * Install `sawmill-menu' under `libexec' since it shouldn't be run
2433     manually
2434
2435   * Option in `gradient' theme to create full-sized gradient images,
2436     trading memory for quality
2437
2438   * Workaround the flicker when raising windows
2439
2440   * Changed most of the `menus' and `custom' customize options into
2441     normal variables (they're not particularly intuitive)
2442
2443
24440.4
2445===
2446
2447   * Frame parts can now be highlighted when the mouse is over them,
2448     also they "un-click" and "re-click" as the pointer leaves and
2449     re-enters their window. ButtonRelease bindings are only activated
2450     when the mouse is in the window at the time
2451
2452   * Frame part backgrounds can now be rendered on-the-fly using the
2453     new `renderer' property in frame definitions. This property is a
2454     function called with args `(IMAGE STATE)'; it should draw a
2455     background into IMAGE for the specified state (`nil', `focused',
2456     `highlighted' or `clicked')
2457
2458   * New theme `gtk'. This reads the default GTK style and uses the
2459     associated colors and pixmaps to decorate windows. It doesn't try
2460     to handle engine-based themes. It should automatically detect when
2461     the default style changes (if changed by the GNOME control
2462     center). Do `sawmill-client -c gtk-reload-style' in the shell to
2463     reload the style manually
2464
2465   * Functions for drawing color gradients and bevels into images. The
2466     new `gradient' theme uses these and on-the-fly rendering to do
2467     `afterstep'-like window titles
2468
2469   * Configurator changes: use a paned widget to separate the list of
2470     groups from the settings (stops their relative sizes changing),
2471     allow each group to be customized separately, either through a new
2472     set of root-submenus or the commands `customize:GROUP' for each
2473     GROUP.
2474
2475   * Changed the way that "themes" are organised, each theme now gets
2476     its own directory, which must include a `theme.jl' or `theme.jlc'
2477     script to initialise a frame-style of the same name as the
2478     directory. While this script is being evaluated the image path is
2479     set so that the theme can load any images stored in its directory.
2480
2481     Also created the variable `theme-load-path' containing the list of
2482     directories searched when trying to load a theme. By default it
2483     contains two directories: `~/.sawmill/themes/' and
2484     `PREFIX/share/sawmill/VERSION/themes'.
2485
2486   * Resizing now chooses the direction to resize the window in by the
2487     initial position of the pointer in relation to the window. The
2488     window is divided into a 3x3 grid, the pointer must be in one of
2489     the outer rectangles to resize in that direction
2490
2491   * New commands `select-workspace:X' for X between 1 and 9
2492
2493   * Support multiple depths, or layers, of windows
2494
2495   * It's now possible to move the current workspace up or down the
2496     list of all workspaces
2497
2498   * New option `-c COMMAND' to `sawmill-client'; invokes the named
2499     interactive function
2500
2501   * When an app asks for no title and no border, give it what it
2502     wants--use the new `unframed' window type
2503
2504   * The maximize button works
2505
2506   * Option to control placement of transient windows
2507     (`place-transient-mode')
2508
2509   * Changing the frame style preserves the original window stacking
2510     order
2511
2512   * Added documentation strings for most built-in functions
2513
2514   * Fix bug of evaluating both KeyPress _and_ KeyRelease events
2515
2516   * Fix bug of making the shape mask of unshaped client windows too big
2517
2518   * Fix bug where already-handled BadWindow errors were being reported
2519
2520   * Fix bug where the `window-ops-menu' could be displayed from one
2521     window but then affect a different window
2522
2523   * Fix bug where click-to-focus doesn't work for new windows
2524
2525   * Fix bug where deleting the last workspace selected the first, not
2526     the new last workspace
2527
2528   * Fix bug where changing a colormap when no window is focused causes
2529     a segfault
2530
2531   * Fix bug where iconifying a window may leave it in the clicked
2532     state after it's uniconified
2533
2534   * Fix Caps_Lock and Num_Lock modifiers interfering with bindings
2535
2536   * Fix accessing X properties on 64-bit architectures
2537
2538   * Fix bug where pointer may be left grabbed after moving a window
2539
2540
25410.3a
2542====
2543
2544   * Support the maximized GNOME window states
2545
2546   * Where available, show documentation strings of commands in the
2547     configurator
2548
2549   * Improve the method of handling clicks in frame-parts
2550
2551   * Fix asynchronous client-server protocol
2552
2553   * Fix interactive window moving/resizing (don't leave traces of the
2554     rubber-band, stop the window initially "jumping" to the pointer)
2555
2556
25570.3
2558===
2559
2560   * Implemented window maximization
2561
2562   * Added support for snapping to window edges when interactively
2563     moving windows (`move-snap-edges' and `move-snap-epsilon')
2564
2565   * First attempt at handling a subset of the Motif and OpenLook
2566     window hints
2567
2568   * Removed the `sloppy-focus' variable, it's replaced by
2569     `focus-mode'. This can currently be one of `enter-exit' (normal
2570     focus follows pointer), `enter-only' ("sloppy" focus) or `click'
2571     (click to focus)
2572
2573   * When resolving pointer events, scan the `keymap' property of the
2574     window under the pointer, not the focused window (as with keypress
2575     events)
2576
2577   * The `sawmill-client' program can now communicate inter-host, since
2578     it uses X properties not raw sockets
2579
2580   * New hook `before-exit-hook', called immediately before shutting
2581     down
2582
2583   * Rewrote the GNOME support as a Lisp module
2584
2585   * Placing windows interactively now works
2586
2587   * Fixed the bug on Solaris where deleting windows could cause a
2588     segmentation fault
2589
2590
25910.2
2592===
2593
2594   * Added a user-customization system, inspired by Emacs' customize
2595     facility. Invoke this through the `sawmill-ui' program, or from
2596     the `Customize...' entry in the main menu. All changes are stored
2597     in the Lisp script `~/.sawmill-custom'
2598
2599   * Selected windows may now be raised (`raise-selected-windows')
2600
2601   * It's possible to prevent the mouse pointer being warped to
2602     selected windows (`warp-to-selected-windows')
2603
2604   * The `brushed-metal' and `simple' themes now define all four
2605     standard frame types
2606
2607   * Frame themes are now stored in a separate directory
2608     (`PREFIX/share/sawmill/VERSION/lisp/themes') so that the list of
2609     all available themes can be made automatically
2610
2611   * The frame colors of the `simple' frame style can now be customized
2612     (`simple-normal-color' and `simple-active-color')
2613
2614   * The `sawmill-defaults.jl' script enables GNOME compliance
2615     unconditionally (since it has no ill-effects even if GNOME isn't
2616     being used)
2617
2618   * Transient windows can be given the same frames as normal windows
2619     (`decorate-transients')
2620
2621   * Newly-displayed transient windows can be automatically given the
2622     focus if their parent window is focused (`transients-get-focus')
2623
2624   * Any newly-displayed windows can be automatically given the input
2625     focus (`focus-windows-when-mapped')
2626
2627   * The `foreground', `background' and `font' attributes of each frame
2628     part may now refer to a function
2629
2630   * Fixed the window-move bug whereby the first motion event was
2631     discarded
2632
2633   * Fixed the bug where windows may be placed partially off the root
2634     window, even if they needn't be
2635
2636   * Fixed the shaped frame parts bug (they didn't work)
2637
2638   * Miscellaneous other bug-fixes
2639
2640
26410.1
2642===
2643
2644   First proper release
2645
Note: See TracBrowser for help on using the repository browser.