5
This lists the user-visible changes made to Sawfish, and which releases
6
they occurred between. For more detailed information see the
7
@file{ChangeLog} files in the Sawfish source tree.
14
@item Translation updates: pt (Carlos Perellļæ½ Marļæ½n), it (Michele
15
Campeotto), pl (Zbigniew Chyla), zh_CN (Wang Jian), zh_TW (Abel
16
Cheung), es (Eneko Lacunza), tr (ļæ½mer Fadļæ½l USTA), sv (Gļæ½ran Uddeborg,
17
Christian Rose), da (Ole Laursen), gl (Jesus Bravo Alvarez)
23
@item Fixed typo in @code{apply-command-keys} function (David Bustos)
25
@item Fixed bug in @code{wm-spec} module causing nautilus desktop
28
@item Adopt windows with a maximized hint correctly
30
@item Fixed bug in @code{display-window} function that can prevent the
31
window getting focused
33
@item Don't allow windows to be moved or resized by third-parties when
34
they're maximized (and the necessary option is set)
36
@item Fixed problem with localizing property names in the
37
matched-windows configuration widget
39
@item Handle window gravity more correctly (Owen Taylor)
41
@item Forget everything about withdrawn windows -- better ICCCM
44
@item Fixed root-window event proxying (the infamous gmc bug)
46
@item Don't use dlmalloc on sparcs (Brian Nitz)
56
@item Requires @code{librep} 0.14 or newer
58
@item Translation updates: ja (Sato Satoru), no (Kjartan Maraas), es
59
(Carlos Perellļæ½ Marļæ½n), fi (Antti Ahvensalmi), cs (Jiri Cerny), fr
60
(Christian Marillat), de (Matthias Warkus, Christian Meyer), da (Ole
61
Laursen), sk (Stanislav Visnovsky), tr (ļæ½zgļæ½r), sv (Christian Rose,
62
Peter Winnberg), gl (Jesus Bravo Alvarez)
64
@item Do i18n on more text strings (Vlad Harchev, me)
66
@item Broken support for multiple-screen displays. Supplying the new
67
@samp{--multihead} option will fork extra copies of sawfish for each
68
extra screen. This has some fundamental problems, but some people seem
69
to want it (Michael Vogt, Mahmood Ali, me)
71
@item Window manager virtual modifier once again defaults to @kbd{M-}
74
@item Added support for @kbd{Off2} and @kbd{Off3} events
76
@item @code{menu-program-stays-running} variable now defaults to true
79
@item New command @code{focus-desktop}
81
@item Switch viewports more efficiently (by choosing the best order to
82
move windows, to minimize the exposed area)
84
@item Monitor the @code{_WIN_WORKSPACE} property of each window
89
@item Check for X SHAPE extension, exit if it's not available
91
@item Wait for the focus-in event before changing sawfish's knowledge
92
of the focused window when moving focus from one window to another
94
@item Be more ICCCM-compliant, don't send synthetic configure notify
95
events when the window was resized
97
@item Fixed locale font handling
99
@item Don't leave grid traces when trying to move/resize a window
100
that's locked in place
102
@item Fixed bug where the pointer being over the message window could
103
confuse focus after window cycling
105
@item @code{decorate-transients} option works again with shaded windows
107
@item Documentation appears in tooltips again
109
@item Handle sticky properties better in the @code{window-history}
112
@item Maximization fixes for multi-headed displays (Florent Guillaume)
114
@item Cancelling a resize of a maximized window no longer discards the
115
window's maximized state
125
@item Translation updates: gl (Jesus Bravo Alvarez), sv (Martin
126
Norbļæ½ck), de (Matthias Warkus, Christian Meyer), ru (Vlad Harchev), es
127
(Joseba Garcļæ½a Etxebarria), pl (Daniel Koc), fi (Antti Ahvensalmi), sk
128
(Stanislav Visnovsky), az (Pablo Saratxaga), cz (Stanislav Brabec), no
129
(Kjartan Maraas), el (Simos Xenitellis), it (Michele Campeotto), fr
130
(Christian Marillat), ro (Marius Andreiana), ko (?)
132
Extract some more translatable strings (Vlad Harchev)
134
@item @code{Crux} theme now has an extra button mode: @code{Default},
135
like Mac OS Platinum but also has an iconify button. Used by default
137
@item The @code{grow-pack} module now works with windows which specify
138
increments (Kai Groļæ½johann)
140
@item New command @code{kill-client}
146
@item Don't return a null pointer when no default cursor has been set,
147
return @code{nil} instead
149
@item Avoid triggering assertions in the stacking list code when
150
raising or lowering windows and the given sibling has been destroyed
152
@item Turned off the annoying code that beeps and prints a message when
153
unfocusable windows are detected
155
@item The GNOME hints now listen for the @code{_WIN_WORKSPACE} property
156
changing and will move the window in response
158
@item Don't forget maximized state of windows when they're moved, only
161
@item Don't show special cursors when moving or resizing windows, or
162
when hovering over the title bar
164
@item Corrected off-by-one error in `smart' placement modes
166
@item Identified and fixed some problems in the new GNOME/KDE window
167
manager hints implementation (Rob Hodges, me)
177
@item New command line option @samp{--window-history-file=@var{file}}
179
@item Search for user's rc file in this order: @file{~/.sawfishrc},
180
@file{~/.sawfish/rc}, @file{~/.sawmillrc}
182
@item New option @code{configure-ignore-stacking-requests} and a
183
similarly-named window property. When set stacking requests from
184
windows are ignored (Matt Tucker)
186
@item When restarting sawfish, reselect the previously selected
189
@item Added a function that can recolour multiple image channels
192
@item New function @code{exit-type} -- returns the type of exit in
195
@item Translation updates: ja (Sato Satoru), sk (Stanislav Visnovsky),
196
es (Iļæ½aki Garcļæ½a Etxebarria), hu (Robert Vanyi), tr (Fatih Demir), ro
197
(Tutu Valentin), no (Kjartan Maraas), it (Michele Campeotto), pl
204
@item Fixed focus-handling in enter-only mode on window close and
207
@item Fixed overflow error in the image recolouring module (Simon
210
@item Session management always uses a unique session file (Timo
213
@item Fixed bug in random placement mode where windows could sometimes
216
@item Fixed some auto-raise problems by reverting a misguided bug fix
218
@item Fixed bugs with aborted session saves
220
@item Cache stacking order of windows locally -- this allows us to keep
221
the order consistent, especially after window reparenting operations
223
@item Don't call @code{XParseColor} unless we actually @emph{have} a
224
display connection (merlin)
226
@item Merged two calls to @code{setlocale} to avoid trashing the locale
229
@item Check for presence of Xinerama extension before trying to use it
230
-- removes the annoying error message at startup
232
@item Added some more X server timestamp logic to correct for the
233
timestamp discontinuities after APM resume
243
@item Added a new default theme: `Crux'. By default it recolours itself
244
to match the current GTK+ selection colour. (Arlo Rose, me)
246
@item Updated translations: it (Michele Campeotto), fr (Christian
249
@item Added a @code{shade-button} button class (many themes created it
252
@item Added a @code{sawfish.wm.util.recolor-image} module, currently
253
contains a single function for recolouring parts of images based on a
254
given colour gradient
256
@item Added new command @code{delete-group}. Deletes a whole group of
257
windows. With default bindings, shift-click on the close button to
260
@item Added support for KDE-style mini-icons. If the window has no
261
normal icon, then @code{window-icon-image} will return the mini-icon
267
@item Themes that use the module for reading the user's gtk preferences
268
will once again get updated when the gtk theme changes
270
@item Fix another of the null-string translation bugs (Christian
273
@item Work around @code{XUrgencyHint} not being defined before X11R6
275
@item Fixed some long-standing bugs when decorating windows (use the
276
correct mask when creating the overall window shape; for frame parts
277
with no mask, set the local shape to the appropriate rectangle; be sure
278
to generate at least one Expose event when reconfiguring frame parts)
280
@item Fixed crashing bug when @code{bind-keys} is called with zero
283
@item Fixed typo in @code{crop-image} function when checking validity
284
of @var{height} parameter (martin@@whoever.com)
294
@item Translation updates: ja (SATO Satoru), it (Michele Campeotto),
295
zh_TW.Big5 (Chun-Chung Chen), pl (Daniel Koc), sk (Stanislav Visnovsky)
297
@item Items in @code{choice} widgets may now contain descriptive names,
298
syntax is @code{(@var{symbol} "@var{description}")}
300
@item Changed @code{focus-windows-when-mapped} option to only apply to
301
non-transient windows (this option is now enabled by default)
303
@item New placement modes @code{top-left} and @code{off-center}.
304
@code{top-left} is now the default mode for non-transients
306
@item Enabled the module supporting the newly standardized GNOME/KDE
307
window manager hints. Also made random changes to support KDE2 a lot
310
@item Added WM_PROTOCOLS @code{_SAWFISH_WM_RAISE_WINDOW} and
311
@code{_SAWFISH_WM_LOWER_WINDOW}. Used by @code{maybe-raise-window} and
312
@code{maybe-lower-window} functions.
314
These are similar to @code{WM_TAKE_FOCUS}, in that if the window
315
supports the protocol, it's up to it whether or not it raises (or
316
lowers) the window in question. These functions should only be used
317
where the user hasn't explicitly requested the restacking
319
An example usage is an application that doesn't want its window to be
320
raised due to a button-press event that initiates a drag operation
322
@item New option @code{menus-include-shortcuts}, disabled by default
325
@item Don't interpret windows with @code{WM_TRANSIENT_FOR} set to the
326
root window as children of all windows in the group (it causes too many
327
annoying effects), instead just decorate these windows as transients
329
@item Handle @code{group} and @code{transient} iconification modes
330
better, don't use a recursive method, instead use one pass to identify
331
the windows to change, then another to make the changes. In
332
@code{transients} mode, only change the state of shared transients if
333
they will have no visible parents afterwards
335
@item In the (old) GNOME hints code, support a @code{_WIN_HINTS} client
336
message (with a similar format to the @code{_WIN_STATE} message)
338
@item New module @code{sawfish.wm.commands.viewport-extras}, some
339
commands for viewport for viewport navigation (Dams Nadļæ½)
341
@item Check for @code{never-iconify} and @code{never-maximize}
342
window properties when appropriate
344
@item Support sixth and seventh mouse buttons (Steve Haslam)
350
@item Fixed problems with reverting changes to list-based options
352
@item Don't allow the empty list as a valid modifier list
354
@item Fixed bug where restarting the wm with
355
@code{focus-windows-when-mapped} set would cause any shaded windows to
358
@item Ignore iconified windows in the grow-pack code
360
@item Added @code{font-ascent} and @code{font-descent} functions to the
363
@item Catch errors when loading site-init and rep-defaults files
365
@item Don't use @code{""} to denote a null doc string (which has bad
366
side effects when internationalized)
368
@item Don't need to run @samp{sawfish-client -} to get a repl anymore,
369
just @samp{sawfish-client}
371
@item Fixed bugs in @code{composite-images} function
373
@item Fixed ordering of states output by @code{gtk-style} program
374
(michaelj@@maine.rr.com)
376
@item Fixed grabbing mono window icons in gdk-pixbuf mode
378
@item Reject button event descriptions that don't specify at least one
381
@item Accept @code{()} as a valid image modifier color component
383
@item Now grabs translatable strings from @code{defgroup} forms
394
@item Added a virtual modifier key, the @kbd{W-} modifier. This
395
modifier is used for all standard window-manager key bindings, it may
396
be set to any of the standard X modifiers using the configuration tool
398
@item Optionally show window-icons when cycling through windows (Unai
399
Uribarri Rodrļæ½guez, me)
401
@item Event handlers for low-level X windows now get passed the window
402
as their second argument (Unai Uribarri Rodrļæ½guez)
404
@item Translation updates: fr (Christian Marillat), sv (Richard Hult),
405
pt_BR (Flļæ½vio Bruno Leitner), it (Michele Campeotto)
407
@item Error handler module (@code{sawfish.wm.ext.error-handler}). When
408
loaded it records the most recent errors, and the time at which they
409
occurred. Use the @code{display-errors} command to display all recorded
412
@item Added an option to not save window-history data for transient
413
windows. Also added a @code{window-history-clear} command to forget
414
history for all windows.
416
@item Rearranged window operations menu to hopefully be clearer
418
@item Attempt to catch and handle errors while loading custom options
420
@item Labels in menu items can now be functions, they should return the
421
label text when called (with any menu arguments)
423
@item Moved installed message catalogues to $datadir/locale
425
@item @code{defcustom} forms may now a @code{:widget-flags} keyword, a
426
constant list of symbols passed to the configuration tool. Current
427
flags include: @code{expand-vertically} and @code{expand-horizontally}
429
@item Added a @code{sawfish.wm.util.ping} module, it implements the
430
@code{_NET_WM_PING} protocol of the new window manager spec.
432
@item @code{destroy-notify-hook} is no longer called asynchronously
438
@item Fixed various bugs when dragging/resizing windows
440
@item Reverted the changes to make the click-to-focus click-through
441
setting apply to window decorations
443
@item Fixed bug when handling 32-bit data in client messages and X
446
@item Fixed window-focus problems when switching viewports
448
@item Many bug-fixes to handling of maximized window state. Maximized
449
state should now be preserved across wm and session restarts. It's also
450
saved in the window-history attributes
452
@item Support the function hints of the MWM window manager properties
454
@item Updated the @code{sawfish.wm.state.wm-spec} module to match the
455
current (almost final) draft of the new GNOME/KDE window manager spec
457
@item Fixed sporadic stacking bugs when unmapped windows exist
459
@item Fixed miscellaneous click-to-focus and focus-click-through
470
@item Added support for user-levels associated with individual commands
472
@item The GNOME hints code now understands that the do-not-cover flag
473
is the same as sawfish's @code{avoid} property
475
@item Swap properties of sticky windows when entering and leaving
476
workspaces as for normal windows (fixes the old problem where sticky
477
windows can grab focus when a workspace is entered)
479
@item Changed the default settings of some customization options,
480
hopefully to give a more ``conventional'' feel for new users
482
@item Better support for Xinerama (Geoff Reedy)
484
@item Added a new set of window stacking commands: @code{raise-window},
485
@code{lower-window}, @code{raise-lower-window}. The set of windows
486
affected by these commands is determined by the @code{user-raise-type}
487
(either the individual window, the window and any transients, or the
488
entire group). The old commands of these names are now called
489
@code{@var{foo}-single-window}.
491
Most modules now use these commands when raising or lowering windows,
492
allowing the stacking model to be configured globally.
494
@item Translation updates: no (Kjartan Maraas), fi (Antti Ahvensalmi),
495
it (Christopher R. Gabriel), pt_BR (Douglas Moura Ferreira), uk (Yuri
496
Syrota), de (Matthias Warkus)
502
@item If committing changes in the configurator causes new
503
customization options or groups to be added, update the UI to reflect
506
@item Added code to detect and correct the sporadic bug where windows
507
become unfocusable in click-to-focus mode
509
@item Sanitized how the focus gets passed to and from transient windows
510
(when passing focus back from a transient, give it to the most recently
511
focused window in the group, not the transient's parent)
513
Also, try to avoid displaying maximize buttons in windows whose hints
514
prevent them from being maximized
516
@item Many fixes to how maximized windows are handled across session
517
and window manager restarts. Also support GNOME window maximized hints
518
when windows are created
520
@item Fixed some bugs in the @code{wm-spec} module
522
@item Don't trigger auto-raise hooks on leave/enter events generated by
525
@item The @code{edge-flip-delay} option now applies when dragging
528
@item Fixed the preview command in @code{sawfish-themer}
530
@item Miscellaneous fixes to the ``smart'' window placement modes
532
@item Fixed type description of @code{persisitent-group-ids} option
534
@item In @code{enter-exit} focus mode, focus isn't removed due to
535
enter/leave events due to pointer grabs (fixes the bug with Mozilla URL
538
@item Fixed (again) the @code{focus-click-through} behaviour with
539
respect to frame decorations
541
@item Re-added hack to make GMC icons unfocusable
543
@item Fixed interactive placement to check for window destruction
546
@item Fixed bug with tiled images with shapes (the shape mask would
547
always be applied an integer number of times, ignoring the size of the
548
frame part it's associated with)
550
@item Fixed @code{window-wants-input-p} to check if the
551
@code{InputHint} is set before reading the value
561
@item @kbd{M-TAB} window cycling now works in both directions, bind
562
keys to @code{@var{cycle-command}-backwards}, e.g.
563
@code{cycle-windows-backwards} (Merlin, me)
565
@item Added support for X `Urgency' hint: @code{window-urgent-p} and
566
@code{window-state-change-hook} is called with @code{urgency} state
569
@item Some improvements to @code{shade-hover} mode (adapted from Eli
572
@item Functions that raise/lower groups of windows now generate the
573
minimum number of expose events (Rob Hodges, me)
575
@item New window property @code{window-list-skip}. Unified with GNOME
578
@item Custom options may have tooltips, use @code{:tooltip} tag
580
@item Catch errors when applying custom changes and revert to previous
583
@item Translation updates: uk (Yuri Syrota), pt_BR (Douglas Moura
584
Ferreira), hu (Rļæ½bert Vļæ½nyi), de (Christian Meyer), ja (SATO Satoru),
585
da (Keld Jļæ½rn Simonsen), es (Iļæ½aki Garcļæ½a Etxebarria), fr (Christian
591
@item With click-to-focus in non-click-through mode, don't
592
click-through into window decorations
594
@item @code{dimensions} property in window matching was called
595
@code{size} by mistake
597
@item Export the various @code{sp-cost:} functions from
598
the @code{sawfish.wm.placement.smart} module
600
@item Don't allow cycles in the transient-for relationship
602
@item Fixed some maximize bugs
604
@item GNOME skip-focus property no longer causes the window to be
605
unfocusable, just uncyclable-to
607
@item Coerce auto-raise timeout to be at least one millisecond; support
608
@code{disable-auto-raise} correctly
610
@item Window input hints defaults to true not false
612
@item Fixed typo when loading the defaults file (Ronald Wahl)
614
@item Fixed command spec of @code{move-window-@var{foo}} commands
617
@item When sending @code{WM_TAKE_FOCUS} message, only focus the window
618
if its `Input' hint is set
628
@item Translation updates: da (Kenneth Christiansen), de (Christian
629
Meyer), no (Kjartan Maraas), pt_BR (Rui Miguel Silva Seabra), sv (Johan
630
Dahlin), uk (Yuri Syrota)
635
@item Fixed typos in @code{sawfish.wm.gnome.integration} and
636
@code{sawfish-themer} (Christian Marillat)
638
@item Fixed bug when building on Tru64 (John H. Palmieri)
640
@item Remember to check return value when initializing Imlib
650
@item Requires librep version @code{0.13}
652
@item Organized all lisp code into a hierarchy of modules. Root points
653
are @code{sawfish.wm} for window manager code, @code{sawfish.ui} for
654
configurator and @code{sawfish.gtk} for GTK+ utilities
656
Compatibility should have been preserved as far as possible, through
657
the use of module aliases. The @code{user} module that unmodularized
658
user code is loaded in should look very similar to the old environment.
659
However, code using private functions, probably will not work
661
New features written as modules can either import modules individually,
662
or just open @code{sawfish.wm} to get the core functionality
664
@item All command handling is now written in Lisp. It's fully
665
compatible except for how commands are defined. Since there is no
666
longer a unified namespace the mapping from names to command
667
definitions is maintained separately.
669
@code{define-command} and @code{autoload-command} add entries to this
670
mapping. @code{define-command} takes a name and a function (and some
671
other optional arguments). The old style of defining commands still
672
works, but only in the user module
674
@item @code{sawfish-client} now provides the same repl as the normal
675
@code{rep} program. E.g. this allows the module system to be easily
678
Also, the module of each loaded theme is available for inspection under
679
@code{themes.@var{theme-name}}. (With themes using top-level defines
680
instead of a single @code{let*} block, this is useful for debugging)
682
@item @code{sawfish.client} module provides lisp functions for
683
communicating with a running window manager. Also, the protocol has
684
been modified to support proper communication of errors, which are then
685
re-raised on the client-side. This should make debugging client-server
688
@item `Action' parts of menu items may now be lisp objects that don't
689
have a read syntax. (E.g. this allows closures to be used, avoiding the
690
problems arising from modularization)
692
@item Support for checked and radio-group menu items. Also a new
693
function @code{add-window-menu-toggle} to add items to the
694
@samp{Toggle} sub-menu of each window
696
@item Handle @code{ConfigureRequest} events in a way that is compliant
697
with the ICCCM---honour the window's @code{win_gravity} setting
698
(defaulting to @code{NorthWest} gravity), instead of assuming
699
@code{Static} gravity
701
@item Support more GC attributes in the @code{sawfish.wm.util.x} plugin
704
@item Support for handling arbitrary windows as extra ``root'' windows.
705
Used, e.g., to support Nautilus' desktop window. Allows the focus modes
708
To support this, new window property @code{desktop} denoting a
709
``desktop'' window; new function @code{desktop-window-p} recognizing
710
one of these things (or the symbol @code{root})
712
@item Added @code{pointer-motion-threshold} option. Pointer motion
713
events are only generated when the pointer moves at this many pixes
714
away from the position it had when the button was pressed
716
@item New functions: @code{scale-image}, @code{composite-images}, and
719
@item New option @code{maximize-avoid-avoided} (Jonas Linde)
721
@item New functions exported by @code{sawfish.wm.ext.tooltips} module:
722
@code{display-tooltip}, @code{remove-tooltip}
724
@item New function exported from @code{sawfish.wm.viewports} module:
725
@code{select-workspace-and-viewport}. Renamed some workspace functions:
728
@code{ws-move-window} @result{} @code{move-window-to-workspace},
729
@code{ws-copy-window} @result{} @code{copy-window-to-workspace},
730
@code{ws-insert-workspace} @result{} @code{insert-workspace},
731
@code{ws-move-workspace} @result{} @code{move-workspace},
732
@code{ws-remove-window} @result{} @code{remove-workspace}.
734
@item Changed interface of @code{get-visible-window-edges} function to
735
use proper keyword parameters, and added some new keywords
737
@item New commands @code{help:about} and @code{gnome-about}. Added a
738
@code{sawfish-about} script to implement the first of these. Added
739
associate menu items to the `Help' menu
741
@item New window property @code{cycle-skip}, defines whether the window
742
is included when cycling the focused window. (Dave Dribin, me)
744
@item Translation additions and updates: es (Iļæ½aki Garcļæ½a Etxebarria),
745
tr (Fatih Demir), zh_CN.GB2312 (zw@@zhaoway.com), fr (Christian
746
Marillat), ja (SATO Satoru), de (Kai Lahmann), el (Simos Xenitellis),
747
ga (Seļæ½n ļæ½ Ceallaigh), ru (Valek Filippov), sl (Andraz Tori)
752
@item Don't let errors in @file{.sawfishrc} prevent customization
753
settings being loaded
755
@item initialize event handler when creating X window proxies (Matt
758
@item No longer able to @code{throw} out the top of the program by
761
@item Fixed @code{find-head} function, to allow Xinerama support to
764
@item When exiting, leave window configurations exactly as they were
765
found (E. Jay Berkenbilt)
767
@item Fixed @code{synthesize-event} to scan the window tree for a child
768
window accepting button events (E. Jay Berkenbilt)
770
@item Removed ``yow! @dots{}'' debugging messages
772
@item @code{image-set} and related functions will add an alpha channel
773
to the image when necessary (when using gdk-pixbuf)
775
@item Canonify @kbd{S-x} as @kbd{X} where possible
777
@item Catch and handle errors when matching properties in the
778
@code{sawfish.wm.ext.match-window}
780
@item Escape underscores in menu items where they shouldn't introduce
781
accelerators. (Added @code{quote-menu-item} function to help with this)
783
@item Fixed race-condition when exiting configurator embedded into the
784
GNOME control center (Havoc Pennington, me)
786
@item Fixed bug in @code{set} method of the @code{icon} widget
788
@item Fixed shading behaviour of included themes (Daniel Lundell)
790
@item Compute the shape of the frame window each time the background of
791
one of its parts changes
800
@item If a frame part has a non-nil @code{hidden} attribute, ignore it
802
@item When reframing windows, keep the absolute position of the client
805
@item Support @code{FIXED_POSITION} GNOME hint (renamed old
806
@code{fixed-position} property as @code{client-set-position};
807
@code{fixed-position} now means don't allow the window to be moved by
810
@item @code{transients-above} option can now be set per-window
812
@item Translation updates: fr (Christian Marillat), en_GB (Robert
813
Brady), de (Kai Lahmann), da (Keld Simonsen), ru (Valek Filippov), sl
814
(Andraz Tori), no (Kjartan Maraas), gl (Jesus Bravo Alvarez), it
817
@item Fixed bugs when converting option values
819
@item Fixed @code{:require} keyword in @code{defcustom} always causing
820
the module to be loaded, not just when the option is non-nil
822
@item Fixed bug when adding windows that are shaded
824
@item Fixed some minor bugs in the configurator
833
@item Window cycling now forwards terminating events to external
834
applications as well as internal bindings (e.g. @kbd{M-TAB M-w} closes
835
an activated Netscape window)
837
@item @code{quote-event} command now works with applications that
838
ignore synthetic events (adapted from code by Timo Korvola)
840
@item Reorganized frame style and window type management. New function
841
@code{define-frame-type-mapper} allows modules to affect the mapping
842
from window type to frame type. E.g. the shading module uses this.
843
(fixes the bug that changing the frame type of a shaded window didn't
846
@item Added function @code{variable-customized-p}; use this to avoid
847
redefining user-modified options
849
@item Do type-directed deep conversion of values when converting
850
to/from readable representations. This fixes the bug that options with
851
@code{:type (optional color)} weren't being converted when passed
852
between the wm and the configurator, leading to reader errors
854
A side-effect of this is that updated custom files will not be
855
compatible with previous versions of the wm (though old custom files
856
will work with new versions)
858
@item Translation updates: no (Kjartan Maraas), de (Kai Lahmann), nl
859
(Dennis Smit), sl (Andraz Tori)
861
@item Added primitives @code{map-windows} and @code{filter-windows}
863
@item Fixed bug of not retaining focus on startup when originally in
864
PointerRoot mode and moving to click-to-focus mode (Brad Thompson)
866
@item Ensure that apps get sent a synthetic ConfigureNotify event after
867
ConfigureRequest events are handled (fixes bug where menus in Java apps
868
can appear at wrong position until window is moved)
870
@item When referencing known variables from subroutines, make sure that
871
restricted environment doesn't prevent the variable being accessed
872
(fixes bug where @code{default-bevel-percent} was being ignored)
874
@item When creating transient groups, don't compare null group ids
875
(fixes xfmail related bugs)
877
@item Fixed @code{move-window-to-viewport} command to correct for
880
@item Fixed non-gnome workspace widget in configurator
889
@item New commands @code{activate-viewport-column},
890
@code{activate-viewport-row}
892
@item New commands @code{raise-window-and-transients},
893
@code{lower-window-and-transients} and
894
@code{raise-lower-window-and-transients},
895
@code{raise-transients-and-pass-through-click}.
897
As the normal window stacking commands, but restacks the
898
``transient-group'' of the window. This includes the window itself and
899
any transients it has, and any windows that it itself is a transient
902
These commands are used in the default keymaps
904
@item Functions that deal with transient windows now understand the de
905
facto standard of setting the @code{WM_TRANSIENT_FOR} property to the
906
root window denotes that the window is a transient for the whole group
908
@item New image manipulation functions: @code{image-ref},
909
@code{image-set}, @code{image-fill}, @code{image-map}. New color
910
accessor function @code{color-rgb-8}. New function
911
@code{root-window-id}
913
@item Improvements to @code{sawfish-ui}: optionally use some GNOME
914
widgets, more lisp widget types, some bug fixes
916
@item New command @code{command-sequence}. Allows individual bindings
917
to invoke a sequence of commands
919
@item Options @code{iconify-group-mode} and @code{uniconify-group-mode}
920
replace @code{iconify-whole-group} and @code{uniconify-whole-group}.
921
New commands @code{iconify-transient-group}, and
922
@code{uniconify-transient-group}
924
@item Added @code{:type*} key to @code{defcustom}, like @code{:type},
925
but value is left unquoted
927
@item Translation updates: pl (Daniel Koc), ru (Valek Filippov), uk
928
(Yuri Syrota), es (Iļæ½aki Garcļæ½a Etxebarria)
930
@item Fixed handling of @code{WM_NORMAL_HINTS} (was using base-size
931
instead of min-size in places)
933
@item Fixed further locale / FontSet bug (Tomohiro KUBOTA)
935
@item @code{window-history} module won't resize a window to a size that
936
violates its size constraints
945
@item Rewrote the configuration user interface. Improvements include:
948
@item Key bindings may now include parameters. E.g. this finally allows
949
shell commands to be bound to keys using the GUI (use the new
950
@code{run-shell-command} command)
952
@item Nautilus-like user-levels to tailor the options shown to the
953
expertise of the user
955
@item Options may have much richer type descriptions (including
956
@code{match-window} options). Also, extra widget types and containers
957
may be added as extra Lisp modules
959
@item By default the stand-alone configurator commits changes to the
960
window manager as they are made, instead of waiting for the @samp{Try}
963
@item Added dependences---options with dependences are only editable
964
when the value of their dependence is non-@code{nil}
967
@item Rewrote window stacking code to be based on ``stacking
968
predicates''---functions that accept or reject a possible stacking
969
configuration. This allows the ``stack-transients-above-parents''
970
option to work correctly, only keeping transient windows above their
971
@emph{own} parent windows
973
@item The configure-event handler now understands and handles the full
974
complexity of stacking requests (Brad Thompson)
976
@item New frame-part attribute: @code{scale-foreground}. The
977
@code{cursor} attribute may now be a function
979
@item Made the @code{centered}, @code{centered-on-parent} and
980
@code{under-pointer} placement modes clamp the window into the current
981
work area (i.e. without overlapping windows that shouldn't be covered).
982
Added a @code{stagger} placement mode
984
@item When grabbing window icons to images, preserve their shape masks
986
@item Moved @code{window-history} options to @code{placement} group.
987
Fixed some more bugs and sub-optimal default option values
989
@item Don't set cursors for button classes, use the default value
991
@item GNOME @code{SKIP_FOCUS} window hint sets @code{never-focus}
992
property on window, as well as the @code{ignored} property
994
@item Translation updates: de (Karl Eichwalder), ru (Valek Filippov),
995
da (Kenneth Christiansen)
997
@item Added mostly-complete support for using gdk-pixbuf instead of
998
Imlib (requires an experimental Xlib version of the gdk-pixbuf library)
1000
@item Various bug fixes and other minor changes@dots{}
1009
@item New options @samp{--visual=@var{TYPE}} and
1010
@samp{--depth=@var{DEPTH}}. These tell the window manager to use a
1011
different visual than the default
1013
@item Made the @code{window-history} module behave more sanely (don't
1014
save iconified or shaded state; include window name when generating
1015
keys for transient windows)
1017
@item Made @code{beos-window-module} the standard window menu (require
1018
@code{old-window-menu} to get the original version). Also made this
1019
display the windows' class names
1021
@item Updated translations: es (Iļæ½aki Garcļæ½a Etxebarria), tr (Fatih
1031
@item New module @code{window-history}---automatically saves window
1032
attributes when they are explicitly set by the user, then copies these
1033
attributes to windows with the same @code{WM_CLASS} as they are
1034
created. This is loaded automatically if you have no @file{.sawfishrc}
1036
@item New method of allowing themes to implement only some of the
1037
(currently) four frame types. The variable
1038
@code{frame-type-fallback-alist} maps each frame type to the type to
1039
try if the original type isn't available in the chosen frame style.
1041
Note that for this to work, themes must return @code{nil} when they
1042
don't support the requested frame type, until now, the convention had
1043
been to return the default frame definition, so most if not all themes
1044
will need changing. (This doesn't include themes created using the
1045
@code{make-theme} module.)
1047
@item Made the metrics used by the @code{best-fit} placement mode
1048
user-controllable. Set the @code{sp-cost-components} variable to a list
1049
of cost functions and the weight to apply to that metric. E.g. by
1050
default it gives 50% importance to the distance from the placement to
1051
the focused window, and 25% each to the distance to the pointer and to
1052
the ``future-unusefulness'' of the area being covered
1054
@item New module @code{beos-window-menu} to redefine the window menu to
1055
group items by the window group that they are a member of (in the
1056
absence of actual group information, it will heuristically build groups
1057
by matching window titles)
1059
@item New option @code{edge-flip-warp-pointer}, whether or not to warp
1060
the pointer after edge-flipping (Paul Warren)
1062
@item New option @code{display-window:uniconify-to-current-workspace},
1063
controls whether windows uniconified by @code{display-window} should be
1064
moved to the current workspace (John N S Gill)
1066
@item Changed method of selecting when to use multi-byte aware
1067
rendering functions (except when initializing the locale fails, or
1068
returns a 7-bit locale); also, when creating a fontset fails, try to
1069
intelligently fall back to a similar group of fonts (Tomohiro Kubota)
1071
@item The @code{x} library now supports creating and then drawing to
1072
pixmaps. The pixmaps can then be grabbed to images using the
1073
@code{make-image-from-x-drawable} function
1075
@item Added a @samp{Help} item to the root menu
1077
@item Translation updates: fi (Antti Ahvensalmi), gl (Jesus Bravo
1078
Alvarez), de (Karl Eichwalder), nl (Jan Nieuwenhuizen), pl (Daniel
1079
Koc), tr (Fatih Demir)
1081
@item Now supports the @kbd{Super} modifier
1083
@item Fixed bug of sometimes ignoring pending X events
1085
@item Fixed bug of calling focus change hooks too many times (only when
1086
our view of the focused window has actually changed)
1088
@item Avoid problems when windows set weird size hints structures
1090
@item Raise windows @emph{after} possibly moving them to a different
1091
layer, when they have been mapped
1093
@item When the @code{cycle-windows} sequence is terminated by an
1094
unknown event, re-handle that event after exiting (so that e.g.
1095
@kbd{M-TAB} can be followed by another @kbd{M-} qualified event without
1105
@item Translation updates: da (Kenneth Christiansen), de (Karl
1106
Eichwalder), es (Iļæ½aki Garcļæ½a Etxebarria), ja (SATO Satoru)
1108
@item Attempt to destructure the language code when parsing GNOME
1109
desktop items (e.g. if @samp{LANG=de_DE} look for both @samp{de_DE} and
1110
@samp{de} translations)
1112
@item New focus handler events @code{enter-root} and @code{leave-root}
1114
@item Removed @code{raise-groups-on-focus} option, it caused unstable
1115
window flickering in certain cases
1117
@item Fixed bug When transferring focus after a window is unmapped
1118
(inverted choice of when to look under pointer, and when to look in
1128
@item Changed the name from @samp{sawmill} to @samp{sawfish}; all
1129
user-visible binaries have been renamed appropriately, the old programs
1130
will still work for now@dots{}
1132
@item Added support for accelerators in menu definitions (this requires
1133
a new rep-gtk package) (Richard Kilgore). Added accelerators to many of
1134
the standard menu items
1136
@item Added some (untested) support for Xinerama: @code{current-head},
1137
@code{current-head-dimensions}, @code{current-head-offset}. Some
1138
placement modes should handle multiple heads sensibly, as should window
1139
maximization and edge snapping.
1141
@item Added icons for GNOME control center applets (all icons by
1142
Tigert, except for the saw-blade logo by Glyph Lefkowitz)
1144
@item New functions @code{map-window-properties} (me),
1145
@code{window-icon-image} (Bruce Miller)
1147
@item Changed behaviour of @code{raise-group} and @code{lower-group} to
1148
preserve the stacking of the group, then change the selected window.
1149
Added new command @code{raise-lower-group}
1151
@item New option @code{raise-groups-on-focus}
1153
@item Updated translations: de (Hubert Nachbaur), es (Iļæ½aki Garcļæ½a
1154
Etxebarria), gl (Jesus Bravo Alvarez), ko
1155
(Man-Yong Lee), tr (Fatih Demir)
1157
@item Try to handle errors more gracefully when creating window frames
1159
@item Better handling of errors in the control center applet
1161
@item Fixed the @code{below-client} frame-part attribute
1163
@item Fixed the disappearing items in the match-windows dialog
1165
@item Fixed the non-beautified entries in the keymaps dialog
1167
@item Fixed interactive placement mode (Timo Korvola)
1169
@item Invoke audio playing program asynchronously, may avoid deadlocks
1171
@item Fixed @code{workspace-menu} to add the focus-marking asterisk
1174
@item Fixed menu-obscuring bug after auto-raising windows
1176
@item Ensure that @code{WM_STATE} property is set each time a window is
1177
mapped, not just the first time
1179
@item Fixed bug when discarding grab in click-to-focus mode, even
1180
though successive events may be in the window's keymap
1182
@item Only focus windows when they're mapped when they're visible
1184
@item Fixed click-to-focus problems when unmapping transient windows
1193
@item Added plugin @code{selection}, adds functions
1194
@code{x-selection-active-p} and @code{x-get-selection} for retrieving X
1195
selections (Mark Probst)
1197
@item New functions @code{prompt-for-window},
1198
@code{prompt-for-workspace} and @code{select-workspace-interactively}
1201
@item @code{window-anim} module enabling asynchronous animations after
1202
window events. Currently only two animation styles @code{wireframe} and
1203
@code{solid}, and they only animate window iconification
1205
@item @code{audio-events} module; maps window manager events to audio
1206
samples (played using esd by default, but can be configured to use any
1209
@item When running programs in terminals from the GNOME apps menu, use
1210
the value of @code{xterm-program} to decide which terminal program to
1213
@item Translation updates: gl (Jesus Bravo Alvarez), pl (Daniel Koc)
1215
@item New command @code{toggle-window-iconified} (Jens-Ulrik Petersen)
1217
@item New option @code{raise-windows-when-unshaded}
1219
@item Customization options for tooltip colors (Erik Assum)
1221
@item Removed default binding to @kbd{A-x}
1223
@item Added support for librep-with-module-system (cvs version)
1225
@item Note that @samp{ko} and @samp{zh} languages need FontSets
1227
@item When sticking a window not on the current viewport, move it to
1228
the current viewport (Merlin)
1230
@item Fixed bug (?) of placing over avoided windows in @code{random}
1231
mode; also increased @code{sp-avoided-windows-weight} by an order of
1232
magnitude (Dan Winship)
1234
@item Fixed bug of maximizing a window changing its viewport
1236
@item Fixed window cycling losing grab if originally focused window is
1239
@item Fixed @code{get-cursor} to use the correct background color when
1240
creating cursors from vectors (Alexander Barinov)
1242
@item Fixed @code{get-font} to set `descent' property correctly
1244
@item Changed double-buffering semantics in @code{x} plugin, also only
1245
support this if configure finds the correct header files
1247
@item Fixed @code{synthesize-event} to generate correct relative
1250
@item Don't focus on non-visible windows (crashes GNOME control center)
1252
@item Fixed bug of using @file{cp} to install GNOME desktop files
1261
@item If no user customization file when saving options, inherit from
1262
the custom-defaults file
1264
@item Rewrote window stacking (fixes bugs, more efficient)
1266
@item Added @code{input-focus} to theme-callable functions
1268
@item When focused window is unmapped, don't try to focus non-visible
1271
@item Fixed @code{display-window} when it's applied to iconified
1274
@item New variables @code{fonts-are-fontsets} and
1275
@code{fontset-languages-re} to work around broken X servers
1277
@item Update edges for snapping to when dragging windows across
1278
workspaces or viewports
1280
@item When passing keymaps to customization system, filter out, then
1281
later restore, bindings that aren't symbols
1283
@item Most commands to move/copy windows between workspaces can now be
1284
told whether to select the destination workspace or not
1286
@item In GNOME hints, never place windows on workspaces that don't
1287
exist (from the pager's POV). (Rob Hodges)
1289
@item Fixed @code{ws-move-window} to not remove the window if source
1290
and dest are the same (Rob Hodges)
1292
@item Fixed @code{sp-prune-points} function (Dan Winship)
1294
@item Fixed @code{move-viewport-to-window} to only flip viewports if
1295
window isn't already on the current viewport (Merlin)
1297
@item Try to detect and handle system clock being rewound
1299
@item Optional second arg to @code{x-raise-window}; added symmetrical
1300
function @code{x-lower-window}
1302
@item Fixed unix-domain server code assuming atomic writes to sockets
1304
@item Added double buffering support to @code{x} module
1306
@item Fixed grabs during multi-key sequences; also, print the current
1307
prefix keys if idle during a multi-key sequence
1316
@item Only force windows onto the visible screen if they didn't
1317
explicitly set their position
1319
@item Redefine @code{/} in themes to be the @code{quotient} function
1320
(integer division), which is what they expect. The @code{divide}
1321
function can be used for real division
1329
@item New plugin @code{x}, a basic Xlib binding for creating and
1330
drawing in windows (Merlin, me)
1332
@item Added a method of reading textual input from the user from
1333
completion. Provision for completing functions, variables, commands,
1334
files, directories, etc@dots{}. Also supports reading passwords. (Topi
1337
@item Re-enabled the following interactive codes: @samp{a} (function),
1338
@samp{C} (command), @samp{D} (directory), @samp{f} (existing file),
1339
@samp{F} (file), @samp{k} (event), @samp{n} (number), @samp{N} (prefix
1340
or number), @samp{s} (string), @samp{S} (symbol), @samp{v} (variable)
1342
@item Support prefix keys in bindings (binding an event to a keymap, or
1343
the name of a keymap, marks that event as a prefix key for the
1346
@item New command @code{call-command-with-output-to-screen}, prompts
1347
for and invokes a command, then displays any output it emitted (bound
1348
to @kbd{A-x} in default keymaps)
1350
@item New variable @code{multi-click-delay}, maximum time in
1351
milliseconds between button presses to count as @kbd{click2} or
1352
@kbd{click3} events (Martin Blais)
1354
@item New option @code{edge-flip-only-when-moving} (Yaron M. Minsky)
1356
@item New window cycling commands @code{cycle-prefix},
1357
@code{cycle-class} (Kai Groļæ½johann); can now be bound to events with
1358
more than one modifier (Timo Korvola)
1360
@item New command @code{uniquify-window-name}; new property
1361
@code{unique-name}. Forces the window to have a unique name
1363
@item New commands @code{size-window-add-column},
1364
@code{size-window-subtract-column}, @code{size-window-add-row},
1365
@code{size-window-subtract-row}
1367
@item Window edge snapping now has three variants: @code{magnetism}
1368
(the old method), @code{attraction} and @code{resistance}. (Merlin, me)
1370
@item New commands @code{grow-window-@{left,right,up,down@}} and
1371
@code{pack-window-@{left,right,up,down@}} (Kai Groļæ½johann)
1373
@item Support the @code{WM_COLORMAP_WINDOWS} protocol
1375
@item New functions @code{synthesize-event}, @code{font-ascent},
1376
@code{font-descent}, @code{call-with-keyboard-grabbed}
1378
@item New functions @code{define-placement-mode} and
1379
@code{define-focus-mode}---make defining these things easier. Focus
1380
modes are now settable for each window individually
1382
@item Made the tree-organised customization groups work better with the
1383
GNOME control center. Add the sawmill capplet desktop entries to the
1384
GNOME programs menu (under Settings). Also, beautify the names
1385
displayed in the bindings widget
1387
@item When applicable, load the GNOME applications menu when the wm is
1388
first idle, reduces the latency of displaying the first root menu
1390
@item Translation updates: de (Hubert Nachbaur), es (Iļæ½aki Garcļæ½a
1391
Etxebarria), ja (Sato Satoru), sv (Andreas Persenius)
1393
@item Fix bug of not noticing when the keyboard / pointer / modifier
1396
@item Fixed @code{current-event-string} function
1398
@item Better method of reconfiguring frames when they're resized (helps
1401
@item Added some kludges to try and break the intermittent lockups some
1404
@item Made the auto-gravity option work a lot better (John N S Gill,
1407
@item Fixed bug where unmapped windows were being included in the
1408
snapping calculation
1410
@item Fixed bug when uniconifying windows and merging workspaces
1412
@item Fixed bug of warp-cursor-to-window trying to put the pointer
1413
outside the screen boundaries (Merlin)
1415
@item Fixed bug of losing keyboard grab when originally focused window
1416
is deleted during @code{x-cycle} command
1418
@item Fixed bug of trying to focus unviewable parent windows when
1419
focused window is unmapped
1428
@item Configure requests events are now passed to the hook
1429
@code{configure-request-hook}. The new configure handler respects
1430
window gravity when resizing
1432
@item New option @code{configure-auto-gravity}. When enabled the window
1433
gravity is implied by the position of the center of the window. (e.g.
1434
try placing the GNOME control center in the bottom right corner of the
1435
screen, then click on an item that causes it to resize)
1437
@item Worked around the numerous reports of non-existent font errors
1438
that using @code{XCreateFontSet} causes---fall back to
1439
@code{XLoadQueryFont} if possible
1441
@item There's now a library @file{custom-defaults} giving default
1442
customization options (only if the user has no
1443
@file{~/.sawmill/custom})
1445
Also, remove the need to call @code{custom-add-required} in
1446
@file{.sawmillrc}, it's always done now
1448
@item New window properties @code{focus-when-mapped}, and
1449
@code{gravity} (overrides the hinted gravity value)
1451
@item New placement modes @code{under-pointer} and
1452
@code{centered-on-parent}
1454
@item New option @code{resize-edge-mode}, replaces
1455
@code{resize-by-frame-class} and @code{resize-add-edges}>. Also allows
1456
twm-style resizing (Mark Probst, me)
1458
@item Optionally display command documentation in tooltips; tooltips
1459
are now aligned into columns (if you use a monospaced font for them)
1461
@item Variables @code{default-cursor},
1462
@code{synthetic-configure-mutex}, @code{frame-draw-mutex},
1463
@code{frame-state-mutex} are now functions
1465
@item New functions @code{x-keysym-name}, @code{x-lookup-keysym},
1466
@code{decode-event}, @code{encode-event}.
1468
@item New option @code{move-resize-inhibit-configure}
1470
@item Translation updates: es (Iļæ½aki Garcļæ½a Etxebarria), fr (Christian
1471
Gillot), gl (Jesus Bravo Alvarez), nl (Han-Wen Nienhuys), pt_PT (Rui
1472
Silva), sv (Andreas Persenius)
1474
@item Fixed single-quoting in client readline (Matt Krai), copied
1475
bouncing parentheses hack
1477
@item Removed @code{fp->win == 0} assertion, it should be harmless and
1478
was triggering for some people
1480
@item Fixed bug of sending configure notify events to too many windows
1482
@item Fixed off-by-one error in @code{ws-insert-workspace} (Kirk
1485
@item Fixed maximization in single directions to work additively
1487
@item Fixed bug of leaving tooltips displayed after the associated
1488
window has been deleted
1490
@item Fixed bug of not removing @samp{-clientId} option from restart
1493
@item Fixed bug of not translating customize group names
1502
@item Customization groups are now organized as a tree structure, with
1503
groups able to contain subgroups
1505
@item Define the list of features that will be presented to the user in
1506
@file{sawmill-defaults.jl}, by calling @code{custom-add-required}. If
1507
you have a @file{.sawmillrc} you'll need to do this manually
1509
@item New function @code{move-resize-window-to} doing a combined
1510
move/resize. New variable @code{synthetic-configure-mutex}, when set
1511
holds off sending synthetic @code{ConfigureNotify} events to windows
1512
until it's unset (this is held while interactively moving or resizing
1515
@item New hook @code{after-add-window-hook}. Called with a single
1516
parameter, the window that's has just been adopted
1518
@item New functions @code{x-kill-client}, @code{delete-window-safely}.
1519
@code{send-client-message} now groks long integers (i.e. cons cells) in
1520
32-bit data (Timo Korvola)
1522
@item @code{window-put}, @code{window-get}, @code{image-put},
1523
@code{image-get}, @code{font-put}, @code{font-get}: use @code{equal} to
1524
compare keys, not @code{eq}
1526
@item New module @code{error-handler}, implements a simple alternative
1527
error handler (and allows the much-maligned beep to be turned off),
1530
@item Allow the pointer-warp position to be defined relative to the
1531
window (Kai Groļæ½johann)
1533
@item New module @code{shade-hover}, unshades windows while the pointer
1536
@item Don't automatically warp to the new workspace when opening
1537
windows on a different workspace
1539
@item Include iconified sticky windows in the @code{window-menu},
1540
shorten sticky entries as usual (James Antill)
1542
@item Support the @samp{TryExec} field in GNOME desktop files (Ian)
1544
@item New commands: @code{raise-or-pass-through-click},
1545
@code{raise-and-pass-through-click-if-focused}
1547
@item New module @code{move-cursor}, various commands for moving the
1548
mouse pointer; these commands are bound to the cursor keys when moving
1551
@item Translation updates: es (Iļæ½aki Garcļæ½a Etxebarria), fr (Fabien
1552
Ninoles), gl (Jesus Bravo Alvarez), ja (Satoru Sato), nl (Jan
1553
Nieuwenhuizen), tr (Fļæ½tih Demir)
1555
@item Fix bug of leaving window-name unset when @code{WM_NAME} is a
1558
@item Don't fail catastrophically if unable to open the default font
1560
@item Fixed method of truncating maximized window dimensions
1562
@item Fixed the match-window @code{skip-winlist} and
1563
@code{skip-tasklist} properties I'd stupidly broken
1565
@item Fixed bug of trying to edge-flip sticky windows
1567
@item Fixed the @code{move-workspace-forwards} and
1568
@code{move-workspace-backwards} commands
1570
@item Fixed @code{uniconify-to-current-viewport} option
1572
@item Fixed infinite-loop bug in @code{delete-empty-workspaces} command
1574
@item Avoid generating empty sub-menus when reading GNOME menu tree
1583
@item Window frame parts are now first-class lisp data objects,
1584
allowing a higher level of control by themes
1586
New or updated functions to access frame parts directly:
1588
@noindent @code{frame-part-get}, @code{frame-part-put},
1589
@code{frame-part-window}, @code{frame-part-x-window},
1590
@code{frame-part-position}, @code{frame-part-dimensions},
1591
@code{frame-part-state}, @code{map-frame-parts},
1592
@code{refresh-frame-part}, @code{rebuild-frame-part}
1594
Other new functions: @code{refresh-window}
1596
@item Updated @code{sawmill-themer} to emit code to tell the window
1597
manager that the theme is editable. The wm adds an @samp{Edit Theme...}
1598
option to the Customize menu when appropriate
1600
@item The @code{call-after-property-changed} function can now be given
1601
a list of properties to monitor (James Antill)
1603
@item New function @code{call-after-state-changed}, monitors a list of
1604
window states (i.e. things like iconified, shaded, @dots{}) and calls a
1605
function when any of them change. The @code{window-state-change-hook}
1606
now has a second argument (apart from the window), the list of symbolic
1607
states that changed (James Antill)
1609
@item Add support for @code{skip-winlist} and @code{skip-tasklist} to
1610
the window matcher when GNOME support is enabled (Ben Liblit)
1612
@item Integrated patch supporting multi-byte languages from the Kondara
1613
MNU/Linux distribution (forwarded by Yukihiro Nakai)
1615
@item Translation updates: de (Christoph Rauch), es (Iļæ½aki Garcļæ½a
1616
Etxebarria), gl (Jesus Bravo Alvarez), ja (Satoru Sato), tr (Fļæ½tih
1619
@item Use a combo box in the configurator to display the list of
1620
themes (it gets given scroll bars when too big for the screen)
1622
@item Changed timestamp handling---attempt to detect and discard
1623
timestamps that arrive out of order
1625
@item Added option controlling title justification to @code{mono} theme
1627
@item Filter @key{Scroll_Lock} modifiers as well as the other lock
1628
modifiers (Matt Krai)
1630
@item Fixed @code{display-message} function update background color,
1631
and gracefully handle invalid color specifiers (Matt Krai)
1633
@item Reverted to grabbing events on the client window, not the frame,
1634
avoids some awkward-to-fix-correctly problems
1636
@item Load i18n support @emph{before} other libraries; ensures that
1637
some static strings get translated
1639
@item Fixed annoying flicker when cycling to an iconified window
1648
@item Fixed problem causing spurious double-click events to be reported
1649
in click-to-focus mode
1651
@item Fixed problem with binding @kbd{-Off} events in the
1652
@code{window-keymap}. (Matt Krai)
1654
@item Don't try to grab non-existent keys (which actually grabs the
1657
@item Fixed some problems with reading unusually formatted GNOME menu
1667
@item Frame pattern definitions (foreground, background, font) may now
1668
take alists as well as the old single object, or list of four objects.
1669
Possible states are @code{inactive}, @code{focused},
1670
@code{highlighted}, @code{clicked}, @code{inactive-highlighted},
1671
@code{inactive-clicked}. (Last two are new)
1673
@item New program @code{sawmill-themer}. A GUI for creating simple
1674
themes (those without any parts defined by functions)
1676
@item New module @code{gnome-int}, loaded by @code{sawmill-defaults} if
1677
GNOME is around, sets up some GNOME'ish things
1679
@item New command @code{toggle-single-window-mode}
1681
@item Translation updates/additions: de (Christoph Rauch), es (Iļæ½aki
1682
Garcļæ½a Etxebarria), nl (Han-Wen Nienhuys)
1684
@item Optional removal of tooltips after time period (Morgan Schweers)
1686
@item @kbd{Any-RET} completes interactive move or resize
1688
@item Work around Imlib's annoying image caching, @code{make-image} now
1689
@emph{always} returns a new image
1691
@item Fixed gc bug when building window frames
1693
@item Fixed X property handling on Alpha's (George Lebl)
1695
@item Make @code{call-command} accept closures
1697
@item Make @code{(cursor . nil)} work correctly in frame definitions
1699
@item Grab on frame window, not client window (ICCCM compliant)
1701
@item Fixed the ``uniconify to current workspace'' option
1703
@item Added window-maximization predicates to the gaol
1712
@item Rewrote workspace handling---windows can now appear on multiple
1713
workspaces, with each instance having different properties (position,
1714
size, whatever@dots{})
1716
Create new window instances by using the @code{copy-to-next-workspace},
1717
@code{copy-to-previous-workspace}, and @code{copy-to-workspace:@var{n}}
1718
commands. Merge instances by moving them to the same workspace, or
1719
using the @code{delete-window-instance} command
1721
@item Added linear-viewport commands---indexing two-dimensional virtual
1722
workspace areas by one-dimensional values (adapted from code by Eric
1725
@item Rewrote tooltips; especially how they're removed (also, don't
1728
@item Added new match-window property @code{ungrouped}. Means to put
1729
the window in a group on its own
1731
@item Translation additions/updates: da (Wandy Christiansen), en_GB
1732
(me), es (Iļæ½aki Garcļæ½a Etxebarria), fr (Christian Gillot), gl (Jesus
1735
@item Fixed bug of not refocusing unshaded windows
1737
@item Fixed bug of not notifying windows of their actual position after
1740
@item Fixed bug when grabbing Hyper-modified buttons
1742
@item Fixed the focus-flickering when moving windows opaquely
1744
@item Fixed the @code{commandp} function when applied to autoload stubs
1746
@item Fixed typo in @code{gnome-logout} command (Jens Finke)
1748
@item Fixed @code{raise-window-and-pass-through-click} command to pass
1749
@key{click2}, etc, events through to frame parts
1751
@item Fixed infinite-regress bug when reading GNOME menu entries
1752
(@samp{Type=directory}, but actually a file)
1754
@item Fixed bug when showing window-move position with snapped movement
1755
(adapted from merlin@@merlin.org)
1757
@item Fixed bug when matching null text properties
1766
@item Added tooltips for window frames (disabled by default)
1768
@item Added @samp{Grab@dots{}} button to match-windows dialogue, grabs
1769
the value of an X property from a window
1771
@item Support for creating cursors from bitmaps, and for changing the
1774
@item Internationalized all strings in the configurator
1776
@item New functions: @code{frame-part-get}, @code{server-grabbed-p},
1777
@code{forget-button-press}, @code{resize-window-with-hints},
1778
@code{window-in-workspace-p}, @code{windows-share-workspace-p}
1780
@item New window properties: @code{never-focus}, @code{raise-on-focus}
1782
@item New pseudo-property (for window matching): @code{size}, in terms
1783
of the window's size hints
1785
@item Message catalogue additions/updates: Galician (Jesus Bravo
1786
Alvarez); Danish (Birger Langkjer)
1788
@item Don't ignore initial state property of windows
1790
@item Option to control height of drawn bevels (Chris Hanson)
1792
@item More logical method of drawing diagonal gradients (Chris Hanson)
1794
@item Fixed typo when looking for i18n theme README files (Jesus Bravo
1797
@item Fixed @code{popup-apps-menu} command (Gļæ½rard Milmeister)
1799
@item Fixed @code{define-frame-class} when creating keymaps
1801
@item Fixed conversion of old-style @code{(set @dots{})} custom types
1803
@item Fixed @code{raise-window-and-pass-through-click} command to
1804
pass-through subsequent clicks
1806
@item Fixed problems when grabbing/ungrabbing customized keymaps
1808
@item Fixed screen corruption when doing wireframe moving and
1809
@code{move-resize-raise-window} is set
1811
@item Hacked around window-order problem when sticky windows exist
1820
@item General subsystem for matching windows to properties as they're
1821
created. Allows matching on one or more of the window's X properties
1822
(e.g. name, class, etc@dots{}), and then setting any number of window
1823
manager properties as a result. See the @samp{Matched Windows}
1826
@item Removed all @code{auto-@var{foo}-alist} and
1827
@code{@var{bar}-windows-re} variables, they're obsoleted by the general
1828
match-windows mechanism
1830
@item Respect window's size hints when maximizing (both to see if the
1831
window is maximizable, and to truncate the maximized dimensions to an
1832
integral number of rows and columns)
1834
@item Show actual colors in the configurator, not just their names
1836
@item Added a new directory to the theme search path:
1837
@file{@var{prefix}/share/sawmill/themes}. Use this for system-wide
1838
themes (don't use the version specific directory)
1840
@item Included a new theme @code{mono}
1842
@item Deprecated the @code{show-message} function, replaced by
1843
@code{display-message} with a better calling interface; also displays
1846
@item Deprecated the menu ``expand variables when first in list''
1847
behaviour. Instead expand variables when the list is dotted to them, as
1848
is done for functions
1850
@item Support the @code{Hyper} modifier, prefix is @kbd{H-}
1852
@item In the configurator, look for i18n'd theme README files (Yukihiro
1855
@item Added option to disable the ability to grab a second edge while
1856
resizing (@code{resize-add-edges})
1858
@item Included Danish message catalogue (Kenneth Christiansen)
1860
@item Renamed @code{fixed-position} property as @code{sticky-viewport},
1861
and @code{focus-proxy-click} as @code{focus-click-through}
1863
@item When evaluating mouse events, look in the window that the pointer
1864
was in when the button was pressed, not where the pointer currently is
1866
@item Fixed bug where focus gets totally lost after closing a Motif
1867
application that has grabbed the keyboard
1869
@item Fixed (again) the problems when handling remapped windows; also
1870
should be more ICCCM-compliant
1872
@item Fixed typos in one-dimensional maximisation (Gļæ½rard Milmeister)
1874
@item Fixed the logic deciding when it's necessary to switch workspaces
1875
after merging an empty one
1877
@item Fixed interactive placement showing the window when edge-flipping
1878
(but it still doesn't work properly, rubber band traces are left)
1880
@item Removed flicker when focusing already-focused windows
1889
@item First version to use lexically scoped librep. This enables themes
1890
to run in a ``safe'' environment, but all existing themes will need to
1891
be ported; other language changes include the use of a single symbol
1892
namespace, and scheme-like function call semantics
1894
@item Support for internationalization of messages and run-time
1895
documentation; an en_GB catalogue is the only translation currently, so
1896
please send me .po files for your native languages!
1898
New option @samp{--disable-nls} to disable i18n
1900
@item New functions @code{call-after-property-changed} and
1901
@code{gtkrc-call-after-changed} to allow themes to receive these events
1902
(hooks are now off-limits to themes)
1904
@item New command @code{raise-window-and-pass-through-click}; bind it
1905
to a mouse button in the @code{window-keymap} to get the ``raise window
1906
on click'' behaviour that seems popular
1908
@item New commands to move windows incrementally:
1909
@code{slide-window-@var{x}} and @code{slide-group-@var{x}} for @var{x}
1910
one of: @code{left}, @code{right}, @code{up}, @code{down}
1912
@item New commands to control @code{ignored} property of windows
1915
@item New commands to toggle GNOME skip-winlist and skip-tasklist
1916
properties of windows
1918
@item Respect window gravity with program-specified window placement
1919
(@email{merlin@@merlin.org})
1921
@item Fixed a memory leak in the @code{stacking-order} function
1923
@item Fixed the @code{bevel-image} function (Scott Sams)
1925
@item Never look in the focused window's keymap by default with mouse
1928
@item Hacked around the ``need an X11 connection to compile'' misfeature
1930
@item Fixed bug in @code{gnome-menu} code when GNOME binaries aren't in
1931
the first $PATH item; also accept non-alphanumeric language codes
1933
@item Fixed interactive window placement (again)
1935
@item Rewrote obscure documentation for some custom options
1937
@item Fixed bug when grabbing events with @code{AnyModifier} and a
1947
@item Support window groups, both as defined by applications, and
1948
defined by the user (either interactively through the window's menu, or
1949
via the @code{auto-group-alist} and @code{persistent-group-ids}
1952
For most commands working on single windows, there's also one operating
1953
on the group that the current window is a member of. (With the notable
1954
exception currently of moving windows.) There's also options
1955
controlling whether (de)iconification operates on windows or groups
1957
@item Improved GNOME menu support---merge duplicate sub-menus, scan
1958
PATH for @code{gnome-share-directory}, also look in
1959
@file{/etc/X11/applnk} for menu entries
1961
@item Option to control whether edge-flipping flips viewports or
1962
workspaces (@code{edge-flip-type})
1964
@item New hook @code{after-framing-hook}: called whenever a window's
1965
frame is changed or recalibrated
1967
@item New window placement mode: @code{first-fit-or-interactive}
1969
@item Variables specifying common cursor shapes:
1970
(@code{move-cursor-shape}, @code{resize-cursor-shape},
1971
@code{select-window-cursor-shape})
1973
@item Fix interactive placement
1975
@item Fix problem of window losing focus when @code{cycle-windows} only
1976
finds a single window; also, abort immediately if there's no windows to
1977
cycle through at all
1979
@item Fix how the @code{WM_NORMAL_HINTS} property is read after it's
1982
@item Fix @code{maximize-fill} functions to respect the
1983
@code{maximize-ignore-when-filling} option
1985
@item Fix interactive move/resize aborting if keyboard is already
1988
@item Ungrab the keyboard as well as the pointer before popping menus
1997
@item Changed how themes are loaded from tar files---the tar file must
1998
now contain a directory with the same name as the theme; it's this
1999
directory that stores the data files
2001
@item Allow viewport edge-flipping to be enabled by the customization
2002
system, also enable flipping while moving windows
2004
@item Unified the method of marking which windows should be avoided
2005
when maximizing, and which windows should be avoided when using the
2006
fitted placement methods. Set the @code{avoid} property instead of the
2007
@code{maximize-avoid} property; new functions @code{window-avoided-p}
2008
and @code{avoided-windows}; new regexp @code{avoided-windows-re}
2010
@item New command @code{delete-empty-workspaces}
2012
@item Default theme is now @code{microGUI}
2014
@item When resizing only one edge of a window, moving the pointer past
2015
one of the perpendicular edges grabs that edge also
2017
@item Only the first three buttons focus a window in click-to-focus
2020
@item Changed behaviour of @code{window-id} and
2021
@code{window-frame-dimensions} functions. Replaced
2022
@code{query-last-pointer} function by @code{query-button-press-pointer}
2024
@item New hooks: @code{while-moving-hook}, @code{while-resizing-hook}
2026
@item Notice when @code{WM_TRANSIENT_FOR} property changes
2028
@item More bug fixes to the maximization code, mainly for efficiency;
2029
also make first-fit placement work from top-left again
2031
@item Fix bug when matching events with @kbd{Any} modifier as well as
2034
@item Fix bug in @code{window-outside-viewport-p} (Andreas Degert)
2036
@item Fix bug in @samp{sawmill-client --} with long inputs
2038
@item Fix bug when matching windows with session
2039
data---@code{SM_CLIENT_ID} or @code{WM_COMMAND} @emph{has} to match
2041
@item Fix bugs when passive grabbing non-button-press pointer events
2050
@item Rewrote window-maximization, many new options
2052
@item New option @code{resize-by-frame-class}, when enabled (the
2053
default), the resized window edges are chosen to match the class of the
2054
clicked frame part (i.e. matching the cursor shape)
2056
@item Load GNOME support code automatically if it looks like GNOME is
2059
@item Create unix-domain sockets in @file{/tmp}
2061
@item New hooks: @code{window-moved-hook}, @code{window-resized-hook},
2062
@code{after-initialization-hook}, @code{shape-notify-hook}.
2064
@item Improved how menus are displayed; the window-ops menu is shown by
2065
ButtonPress not ButtonRelease events
2067
@item Refocus most-recently-focused window when switching viewport
2069
@item Added @code{centered} placement style
2071
@item Added symbol-completion to readline-based client
2073
@item Fix bug of not noticing WM_NORMAL_HINTS property changes; follow
2074
the window's maximum size hints
2076
@item Fix bug of not reframing windows when they change from unshaped
2077
to shaped, or vice versa
2086
@item New option to only highlight frame parts when their window is
2087
focused (@code{highlight-when-unfocused})
2089
@item Typing @kbd{ESC} while moving/resizing a window cancels the
2090
operation, restoring the original geometry
2092
@item New session management hook @code{sm-after-restore-hook}
2094
@item New function @code{set-frame-part-value}---makes customizing the
2095
@code{frame-part-classes} variables easier
2097
@item Support for loading themes from tar files; needs librep 0.7
2099
@item Fix bug when allocating colors (choosing an incorrect cached
2102
@item Fix image tiling in frame part backgrounds
2104
@item Handle shifted keysyms when passive grabbing
2106
@item Fix another race condition when active grabbing
2108
@item Fix @code{_WIN_CLIENT_LIST} property not being set properly (both
2109
missing windows immediately after they're adopted, and of intentionally
2110
skipping ignored windows)
2112
@item Fix some problems with viewports when exiting/restarting
2114
@item Fix broken stacking of windows after they're mapped
2116
@item Prevent smart window placement blowing up when large numbers of
2117
windows are open/opened (throttle back to random placement when the
2118
event queue is too large, as well as trying to prune the search space)
2127
@item Remember most recently focused windows on each workspace,
2128
activate that window after changing workspaces; also, try to preserve
2129
focus when moving windows between workspaces
2131
@item Option to disable auto-raise while cycling through windows
2132
(@code{cycle-disable-auto-raise}); option to restrict cycling to the
2133
current viewport (@code{cycle-all-viewports})
2135
@item Option @code{lock-first-workspace} is now enabled by default, and
2136
prevents both the first and last interesting workspaces being moved
2139
@item Added readline support to the client program, pass
2140
@samp{--with-readline} option to configure (from Christopher P Goller
2141
@email{goller@@eng.utah.edu})
2143
@item Added shaped-transient frame to microGUI theme
2145
@item New frame part attribute @code{below-client}
2147
@item Release passive grabs when unadopting windows
2149
@item When no window has the focus, the @code{root-window-keymap} is
2150
searched for key-press events
2152
@item Fix bug when binding to the unix-domain socket
2154
@item Fix focus sometimes being lost when the focused window is
2157
@item Fix bug when reading GNOME menu entries without @samp{Type}
2160
@item Fix bug when removing title or border of @code{shaped-transient}
2161
window types (make the window completely unframed)
2163
@item Fix bug when shading a transient window with
2164
@code{decorate-transients} enabled
2166
@item Fix some bugs when placing windows that are almost as big or
2167
bigger than the screen
2169
@item Fix some race-conditions between wm-generated and
2170
client-generated map/unmap/reparent events
2172
@item Fix infamous ``jerky pointer'' bug, this will also make
2173
overlapping shaped frame-parts display correctly
2175
@item Fix bug where @code{cycle-windows} could leave a window
2176
originally under the pointer that's unfocused, drawn as though it is
2186
@item New option @code{lock-first-workspace}, prevent the first
2187
workspace from being deleted when it's empty
2189
@item New option @code{ignore-window-input-hint}, to always give
2190
windows the focus, whether they say they will accept it or not
2192
@item New options when cycling windows: @code{cycle-warp-pointer} and
2193
@code{cycle-focus-windows}
2195
@item Restore the old method of setting the focus, should fix bug of
2196
losing focus totally when switching to a new workspace
2205
@item Implemented virtual workspaces, bind to the
2206
@code{move-viewport-@var{x}} and @code{move-window-@var{x}} commands
2207
(for @var{x} being @code{left}, @code{right}, @code{up}, or
2210
@item Added a new theme: @code{microGUI} by Ryan Lovett
2211
@email{ryan@@ocf.berkeley.edu}, based on the QNX Photon screenshots
2213
@item Added a @samp{Grab key} button in the bindings widget, replaces
2214
the current binding with the next pressed key
2216
@item Lisp module to load the GNOME menus and use them to replace the
2217
applications menu. Add @code{(require 'gnome-menu)} to your
2218
@file{~/.sawmillrc} file to load it
2220
@item Network server is disabled by default (since it can provide a
2221
security hole if X access control is disabled); re-enabled the old unix
2222
domain socket code (see the FAQ for more details)
2224
@item Only give the input focus to windows that actually want it
2226
@item New option to keep transient windows above their parents
2227
(@code{transients-above-parents})
2229
@item New option to control how the workspace boundary is handled when
2230
moving windows between workspaces (@code{workspace-send-boundary-mode})
2232
@item New commands @code{send-to-workspace:@var{x}} for @var{x} from 1
2235
@item While windows are hidden or shaded, unmap the client (for ICCCM
2238
@item Slightly different method of handling destroyed clients,
2239
hopefully results in fewer annoying error messages
2241
@item Support X installations without X11R6 session management (by not
2242
doing any session management)
2244
@item Don't ask the session manager to save our environment
2246
@item Fix bug where a window is destroyed/unmapped while it's being
2249
@item Fix bug where window can still be auto-raised even if it's been
2252
@item Fix problems when @samp{--prefix} option has a trailing slash
2254
@item Now handles client windows being reparented by a third party
2255
(i.e. swallowing apps)
2264
@item The first-fit and best-fit algorithms are now much more
2265
intelligent, e.g. instead of falling back to random placement when a
2266
window can't be placed without overlapping an existing window, they
2267
will attempt to minimize this degree of overlapping
2269
@item The @code{foreground} property of each frame part may now be an
2270
image instead of a piece of text
2272
@item New theme @code{smaker}, uses the foreground images capability to
2273
do a somewhat WindowMaker-like theme (with the absolute-e images). This
2274
theme is extensively customizable---all images, colors, dimensions,
2277
@item Use Imlib's fuzzy color matching for all color allocation; this
2278
should help on @code{PseudoColor} visuals
2280
@item Added an @code{xterm} command to launch an xterm
2282
@item Improved the bindings customization widget layout; added a
2283
@samp{Copy} button to insert a copy of the current binding
2285
@item Added @code{next-workspace-row} and @code{previous-workspace-row}
2286
commands. Together with the @code{workspace-columns} variable these
2289
@item Removed the @code{cycle-through-workspaces} option, there's now
2290
@code{workspace-boundary-mode}---one of @code{stop}, @code{wrap-around}
2291
or @code{keep-going}
2293
@item Added option to include ignored windows when edge snapping
2294
(@code{move-snap-ignored-windows})
2296
@item Fix race condition between startup of sawmill and gmc; sawmill
2297
now has earlier priority
2299
@item Fix seg fault when running out of color cells while generating a
2302
@item Fix bug where the window-workspace mapping wasn't reloaded from
2305
@item Fix cancel/revert problems in bindings widget
2307
@item Fix problems binding to shifted keys when using the XKEYBOARD
2308
extension and XFree86
2310
@item Be ICCCM compliant when a client requests to be moved
2312
@item Fix crash when tiling small images into large images
2314
@item Fix bug where windows could be snapped totally off-screen
2316
@item Fix bug when windows change their @code{override_redirect}
2317
attribute while unmapped
2319
@item Fix bug associated with WordPerfect's menu window
2328
@item First attempt at best-fit window placement (doesn't really work
2329
properly yet@dots{})
2331
@item Added a customization option to focus windows when they're
2332
un-iconified (@code{focus-windows-on-uniconify})
2334
@item Fix bug in click-to-focus mode where the click is only passed
2335
through to the client window, not to any local bindings of the wm
2337
@item Don't leave windows unframed if there's an error in the user's
2340
@item Fix bug in @code{preallocated-workspaces} option
2342
@item Don't place windows off-screen in first-fit mode
2351
@item Added stack-based window cycling, bound to @kbd{M-TAB} by
2352
default. Hold @key{Meta}, keep pressing @key{TAB} until the correct
2353
window is reached, then let go of @key{Meta}.
2355
@item Added first-fit window placement (a.k.a smart-placement)
2357
@item Completed first stage of workspace rewrite---shouldn't go
2358
ballistic when windows are removed anymore
2360
@item Added @code{override-frame-part-classes} variable---allows all
2361
frame properties to be overridden on a per-class basis
2363
@item Click-to-focus now accepts any button and any modifiers
2365
@item Don't snap to gmc icons or panels
2367
@item Added an @code{auto-window-type-alist} variable mapping window
2368
names to border types
2370
@item New variables @code{eval-modifier-events} and
2371
@code{eval-key-release-events} to allow catching these types of
2372
keyboard events, disabled by default
2374
@item Added functions for actively grabbing the keyboard
2376
@item Removed the long names of the keyboard modifiers, only the single
2377
character modifiers are left
2379
@item If no alt modifier, set it to the same as meta; new variables
2380
@code{alt-keysyms} and @code{meta-keysyms} describe the virtual
2381
modifier assignments
2383
@item Fix bug when handling shaped frame parts---it was possible to go
2384
into a long enter-, leave-notify loop when the old shape was cleared
2386
@item Fix bug where opaque resizing with snap-to-edges on moved the
2387
window as well as resizing it
2389
@item Fix bug when raising the only managed window
2391
@item Fix bug where very small client windows got weirdly shaped
2401
@item Define the standard @dfn{classes} of frame parts (i.e. things
2402
like close button, title, left border, etc...) then allow the state of
2403
members of these classes to be set in one place (the
2404
@code{frame-part-classes} variable). This should ensure that different
2405
themes have the same feel (but a feel that may be customized by the
2408
@item Allow frame parts to be removed if possible (if they have the
2409
@code{removable} property). Nothing makes use of this yet
2411
@item Added window-shading, double-click button1 on the title bar
2413
@item Created a sawmill capplet for the GNOME control center. Use the
2414
@samp{--enable-capplet} configure option to build it
2416
@item First attempt at a technical manual (very quickly written, so
2417
probably some inaccuracies)
2419
@item In the @code{gtk} theme, draw bevels on window decorations
2421
@item Use spin-buttons in the configurator to enter numbers
2423
@item Add option @code{focus-proxy-click} controlling whether to pass
2424
the focus-inducing button-press event to the underlying window (in
2425
click-to-focus mode)
2427
@item Changed the bindings in window borders, it's now the more usual
2428
button1 to resize, button2 to move
2430
@item When clicking and dragging windows, ensure that the clicked frame
2431
part stays clicked until the button is released
2433
@item If in click-to-focus mode, and there's no parent window to focus
2434
when the focused window is closed, focus the topmost window (not the
2435
window under the pointer as in the other focus modes)
2437
@item Changing window frames is @emph{much} less ugly, no flicker at
2440
@item Try to optimise window restacking some more
2442
@item Sped up opaque window moving when the position display is enabled
2444
@item Preserve iconified state across restarts
2446
@item Optimise updating the shape of an unframed window (this stops gmc
2447
icons flashing annoyingly)
2449
@item Fix bugs in click-to-focus mode where some windows were
2452
@item Fix bug where cycling through windows in click-to-focus mode
2453
didn't focus the activated window
2455
@item Fix bug where comparing sawmill lisp objects caused a crash
2457
@item Fix bug where initiating a resize in the middle of the window
2458
didn't allow any of the edges to be moved
2460
@item Fix bug where changing the ``decorate transients'' option didn't
2461
alter any existing transient windows
2463
@item Fix bug where iconifying a sticky or ignored window gave no way
2464
of reclaiming it---these windows now appear at the end of the window
2474
@item Now does session management. The scheme is extensible, arbitrary
2475
Lisp modules can save and restore window state due to their own
2476
functionality (using the @code{sm-window-save-functions} and
2477
@code{sm-restore-window-hook} hooks). See @file{lisp/workspace.jl} for
2480
@item Displays window position or dimensions whilst interactively
2481
moving or resizing a window (@code{move-show-position},
2482
@code{resize-show-dimensions})
2484
@item Mechanism for setting frame styles on a per-window basis (this
2485
was always possible, just not easy). The @code{auto-frame-style-alist}
2486
variable associates window name regular expressions with frame styles.
2487
Also, the @code{window-ops-menu} has a new submenu with all possible
2490
@item New option @code{preallocated-workspaces}, the number of
2491
workspaces to create at startup
2493
@item Window-workspace mapping is preserved through restart (as long as
2494
the GNOME hints are enabled)
2496
@item Theme directories may contain a short @file{README} file that
2497
will be displayed in the configuration tool
2499
@item Changed the custom file to @file{~/.sawmill/custom} instead of
2500
@file{~/.sawmill-custom}. The old file will be moved to the new
2501
location if it exists
2503
@item Install @file{sawmill-menu} under @file{libexec} since it
2504
shouldn't be run manually
2506
@item Option in @code{gradient} theme to create full-sized gradient
2507
images, trading memory for quality
2509
@item Workaround the flicker when raising windows
2511
@item Changed most of the @code{menus} and @code{custom} customize
2512
options into normal variables (they're not particularly intuitive)
2521
@item Frame parts can now be highlighted when the mouse is over them,
2522
also they ``un-click'' and ``re-click'' as the pointer leaves and
2523
re-enters their window. ButtonRelease bindings are only activated when
2524
the mouse is in the window at the time
2526
@item Frame part backgrounds can now be rendered on-the-fly using the
2527
new @code{renderer} property in frame definitions. This property is a
2528
function called with args @code{(@var{image} @var{state})}; it should
2529
draw a background into @var{image} for the specified state (@code{nil},
2530
@code{focused}, @code{highlighted} or @code{clicked})
2532
@item New theme @code{gtk}. This reads the default GTK style and uses
2533
the associated colors and pixmaps to decorate windows. It doesn't try
2534
to handle engine-based themes. It should automatically detect when the
2535
default style changes (if changed by the GNOME control center). Do
2536
@samp{sawmill-client -c gtk-reload-style} in the shell to reload the
2539
@item Functions for drawing color gradients and bevels into images. The
2540
new @code{gradient} theme uses these and on-the-fly rendering to do
2541
@code{afterstep}-like window titles
2543
@item Configurator changes: use a paned widget to separate the list of
2544
groups from the settings (stops their relative sizes changing), allow
2545
each group to be customized separately, either through a new set of
2546
root-submenus or the commands @code{customize:@var{group}} for each
2549
@item Changed the way that ``themes'' are organised, each theme now
2550
gets its own directory, which must include a @file{theme.jl} or
2551
@file{theme.jlc} script to initialise a frame-style of the same name as
2552
the directory. While this script is being evaluated the image path is
2553
set so that the theme can load any images stored in its directory.
2555
Also created the variable @code{theme-load-path} containing the list of
2556
directories searched when trying to load a theme. By default it
2557
contains two directories: @file{~/.sawmill/themes/} and
2558
@file{@var{prefix}/share/sawmill/@var{version}/themes}.
2560
@item Resizing now chooses the direction to resize the window in by the
2561
initial position of the pointer in relation to the window. The window
2562
is divided into a 3x3 grid, the pointer must be in one of the outer
2563
rectangles to resize in that direction
2565
@item New commands @code{select-workspace:@var{X}} for @var{X} between
2568
@item Support multiple depths, or layers, of windows
2570
@item It's now possible to move the current workspace up or down the
2571
list of all workspaces
2573
@item New option @samp{-c COMMAND} to @code{sawmill-client}; invokes
2574
the named interactive function
2576
@item When an app asks for no title and no border, give it what it
2577
wants---use the new @code{unframed} window type
2579
@item The maximize button works
2581
@item Option to control placement of transient windows
2582
(@code{place-transient-mode})
2584
@item Changing the frame style preserves the original window stacking
2587
@item Added documentation strings for most built-in functions
2589
@item Fix bug of evaluating both KeyPress @emph{and} KeyRelease events
2591
@item Fix bug of making the shape mask of unshaped client windows too
2594
@item Fix bug where already-handled BadWindow errors were being reported
2596
@item Fix bug where the @code{window-ops-menu} could be displayed from
2597
one window but then affect a different window
2599
@item Fix bug where click-to-focus doesn't work for new windows
2601
@item Fix bug where deleting the last workspace selected the first, not
2602
the new last workspace
2604
@item Fix bug where changing a colormap when no window is focused
2607
@item Fix bug where iconifying a window may leave it in the clicked
2608
state after it's uniconified
2610
@item Fix Caps_Lock and Num_Lock modifiers interfering with bindings
2612
@item Fix accessing X properties on 64-bit architectures
2614
@item Fix bug where pointer may be left grabbed after moving a window
2623
@item Support the maximized GNOME window states
2625
@item Where available, show documentation strings of commands in the
2628
@item Improve the method of handling clicks in frame-parts
2630
@item Fix asynchronous client-server protocol
2632
@item Fix interactive window moving/resizing (don't leave traces of the
2633
rubber-band, stop the window initially ``jumping'' to the pointer)
2642
@item Implemented window maximization
2644
@item Added support for snapping to window edges when interactively
2645
moving windows (@code{move-snap-edges} and @code{move-snap-epsilon})
2647
@item First attempt at handling a subset of the Motif and OpenLook
2650
@item Removed the @code{sloppy-focus} variable, it's replaced by
2651
@code{focus-mode}. This can currently be one of @code{enter-exit}
2652
(normal focus follows pointer), @code{enter-only} (``sloppy'' focus) or
2653
@code{click} (click to focus)
2655
@item When resolving pointer events, scan the @code{keymap} property of
2656
the window under the pointer, not the focused window (as with keypress
2659
@item The @file{sawmill-client} program can now communicate inter-host,
2660
since it uses X properties not raw sockets
2662
@item New hook @code{before-exit-hook}, called immediately before
2665
@item Rewrote the GNOME support as a Lisp module
2667
@item Placing windows interactively now works
2669
@item Fixed the bug on Solaris where deleting windows could cause a
2679
@item Added a user-customization system, inspired by Emacs' customize
2680
facility. Invoke this through the @samp{sawmill-ui} program, or from
2681
the @samp{Customize...} entry in the main menu. All changes are stored
2682
in the Lisp script @file{~/.sawmill-custom}
2684
@item Selected windows may now be raised
2685
(@code{raise-selected-windows})
2687
@item It's possible to prevent the mouse pointer being warped to
2688
selected windows (@code{warp-to-selected-windows})
2690
@item The @code{brushed-metal} and @code{simple} themes now define all
2691
four standard frame types
2693
@item Frame themes are now stored in a separate directory
2694
(@file{@var{prefix}/share/sawmill/@var{version}/lisp/themes}) so that
2695
the list of all available themes can be made automatically
2697
@item The frame colors of the @code{simple} frame style can now be
2698
customized (@code{simple-normal-color} and @code{simple-active-color})
2700
@item The @file{sawmill-defaults.jl} script enables GNOME compliance
2701
unconditionally (since it has no ill-effects even if GNOME isn't being
2704
@item Transient windows can be given the same frames as normal windows
2705
(@code{decorate-transients})
2707
@item Newly-displayed transient windows can be automatically given the
2708
focus if their parent window is focused (@code{transients-get-focus})
2710
@item Any newly-displayed windows can be automatically given the input
2711
focus (@code{focus-windows-when-mapped})
2713
@item The @code{foreground}, @code{background} and @code{font}
2714
attributes of each frame part may now refer to a function
2716
@item Fixed the window-move bug whereby the first motion event was
2719
@item Fixed the bug where windows may be placed partially off the root
2720
window, even if they needn't be
2722
@item Fixed the shaped frame parts bug (they didn't work)
2724
@item Miscellaneous other bug-fixes
2731
First proper release