CHANGES.md revision 0bbfda8a
10bbfda8aSnia# CTWM Change History
20bbfda8aSnia
30bbfda8aSnia
40bbfda8aSnia## 4.0.3  (2019-07-21)
50bbfda8aSnia
60bbfda8aSnia### Bugfixes
70bbfda8aSnia
80bbfda8aSnia1. Perform various manipulations and overrides of `WM_HINTS` property
90bbfda8aSnia   when it gets reset during runtime, like we do when initially adopting
100bbfda8aSnia   the window.  The most visible effect of this was in windows that don't
110bbfda8aSnia   give a focus hint (which we override to give focus), but then reset
120bbfda8aSnia   `WM_HINTS` later and still don't give us a hint, where we wound up not
130bbfda8aSnia   re-overriding previously.  Reported for `xvile` by Wayne Cuddy.
140bbfda8aSnia
150bbfda8aSnia1. The font height estimation changes in 4.0.0 were not applied correctly
160bbfda8aSnia   when UseThreeDMenus was set, leading to some odd vertical misalignment
170bbfda8aSnia   of the text with some fonts.  Reported by Wayne Cuddy.
180bbfda8aSnia
190bbfda8aSnia1. A failure in OTP consistency checks caused by the handling of
200bbfda8aSnia   transients of fullscreen windows has been fixed.  This manifested as
210bbfda8aSnia   failures in OtpCheckConsistencyVS() assertions.
220bbfda8aSnia
230bbfda8aSnia
240bbfda8aSnia
250bbfda8aSnia## 4.0.2  (2018-08-25)
260bbfda8aSnia
270bbfda8aSnia### Backward-Incompatible Changes And Removed Features
280bbfda8aSnia
290bbfda8aSnia1. The `UseThreeDIconBorders` config var has been removed.  It came in
300bbfda8aSnia   silently and undocumented in 3.4 and has never done anything.
310bbfda8aSnia
320bbfda8aSnia1. The attempts to use DNS lookups for setting the `HOSTNAME` `m4` variable
330bbfda8aSnia   have been removed; it is now just a duplicate of `CLIENTHOST`.
340bbfda8aSnia
350bbfda8aSnia### New Features
360bbfda8aSnia
370bbfda8aSnia1. The EWMH `_NET_WM_NAME` property is now supported, and used for the
380bbfda8aSnia   window name in place of the ICCCM `WM_NAME` when set.  By default, we
390bbfda8aSnia   also accept `UTF8_STRING` encoded `WM_NAME` as a result of this
400bbfda8aSnia   change; see below for var to restore historical strictness.
410bbfda8aSnia
420bbfda8aSnia1. The EWMH `_NET_WM_ICON_NAME` property is now supported, and used for
430bbfda8aSnia   the icon name in place of the ICCCM `WM_ICON_NAME` when set.  Similar
440bbfda8aSnia   comments as above apply to the encodings.
450bbfda8aSnia
460bbfda8aSnia1. Support has been added for `CTWM_WM_NAME` and `CTWM_WM_ICON_NAME`
470bbfda8aSnia   properties, which will override any window/icon names otherwise
480bbfda8aSnia   specified.  This may be useful for applications that set unhelpful
490bbfda8aSnia   names themselves, or for manually adjusting labelling.  These
500bbfda8aSnia   properties can be set from the command line via `xprop`; as an
510bbfda8aSnia   example, `xprop -f CTWM_WM_NAME 8u -set CTWM_WM_NAME "awesome
520bbfda8aSnia   windowsauce"`.  See `xprop(1)` manual for details; the `s`, `t`, and
530bbfda8aSnia   `u` field type specifiers will all work.
540bbfda8aSnia
550bbfda8aSnia1. When no icon name is set for a window, we've always used the window
560bbfda8aSnia   name for the icon name as well.  But that only happened the first time
570bbfda8aSnia   the window name is set; after that, the icon name is stuck at the
580bbfda8aSnia   first name.  It now updates along with the window name, if no icon
590bbfda8aSnia   name is set.
600bbfda8aSnia
610bbfda8aSnia1. All icon manager windows will now have the `TwmIconManager` class set
620bbfda8aSnia   on them, so they can be addressed en mass by other config like
630bbfda8aSnia   `NoTitle` by that class name.
640bbfda8aSnia
650bbfda8aSnia### New Config Options
660bbfda8aSnia
670bbfda8aSnia1. Added `DontNameDecorations` config option to disable setting names on
680bbfda8aSnia   the X windows we create for window decoration (added in 4.0.0).  These
690bbfda8aSnia   have been reported to confuse `xwit`, and might do the same for other
700bbfda8aSnia   tools that don't expect to find them on non-end-app windows.  Reported
710bbfda8aSnia   by Frank Steiner.
720bbfda8aSnia
730bbfda8aSnia1. Added `StrictWinNameEncoding` config option to enable historical
740bbfda8aSnia   behavior, where we're reject invalid property encoding for window
750bbfda8aSnia   naming properties (like a `UTF8_STRING` encoded `WM_NAME`).
760bbfda8aSnia
770bbfda8aSnia### Bugfixes
780bbfda8aSnia
790bbfda8aSnia1. Fix up broken parsing of `IconifyStyle "sweep"`.  Bug was introduced
800bbfda8aSnia   in 4.0.0.
810bbfda8aSnia
820bbfda8aSnia1. When multiple X Screens are used, building the temporary file for m4
830bbfda8aSnia   definitions could fail with an error from `mkstemp()`.  Reported by
840bbfda8aSnia   Manfred Knick.
850bbfda8aSnia
860bbfda8aSnia1. When multiple X Screens are used, the OTP code didn't recognize the
870bbfda8aSnia   difference, and kept everything in one list.  This caused the internal
880bbfda8aSnia   consistency checks to trip when it didn't find all the windows it
890bbfda8aSnia   expected.  Reported by Terran Melconian.
900bbfda8aSnia
910bbfda8aSnia1. When `ReverseCurrentWorkspace` is set, mapping windows not on the
920bbfda8aSnia   current workspace (e.g., via restarting ctwm, or creating new windows
930bbfda8aSnia   with the desktop set via EWMH properties) could segfault.  Reported by
940bbfda8aSnia   Sean McAllister.
950bbfda8aSnia
960bbfda8aSnia1. Fix some edge cases where we'd fight other apps' focus handling.  When
970bbfda8aSnia   an application moved focus itself to an unrelated (in X terms) window,
980bbfda8aSnia   our processing would often race and re-move the focus to the root
990bbfda8aSnia   ourselves.  This was visible with e.g. sub-windows in Firefox for
1000bbfda8aSnia   context menu and urlbar dropdown, which would flash on and then
1010bbfda8aSnia   disappear.
1020bbfda8aSnia
1030bbfda8aSnia1. When creating a new transient window of an existing full-screen
1040bbfda8aSnia   window, the OTP stacking may cause it to be stuck below the main
1050bbfda8aSnia   window due to the special handling of full-screen focused windows in
1060bbfda8aSnia   EWMH.  It should now be forced to the top.
1070bbfda8aSnia
1080bbfda8aSnia1. Building ctwm since 4.0.0 in certain locales could misorder functions
1090bbfda8aSnia   in the lookup table, leading to troubles parsing the config file.
1100bbfda8aSnia   You'd get some loud "INTERNAL ERROR" lines from ctwm when running it
1110bbfda8aSnia   if this were the case.  Now fixed.  Reported by Richard Levitte.
1120bbfda8aSnia
1130bbfda8aSnia
1140bbfda8aSnia
1150bbfda8aSnia## 4.0.1  (2017-06-05)
1160bbfda8aSnia
1170bbfda8aSnia### User Visible Changes
1180bbfda8aSnia
1190bbfda8aSnia1. Fix a bug where fullscreen windows could sometimes wind up incorrectly
1200bbfda8aSnia   stacked due to a focus-handling issue.  This would lead to ctwm
1210bbfda8aSnia   aborting with an assertion failure in the OTP code, like `Assertion
1220bbfda8aSnia   failed: (PRI(owl) >= priority), function OtpCheckConsistencyVS`.
1230bbfda8aSnia
1240bbfda8aSnia1. Fix an edge case (probably only triggerable via manual work with EWMH
1250bbfda8aSnia   messages) where a window could wind up resized down to nothing.
1260bbfda8aSnia
1270bbfda8aSnia### Internals
1280bbfda8aSnia
1290bbfda8aSnia1. Systems with the ctfconvert/ctfmerge tools available will now use them
1300bbfda8aSnia   to include CTF info in the compiled binary.  This allows more detailed
1310bbfda8aSnia   inspection of the running process via DTrace (e.g., the layout of the
1320bbfda8aSnia   structs).
1330bbfda8aSnia
1340bbfda8aSnia1. The initial rumblings of a Developer's Manual are now in
1350bbfda8aSnia   `doc/devman/`.  This isn't tied into the main build, and there's no
1360bbfda8aSnia   real reason it ever will be.  Things of interest to _users_ should
1370bbfda8aSnia   wind up in the main manual; this should only have things of interest
1380bbfda8aSnia   to people _developing_ ctwm.
1390bbfda8aSnia
1400bbfda8aSnia
1410bbfda8aSnia
1420bbfda8aSnia## 4.0.0  (2017-05-24)
1430bbfda8aSnia
1440bbfda8aSnia### Build System Change
1450bbfda8aSnia
1460bbfda8aSniaThe old `imake` build system has been replaced by a new structure using
1470bbfda8aSnia`cmake`.  This makes [cmake](https://cmake.org/) a requirement to build
1480bbfda8aSniactwm.  See the `README.md` file for how to run it.
1490bbfda8aSnia
1500bbfda8aSniaA fallback minimal build system is available in the `minibuild/`
1510bbfda8aSniadirectory for environments that can't use the main one.  This is likely
1520bbfda8aSniato need some manual adjustment on many systems, and the main build is
1530bbfda8aSniastrongly preferred.  But it should suffice to get a runnable binary if
1540bbfda8aSniaall else fails.
1550bbfda8aSnia
1560bbfda8aSnia### Platform Support
1570bbfda8aSnia
1580bbfda8aSniaSupport for many non-current platforms has been dropped.  In particular,
1590bbfda8aSniaremnants of special-case VMS support have been removed.  Many old and now
1600bbfda8aSniadead Unix variants have been similarly desupported.  Generally, platforms
1610bbfda8aSniawithout support for C99 and mid-2000's POSIX are increasingly less likely
1620bbfda8aSniato work.
1630bbfda8aSnia
1640bbfda8aSnia### Backward-Incompatible Changes And Removed Features
1650bbfda8aSnia
1660bbfda8aSnia1. Argument parsing has been rewritten to use `getopt_long()`.  All
1670bbfda8aSnia   `-long` options are now `--long` instead.  `-version`, `-info`,
1680bbfda8aSnia   `-cfgchk`, and `-display` are still accepted if they're the first
1690bbfda8aSnia   option given, to make it easier for scripts to simultaneously support
1700bbfda8aSnia   before/after versions; this shim will be removed in a later version.
1710bbfda8aSnia
1720bbfda8aSnia1. Support for the SDSC imconv library, and the IMCONV options related to
1730bbfda8aSnia    it, has been removed.  The last release is almost 20 years old, and
1740bbfda8aSnia    doesn't support any remotely recent platforms.
1750bbfda8aSnia
1760bbfda8aSnia1. The USE_SIGNALS code to use signal-driven animations has been removed.
1770bbfda8aSnia    It's been non-default since 3.2 (more than 20 years ago), and not
1780bbfda8aSnia    documented anywhere but in the code and a comment in this file.
1790bbfda8aSnia
1800bbfda8aSnia1. The USE_GNOME option and code for GNOME1 support has been removed.
1810bbfda8aSnia
1820bbfda8aSnia1. The old-style title button action specifications (without an `=` in
1830bbfda8aSnia   them) deprecated since 3.8 are no longer supported.  Just replacing
1840bbfda8aSnia   the "`:`" with "`= :`" should suffice to make it work right in 3.8+.
1850bbfda8aSnia   If you need to share configs with older versions, you'll have to
1860bbfda8aSnia   conditionalize the syntax with m4 or some other preprocessing.
1870bbfda8aSnia
1880bbfda8aSnia1. The `f.cut` (and `^` alias for it), `f.cutfile`, and `f.file`
1890bbfda8aSnia   functions have been removed.  These functions for messing with the
1900bbfda8aSnia   clipboard were never visibly documented, and came into the manpage in
1910bbfda8aSnia   3.0 already commented-out and saying they were obsolete.
1920bbfda8aSnia
1930bbfda8aSnia1. The `f.source` function has been removed.  It's never done anything
1940bbfda8aSnia   (except beep) as far back as 1.1 and has never been documented.
1950bbfda8aSnia
1960bbfda8aSnia1. The `f.movemenu` function has been removed.  It was added silently in
1970bbfda8aSnia   2.1, has never done anything, and has never been documented.
1980bbfda8aSnia
1990bbfda8aSnia1. The `NoVersion` config parameter has been removed.  It's been
2000bbfda8aSnia   undocumented, obsoleted, and done absolutely nothing since 1.1.
2010bbfda8aSnia
2020bbfda8aSnia1. Support for non-flex versions of lex(1) is deprecated, and will take
2030bbfda8aSnia   some manual work to build.  Note that release tarballs include
2040bbfda8aSnia   prebuild lexers, so this probably only matters to people building from
2050bbfda8aSnia   a development tree.  (And if you are, and really need AT&T or some
2060bbfda8aSnia   other lex to work, talk to us!)
2070bbfda8aSnia
2080bbfda8aSnia1. Support for building with internal regex implementation has been
2090bbfda8aSnia   disabled; we now require regex support from libc.  It is still
2100bbfda8aSnia   possible to enable by manually editing files, but this will be removed
2110bbfda8aSnia   in the future.  If you have to mess with this, please bring it up on
2120bbfda8aSnia   the mailing list so we can figure out a long-term solution.
2130bbfda8aSnia
2140bbfda8aSnia1. Parsing of the `ctwm.workspaces` X resource (i.e., setting `-xrm
2150bbfda8aSnia   "ctwm.workspaces: something"` on program command-lines) since 3.0 has
2160bbfda8aSnia   collapsed doubled backslashes (`\\`) into a single (`\`).  However,
2170bbfda8aSnia   there were no other escapes, so this didn't gain anything.  Using a
2180bbfda8aSnia   single will work with both variants, unless you need multiple
2190bbfda8aSnia   backslashes in a row in your workspace names.
2200bbfda8aSnia
2210bbfda8aSnia1. The `IconRegion` and `WindowRegion` config params both take a `vgrav
2220bbfda8aSnia   hgrav` pair of parameters to control layout.  Previous versions would
2230bbfda8aSnia   accept a `hgrav vgrav` ordering in the parsing, and would mostly work
2240bbfda8aSnia   by odd quirks of the code.  The parsing has been made stricter, so
2250bbfda8aSnia   only the documented `vgrav hgrav` ordering is accepted now.
2260bbfda8aSnia
2270bbfda8aSnia### User Visible Changes
2280bbfda8aSnia
2290bbfda8aSnia1. The default install locations have been changed.  See the README for
2300bbfda8aSnia    details about where things are installed and how to change them.
2310bbfda8aSnia
2320bbfda8aSnia1. Several default settings have been changed.  ctwm now defaults to
2330bbfda8aSnia   acting as though `RestartPreviousState`, `NoGrabServer`,
2340bbfda8aSnia   `DecorateTransients`, `NoBackingStore`, `RandomPlacement`,
2350bbfda8aSnia   `OpaqueMove`, `OpaqueResize`, `SortIconManager`, and `StartInMapState`
2360bbfda8aSnia   have been set.  Those settings that didn't previously have an inverse
2370bbfda8aSnia   (to get the behavior previously seen when they weren't specified) have
2380bbfda8aSnia   such added; see below.
2390bbfda8aSnia
2400bbfda8aSnia1. Added various config parameters as inverses of existing params.  New
2410bbfda8aSnia   params (with existing param they invert in parens):
2420bbfda8aSnia    * `BackingStore` (`NoBackingStore`)
2430bbfda8aSnia    * `GrabServer` (`NoGrabServer`)
2440bbfda8aSnia    * `StartInButtonState` (`StartInMapState`)
2450bbfda8aSnia    * `NoSortIconManager` (`SortIconManager`)
2460bbfda8aSnia    * `NoRestartPreviousState` (`RestartPreviousState`)
2470bbfda8aSnia    * `NoDecorateTransients` (`DecorateTransients`)
2480bbfda8aSnia
2490bbfda8aSnia1. Added `DontShowWelcomeWindow` config option to not show welcome
2500bbfda8aSnia    splashscreen image.
2510bbfda8aSnia
2520bbfda8aSnia1. Selected a number of cleanups from Stefan Monnier
2530bbfda8aSnia    <<monnier@IRO.UMontreal.CA>>, including rate-limiting of animations
2540bbfda8aSnia    using a new `_XA_WM_END_OF_ANIMATION` message.  Font height is
2550bbfda8aSnia    estimated based on used characters only.  Added some similar changes,
2560bbfda8aSnia    improved the prevention of placing windows off-screen, the
2570bbfda8aSnia    `f.rescuewindows` function for emergencies, a hack-fix for
2580bbfda8aSnia    `f.adoptwindow`. More virtual screen tweaks/fixes.
2590bbfda8aSnia
2600bbfda8aSnia1. Added the remaining OnTopPriority changes from Stefan Monnier
2610bbfda8aSnia    <<monnier@IRO.UMontreal.CA>>: `AutoPopup`, `AutoPriority`,
2620bbfda8aSnia    `OnTopPriority`, `PrioritySwitching`, `f.changepriority`,
2630bbfda8aSnia    `f.priorityswitching`, `f.setpriority`, `f.switchpriority`,
2640bbfda8aSnia    `f.tinylower`, `f.tinyraise`.  Currently consistency checking code is
2650bbfda8aSnia    enabled, which will terminate with an assertion failure if something
2660bbfda8aSnia    unexpected happens. Smoothed out various inconsistencies that this
2670bbfda8aSnia    check discovered when virtual screens are used.
2680bbfda8aSnia
2690bbfda8aSnia1. Basic support for EWMH (Extended Window Manager Hints) added and
2700bbfda8aSnia    enabled by default.  `EWMHIgnore {}` config option allows selectively
2710bbfda8aSnia    disabling bits.
2720bbfda8aSnia    [Olaf "Rhialto" Seibert, Matthew Fuller]
2730bbfda8aSnia
2740bbfda8aSnia1. Icon manager windows are no longer included in the window ring
2750bbfda8aSnia    (that had confusing effects on the focus sequence).
2760bbfda8aSnia
2770bbfda8aSnia1. Added `--dumpcfg` command-line option to print out the compiled-in
2780bbfda8aSnia    fallback config file.
2790bbfda8aSnia
2800bbfda8aSnia1. The `Occupy {}` specification now accepts "ws:" as a prefix for
2810bbfda8aSnia    workspaces.  This may break things if you have workspaces with names
2820bbfda8aSnia    that differ only by that prefix (e.g., you have workspaces "abc" and
2830bbfda8aSnia    "ws:abc", and your `Occupy {}` declarations affects both.
2840bbfda8aSnia
2850bbfda8aSnia1. If ctwm is built with rplay support, sounds may now be configured with
2860bbfda8aSnia    the RplaySounds {} parameter in the config file in place of the
2870bbfda8aSnia    `~/.ctwm-sounds` file.  If so, ctwm will give a warning if
2880bbfda8aSnia    `.ctwm-sounds` exists; support for the external file will be removed
2890bbfda8aSnia    in a future version.  Also the `SoundHost` config parameter is
2900bbfda8aSnia    replaced by `RplaySoundHost`; the old name is still accepted, but
2910bbfda8aSnia    will be removed in a future version.
2920bbfda8aSnia
2930bbfda8aSnia1. Added `MWMIgnore {}` config option to allow selectively disabling
2940bbfda8aSnia    honoring of some Motif WM hints.
2950bbfda8aSnia
2960bbfda8aSnia1. Warping to a window now explicitly sets focus on that window.  This
2970bbfda8aSnia    would generally (but not always, in the presence of odd X server
2980bbfda8aSnia    behavior) have already happened for users with focus following mouse,
2990bbfda8aSnia    but now occurs for `ClickToFocus` users as well.
3000bbfda8aSnia    [Alexander Klein]
3010bbfda8aSnia
3020bbfda8aSnia1. Several bugs relating to the Occupy window were fixed.  Iconifying the
3030bbfda8aSnia    Occupy window no longer loses it and leaves you unable to pull it up
3040bbfda8aSnia    again.  Minor undersizing in some cases fixed.
3050bbfda8aSnia
3060bbfda8aSnia1. Windows which fail to use the `WM_HINTS` property to tell us things like
3070bbfda8aSnia    whether they want us to give them focus are now explicitly given
3080bbfda8aSnia    focus anyway.  This should fix focus problems with some apps
3090bbfda8aSnia    (Chromium is a common example).
3100bbfda8aSnia
3110bbfda8aSnia1. Added `ForceFocus {}` config option to forcibly give focus to all (or
3120bbfda8aSnia    specified) windows, whether they request it or not.  Previously the
3130bbfda8aSnia    code did this unconditionally (except when no `WM_HINTS` were
3140bbfda8aSnia    provided; x-ref previous), but this causes problems with at least
3150bbfda8aSnia    some programs that tell us they don't want focus, and mean it
3160bbfda8aSnia    (some Java GUI apps are common examples).
3170bbfda8aSnia
3180bbfda8aSnia1. `OpaqueMoveThreshold` values >= 200 (the default) are now treated as
3190bbfda8aSnia    infinite, and so will always cause opaque moving.
3200bbfda8aSnia
3210bbfda8aSnia### Internals
3220bbfda8aSnia
3230bbfda8aSnia1. A new code style has been chosen and the entire codebase reformatted
3240bbfda8aSnia    into it.  Configs for
3250bbfda8aSnia    [Artistic Style](http://astyle.sourceforge.net/)
3260bbfda8aSnia    to generate the proper output are in the source tree.
3270bbfda8aSnia
3280bbfda8aSnia1. The `full_name` element of the TwmWindow structure has been removed.
3290bbfda8aSnia    Consumers should just use the `name` element instead.
3300bbfda8aSnia
3310bbfda8aSnia
3320bbfda8aSnia
3330bbfda8aSnia## 3.8.2  (2014-05-18)
3340bbfda8aSnia
3350bbfda8aSnia1. Various code cleanups.
3360bbfda8aSnia
3370bbfda8aSnia    * Cleanup re: raising and warping to windows (previous location of
3380bbfda8aSnia      pointer in windows), SaveWorkspaceFocus. A few extra NULL pointer
3390bbfda8aSnia      checks.
3400bbfda8aSnia
3410bbfda8aSnia    * Logical hasfocusvisible cleanup.
3420bbfda8aSnia
3430bbfda8aSnia    * Rename TwmWindow.list to iconmanagerlist, and various smaller
3440bbfda8aSnia      cleanups.
3450bbfda8aSnia
3460bbfda8aSnia    * Eliminated TwmWindow TwmRoot from struct ScreenInfo. Mostly a
3470bbfda8aSnia      mechanical change.  I found some cases where the dummy TwmWindow
3480bbfda8aSnia      was apparently mistakenly included in a loop. Replaced `.next`
3490bbfda8aSnia      with `TwmWindow *FirstWindow` and `.cmaps` with `Colormaps
3500bbfda8aSnia      RootColormaps`.  Other members were not used.
3510bbfda8aSnia
3520bbfda8aSnia1. Fix a bug where insufficient validation of the size hints
3530bbfda8aSnia    resulted in a division by zero when considering aspect ratio.
3540bbfda8aSnia
3550bbfda8aSnia1. Lots of minor compiler warnings and build fixes, a few of which
3560bbfda8aSnia    were real current or latent bugs.  Leave warnings enabled by
3570bbfda8aSnia    default.  A few of the build system adjustments may break very
3580bbfda8aSnia    old systems (e.g., those with original AT&T `yacc`).
3590bbfda8aSnia
3600bbfda8aSnia1. Fix incorrect inclusion of `$DESTDIR` in some paths.
3610bbfda8aSnia
3620bbfda8aSnia1. Update for new website and mailing list at <http://www.ctwm.org>.
3630bbfda8aSnia
3640bbfda8aSnia1. Look at `_MOTIF_WM_HINTS` for titlebar-less or border-less
3650bbfda8aSnia    windows.
3660bbfda8aSnia
3670bbfda8aSnia
3680bbfda8aSnia
3690bbfda8aSnia## 3.8.1  (2012-01-05)
3700bbfda8aSnia
3710bbfda8aSnia1. Fix bug causing [de]iconified status of windows to not be
3720bbfda8aSnia    maintained across workspaces.
3730bbfda8aSnia    [Matthew Fuller]
3740bbfda8aSnia
3750bbfda8aSnia1. Quiet a bunch of compiler warnings.
3760bbfda8aSnia    [Matthew Fuller]
3770bbfda8aSnia
3780bbfda8aSnia1. Make sure we fully initialize our WorkSpaceWindow structure so
3790bbfda8aSnia    we don't try to dereference uninitialized pointers later on.
3800bbfda8aSnia    [Matthew Fuller]
3810bbfda8aSnia
3820bbfda8aSnia1. Increased the number of supported mouse buttons again, having
3830bbfda8aSnia    just heard of a mouse with 9 possible buttons...
3840bbfda8aSnia    [Richard Levitte]
3850bbfda8aSnia
3860bbfda8aSnia1. Fix a bug in the warping "next" function, where if there is a
3870bbfda8aSnia    single window and the cursor is not on it, invoking `f.warpring
3880bbfda8aSnia    "next"` does nothing.
3890bbfda8aSnia    [Martin Blais]
3900bbfda8aSnia
3910bbfda8aSnia1. Introduce a new feature called "SaveWorkspaceFocus", which when
3920bbfda8aSnia    enabled, makes ctwm remember which window has the focus within
3930bbfda8aSnia    each virtual workspace. As you switch workspaces, the cursor is
3940bbfda8aSnia    automatically warped to the window previous in focus in the
3950bbfda8aSnia    workspace. This significantly reduces the amount of mouse use.
3960bbfda8aSnia    [Martin Blais]
3970bbfda8aSnia
3980bbfda8aSnia1. f.fill patch from Matthias Kretschmer <<kretschm@cs.uni-bonn.de>>.
3990bbfda8aSnia    Without the patch, you might get windows which are increased by
4000bbfda8aSnia    two times the border width more than it should be.  Additionally
4010bbfda8aSnia    if you place a window with no/not much size contrainst like
4020bbfda8aSnia    firefox in the upper left corner and perform `f.fill "top"` or
4030bbfda8aSnia    `f.fill "left"` the size of the window will increase by two times
4040bbfda8aSnia    the border width in width and height without changing the
4050bbfda8aSnia    top-left coordinate without the patch.  Of course in such a
4060bbfda8aSnia    situation the size should not change at all...
4070bbfda8aSnia    [via Olaf Seibert]
4080bbfda8aSnia
4090bbfda8aSnia
4100bbfda8aSnia
4110bbfda8aSnia## 3.8  (2007-02-16)
4120bbfda8aSnia
4130bbfda8aSnia1. Global cleanup.  There were some variables shadowing others, things
4140bbfda8aSnia    not being safely initialized, that sort of thing.
4150bbfda8aSnia    [Richard Levitte]
4160bbfda8aSnia
4170bbfda8aSnia1. Fixed several memory leaks found by
4180bbfda8aSnia    "Nadav Har'El" <<nyh@math.technion.ac.il>>.
4190bbfda8aSnia    [Olaf "Rhialto" Seibert]
4200bbfda8aSnia
4210bbfda8aSnia1. Merged in the `f.movetitlebar` command. By default this is bound to
4220bbfda8aSnia    alt-left-click in the titlebar.
4230bbfda8aSnia    [Olaf "Rhialto" Seibert]
4240bbfda8aSnia
4250bbfda8aSnia1. Fixed the following issue:
4260bbfda8aSnia
4270bbfda8aSnia    * Poking at the code, it looks like InitVirtualScreens() is called
4280bbfda8aSnia      before the configuration file is parsed which would explain what I
4290bbfda8aSnia      see since there's no attempt to create them after the config file
4300bbfda8aSnia      read.  Moving the call after the config parsing causes things to
4310bbfda8aSnia      work.
4320bbfda8aSnia
4330bbfda8aSnia    * I've run into a few other issues that I fixed with the attached
4340bbfda8aSnia      patch:
4350bbfda8aSnia        * shadow menus on the right screen open the shadow on the left
4360bbfda8aSnia          screen
4370bbfda8aSnia        * shadow menus on the left screen open on top of the window
4380bbfda8aSnia        * windows on the right screen disappear after startup
4390bbfda8aSnia
4400bbfda8aSnia    [Todd Kover]
4410bbfda8aSnia
4420bbfda8aSnia1. Adjustments to ctwm.man.  I noticed a couple of small errors.  [Ross
4430bbfda8aSnia    Combs]
4440bbfda8aSnia
4450bbfda8aSnia    * One is that the window list arguments for the opaque keywords are
4460bbfda8aSnia      now optional, are listed with square brackets in the man page.
4470bbfda8aSnia
4480bbfda8aSnia    * The other is that the two Threshold keywords are shown in the man
4490bbfda8aSnia      page as requiring curly-brackets, but they are not required or
4500bbfda8aSnia      accepted in configuration files.
4510bbfda8aSnia
4520bbfda8aSnia1. Improve algoritm to deal with mismatched geometry of virtual
4530bbfda8aSnia    screens
4540bbfda8aSnia
4550bbfda8aSnia    * allow windows to be dragged from one virtual screen to another and
4560bbfda8aSnia      have them switch workspaces appropriately
4570bbfda8aSnia
4580bbfda8aSnia    * handle restarts properly with virtual screens, including preserving
4590bbfda8aSnia      where windows were placed within workspaces regardless of which
4600bbfda8aSnia      virtual screen a window was on; preserve across restarts
4610bbfda8aSnia
4620bbfda8aSnia    [Todd Kover]
4630bbfda8aSnia
4640bbfda8aSnia1. `WMapCreateCurrentBackGround()` and `WMapCreateDefaultBackGround()`
4650bbfda8aSnia    would skip remaining virtual screens if not all parameters are
4660bbfda8aSnia    present.  Small type errors.
4670bbfda8aSnia    [Olaf "Rhialto" Seibert]
4680bbfda8aSnia
4690bbfda8aSnia1. There were some directives in the config file that wanted to set some
4700bbfda8aSnia    setting for all virtual screens. However since that list is (now) only
4710bbfda8aSnia    set up after parsing the config file, they failed to work.  Moreover,
4720bbfda8aSnia    these settings were basically meant to be global to all virtual
4730bbfda8aSnia    screens, so a better place for them is somewhere in `*Scr`.  They all
4740bbfda8aSnia    related to the Workspace Manager, so I moved them from `struct
4750bbfda8aSnia    WorkSpaceWindow` to `struct WorkSpaceMgr`.
4760bbfda8aSnia
4770bbfda8aSnia    The affected directives are StartInMapState, WMgrVertButtonIndent,
4780bbfda8aSnia    WMgrHorizButtonIndent, MapWindowCurrentWorkSpace,
4790bbfda8aSnia    MapWindowDefaultWorkSpace.  The window and icon_name, even though not
4800bbfda8aSnia    user-settable, were also moved.
4810bbfda8aSnia
4820bbfda8aSnia    This is basically the previous change above done right.
4830bbfda8aSnia    [Olaf "Rhialto" Seibert]
4840bbfda8aSnia
4850bbfda8aSnia1. Re-introduced `TwmWindow.oldvs`, used to avoid calling
4860bbfda8aSnia    `XReparentWindow()` when possibe (it messed up the stacking order of
4870bbfda8aSnia    windows). However, maybe the use of `.vs` should be rethought a bit:
4880bbfda8aSnia    in `Vanish()` it is now set to `NULL` with the old value kept in
4890bbfda8aSnia    `.oldvs`.  However the window is still a child of the same vs.  Maybe
4900bbfda8aSnia    it is better not to set it to `NULL` and then, when *really* changing
4910bbfda8aSnia    the virtual screen, `.vs` can be used instead of `.oldvs`.
4920bbfda8aSnia
4930bbfda8aSnia    This whole "virtual screen" thing is unexplained in the manual, which
4940bbfda8aSnia    even uses it as a synonym for "workspace" already in the introduction
4950bbfda8aSnia    paragraph. (There also does not seem to be a way now to test virtual
4960bbfda8aSnia    screens in captive windows) I suspect that all this causes lots of
4970bbfda8aSnia    confusion, and when cleared up, can simplify the code a lot.
4980bbfda8aSnia
4990bbfda8aSnia    I also fixed up the horrible indentation in the functions
5000bbfda8aSnia    where I changed something.
5010bbfda8aSnia    [Olaf "Rhialto" Seibert]
5020bbfda8aSnia
5030bbfda8aSnia1. Fixed interaction between "inner" and "outer" workspace
5040bbfda8aSnia    selection with "captive" windows. This was because the Gnome
5050bbfda8aSnia    `_WIN_WORKSPACE` property is used in 2 conflicting ways: for
5060bbfda8aSnia    client windows it indicates which workspace they are in, for
5070bbfda8aSnia    root windows it indicates which workspace they show. Captive
5080bbfda8aSnia    windows are both. Also, the initially selected inner workspace
5090bbfda8aSnia    is now the first, not the same as the outer workspace (this had
5100bbfda8aSnia    a different cause).
5110bbfda8aSnia    [Olaf "Rhialto" Seibert]
5120bbfda8aSnia
5130bbfda8aSnia1. Introduce `Scr->XineramaRoot` to store the root window that
5140bbfda8aSnia    encompasses all virtual screen rootwindows. This further reduces any
5150bbfda8aSnia    need to use RealRoot and/or CaptiveRoot.  Add a schematic drawing
5160bbfda8aSnia    that clarifies the relation between the various root-type windows.
5170bbfda8aSnia    [Olaf "Rhialto" Seibert]
5180bbfda8aSnia
5190bbfda8aSnia1. Get rid of all non-locale code and make I18N the silent default
5200bbfda8aSnia    (doesn't have to be mentioned any more).  **THIS WILL BREAK CTWM ON
5210bbfda8aSnia    OLDER (PRE-LOCALE) ENVIRONMENTS**.  I strongly recommend an upgrade
5220bbfda8aSnia    to "post-locale" standards.
5230bbfda8aSnia    [Richard Levitte]
5240bbfda8aSnia
5250bbfda8aSnia1. Enhance RandomPlacement with a displacement argument, so the
5260bbfda8aSnia    pseudo-radomness can be of displacements other than +30+30.  Here's
5270bbfda8aSnia    an example for a pretty funky displacement:
5280bbfda8aSnia
5290bbfda8aSnia        RandomPlacement "on" "-30-100"
5300bbfda8aSnia
5310bbfda8aSnia    [Richard Levitte]
5320bbfda8aSnia
5330bbfda8aSnia1. Extend the Info window with the geometry seen from the lower
5340bbfda8aSnia    right corner as well.
5350bbfda8aSnia    [Richard Levitte]
5360bbfda8aSnia
5370bbfda8aSnia1. Extend the pointer button specification for title buttons to take
5380bbfda8aSnia    modifiers.  As part of this change, the following title pointer
5390bbfda8aSnia    button specification is deprecated:
5400bbfda8aSnia
5410bbfda8aSnia        Button {j} : {function}
5420bbfda8aSnia
5430bbfda8aSnia    in favor of the following, for consistency:
5440bbfda8aSnia
5450bbfda8aSnia        Button {j} = {function}
5460bbfda8aSnia
5470bbfda8aSnia    The old way still works, but is considered bad form and will
5480bbfda8aSnia    be removed in a future version ("ctwm 4.0").
5490bbfda8aSnia    [Richard Levitte]
5500bbfda8aSnia
5510bbfda8aSnia1. Fix position of buttons in Occupy window, to make them centered.  (and
5520bbfda8aSnia    spread the remaining space evenly in 4).
5530bbfda8aSnia    [Olaf "Rhialto" Seibert]
5540bbfda8aSnia
5550bbfda8aSnia1. `TwmWindow.group` was once apparently set to 0 when a window had no
5560bbfda8aSnia    group leader but this was changed to pointing to its own window.
5570bbfda8aSnia    This resulted however in many places checking for both conditions,
5580bbfda8aSnia    and several checking only for 0 which could not occur anymore.
5590bbfda8aSnia    Changed it back to 0 (so we can now distinguish again windows that
5600bbfda8aSnia    really indicate themselves as group leader, if we wish) and this gave
5610bbfda8aSnia    rise to some simplifications.
5620bbfda8aSnia
5630bbfda8aSnia    Also, there were various loops through all TwmWindows looking for a
5640bbfda8aSnia    group leader (or a `transientfor`), I replaced them with
5650bbfda8aSnia    `GetTwmWindow()` which uses the Xlib function `XFindContext()` which
5660bbfda8aSnia    uses a hash table lookup. This should be more efficient.
5670bbfda8aSnia
5680bbfda8aSnia    When you change the occupation of a group member window, it is now
5690bbfda8aSnia    applied to the group leader (which in turn affects all members).
5700bbfda8aSnia
5710bbfda8aSnia    I tried this with ExMH, the only program that uses a real group
5720bbfda8aSnia    leader that I could find.  Iconifying the leader unmaps the members.
5730bbfda8aSnia    What should "squeezing" do?  ExMH also has an icon window (see ICCCM
5740bbfda8aSnia    4.1.9, 3rd option) which behaves weirdly; this may be a bug in ExMH
5750bbfda8aSnia    (see exmh-2.7.2/exmh.BUGS) even though fvwm somehow handles it
5760bbfda8aSnia    better.
5770bbfda8aSnia    [Olaf "Rhialto" Seibert]
5780bbfda8aSnia
5790bbfda8aSnia1. When Squeezing a window group leader, unmap the member windows, just
5800bbfda8aSnia    like happens with iconification.
5810bbfda8aSnia    [Olaf "Rhialto" Seibert]
5820bbfda8aSnia
5830bbfda8aSnia1. Simplifications c.q. de-duplications of code regarding the
5840bbfda8aSnia    WorkSpaceManager and Occupation windows. This includes coding the
5850bbfda8aSnia    layout of these windows only once instead of twice (at initialisation
5860bbfda8aSnia    and when resizing). If it's wrong now at least it should be
5870bbfda8aSnia    consistent.
5880bbfda8aSnia
5890bbfda8aSnia    When changing occupation via functions like f.movetonextworkspace,
5900bbfda8aSnia    also move complete window groups (just like when you do it via the
5910bbfda8aSnia    Occupation window).  Also fixed changing the occupation of the
5920bbfda8aSnia    Occupation window.  Documented (so far) undocumented possibility to
5930bbfda8aSnia    edit the labels of workspaces on the fly (what use this is, I'm not
5940bbfda8aSnia    sure).  Removed some unused variables.
5950bbfda8aSnia    [Olaf "Rhialto" Seibert]
5960bbfda8aSnia
5970bbfda8aSnia1. Get rid of the `USE_SESSION` and `X11R6` macros and make them the
5980bbfda8aSnia    silent default.  Also cleaned out a few references to the macro
5990bbfda8aSnia    `X11R4`, which hasn't been used for ages.  **THIS WILL BREAK CTWM ON
6000bbfda8aSnia    OLDER (PRE-X11R6) ENVIRONMENTS**.  I strongly recommend an upgrade to a
6010bbfda8aSnia    newer X11 release.
6020bbfda8aSnia    [Richard Levitte]
6030bbfda8aSnia
6040bbfda8aSnia1. Modified the random placement so a negative X displacement has the
6050bbfda8aSnia    first "random" window start near the right edge instead of the right
6060bbfda8aSnia    and a negative Y displacement has the first "random" window start
6070bbfda8aSnia    near the bottom edge instead of the top.
6080bbfda8aSnia    [Richard Levitte]
6090bbfda8aSnia
6100bbfda8aSnia
6110bbfda8aSnia
6120bbfda8aSnia## 3.7  (2005-07-19)
6130bbfda8aSnia
6140bbfda8aSnia1. Workspace context (bkctwmws.patch)
6150bbfda8aSnia
6160bbfda8aSnia    Makes it possible to bind keys specific to the workspace manager
6170bbfda8aSnia    (by Bj&ouml;rn Knutsson). Use the event context "workspace" for this.
6180bbfda8aSnia
6190bbfda8aSnia1. New keyword : AlwaysSqueezeToGravity
6200bbfda8aSnia
6210bbfda8aSnia    If it is enabled, window squeezing always follows window gravity
6220bbfda8aSnia    (instead of northward when the window has a title).
6230bbfda8aSnia    (by Rudolph T. Maceyko).
6240bbfda8aSnia
6250bbfda8aSnia1. TwmKeys and TwmVisible menus (dlctwmmenu.patch)
6260bbfda8aSnia
6270bbfda8aSnia    Adds TwmKeys (rootmenu listing all keybindings) and TWM Visible (rootmenu
6280bbfda8aSnia    showing only deiconified windows) (by Dan Lilliehorn).
6290bbfda8aSnia
6300bbfda8aSnia1. Preliminary GNOME compliance (see README.gnome and TODO.gnome)
6310bbfda8aSnia    (by Nathan Dushman).
6320bbfda8aSnia
6330bbfda8aSnia1. IconifyStyle : "normal" "mosaic" "zoomin" "zoomout" "sweep"
6340bbfda8aSnia
6350bbfda8aSnia    A few "fancy" graphical effects when you iconify windows, just for fun.
6360bbfda8aSnia
6370bbfda8aSnia1. JPEG images support : You can now use jpeg image files wherever you
6380bbfda8aSnia    can use images. Use the `jpeg:imagename` syntax.
6390bbfda8aSnia
6400bbfda8aSnia1. `f.showbackground`
6410bbfda8aSnia
6420bbfda8aSnia    Since we can now use fancy jpeg image for root backgrounds, this function
6430bbfda8aSnia    unmaps all windows in the current workspace. This is a toggle function,
6440bbfda8aSnia    if all windows are unmapped, they are all remapped. Better bind this
6450bbfda8aSnia    function in the root context.
6460bbfda8aSnia
6470bbfda8aSnia1. Preliminary support for Xinerama extention. You can define "virtual"
6480bbfda8aSnia    screens (it's better if they correspond to you actual screens). The
6490bbfda8aSnia    thing is that you can see several workspaces at the sams time, one per
6500bbfda8aSnia    virtual screen. Of course, you cannot view the same workspace (or the
6510bbfda8aSnia    same window) in 2 vscreens at the same time. The syntax is:
6520bbfda8aSnia
6530bbfda8aSnia        VirtualScreens {
6540bbfda8aSnia            "1280x1024+0+0"
6550bbfda8aSnia            "1600x1200+1280+0"
6560bbfda8aSnia        }
6570bbfda8aSnia
6580bbfda8aSnia    for 2 screens, the first one (on the left) is 1280x1024, the second one
6590bbfda8aSnia    (on the right) is 1600x1200.
6600bbfda8aSnia
6610bbfda8aSnia    This is preliminary, because this has not been extensively tested. I did
6620bbfda8aSnia    this because I have now 2 screens, but I was unable to get them working
6630bbfda8aSnia    properly, so I use only one.
6640bbfda8aSnia
6650bbfda8aSnia1. **[ At this point, Claude has stopped working on CTWM, and the project
6660bbfda8aSnia    is now in the hands of Richard Levitte <<richard@levitte.org>>. ]**
6670bbfda8aSnia
6680bbfda8aSnia1. Changed Imakefile to support a distribution target.
6690bbfda8aSnia
6700bbfda8aSnia1. Changed `:xpm:cross` to become a bit larger and have a slightly more
6710bbfda8aSnia    3D appearance, and is visible even in very dark configurations.
6720bbfda8aSnia
6730bbfda8aSnia1. Make AlwaysSqueezeToGravity to work for all windows (if no window
6740bbfda8aSnia    list is given).
6750bbfda8aSnia
6760bbfda8aSnia1. New keyword: `NoImagesInWorkSpaceManager`
6770bbfda8aSnia
6780bbfda8aSnia    If it's enabled, background images aren't displayed in the workspace
6790bbfda8aSnia    map.
6800bbfda8aSnia
6810bbfda8aSnia    This was contributed by Thomas Linden.
6820bbfda8aSnia
6830bbfda8aSnia1. New command line option: `-cfgchk`
6840bbfda8aSnia
6850bbfda8aSnia    If used, CTWM will only parse the configuration file and indicate
6860bbfda8aSnia    if it found errors or not.
6870bbfda8aSnia
6880bbfda8aSnia    This was contributed by Matthew D. Fuller.
6890bbfda8aSnia
6900bbfda8aSnia1. `DontMoveOff` patch (by Bj&ouml;rn Knutsson)
6910bbfda8aSnia
6920bbfda8aSnia    Change the behavior of `DontMoveOff` / `MoveOffResistance` so that
6930bbfda8aSnia    when you attempt to move a window off screen, it will not move at all
6940bbfda8aSnia    until it's been moved `MoveOffResistance` pixels (as before), but at
6950bbfda8aSnia    this time it will no longer "snap", but instead it will start moving
6960bbfda8aSnia    off screen. This means that you still have the old behavior of
6970bbfda8aSnia    DontMoveOff, but now with the ability to move a window off screen
6980bbfda8aSnia    less that `MoveOffResistance` pixels.
6990bbfda8aSnia
7000bbfda8aSnia1. Random placement and DontMoveOff patch (by Bj&ouml;rn Knutsson, changed)
7010bbfda8aSnia
7020bbfda8aSnia    When random placement was used, DontMoveOff wasn't honored.
7030bbfda8aSnia    This behavior has now changed so a window will be kept within
7040bbfda8aSnia    the screen when at all possible.  When the window is too
7050bbfda8aSnia    large, it's top or left edge (or both) will be placed in
7060bbfda8aSnia    coordinate 0.
7070bbfda8aSnia    This change differs a little bit from Bj&ouml;rns contribution by
7080bbfda8aSnia    not using rand() at all.
7090bbfda8aSnia
7100bbfda8aSnia1. `f.warpring` patch (by Bj&ouml;rn Knutsson)
7110bbfda8aSnia
7120bbfda8aSnia    If `IconManagerFocus` is set, there's no reason why the icon
7130bbfda8aSnia    manager should get enter and leave events.  This fixes some
7140bbfda8aSnia    disturbing in the warpring that would otherwise happen.
7150bbfda8aSnia
7160bbfda8aSnia1. `f.movetoprevworkspace`,
7170bbfda8aSnia    `f.movetonextworkspace`,
7180bbfda8aSnia    `f.movetoprevworkspaceandfollow`,
7190bbfda8aSnia    `f.movetonextworkspaceandfollow` patch (by Daniel Holmstr&ouml;m)
7200bbfda8aSnia
7210bbfda8aSnia    Makes it possible to move a window to the previous or next
7220bbfda8aSnia    workspace and, if you like, go to that workspace and focus
7230bbfda8aSnia    the moved window.
7240bbfda8aSnia
7250bbfda8aSnia1. `f.fill` "vertical" patch (by Daniel Holmstr&ouml;m)
7260bbfda8aSnia
7270bbfda8aSnia    Expands the window vertically without overlapping any other window,
7280bbfda8aSnia    much like `{ f.fill "top" f.fill "bottom" }` but with the exception
7290bbfda8aSnia    that it doesn't expand over window borders. It also sets the windows
7300bbfda8aSnia    "zoomed" to `F_FULLZOOM`, so one can toggle between this size,
7310bbfda8aSnia    original and maximized.
7320bbfda8aSnia
7330bbfda8aSnia1. `RESIZEKEEPSFOCUS` bugfix patch (by Daniel Holmstr&ouml;m)
7340bbfda8aSnia
7350bbfda8aSnia    If a window is maximized with `togglemaximize` and then restored it
7360bbfda8aSnia    might loose focus if the cursor is outside the restored window.  This
7370bbfda8aSnia    hack puts the cursor at the left-top corner of the window.
7380bbfda8aSnia
7390bbfda8aSnia1. `f.zoom` bugfix patch (by Daniel Holmstr&ouml;m)
7400bbfda8aSnia
7410bbfda8aSnia    `f.zoom` now doesn't move the window up (as it sometimes did before)
7420bbfda8aSnia
7430bbfda8aSnia1. `IgnoreTransient` patch (by Peter Berg Larsen)
7440bbfda8aSnia
7450bbfda8aSnia    New keyword with list of windows for which to ignore transients.
7460bbfda8aSnia
7470bbfda8aSnia1. Workspace switch peformance optimization (by MC)
7480bbfda8aSnia
7490bbfda8aSnia    Stops ctwm from redrawing windows that occupy all workspaces when
7500bbfda8aSnia    switching from one workspace to another.
7510bbfda8aSnia
7520bbfda8aSnia1. GTK "group leader" bugfix (by Olaf 'Rhialto' Seibert)
7530bbfda8aSnia
7540bbfda8aSnia    Makes ctwm aware of the mysterious GTK group leader windows.
7550bbfda8aSnia
7560bbfda8aSnia1. Resize cursor with non-3D-borders bugfix (by Olaf 'Rhialto' Seibert)
7570bbfda8aSnia
7580bbfda8aSnia    BorderResizeCursors now works also for top and left borders when
7590bbfda8aSnia    non-3D-borders are used.
7600bbfda8aSnia
7610bbfda8aSnia1. Memory leak bugfix (by Simon Burge)
7620bbfda8aSnia
7630bbfda8aSnia    `GetWMPropertyString` in `util.c` no longer leaks memory.
7640bbfda8aSnia
7650bbfda8aSnia1. Warpring bugfix (by Takahashi Youichirou)
7660bbfda8aSnia
7670bbfda8aSnia    Solves these two problems when warping the pointer to the
7680bbfda8aSnia    next/previous mapped window:
7690bbfda8aSnia
7700bbfda8aSnia    * Sometimes the pointer moved right too much and ended up outside the
7710bbfda8aSnia      title bar.
7720bbfda8aSnia
7730bbfda8aSnia    * When the active window was closed and the pointer ended up on the
7740bbfda8aSnia      root window, the pointer wouldn't warp until moved with the mouse.
7750bbfda8aSnia
7760bbfda8aSnia1. NoWarpToMenuTitle patch (by Julian Coleman)
7770bbfda8aSnia
7780bbfda8aSnia    Fixes the sometimes annoying feature that the cursor is warped to the
7790bbfda8aSnia    menu title if the menu won't fit on the screen below the current
7800bbfda8aSnia    pointer position.
7810bbfda8aSnia
7820bbfda8aSnia    This patch introduces a new keyword `NoWarpToMenuTitle` keyword to
7830bbfda8aSnia    turn this off.
7840bbfda8aSnia
7850bbfda8aSnia1. `Scr->workSpaceMgr.windowFont` font init bugfix (by Martin Stjernholm)
7860bbfda8aSnia
7870bbfda8aSnia    `The Scr->workSpaceMgr.windowFont` in workmgr.c is now initialized.
7880bbfda8aSnia
7890bbfda8aSnia1. Full GNU regex patch (by Claude Lecommandeur)
7900bbfda8aSnia
7910bbfda8aSnia    It is now possible to use full GNU regex for window or class names by
7920bbfda8aSnia    defining `USE_GNU_REGEX` in Imakefile. It is disabled in the default
7930bbfda8aSnia    Imakefile.
7940bbfda8aSnia
7950bbfda8aSnia1. DontToggleWorkSpaceManagerState patch (by Dan 'dl' Lilliehorn)
7960bbfda8aSnia
7970bbfda8aSnia    New keyword to turn off the feature toggling the workspace manager
7980bbfda8aSnia    state to/from map/button state when you press ctrl and the workspace
7990bbfda8aSnia    manager window is in focus.
8000bbfda8aSnia
8010bbfda8aSnia1. TWMAllIcons patch (by Dan 'dl' Lilliehorn)
8020bbfda8aSnia
8030bbfda8aSnia    Adds the TWMAllIcons menu, listing all iconified windows on all
8040bbfda8aSnia    workspaces.
8050bbfda8aSnia
8060bbfda8aSnia1. `f.changesize` patch (by Dan 'dl' Lilliehorn)
8070bbfda8aSnia
8080bbfda8aSnia    Adds the function `f.changesize` which allows you to change the size
8090bbfda8aSnia    of the focused window via menus and keybindings.
8100bbfda8aSnia
8110bbfda8aSnia    Examples:
8120bbfda8aSnia
8130bbfda8aSnia        "Down"     = c|s: all           : f.changesize "bottom +10"
8140bbfda8aSnia        "F1"       = c|s: all           : f.changesize "640x480"
8150bbfda8aSnia
8160bbfda8aSnia1. When crashing, ctwm now refers to ctwm-bugs@free.lp.se instead of
8170bbfda8aSnia    Claude.Lecommandeur@epfl.ch.
8180bbfda8aSnia    **NOTE: This is historical information: neither of these addresses
8190bbfda8aSnia    are the current contact.**
8200bbfda8aSnia
8210bbfda8aSnia1. Changed all the code to use ANSI C prototypes instead of the old
8220bbfda8aSnia    K&R style.
8230bbfda8aSnia    [Richard Levitte]
8240bbfda8aSnia
8250bbfda8aSnia1. Only use the DefaultFunction if no function was found.
8260bbfda8aSnia    [Richard Levitte]
8270bbfda8aSnia
8280bbfda8aSnia1. Correct DontMoveOff
8290bbfda8aSnia
8300bbfda8aSnia    The DontMoveOff checks when calculating random placement wasn't
8310bbfda8aSnia    satisfactory.  It ended up placing all windows that were small enough
8320bbfda8aSnia    to fit in a random place at +50+50 with no exception.  The behavior
8330bbfda8aSnia    has now been changed to only apply to very large windows (almost as
8340bbfda8aSnia    large as or larger than the screen).  At the same time, the
8350bbfda8aSnia    RandomPlacement algorithm and the DonMoveOff checks have been tweaked
8360bbfda8aSnia    to keep the title height in mind, so centering and coordinates
8370bbfda8aSnia    correspond to the realities of the rest of CTWM.
8380bbfda8aSnia    [Richard Levitte]
8390bbfda8aSnia
8400bbfda8aSnia1. Correct resizing from menu
8410bbfda8aSnia
8420bbfda8aSnia    Choosing resize from the menu when not having 3D borders moved
8430bbfda8aSnia    the target window down and right by a border width.  This was
8440bbfda8aSnia    an error in window position calculations.
8450bbfda8aSnia    [Richard Levitte]
8460bbfda8aSnia
8470bbfda8aSnia1. Enhanced info window
8480bbfda8aSnia
8490bbfda8aSnia    Added the outer geometry.  Added the 3D border width.
8500bbfda8aSnia    [Richard Levitte]
8510bbfda8aSnia
8520bbfda8aSnia1. Restart on subsequent SIGHUPs
8530bbfda8aSnia
8540bbfda8aSnia    Reworked the code that catches a SIGHUP and has ctwm restart as
8550bbfda8aSnia    a result.  The restarting code has moved from Restart() to the new
8560bbfda8aSnia    DoRestart().  Restart() now only sets a flag, and CtwmNextEvent()
8570bbfda8aSnia    has been changed to react to that flag and call DoRestart().  From
8580bbfda8aSnia    now on, CtwmNextEvent() is always used to get the next event, even
8590bbfda8aSnia    when no animations are going on.
8600bbfda8aSnia    [Richard Levitte]
8610bbfda8aSnia
8620bbfda8aSnia1. A number of VMS-related changes
8630bbfda8aSnia
8640bbfda8aSnia    DEC/HP PC is a bit picky, the X11 environment is a little bit
8650bbfda8aSnia    different, and there were some sign/unsigned conflicts and one
8660bbfda8aSnia    too large symbol (the VMS linker truncates anything beyond the
8670bbfda8aSnia    31 first characters of any symbol name), so some tweaks were
8680bbfda8aSnia    needed to get CTWM to build cleanly on VMS.
8690bbfda8aSnia    [Richard Levitte]
8700bbfda8aSnia
8710bbfda8aSnia1. Allow gcc users to build with paranoia
8720bbfda8aSnia
8730bbfda8aSnia    To make it easier to find possible problems, the Imakefile macro
8740bbfda8aSnia    GCC_PEDANTIC can be defined in Imakefile.local.
8750bbfda8aSnia    [Richard Levitte]
8760bbfda8aSnia
8770bbfda8aSnia1. Allow spaces in sound files.
8780bbfda8aSnia
8790bbfda8aSnia    The .ctwm-sounds file parser would clip sound files at the first
8800bbfda8aSnia    spaces.  That won't do for sound libraries where file names may
8810bbfda8aSnia    have spaces in them.  The parser now accepts spaces in file names,
8820bbfda8aSnia    and will trim spaces from the beginning and the end of both file
8830bbfda8aSnia    names and event tokens, allowing for a slightly more flexible
8840bbfda8aSnia    format.
8850bbfda8aSnia    [Richard Levitte]
8860bbfda8aSnia
8870bbfda8aSnia1. ctwm.spec
8880bbfda8aSnia
8890bbfda8aSnia    Added a specification file for RPM building.
8900bbfda8aSnia    [Richard Levitte]
8910bbfda8aSnia
8920bbfda8aSnia1. More info for m4
8930bbfda8aSnia
8940bbfda8aSnia    The m4 subprocess now gets the variable PIXMAP_DIRECTORY, which
8950bbfda8aSnia    is defined to the directory where the pixmaps are installed, and
8960bbfda8aSnia    the new flags IMCONV, GNOME, SOUNDS, SESSION and I18N.
8970bbfda8aSnia    [Richard Levitte]
8980bbfda8aSnia
8990bbfda8aSnia1. Document sounds
9000bbfda8aSnia
9010bbfda8aSnia    The sounds system is now documented in the man page.
9020bbfda8aSnia    [Richard Levitte]
9030bbfda8aSnia
9040bbfda8aSnia1. Build RPMs
9050bbfda8aSnia
9060bbfda8aSnia    Added the target "rpm" to build an RPM directly from a distribution
9070bbfda8aSnia    tarball.
9080bbfda8aSnia    [Richard Levitte]
9090bbfda8aSnia
9100bbfda8aSnia1. Make life easier for package builders
9110bbfda8aSnia
9120bbfda8aSnia    Added the possibility to configure where some libraries can be found
9130bbfda8aSnia    through the use of `USER_*` make variables in Imakefile.local.  Added
9140bbfda8aSnia    a lot more commentary in Imakefile.local-template.
9150bbfda8aSnia    [Richard Levitte]
9160bbfda8aSnia
9170bbfda8aSnia1. Make it easier to configure on VMS
9180bbfda8aSnia
9190bbfda8aSnia    Moved all the configuration definitions to descrip.local-template,
9200bbfda8aSnia    and instruct the users to copy that file to descrip.local and make
9210bbfda8aSnia    all needed changes there.
9220bbfda8aSnia    [Richard Levitte]
9230bbfda8aSnia
9240bbfda8aSnia1. Changed all relevant occurences of levitte@lp.se to
9250bbfda8aSnia    richard@levitte.org.
9260bbfda8aSnia    [Richard Levitte]
9270bbfda8aSnia
9280bbfda8aSnia
9290bbfda8aSnia
9300bbfda8aSnia## 3.6  (2002-08-08 or earlier)
9310bbfda8aSnia
9320bbfda8aSnia1. Fix line numbers for errors when using m4 preprocessor. Send thanks
9330bbfda8aSnia    to Josh Wilmes <<josh@hitchhiker.org>>.
9340bbfda8aSnia
9350bbfda8aSnia1. Fix the way menu entries are selected with the keyboard. Now
9360bbfda8aSnia    when you type a letter, the pointer moves to the next entry
9370bbfda8aSnia    whose first letter is this letter, but does not activate it.
9380bbfda8aSnia    The new keyword IgnoreCaseInMenuSelection, can be used to
9390bbfda8aSnia    ignore case for this delection.
9400bbfda8aSnia
9410bbfda8aSnia1. New keyword: DontSave.  Takes a window list as argument. All listed
9420bbfda8aSnia    windows won't have their characteristics saved for the session manager.
9430bbfda8aSnia    Patch from Matthias Baake <<Matthias.Baake@gmx.de>>
9440bbfda8aSnia
9450bbfda8aSnia1. Also from Matthias Baake <<Matthias.Baake@gmx.de>>:
9460bbfda8aSnia    With the new keywords BorderLeft, BorderRight, BorderBottom and
9470bbfda8aSnia    BorderTop (each of them is optional with a default value of 0 and
9480bbfda8aSnia    takes a nonnegative integer as argument) you can declare a border
9490bbfda8aSnia    "off limits" for f.move etc.. These borders act the same way as the
9500bbfda8aSnia    real borders of the screen when moving windows; you can use
9510bbfda8aSnia    f.forcemove to override them.
9520bbfda8aSnia
9530bbfda8aSnia1. Sloppy Focus added with keyword "SloppyFocus" in configuration file
9540bbfda8aSnia    (DINH V. Hoa <<dinh@enserb.fr>>).
9550bbfda8aSnia
9560bbfda8aSnia1. The keyword "ClickToFocus" has been correctly implemented
9570bbfda8aSnia    (DINH V. Hoa <<dinh@enserb.fr>>).
9580bbfda8aSnia
9590bbfda8aSnia1. The keyword "IgnoreModifier" has been added, to use this feature, you
9600bbfda8aSnia    have to add a line `IgnoreModifier { lock m2 }` in the configuration
9610bbfda8aSnia    file.  All bindings (buttons and keys) will ignore the modifiers you
9620bbfda8aSnia    specified. It is useful when you use caps locks or num locks. You
9630bbfda8aSnia    don't need IgnoreLockModifier any more with this option.  (DINH V.
9640bbfda8aSnia    Hoa <<dinh@enserb.fr>>).
9650bbfda8aSnia
9660bbfda8aSnia1. New keyword: WindowBox.  Creates a new window called a box, where
9670bbfda8aSnia    all the client windows that match the windows list are opened in,
9680bbfda8aSnia    instead of the roor window. This is useful to group small windows
9690bbfda8aSnia    in the same box (xload for instance) :
9700bbfda8aSnia
9710bbfda8aSnia        WindowBox "xloadbox" "320x100+0-0" {
9720bbfda8aSnia            "xload"
9730bbfda8aSnia        }
9740bbfda8aSnia
9750bbfda8aSnia1. New function: f.fittocontent.  Can be used only with window boxes.
9760bbfda8aSnia    The result is to have the box have the minimal size that contains
9770bbfda8aSnia    all its children windows.
9780bbfda8aSnia
9790bbfda8aSnia1. New keyword: WindowGeometries.  Used to give a default geometry to some
9800bbfda8aSnia    clients:
9810bbfda8aSnia
9820bbfda8aSnia        WindowGeometries {
9830bbfda8aSnia            "Mozilla*"       "1000x800+10+10"
9840bbfda8aSnia            "jpilot*"        "800x600-0-0"
9850bbfda8aSnia        }
9860bbfda8aSnia
9870bbfda8aSnia1. New keyword: IconMenuDontShow.  Don't show the name of these windows
9880bbfda8aSnia    in the TwmIcons menu.
9890bbfda8aSnia
9900bbfda8aSnia1. And, as usual, a few bug fixes here and there.
9910bbfda8aSnia
9920bbfda8aSnia
9930bbfda8aSnia
9940bbfda8aSnia## 3.5.2  (1999-09-10 or earlier)
9950bbfda8aSnia
9960bbfda8aSnia1. `f.moveresize`: Takes one string argument which is a geometry with the
9970bbfda8aSnia    standard X geometry syntax (e.g. `200x300+150-0`). Sets the current
9980bbfda8aSnia    window to the specified geometry. The width and height are to be given
9990bbfda8aSnia    in pixel, no base size or resize increment are used.
10000bbfda8aSnia
10010bbfda8aSnia1. AutoLower et `f.autolower`: from Kai Gro&szlig;johann
10020bbfda8aSnia    (Kai.Grossjohann@CS.Uni-Dortmund.DE). Same as autoraise but with lower.
10030bbfda8aSnia
10040bbfda8aSnia1. `WindowRingExclude`: Takes a window list as argument. All listed windows
10050bbfda8aSnia    will be excluded from the WarpRing.
10060bbfda8aSnia
10070bbfda8aSnia1. A new menu: "TwmIcons" same as "TwmWindows", but shows only iconified
10080bbfda8aSnia    windows. I did this when I got bored of having icons. Now I have no
10090bbfda8aSnia    icons and no icon managers. I use this menu to deiconify windows.
10100bbfda8aSnia    When I was young, I liked to have brightly colored icons, but now that
10110bbfda8aSnia    I am getting old(er), I prefer a bare desktop.
10120bbfda8aSnia
10130bbfda8aSnia
10140bbfda8aSnia
10150bbfda8aSnia## 3.5.1  (1999-05-02 or earlier)
10160bbfda8aSnia
10170bbfda8aSnia1. `f.initsize`: resets a window to its initial size given by the
10180bbfda8aSnia    `WM_NORMAL_HINTS` hints.
10190bbfda8aSnia
10200bbfda8aSnia1. `f.ring`: Selects a window and adds it to the WarpRing, or removes it if
10210bbfda8aSnia    it was already in the ring. This command makes f.warpring much more
10220bbfda8aSnia    useful, by making its configuration dynamic (thanks to Philip Kizer
10230bbfda8aSnia    <<pckizer@tamu.edu>>).
10240bbfda8aSnia
10250bbfda8aSnia1. f.jumpleft, f.jumpright, f.jumpup, f.jumpdown : takes one integer
10260bbfda8aSnia    argument (the step). These function are designed to be bound to keys,
10270bbfda8aSnia    they move the current window (step * {X,Y}MoveGrid) pixels in the
10280bbfda8aSnia    corresponding direction. stopping when the window encounters another
10290bbfda8aSnia    window (ala f.pack).
10300bbfda8aSnia
10310bbfda8aSnia
10320bbfda8aSnia
10330bbfda8aSnia## 3.5  (1997-11-27 or earlier)
10340bbfda8aSnia
10350bbfda8aSnia1. `f.pack [direction]`.
10360bbfda8aSnia    Where direction is one of: "right", "left", "top" or "bottom".
10370bbfda8aSnia    The current window is moved in the specified direction until it reaches
10380bbfda8aSnia    an obstacle (either another window, or the screen border). The pointer
10390bbfda8aSnia    follows the window. Examples:
10400bbfda8aSnia
10410bbfda8aSnia        "Right" = m   : window        : f.pack "right"
10420bbfda8aSnia        "Left"  = m   : window        : f.pack "left"
10430bbfda8aSnia        "Up"    = m   : window        : f.pack "top"
10440bbfda8aSnia        "Down"  = m   : window        : f.pack "bottom"
10450bbfda8aSnia
10460bbfda8aSnia1. `f.fill [direction]`.
10470bbfda8aSnia    Where direction is either : "right", "left", "top" or "bottom".
10480bbfda8aSnia    The current window is resized in the specified direction until it
10490bbfda8aSnia    reaches an obstacle (either another window, or the screen border).
10500bbfda8aSnia
10510bbfda8aSnia        "Right" = s|m   : window        : f.fill "right"
10520bbfda8aSnia        "Left"  = s|m   : window        : f.fill "left"
10530bbfda8aSnia        "Up"    = s|m   : window        : f.fill "top"
10540bbfda8aSnia        "Down"  = s|m   : window        : f.fill "bottom"
10550bbfda8aSnia
10560bbfda8aSnia1. `f.savegeometry`.
10570bbfda8aSnia    The geometry of the current window is saved. The next call to
10580bbfda8aSnia    `f.restoregeometry` will restore this window to this geometry.
10590bbfda8aSnia
10600bbfda8aSnia1. `f.restoregeometry`
10610bbfda8aSnia    Restore the current window geometry to what was saved in the last
10620bbfda8aSnia    call to `f.savegeometry`.
10630bbfda8aSnia
10640bbfda8aSnia1. ShortAllWindowsMenus
10650bbfda8aSnia    Don't show WorkSpaceManager and IconManagers in the TwmWindows and
10660bbfda8aSnia    TwmAllWindows menus.
10670bbfda8aSnia
10680bbfda8aSnia1. f.toggleworkspacemgr
10690bbfda8aSnia    Toggle the presence of the WorkSpaceManager. If it is mapped, it will
10700bbfda8aSnia    be unmapped and vice verça.
10710bbfda8aSnia
10720bbfda8aSnia1. OpenWindowTimeout number
10730bbfda8aSnia    number is an integer representing a number of second. When a window
10740bbfda8aSnia    tries to open on an unattended display, it will be automatically
10750bbfda8aSnia    mapped after this number of seconds.
10760bbfda8aSnia
10770bbfda8aSnia1. `DontSetInactive { win-list }`
10780bbfda8aSnia    These windows won't be set to InactiveState when they become invisible
10790bbfda8aSnia    due to a change workspace. This has been added because some ill-behaved
10800bbfda8aSnia    clients (Frame5) don't like this.
10810bbfda8aSnia
10820bbfda8aSnia1. `UnmapByMovingFarAway { win-list }`
10830bbfda8aSnia    These windows will be moved out of the screen instead of being
10840bbfda8aSnia    unmapped when they become invisible due to a change workspace. This has
10850bbfda8aSnia    been added because some ill-behaved clients (Frame5) don't like to be
10860bbfda8aSnia    unmapped. Use this if the previous doesn't work.
10870bbfda8aSnia
10880bbfda8aSnia1. `AutoSqueeze { win-list }`
10890bbfda8aSnia    These windows will be auto-squeezed. i.e. automatically unsqueezed
10900bbfda8aSnia    when they get focus, and squeezed when they loose it. Useful for the
10910bbfda8aSnia    workspace manager. (Note, it is not possible to AutoSqueeze icon
10920bbfda8aSnia    managers).
10930bbfda8aSnia
10940bbfda8aSnia1. `StartSqueezed  { win-list }`
10950bbfda8aSnia    These windows will first show up squeezed.
10960bbfda8aSnia
10970bbfda8aSnia1. RaiseWhenAutoUnSqueeze
10980bbfda8aSnia    Windows are raised when auto-unsqueezed.
10990bbfda8aSnia
11000bbfda8aSnia1. Now if the string "$currentworkspace" is present inside the string
11010bbfda8aSnia    argument of f.exec, it will be substituated with the current workspace
11020bbfda8aSnia    name. So it is possible to do something like :
11030bbfda8aSnia
11040bbfda8aSnia        f.exec "someclient -xrm ctwm.workspace:$currentworkspace &"
11050bbfda8aSnia
11060bbfda8aSnia    and the client will popus up in the workspace where the command was
11070bbfda8aSnia    started even if you go elsewhere before it actually shows up.
11080bbfda8aSnia
11090bbfda8aSnia1. Fixes for the VMS version. From Richard Levitte - VMS Whacker
11100bbfda8aSnia    <<levitte@lp.se>>.
11110bbfda8aSnia
11120bbfda8aSnia1. Better I18N. From Toshiya Yasukawa <<t-yasuka@dd.iij4u.or.jp>>. (Define
11130bbfda8aSnia    I18N in Imakefile to activate it).
11140bbfda8aSnia
11150bbfda8aSnia1. Better Session Management interface. Patches from Matthew McNeill
11160bbfda8aSnia    <<M.R.McNeill@durham.ac.uk>>.
11170bbfda8aSnia
11180bbfda8aSnia1. new flag : `-name`, useful only for captive Ctwm. Sets the name of the
11190bbfda8aSnia    captive root window. Useful too for next point. If no name is
11200bbfda8aSnia    specified ctwm-n is used, where n is a number automatically
11210bbfda8aSnia    generated.
11220bbfda8aSnia
11230bbfda8aSnia1. Two new client resources are now handled by Ctwm :
11240bbfda8aSnia
11250bbfda8aSnia    * `ctwm.redirect: <captive_ctwm_name>`
11260bbfda8aSnia
11270bbfda8aSnia        The new client window is open in the captive Ctwm with name
11280bbfda8aSnia        `<captive_ctwm_name>`.
11290bbfda8aSnia
11300bbfda8aSnia    * `ctwm.rootWindow: <window_id>`
11310bbfda8aSnia
11320bbfda8aSnia        The new client window is reparented into `<window_id>` (whaa!!!).
11330bbfda8aSnia        It is up to you to find any usefullness to this.
11340bbfda8aSnia
11350bbfda8aSnia1. If the string "$redirect" is present inside the string
11360bbfda8aSnia    argument of f.exec, it will be substituated with a redirection
11370bbfda8aSnia    to the current captive Ctwm if any (or nothing if in a main Ctwm).
11380bbfda8aSnia    So it is possible to do something like :
11390bbfda8aSnia
11400bbfda8aSnia        f.exec "someclient $redirect &"
11410bbfda8aSnia
11420bbfda8aSnia    and the client will popus up in the right captive Ctwm.
11430bbfda8aSnia
11440bbfda8aSnia1. New function f.hypermove. With it, you can drag and drop a window
11450bbfda8aSnia    between 2 captives Ctwm (or between a captive and the root Ctwm).
11460bbfda8aSnia
11470bbfda8aSnia1. 2 new m4 variables defined in your startup file:
11480bbfda8aSnia
11490bbfda8aSnia    * TWM_CAPTIVE
11500bbfda8aSnia        : value "Yes" if Ctwm is captive, "No" else.
11510bbfda8aSnia
11520bbfda8aSnia    * TWM_CAPTIVE_NAME
11530bbfda8aSnia        : The name of the captive Ctwm, if captive.
11540bbfda8aSnia
11550bbfda8aSnia1. `RaiseOnClick`: if present a window will be raised on top of others
11560bbfda8aSnia    when clicked on, and the ButtonPress event will be correctly
11570bbfda8aSnia    forwarded to the client that owns this window (if it asked to).
11580bbfda8aSnia
11590bbfda8aSnia        RaiseOnClickButton <n> : <Button number to use for RaiseOnClick>
11600bbfda8aSnia
11610bbfda8aSnia1. `IgnoreLockModifier`: if present, all bindings (buttons and keys) will
11620bbfda8aSnia    ignore the LockMask. Useful if you often use caps lock, and don't
11630bbfda8aSnia    want to define twice all your bindings.
11640bbfda8aSnia
11650bbfda8aSnia1. AutoFocusToTransients
11660bbfda8aSnia    Transient windows get focus automatically when created.  Useful with
11670bbfda8aSnia    programs that have keyboard shortcuts that pop up windows.  (patch
11680bbfda8aSnia    from Kai Grossjohann <<grossjohann@charly.cs.uni-dortmund.de>>).
11690bbfda8aSnia
11700bbfda8aSnia1. PackNewWindows
11710bbfda8aSnia    Use f.movepack algorithm instead of f.move when opening a new window.
11720bbfda8aSnia
11730bbfda8aSnia
11740bbfda8aSnia
11750bbfda8aSnia## 3.4  (1996-09-14  or earlier)
11760bbfda8aSnia
11770bbfda8aSnia1. 2 new keywords: XMoveGrid and YMoveGrid with an integer parameter.
11780bbfda8aSnia    Constrains window moves so that its x and y coordinates are multiple
11790bbfda8aSnia    of the specified values. Useful to align windows easily.
11800bbfda8aSnia
11810bbfda8aSnia1. New function: f.deleteordestroy. First tries to delete the window
11820bbfda8aSnia    (send it `WM_DELETE_WINDOW` message), or kills it, if the client
11830bbfda8aSnia    doesn't accept such message.
11840bbfda8aSnia
11850bbfda8aSnia1. New function : f.squeeze. It squeezes a window to a null vertical
11860bbfda8aSnia    size. Works only for windows with either a title, or a 3D border
11870bbfda8aSnia    (in order to have something left on the screen). If the window is
11880bbfda8aSnia    already squeezed, it is unsqueezed.
11890bbfda8aSnia
11900bbfda8aSnia1. New built-in title button: `:xpm:vbar` (a vertical bar).
11910bbfda8aSnia
11920bbfda8aSnia1. CenterFeedbackWindow : The moving and resizing information window
11930bbfda8aSnia    is centered in the middle of the screen instead of the top left
11940bbfda8aSnia    corner.
11950bbfda8aSnia
11960bbfda8aSnia1. 2 New options:
11970bbfda8aSnia
11980bbfda8aSnia    * -version
11990bbfda8aSnia        : Ctwm just prints its version number and exits.
12000bbfda8aSnia    * -info
12010bbfda8aSnia        : Ctwm prints its detailed version and compile time options.
12020bbfda8aSnia
12030bbfda8aSnia1. WarpToDefaultMenuEntry (Useful only with StayUpMenus) : When using
12040bbfda8aSnia    StayUpMenus, and a menu does stays up, the pointer is warped to
12050bbfda8aSnia    the default entry of the menu. Try it. Can emulate double click.
12060bbfda8aSnia    For example :
12070bbfda8aSnia
12080bbfda8aSnia        Button2 =       : icon          : f.menu "iconmenu"
12090bbfda8aSnia        menu "iconmenu" {
12100bbfda8aSnia            "Actions"           f.title
12110bbfda8aSnia            ""                  f.separator
12120bbfda8aSnia            "*Restore"          f.iconify
12130bbfda8aSnia            "Move"              f.move
12140bbfda8aSnia            "Squeeze"           f.squeeze
12150bbfda8aSnia            "Occupy ..."        f.occupy
12160bbfda8aSnia            "Occupy All"        f.occupyall
12170bbfda8aSnia            ""                  f.separator
12180bbfda8aSnia            "Delete"            f.deleteordestroy
12190bbfda8aSnia        }
12200bbfda8aSnia
12210bbfda8aSnia    will result in DoubleButton2 on an icon uniconifies it.
12220bbfda8aSnia
12230bbfda8aSnia1. When you popup a menu that is constrained by the border of the screen
12240bbfda8aSnia    the pointer is warped to the first entry. (Avoid exiting ctwm when you
12250bbfda8aSnia    just want to refresh the screen).
12260bbfda8aSnia
12270bbfda8aSnia1. When compiled with `X11R6` defined, ctwm supports ICE session
12280bbfda8aSnia    management.  (the code has been stolen directly from the X11R6 twm,
12290bbfda8aSnia    it has not been thoroughly tested, humm... actually, not tested at
12300bbfda8aSnia    all).
12310bbfda8aSnia
12320bbfda8aSnia1. SchrinkIconTitles: A la Motif schrinking of icon titles, and expansion
12330bbfda8aSnia    when mouse is inside icon.
12340bbfda8aSnia    (Yes, it's misspelt.  Yes, the misspelling is accepted.)
12350bbfda8aSnia
12360bbfda8aSnia1. AutoRaiseIcons: Icons are raised when the cursor enters it. Useful
12370bbfda8aSnia    with SchrinkIconTitles.
12380bbfda8aSnia
12390bbfda8aSnia
12400bbfda8aSnia1. XPM files for title bars or buttons may include the following symbolic
12410bbfda8aSnia    colors. These symbolic colors allow the possiblity of using the same
12420bbfda8aSnia    3d XPM file with different colors for different titlebars.
12430bbfda8aSnia
12440bbfda8aSnia    Background
12450bbfda8aSnia    : The main color to be used by the title bar
12460bbfda8aSnia
12470bbfda8aSnia    HiShadow
12480bbfda8aSnia    :   The color to be used as the highlight
12490bbfda8aSnia
12500bbfda8aSnia    LoShadow
12510bbfda8aSnia    :   The color to be used as the dark shadow.
12520bbfda8aSnia
12530bbfda8aSnia    Using these colors, I have built some 3d XPM files for various
12540bbfda8aSnia    titlebars while still keeping the ability to change titlebar colors.
12550bbfda8aSnia    [Matt Wormley <<mwormley@airship.ardfa.calpoly.edu>>]
12560bbfda8aSnia
12570bbfda8aSnia1. Added a keyword to the .ctwmrc file: "UseSunkTitlePixmap".  This
12580bbfda8aSnia    makes it so the shadows are inversed for title pixmaps when focus is
12590bbfda8aSnia    lost.  This is similar to having the SunkFocusWindowTitle, but it
12600bbfda8aSnia    makes your 3d XPM sink instead of just the whole bar.
12610bbfda8aSnia    [Matt Wormley <<mwormley@airship.ardfa.calpoly.edu>>]
12620bbfda8aSnia
12630bbfda8aSnia1. Added 3 new builtin 3d buttons for "Iconify", "Resize" and "Box". They
12640bbfda8aSnia    are available with the :xpm: identifier in the .ctwmrc file.
12650bbfda8aSnia    [Matt Wormley <<mwormley@airship.ardfa.calpoly.edu>>]
12660bbfda8aSnia
12670bbfda8aSnia1. Added another keyword to the .ctwmrc file: "WorkSpaceFont". This
12680bbfda8aSnia    allows you to specify the font to use in the workspace manager.
12690bbfda8aSnia    [Matt Wormley <<mwormley@airship.ardfa.calpoly.edu>>]
12700bbfda8aSnia
12710bbfda8aSnia1. 8 new xpm pixmaps for buttons, title highlite, etc... :
12720bbfda8aSnia    3dcircle.xpm 3ddimple.xpm 3ddot.xpm 3dfeet.xpm 3dleopard.xpm 3dpie.xpm
12730bbfda8aSnia    3dpyramid.xpm 3dslant.xpm
12740bbfda8aSnia    [Matt Wormley <<mwormley@airship.ardfa.calpoly.edu>>]
12750bbfda8aSnia
12760bbfda8aSnia1. 2 new functions : f.forwmapiconmgr and f.backmapiconmgr, similar to
12770bbfda8aSnia    f.forwiconmgr and f.backiconmgr but only stops on mapped windows.
12780bbfda8aSnia    [Scott Bolte <<scottb@cirque.moneng.mei.com>>]
12790bbfda8aSnia
12800bbfda8aSnia1. Last minute: PixmapDirectory now accept a colon separated list of
12810bbfda8aSnia    directories.
12820bbfda8aSnia
12830bbfda8aSnia1. If you use m4, ctwm now defines `TWM_VERSION` which is the version in
12840bbfda8aSnia    the form of floating point (e.g. 3.4).
12850bbfda8aSnia
12860bbfda8aSnia1. I forgot to tell that IconRegion has now 3 more optionnal parameters
12870bbfda8aSnia    iconjust, iconregjust and iconregalign. That can be used to give
12880bbfda8aSnia    special values to IconJustification, IconRegionJustification and
12890bbfda8aSnia    IconRegionAlignement for this IconRegion. The new syntax is :
12900bbfda8aSnia
12910bbfda8aSnia        IconRegion geomstring vgrav hgrav gridwidth gridheight \
12920bbfda8aSnia            [iconjust] [iconregjust] [iconregalign] [{ win-list }]
12930bbfda8aSnia
12940bbfda8aSnia
12950bbfda8aSnia
12960bbfda8aSnia## 3.3  (pre-1995-02-11 or 1995-05-04)
12970bbfda8aSnia
12980bbfda8aSnia1. Better 3D borders with SqueezeTitle.
12990bbfda8aSnia
13000bbfda8aSnia1. New keywords : BorderShadowDepth, TitleButtonShadowDepth,
13010bbfda8aSnia    TitleShadowDepth, MenuShadowDepth and IconManagerShadowDepth. You can
13020bbfda8aSnia    modify the depth of the 3D shadow of all the objects.
13030bbfda8aSnia
13040bbfda8aSnia1. f.altcontext. a new context named "alter" is introduced. The next key
13050bbfda8aSnia    or button event after a call to f.altcontext will be interpreted using
13060bbfda8aSnia    the alternate context. To define bindings in the alternate context, use
13070bbfda8aSnia    the keyword alter in the context field of the binding command.
13080bbfda8aSnia
13090bbfda8aSnia1. f.altkeymap. Up to 5 alternate modifiers (a1 to a5). The next key
13100bbfda8aSnia    or button event after a call to f.altkeymap will be interpreted with
13110bbfda8aSnia    this alternate modifies set. To define bindings with an alternate
13120bbfda8aSnia    modifier, use the keyword 'a' followed by the number of the modifier in
13130bbfda8aSnia    the modifier field of the binding command. Only the root, window, icon
13140bbfda8aSnia    and iconmgr context are allowed when an alternate modified is used.
13150bbfda8aSnia
13160bbfda8aSnia1. Default menu entry : If a menu entry name begins with a "\*" (star),
13170bbfda8aSnia    this star won't be displayed and the corresponding entry will be the
13180bbfda8aSnia    default entry for this menu. When a menu has a default entry and is used
13190bbfda8aSnia    as a pull-right in another menu, this default entry action will be executed
13200bbfda8aSnia    automatically when this submenu is selected without being displayed.
13210bbfda8aSnia    It's hard to explain, but easy to understand.
13220bbfda8aSnia
13230bbfda8aSnia1. New keywords:
13240bbfda8aSnia
13250bbfda8aSnia    `ReallyMoveInWorkspaceManager`
13260bbfda8aSnia    : tells ctwm to move the actual window when the user is moving the
13270bbfda8aSnia      small windows in the WorkSpaceMap window.
13280bbfda8aSnia
13290bbfda8aSnia    `AlwaysShowWindowWhenMovingFromWorkspaceManager`
13300bbfda8aSnia    : tells ctwm to always map the actual window during the move,
13310bbfda8aSnia      regardless of whether it crosses the current workspace or not. The
13320bbfda8aSnia      Shift key toggles this behaviour.
13330bbfda8aSnia
13340bbfda8aSnia1. 4 new functions:
13350bbfda8aSnia
13360bbfda8aSnia    * f.rightworkspace
13370bbfda8aSnia    * f.leftworkspace
13380bbfda8aSnia    * f.upworkspace
13390bbfda8aSnia    * f.downworkspace
13400bbfda8aSnia
13410bbfda8aSnia    Do what you expect.
13420bbfda8aSnia
13430bbfda8aSnia1. The function f.raiseicons (from Rickard Westman <<ricwe@ida.liu.se>>).
13440bbfda8aSnia    Raises all icons.
13450bbfda8aSnia
13460bbfda8aSnia1. A new keyword: IconRegionAlignement. Like IconRegionJustification
13470bbfda8aSnia    but align vertically. The parameter is "top", "center", "bottom" or
13480bbfda8aSnia    "border".
13490bbfda8aSnia
13500bbfda8aSnia1. f.addtoworkspace, f.removefromworkspace and f.toggleoccupation. (idea
13510bbfda8aSnia    from Kai Grossjohann <<grossjoh@linus.informatik.uni-dortmund.de>>). They
13520bbfda8aSnia    take one argument that is a workspace name. When applied to a window,
13530bbfda8aSnia    they add to, remove from, or toggle the occupation of this window in
13540bbfda8aSnia    this workspace.
13550bbfda8aSnia
13560bbfda8aSnia1. AlwaysOnTop (from Stefan Monnier <<monnier@di.epfl.ch>>). Accept a list
13570bbfda8aSnia    of windows as argument. Ctwm will do it's best to keep these windows
13580bbfda8aSnia    on top of the screen. Not perfect.
13590bbfda8aSnia
13600bbfda8aSnia1. Some moving stuff.
13610bbfda8aSnia
13620bbfda8aSnia    f.movepack
13630bbfda8aSnia    : is like f.move, but it tries to avoid overlapping of windows on the
13640bbfda8aSnia      screen.  When the moving window begin to overlap with another
13650bbfda8aSnia      window, the move is stopped.  If you go too far over the other
13660bbfda8aSnia      window (more than MovePackResistance pixels), the move is resumed
13670bbfda8aSnia      and the moving window can overlap with the other window. Useful to
13680bbfda8aSnia      pack windows closely.
13690bbfda8aSnia
13700bbfda8aSnia    f.movepush
13710bbfda8aSnia    : Instead of stopping the move, tries to push the other window to
13720bbfda8aSnia      avoid overlap.  f.movepush is here mainly because I found it
13730bbfda8aSnia      amusing to do it. Is is not very useful.
13740bbfda8aSnia
13750bbfda8aSnia1. `TitleJustification`: Takes one string argument : "left", "center", or
13760bbfda8aSnia    "right". Tells ctwm how to justify the window titles.
13770bbfda8aSnia
13780bbfda8aSnia1. `UseThreeDWMap`: Tells ctwm to use 3D decorations for the small windows
13790bbfda8aSnia    in the workspace map.
13800bbfda8aSnia
13810bbfda8aSnia1. `ReverseCurrentWorkspace`: Tells ctwm to reverse the background and
13820bbfda8aSnia    foreground colors in the small windows in the workspace map for the
13830bbfda8aSnia    current workspace.
13840bbfda8aSnia
13850bbfda8aSnia1. `DontWarpCursorInWMap`: Tells ctwm not to warp the cursor to the
13860bbfda8aSnia    corresponding actual window when you click in a small window in the
13870bbfda8aSnia    workspace map.
13880bbfda8aSnia
13890bbfda8aSnia1. If there is neither MapWindowBackground, nor MapWindowForeground in the
13900bbfda8aSnia    config file,the window title colors are used for the small windows in the
13910bbfda8aSnia    workspace map.
13920bbfda8aSnia
13930bbfda8aSnia
13940bbfda8aSnia
13950bbfda8aSnia## 3.2  (1994-11-13  or earlier)
13960bbfda8aSnia
13970bbfda8aSnia1. I have considerably reworked the focus handling. So I have probably
13980bbfda8aSnia    introduced some problems.
13990bbfda8aSnia
14000bbfda8aSnia1. New keyword: `NoIconManagerFocus`. Tells ctwm not to set focus on windows
14010bbfda8aSnia    when the pointer is in an IconManager.
14020bbfda8aSnia
14030bbfda8aSnia1. new option: `-W`. Tells ctwm not to display any welcome when starting.
14040bbfda8aSnia    To be used on slow machines.
14050bbfda8aSnia
14060bbfda8aSnia1. New keyword: `StayUpMenus`. Tells ctwm to use stayup menus. These
14070bbfda8aSnia    menus will stay on the screen when ButtonUp, if either the menu has
14080bbfda8aSnia    not yet been entered by the pointer, or the current item is a
14090bbfda8aSnia    f.title.
14100bbfda8aSnia
14110bbfda8aSnia1. Now ctwm tries to use welcome.xwd instead of welcome.xpm if it exists.
14120bbfda8aSnia    On my machine the ctwm process size went from 2.3MB to 1MB when changing
14130bbfda8aSnia    this. Xpm is very greedy.
14140bbfda8aSnia
14150bbfda8aSnia1. New keyword: `IconRegionJustification`. Tells ctwm how to justify
14160bbfda8aSnia    icons inside their place in the IconRegion. This keyword needs a
14170bbfda8aSnia    string value. The acceptable values are : "left", "center", "right"
14180bbfda8aSnia    and "border".  If "border" is given, the justification will be "left"
14190bbfda8aSnia    if the icon region gravity is "west" and "right" if the icon region
14200bbfda8aSnia    gravity is "east".  (clever, isn't it)
14210bbfda8aSnia
14220bbfda8aSnia1. If you specify the `-f filename` option, ctwm will first try to load
14230bbfda8aSnia    filename.scrnum, where scrnum is the screen number. If it fails, it
14240bbfda8aSnia    will try to load filename as usual.
14250bbfda8aSnia
14260bbfda8aSnia1. TitleButtons can now have different bindings for buttons with the
14270bbfda8aSnia    following syntax :
14280bbfda8aSnia
14290bbfda8aSnia        LeftTitleButton ":xpm:menu" {
14300bbfda8aSnia            Button1 : f.menu "WindowMenu"
14310bbfda8aSnia            Button2 : f.zoom
14320bbfda8aSnia            Button3 : f.hzoom
14330bbfda8aSnia        }
14340bbfda8aSnia
14350bbfda8aSnia    The old syntax is of course accepted.
14360bbfda8aSnia    Patch from Stefan Monnier <<Stefan_Monnier@NIAGARA.NECTAR.CS.CMU.EDU>>.
14370bbfda8aSnia
14380bbfda8aSnia1. A lot of new animated title buttons : `%xpm:menu-up`, `%xpm:menu-down`,
14390bbfda8aSnia    `%xpm:resize-out-top`, `%xpm:resize-in-top`, `%xpm:resize-out-bot`,
14400bbfda8aSnia    `%xpm:resize-in-bot`, `%xpm:maze-out`, `%xpm:maze-in`, `%xpm:zoom-out`,
14410bbfda8aSnia    `%xpm:zoom-in` and `%xpm:zoom-inout`. From Stefan Monnier
14420bbfda8aSnia    <<Stefan_Monnier@NIAGARA.NECTAR.CS.CMU.EDU>>.
14430bbfda8aSnia
14440bbfda8aSnia1. 2 new builtin menus: TwmAllWindows and TwmWorkspaces. Guess what they
14450bbfda8aSnia    do.
14460bbfda8aSnia
14470bbfda8aSnia1. You can now bind menus to keys. When a menu is visible, you can
14480bbfda8aSnia    navigate in it with the arrow keys. "Down" or space goes down, "Up"
14490bbfda8aSnia    goes up, "Left" pops down the menu, and "Right" activates the current
14500bbfda8aSnia    entry. The first letter of an entry name activates this entry (the first
14510bbfda8aSnia    one if several entries match). If the first letter is ~ then
14520bbfda8aSnia    Meta-the-second-letter activates it, if this first letter is ^ then
14530bbfda8aSnia    Control-the-second-letter activates it, and if this first letter is space,
14540bbfda8aSnia    then the second letter activates it.
14550bbfda8aSnia
14560bbfda8aSnia1. Support for VMS. Patch from Peter Chang <<peterc@v2.ph.man.ac.uk>>.
14570bbfda8aSnia    Completely untested. If you have problems to build on VMS ask
14580bbfda8aSnia    Peter Chang.
14590bbfda8aSnia
14600bbfda8aSnia1. New keyword: `MoveOffResistance`.  Idea borrowed to fvwm.  If you set
14610bbfda8aSnia    MoveOffResistance to a positive (n) value, dontmoveoff will only
14620bbfda8aSnia    prevent you from going off the edge if you're within n pixels off the
14630bbfda8aSnia    edge. If you go further, dontmoveoff gives up and lets you go as far
14640bbfda8aSnia    as you wish.  f.forcemove still allows you to totally ignore
14650bbfda8aSnia    dontmoveoff. A negative value puts you back into "never moveoff" mode
14660bbfda8aSnia    (it's the default).
14670bbfda8aSnia
14680bbfda8aSnia1. The files `background[1-7].xpm` and `background9.xpm` have been
14690bbfda8aSnia    removed from the distribution. Someone tells me that they are
14700bbfda8aSnia    copyrighted. I tried to contact him in order to join his copyright,
14710bbfda8aSnia    but his mail address is invalid.  <<desktop-textures@avernus.com>>.
14720bbfda8aSnia    Most of these backgrounds and much more can be obtained in the AIcons
14730bbfda8aSnia    package on ftp.x.org. Particularly in cl-bgnd/Textures: bg_blu.gif,
14740bbfda8aSnia    concrete.gif, marble1.gif, sharks.gif bg_grn.gif, granite_dark.gif,
14750bbfda8aSnia    marble2.gif, snails.gif, coarse.gif, granite_light.gif and pool.gif.
14760bbfda8aSnia
14770bbfda8aSnia1. New keyword: `BorderResizeCursors` with no parameter. If used ctwm
14780bbfda8aSnia    will put nice cursors when the cursor in on the window borders.  To
14790bbfda8aSnia    be used when you have bound a button to f.resize in the frame
14800bbfda8aSnia    context.
14810bbfda8aSnia
14820bbfda8aSnia1. The xpm files are now installed in `$(TWMDIR)/images` instead of
14830bbfda8aSnia    `$(TWMDIR)`.
14840bbfda8aSnia
14850bbfda8aSnia1. Due to the many problems I had with signals being slightly different
14860bbfda8aSnia    on different systems, I rewrote the animation handling without using
14870bbfda8aSnia    signals anymore. I hope it is more portable. The old code is still
14880bbfda8aSnia    available if you define USE_SIGNALS.
14890bbfda8aSnia
14900bbfda8aSnia
14910bbfda8aSnia
14920bbfda8aSnia## 3.1  (1994-01-28)
14930bbfda8aSnia
14940bbfda8aSnia1. Ctwm is moving. You can now have animated images for icons, root
14950bbfda8aSnia    backgrounds, title buttons and focus window title image. This adds
14960bbfda8aSnia    one new keyword: `AnimationSpeed`, and 4 new function:
14970bbfda8aSnia    `f.startanimation`, `f.stopanimation`, `f.speedupanimation` and
14980bbfda8aSnia    `f.slowdownanimation`. An image name is considered an animation if it
14990bbfda8aSnia    contains the percent (%) character. In which case ctwm replaces this
15000bbfda8aSnia    character by numbers starting a 1, and will play an animation with
15010bbfda8aSnia    all these images. There is only 2 examples : ball%.xpm suitable for
15020bbfda8aSnia    icons, and supman%.xbm suitable for title highlight.  Another example
15030bbfda8aSnia    (much more beautiful) can be found in the Mosaic distribution. There
15040bbfda8aSnia    is also one built-in animation for title buttons : `%xpm:resize`, for
15050bbfda8aSnia    example :
15060bbfda8aSnia
15070bbfda8aSnia        RightTitleButton                "%xpm:resize" = f.resize
15080bbfda8aSnia
15090bbfda8aSnia1. Add the WMgrButtonShadowDepth keyword to control the depth of the
15100bbfda8aSnia    shadow of the workspace manager buttons.
15110bbfda8aSnia
15120bbfda8aSnia1. The RandomPlacement command has now an optionnal parameter:
15130bbfda8aSnia    "on", "off", "all" or "unmapped".
15140bbfda8aSnia
15150bbfda8aSnia1. Three new keywords : ChangeWorkspaceFunction, IconifyFunction and
15160bbfda8aSnia    DeIconifyFunction, the argument is the name of a function that is
15170bbfda8aSnia    executed whenever the corresponding event occurs. Useful for sounds :
15180bbfda8aSnia
15190bbfda8aSnia        ChangeWorkspaceFunction !"cat /users/lecom/sounds/bom.au 2>/dev/null 1>/dev/audio &"
15200bbfda8aSnia
15210bbfda8aSnia1. A new keyword : IconJustification with 1 argument, either: "left",
15220bbfda8aSnia    "center" or "right". Tells ctwm how to justify the icon image on the
15230bbfda8aSnia    icon title (if any).
15240bbfda8aSnia
15250bbfda8aSnia1. flex is now supported.
15260bbfda8aSnia
15270bbfda8aSnia1. The IconRegion keyword now support an optionnal winlist argument.
15280bbfda8aSnia    Thanks to Mike Hoswell <<hoswell@ncar.ucar.edu>> for adding this.
15290bbfda8aSnia
15300bbfda8aSnia1. f.separator now works (does something) with 3D menus.
15310bbfda8aSnia
15320bbfda8aSnia1. The format xwd is now accepted for images (icons, background, ...). You
15330bbfda8aSnia    have to prefix the image file name with xwd: to use this format.
15340bbfda8aSnia    If the first character of an image file name is |, the filename is
15350bbfda8aSnia    supposed to be a command that output a xwd image, and it is executed.
15360bbfda8aSnia    For example, to use a gif file, use :
15370bbfda8aSnia
15380bbfda8aSnia        "|(giftoppm | pnmtoxwd) < /users/lecom/images/2010.gif"
15390bbfda8aSnia
15400bbfda8aSnia1. A new keyword: MaxIconTitleWidth with an integer argument. If an icon
15410bbfda8aSnia    title is larger than this integer, it is truncated.
15420bbfda8aSnia
15430bbfda8aSnia1. A sound extension is supported. To use it you have to define
15440bbfda8aSnia    `USE_SOUND` in the Imakefile (not defined by default). In order to
15450bbfda8aSnia    use this option you need the rplay package. The documentation for
15460bbfda8aSnia    this extension is in sounds.doc. Warning: this extension is not
15470bbfda8aSnia    mine, and I don't use it, so don't expect a good support if you have
15480bbfda8aSnia    problems with it.
15490bbfda8aSnia
15500bbfda8aSnia1. A new keyword : NoBorder with a window list argument. These windows
15510bbfda8aSnia    won't have borders. Thanks to J.P. Albers van der Linden
15520bbfda8aSnia    <<albers@pasichva.serigate.philips.nl>> for this patch.
15530bbfda8aSnia
15540bbfda8aSnia1. Ctwm has a new option selectable with the flag `-w`, if used, ctwm
15550bbfda8aSnia    will not take over the whole screen(s), instead it will create a new
15560bbfda8aSnia    window and manage it. The `-w` has an optional argument which is a
15570bbfda8aSnia    window id of an existing window, if specified, ctwm will try to
15580bbfda8aSnia    manage this window.  This is totally useless, but I like it. The
15590bbfda8aSnia    `f.adoptwindow` function can be used to capture an existing window
15600bbfda8aSnia    into such a captive ctwm. A possible use of such mode can be to test
15610bbfda8aSnia    new configuration file without restarting ctwm.
15620bbfda8aSnia
15630bbfda8aSnia1. Now the welcome file can be of any type understood by ctwm. So it must
15640bbfda8aSnia    be prefixed with its type. The default is `xpm:welcome.xpm` if the
15650bbfda8aSnia    XPM option is compiled in, else it is `xwd:welcome.xwd`. You use for
15660bbfda8aSnia    example:
15670bbfda8aSnia
15680bbfda8aSnia        setenv CTWM_WELCOME_FILE "|(giftoppm | pnmtoxwd) < ~/images/2010.gif"
15690bbfda8aSnia
15700bbfda8aSnia1. You can now have 3D window borders with the keyword: UseThreeDBorders.
15710bbfda8aSnia    In which case the 3D border width is given with: ThreeDBorderWidth.
15720bbfda8aSnia    The default value is 6.  The color is BorderColor for the window that
15730bbfda8aSnia    has focus and BorderTileBackground for all others windows. Note: The
15740bbfda8aSnia    3D borders do not merge very well with squeezed titles, as the top
15750bbfda8aSnia    edge of the window where the title is missing does not get a 3d
15760bbfda8aSnia    border.
15770bbfda8aSnia
15780bbfda8aSnia1. Now, WindowRing can be specified without argument, in this case all
15790bbfda8aSnia    the windows are in the ring. (Alec Wolman
15800bbfda8aSnia    <<wolman@blue.cs.washington.edu>>)
15810bbfda8aSnia
15820bbfda8aSnia1. New keyword: WarpRingOnScreen, if present, tells ctwm that f.warpring
15830bbfda8aSnia    should warp pointer only to windows visible in the current workspace.
15840bbfda8aSnia
15850bbfda8aSnia
15860bbfda8aSnia
15870bbfda8aSnia## 3.0  (1993-07-21)
15880bbfda8aSnia
15890bbfda8aSnia1. A few bugs fixes.
15900bbfda8aSnia
15910bbfda8aSnia1. A 3D presentation of menus, titles and IconManagers can be selected
15920bbfda8aSnia    with UseThreeDMenus, UseThreeDTitles and UseThreeDIconManagers. If
15930bbfda8aSnia    UseThreeDTitles is set the default values for TitleButtonBorderWidth,
15940bbfda8aSnia    FramePadding, TitlePadding, ButtonIndent are set to 0 pixels. I am
15950bbfda8aSnia    not that proud of the appearance of 3D titles but 3D menus look nice.
15960bbfda8aSnia    If UseThreeDTitles is set the flag SunkFocusWindowTitle tells ctwm to
15970bbfda8aSnia    sunk the title of the window that the focus. 3D features look ugly on
15980bbfda8aSnia    monochrome displays, but I have no such display for testing purpose.
15990bbfda8aSnia    If a monochrome display owner can have a look, he is welcome. The
16000bbfda8aSnia    contrast of the clear and dark shadows can be tuned via the
16010bbfda8aSnia    ClearShadowContrast and DarkShadowContrast parameters. These
16020bbfda8aSnia    parameters are percentages.  The formulas used are :
16030bbfda8aSnia
16040bbfda8aSnia        clear.{RGB} = (65535 - color.{RGB}) * (ClearShadowContrast / 100)
16050bbfda8aSnia        dark.{RGB}  = color.{RGB} * ((100 - DarkShadowContrast) / 100)
16060bbfda8aSnia
16070bbfda8aSnia    If you choose UseThreeDIconManagers, icon titles are also 3D. By
16080bbfda8aSnia    defaults new colors are allocated for shadows, but you can specify
16090bbfda8aSnia    BeNiceToColormap to inform ctwm to use stipple instead of new colors,
16100bbfda8aSnia    the effect is less beautiful, but acceptable.
16110bbfda8aSnia
16120bbfda8aSnia
16130bbfda8aSnia1. A new keyword: NoIconTitle with an optionnal window list.
16140bbfda8aSnia
16150bbfda8aSnia1. A new keyword: TransientOnTop with an integer parameter. This
16160bbfda8aSnia    paramater is a percentage and tells ctwm to put transient (and
16170bbfda8aSnia    non-group leader) windows always on top of their leader only if their
16180bbfda8aSnia    surface is smaller than this fraction of the surface of their leader.
16190bbfda8aSnia
16200bbfda8aSnia1. OpaqueMove and OpaqueResize now accept an optionnal list of windows
16210bbfda8aSnia    as parameter. They also have their NoOpaqueMove and NoOpaqueResize
16220bbfda8aSnia    counterpart with the same syntax.
16230bbfda8aSnia
16240bbfda8aSnia1. Two new keywords: OpaqueMoveThreshold and OpaqueResizeThreshold with
16250bbfda8aSnia    one integer parameter. The parameter represent a percentage of the
16260bbfda8aSnia    screen surface. If Opaque{Move,Resize} is active for a window, (via
16270bbfda8aSnia    point 4) the opaque {move, resize} is done only if the window surface
16280bbfda8aSnia    is smaller than this percentage of the screen. The default is large
16290bbfda8aSnia    enough.
16300bbfda8aSnia
16310bbfda8aSnia1. Startup is optionally piped into `m4` before ctwm parse it, ypu can
16320bbfda8aSnia    now have a common startup file for ctwm, tvtwm, etc ... It can be
16330bbfda8aSnia    disabled at compile time by undefining USEM4 in Imakefile. It can be
16340bbfda8aSnia    disabled at execution time by using the `-n` option. Take care if you
16350bbfda8aSnia    have backquotes (`) in your .ctwmrc file. This character is special
16360bbfda8aSnia    to m4. In that case, put something like :
16370bbfda8aSnia
16380bbfda8aSnia        changequote(,)
16390bbfda8aSnia        changequote(``,'')
16400bbfda8aSnia
16410bbfda8aSnia    at the beginning of your .ctwmrc.
16420bbfda8aSnia
16430bbfda8aSnia1. The startup looks nicer (I think). If you use XPM and the file
16440bbfda8aSnia    welcome.xpm is present in your PixmapDirectory, it is displayed while
16450bbfda8aSnia    the startup is in progress. Unfortunately, the PixmapDirectory is
16460bbfda8aSnia    known only after the .ctwmrc is loaded, and this loading is a large
16470bbfda8aSnia    part of the startup time. So you can define the environnement
16480bbfda8aSnia    variable `CTWM_WELCOME_FILE` to point to an XPM file, in which case
16490bbfda8aSnia    it will be displayed very quickly.
16500bbfda8aSnia
16510bbfda8aSnia1. A new function: f.separator, valid only in menus. The effect is to add
16520bbfda8aSnia    a line separator between the previous and the following entry.  The
16530bbfda8aSnia    name selector part in the menu is not used. f.separator works only
16540bbfda8aSnia    with conventionnal menus, not with 3D menus.
16550bbfda8aSnia
16560bbfda8aSnia1. Thanks to <<bret@essex.ac.uk>>, the man page is integrated with the
16570bbfda8aSnia    original twm one, and is of a much better quality.
16580bbfda8aSnia
16590bbfda8aSnia1. While moving a window, the position is displayed in a similar way as
16600bbfda8aSnia    the size when resizing.
16610bbfda8aSnia
16620bbfda8aSnia1. The info window now display the compile time options of the current
16630bbfda8aSnia    version of ctwm.
16640bbfda8aSnia
16650bbfda8aSnia1. You can now specify xpm pixmap title buttons and TitleHighlight.
16660bbfda8aSnia    There is 5 built-in scalable pixmap for buttons, `:xpm:menu`,
16670bbfda8aSnia    `:xpm:dot`, `:xpm:resize`, `:xpm:zoom` and `:xpm:bar`.
16680bbfda8aSnia
16690bbfda8aSnia1. Ctwm now restarts when receiving signal SIGHUP, so to restart it from
16700bbfda8aSnia    a shell, use `kill -1 the_ctwm_pid`.
16710bbfda8aSnia
16720bbfda8aSnia1. 2 New keywords: WMgrVertButtonIndent and WMgrHorizButtonIndent with 1
16730bbfda8aSnia    parameter, specifying the vertical and horizontal space beetween
16740bbfda8aSnia    buttons in the workspace manager.
16750bbfda8aSnia
16760bbfda8aSnia1. Some more xpm files given. Among them several backgrounds.
16770bbfda8aSnia
16780bbfda8aSnia1. Ctwm set the property `WM_WORKSPACELIST` (type STRING) on the root
16790bbfda8aSnia    window, this property contains the null separated list of all the
16800bbfda8aSnia    workspaces. Now the `WM_OCCUPATION` property on each window is a null
16810bbfda8aSnia    separated list instead of a space separated list, it was wrong since
16820bbfda8aSnia    workspace names can contain spaces. So, the first time you will start
16830bbfda8aSnia    the this version, your windows will show up anywhere.
16840bbfda8aSnia
16850bbfda8aSnia1. A new library libctwm.a and an include file ctwm.h are given. The
16860bbfda8aSnia    library contains functions for an external program to have some
16870bbfda8aSnia    control over ctwm. The functions are:
16880bbfda8aSnia
16890bbfda8aSnia        Bool    CtwmIsRunning                   ();
16900bbfda8aSnia        char    **CtwmWorkspaces                ();
16910bbfda8aSnia        char    *CtwmCurrentWorkspace           ();
16920bbfda8aSnia        int     CtwmChangeWorkspace             ();
16930bbfda8aSnia        char    **CtwmCurrentOccupation         ();
16940bbfda8aSnia        int     CtwmSetOccupation               ();
16950bbfda8aSnia        int     CtwmAddToCurrentWorkspace       ();
16960bbfda8aSnia
16970bbfda8aSnia    There is no documentation. A program demolib.c is given to help.
16980bbfda8aSnia
16990bbfda8aSnia
17000bbfda8aSnia
17010bbfda8aSnia## 2.2  (1993-02-05)
17020bbfda8aSnia
17030bbfda8aSnia1. Bugs:
17040bbfda8aSnia
17050bbfda8aSnia    * Redraw small windows when icon name changes.
17060bbfda8aSnia    * Kill window from the title bar menu
17070bbfda8aSnia    * Partial geometry on Workspace manager can core dump.
17080bbfda8aSnia    * AutoRaise and tiny windows in the Workspace Map.
17090bbfda8aSnia
17100bbfda8aSnia1. Transient windows and non group leader windows are now always on the
17110bbfda8aSnia    top of their leader.
17120bbfda8aSnia
17130bbfda8aSnia1. When an icon name changes, the icon itself changes automatically
17140bbfda8aSnia    according the Icons list in your .ctwmrc. This is very useful for
17150bbfda8aSnia    clients that have several states. For example xrn or some X mail
17160bbfda8aSnia    readers can have two differents icons for new mail (news) / no new
17170bbfda8aSnia    mail (news).
17180bbfda8aSnia
17190bbfda8aSnia1. A new keyword: TransientHasOccupation has been added for people
17200bbfda8aSnia    annoyed by the fact that since ctwm-2.1, transient-for non
17210bbfda8aSnia    group-leader windows have the same occupation that their leader. If
17220bbfda8aSnia    you specify this, these windows have their own occupation.
17230bbfda8aSnia
17240bbfda8aSnia1. A new keyword: AutoOccupy. If specified, the occupation of a client is
17250bbfda8aSnia    changed automatically when it's name or icon name changes, according
17260bbfda8aSnia    to the Occupy list in your .ctwmrc. For example a mail reader can
17270bbfda8aSnia    popup instantly in the current workspace when mail arrives.
17280bbfda8aSnia
17290bbfda8aSnia1. A new keyword: DontPaintRootWindow. If specified, the root window is
17300bbfda8aSnia    not painted, whatever you told in the Workspaces specification. This
17310bbfda8aSnia    is useful to have pixmaps in the Workspace Map but not on the root
17320bbfda8aSnia    window.
17330bbfda8aSnia
17340bbfda8aSnia1. You can use XPM pixmaps for your background root window. Use
17350bbfda8aSnia    xpm:filename instead of @filename. The latter is still accepted. Of
17360bbfda8aSnia    course if your XPM file has transparent parts, there are not
17370bbfda8aSnia    transparent on the root window, i.e. you dont see the electron gun
17380bbfda8aSnia    through it.
17390bbfda8aSnia
17400bbfda8aSnia1. XPMIconDirectory is replaced by PixmapDirectory. (XPMIconDirectory is
17410bbfda8aSnia    still accepted).
17420bbfda8aSnia
17430bbfda8aSnia1. You can now use colored root background pixmap and icons in many
17440bbfda8aSnia    formats.  Ctwm use the imconv library from the San Diego
17450bbfda8aSnia    Supercomputer Center.  To use these formats, specify: "im:filename"
17460bbfda8aSnia    for the pixmap name.
17470bbfda8aSnia
17480bbfda8aSnia    * The following format are supported :
17490bbfda8aSnia
17500bbfda8aSnia        bmp
17510bbfda8aSnia        :    Microsoft Windows bitmap image file
17520bbfda8aSnia
17530bbfda8aSnia        cur
17540bbfda8aSnia        :    Microsoft Windows cursor image file
17550bbfda8aSnia
17560bbfda8aSnia        eps
17570bbfda8aSnia        :    Adobe Encapsulated PostScript file
17580bbfda8aSnia
17590bbfda8aSnia        gif
17600bbfda8aSnia        :    Compuserve Graphics image file
17610bbfda8aSnia
17620bbfda8aSnia        hdf
17630bbfda8aSnia        :    Hierarchical Data File
17640bbfda8aSnia
17650bbfda8aSnia        ico
17660bbfda8aSnia        :    Microsoft Windows icon image file
17670bbfda8aSnia
17680bbfda8aSnia        icon
17690bbfda8aSnia        :    Sun Icon and Cursor file
17700bbfda8aSnia
17710bbfda8aSnia        iff
17720bbfda8aSnia        :    Sun TAAC Image File Format
17730bbfda8aSnia
17740bbfda8aSnia        mpnt
17750bbfda8aSnia        :    Apple Macintosh MacPaint file
17760bbfda8aSnia
17770bbfda8aSnia        pbm
17780bbfda8aSnia        :    PBM Portable Bit Map file
17790bbfda8aSnia
17800bbfda8aSnia        pcx
17810bbfda8aSnia        :    ZSoft IBM PC Paintbrush file
17820bbfda8aSnia
17830bbfda8aSnia        pgm
17840bbfda8aSnia        :    PBM Portable Gray Map file
17850bbfda8aSnia
17860bbfda8aSnia        pic
17870bbfda8aSnia        :    PIXAR picture file
17880bbfda8aSnia
17890bbfda8aSnia        pict
17900bbfda8aSnia        :    Apple Macintosh QuickDraw/PICT file
17910bbfda8aSnia
17920bbfda8aSnia        pix
17930bbfda8aSnia        :    Alias image file
17940bbfda8aSnia
17950bbfda8aSnia        ppm
17960bbfda8aSnia        :    PBM Portable Pixel Map file
17970bbfda8aSnia
17980bbfda8aSnia        pnm
17990bbfda8aSnia        :    PBM Portable aNy Map file
18000bbfda8aSnia
18010bbfda8aSnia        ps
18020bbfda8aSnia        :    Adobe PostScript file
18030bbfda8aSnia
18040bbfda8aSnia        ras
18050bbfda8aSnia        :    Sun Rasterfile
18060bbfda8aSnia
18070bbfda8aSnia        rgb
18080bbfda8aSnia        :    SGI RGB image file
18090bbfda8aSnia
18100bbfda8aSnia        rla
18110bbfda8aSnia        :    Wavefront raster image file
18120bbfda8aSnia
18130bbfda8aSnia        rle
18140bbfda8aSnia        :    Utah Run length encoded image file
18150bbfda8aSnia
18160bbfda8aSnia        synu
18170bbfda8aSnia        :    SDSC Synu image file
18180bbfda8aSnia
18190bbfda8aSnia        tga
18200bbfda8aSnia        :    Truevision Targa image file
18210bbfda8aSnia
18220bbfda8aSnia        tiff
18230bbfda8aSnia        :    Tagged image file
18240bbfda8aSnia
18250bbfda8aSnia        viff
18260bbfda8aSnia        :    Khoros Visualization image file
18270bbfda8aSnia
18280bbfda8aSnia        x
18290bbfda8aSnia        :    AVS X image file
18300bbfda8aSnia
18310bbfda8aSnia        xbm
18320bbfda8aSnia        :    X11 bitmap file
18330bbfda8aSnia
18340bbfda8aSnia        xwd
18350bbfda8aSnia        :    X Window System window dump image file
18360bbfda8aSnia
18370bbfda8aSnia    * You can find the imconv package at `ftp.sdsc.edu`. in the directory
18380bbfda8aSnia      `/pub/sdsc/graphics/imtools`.
18390bbfda8aSnia
18400bbfda8aSnia    * If `(width > screenwidth / 2) || (height > screenheight / 2)` the
18410bbfda8aSnia      image is centered else it is tiled.
18420bbfda8aSnia
18430bbfda8aSnia    * If you don't have the libim library or don't want to use it,
18440bbfda8aSnia      undefine IMCONV in Imakefile.
18450bbfda8aSnia
18460bbfda8aSnia    But take care :
18470bbfda8aSnia
18480bbfda8aSnia    * It is very memory consuming (on the server side).
18490bbfda8aSnia    * It is very color cells consuming.
18500bbfda8aSnia    * The ctwm executable is much larger executable.
18510bbfda8aSnia    * Startup is much much slower (but not the workspace swap).
18520bbfda8aSnia    * It works only for 8 planes pixmaps and 8 planes screens. If there
18530bbfda8aSnia      is an imconv specialist somewhere that can generelize this, he is
18540bbfda8aSnia      welcome.
18550bbfda8aSnia
18560bbfda8aSnia1. Two new functions : f.nextworkspace, f.prevworkspace.
18570bbfda8aSnia
18580bbfda8aSnia1. Xpm examples files are now automatically installed in `$(TWMDIR)`
18590bbfda8aSnia
18600bbfda8aSnia1. An example of .ctwmrc is given, showing some aspect of ctwm
18610bbfda8aSnia    (example.ctwmrc). It is not a complete .ctwmrc, only the ctwm
18620bbfda8aSnia    aspects are shown.
18630bbfda8aSnia
18640bbfda8aSnia1. A new file PROBLEMS has been added that lists some problems you
18650bbfda8aSnia    can have while using ctwm and some solutions.
18660bbfda8aSnia
18670bbfda8aSniaIs there any good pixmap designer out there, that i can add beautiful
18680bbfda8aSniaicons and background to the distribution. Don't use too many colors,
18690bbfda8aSniatry to use the same few already used in the example icons.
18700bbfda8aSnia
18710bbfda8aSnia
18720bbfda8aSnia
18730bbfda8aSnia## 2.1  (1992-12-22)
18740bbfda8aSnia
18750bbfda8aSnia1. Cleanup code to make gcc happy.
18760bbfda8aSnia
18770bbfda8aSnia1. Bugs fixed
18780bbfda8aSnia
18790bbfda8aSnia    * IconMaskHint honored.
18800bbfda8aSnia
18810bbfda8aSnia    * Workaround a bug on HP7xx/8.07 servers for RaiseLower in Map
18820bbfda8aSnia        window. The stacking order in the MapWindow was not correct on
18830bbfda8aSnia        those servers. Use
18840bbfda8aSnia
18850bbfda8aSnia            EXTRA_DEFINES = -DBUGGY_HP700_SERVER
18860bbfda8aSnia
18870bbfda8aSnia        in your Imakefile if you plan to use this server. It doesn't
18880bbfda8aSnia        break on others servers.
18890bbfda8aSnia
18900bbfda8aSnia    * No longer core dump if MapWindowCurrentWorkSpace or
18910bbfda8aSnia        MapWindowDefaultWorkSpace are specified before WorkSpaces in
18920bbfda8aSnia        .ctwmrc
18930bbfda8aSnia
18940bbfda8aSnia    * Small windows handling in the WorkspaceMap window works even if the
18950bbfda8aSnia        Workspace Manager window has a title (that was not the case with
18960bbfda8aSnia        ctwm-2.0).
18970bbfda8aSnia
18980bbfda8aSnia    * ForceIcon works for Xpm icons.
18990bbfda8aSnia
19000bbfda8aSnia    * Occupation of "transient for" window is correct.
19010bbfda8aSnia
19020bbfda8aSnia    * RestartPreviousState necessary to keep previous window occupation
19030bbfda8aSnia        on restart.
19040bbfda8aSnia
19050bbfda8aSnia    * If a window dies while Occupy Window is mapped, the Occupy Window
19060bbfda8aSnia        is correctly unmapped.
19070bbfda8aSnia
19080bbfda8aSnia1. Ctwm now maintains the `WM_CURRENTWORKSPACE` property on the root
19090bbfda8aSnia    window and `WM_OCCUPATION` on every windows. They mean what you
19100bbfda8aSnia    think.  These properties are string properties and are in clear text
19110bbfda8aSnia    instead of an obscure mask. If an external application changes these
19120bbfda8aSnia    properties ctwm respond with the correct actions, changing the
19130bbfda8aSnia    current workspace or the occupation of a window. I give a small
19140bbfda8aSnia    example (gtw.c). An application can manage its occupation and it is
19150bbfda8aSnia    even possible to write an external workspace manager. It is of course
19160bbfda8aSnia    not ICCCM compliant because ICCCM says nothing on multiple
19170bbfda8aSnia    workspaces. The special names "all" and "current" can be used. And
19180bbfda8aSnia    you can specify relative occupations if the workspace names list
19190bbfda8aSnia    begin with a "+" or "-" (ex: "+current" adds a window to the current
19200bbfda8aSnia    workspace).
19210bbfda8aSnia
19220bbfda8aSnia1. 3 new functions:
19230bbfda8aSnia
19240bbfda8aSnia    `f.pin`
19250bbfda8aSnia    :   Pin/Unpin a menu on the screen. Only usable inside a root menu.
19260bbfda8aSnia
19270bbfda8aSnia    `f.vanish`
19280bbfda8aSnia    :   Remove a window from the current workspace.  Works only if the
19290bbfda8aSnia        window occupies at least one other workspace.
19300bbfda8aSnia
19310bbfda8aSnia    `f.warphere "win-name"`
19320bbfda8aSnia    :   Adds the window whose name matches win-name to the current
19330bbfda8aSnia        workspace and warps the pointer to it.
19340bbfda8aSnia
19350bbfda8aSnia1. And a new keyword: `NoShowOccupyAll`.  Tells ctwm not to show
19360bbfda8aSnia    OccupyAll windows in the WorkSpaceMap window.
19370bbfda8aSnia
19380bbfda8aSnia1. All window names can now be specified as (shell-like) regular expressions.
19390bbfda8aSnia
19400bbfda8aSnia
19410bbfda8aSnia
19420bbfda8aSnia## 2.0  (date unknown)
19430bbfda8aSnia
19440bbfda8aSnia1. A few bugs fixed:
19450bbfda8aSnia
19460bbfda8aSnia    * Resize at window creation with button2 works.
19470bbfda8aSnia
19480bbfda8aSnia    * Some others i don't remember.
19490bbfda8aSnia
19500bbfda8aSnia1. Better support of monochrome displays: video inverse instead of 3d
19510bbfda8aSnia    buttons.
19520bbfda8aSnia
19530bbfda8aSnia1. WorkSpaceManager and Occupy Window are now resizable.  Don't forget to
19540bbfda8aSnia    verify you have a powerful server before resizing the workspace
19550bbfda8aSnia    manager with OpaqueResize set.
19560bbfda8aSnia
19570bbfda8aSnia1. X11R4 support with Imakefile.X11R4 (i didn't try so tell me).
19580bbfda8aSnia
19590bbfda8aSnia1. The visibility of the workspace manager is now consistant with the
19600bbfda8aSnia    visibility of the icon managers.  This mean that by default the
19610bbfda8aSnia    workspace manager is *NOT* visible at startup.  Use the
19620bbfda8aSnia    ShowWorkSpaceManager to make it visible at startup.
19630bbfda8aSnia
19640bbfda8aSnia1. Two new functions: f.showworkspacemgr and f.hideworkspacemgr have been
19650bbfda8aSnia    added. They do what you imagine.
19660bbfda8aSnia
19670bbfda8aSnia1. And now, the cherry on the cake. The workspace manager has now 2
19680bbfda8aSnia    states, the button state (the usual one) and the map state (the new
19690bbfda8aSnia    one). In the map state  the buttons  are replaced  by windows
19700bbfda8aSnia    displaying  a synthetic view of the corresponding workspaces.  All
19710bbfda8aSnia    the non-iconified windows of the workspace are shown as small windows
19720bbfda8aSnia    with the  icon name  written in it.  It looks like  the virtual
19730bbfda8aSnia    screen of  [t]vtwm, but, of course, much nicer.
19740bbfda8aSnia
19750bbfda8aSnia    * In this state, you can modify directly the occupation of your
19760bbfda8aSnia        windows by manipulating these little windows.
19770bbfda8aSnia
19780bbfda8aSnia        * Button1 move a window from a workspace to another.
19790bbfda8aSnia        * Button2 copy a window from a workspace to another.
19800bbfda8aSnia        * Button3 remove a window from a workspace.
19810bbfda8aSnia
19820bbfda8aSnia    * Clicking in the "root" of these windows warps you to the
19830bbfda8aSnia        corresponding workspace.  Clicking and releasing Button1 or
19840bbfda8aSnia        Button2 quickly in a small window go to the corresponding
19850bbfda8aSnia        workspace and warps the pointer to the corresponding window.
19860bbfda8aSnia
19870bbfda8aSnia    * The Control-Key (Press and Release) in workspace manager toggles
19880bbfda8aSnia        the buttons and map state.
19890bbfda8aSnia
19900bbfda8aSnia    * Four variables and Three functions manipulates this:
19910bbfda8aSnia
19920bbfda8aSnia        * StartInMapState: The map state is selected at startup, default is
19930bbfda8aSnia          buttons state.
19940bbfda8aSnia
19950bbfda8aSnia        * MapWindowCurrentWorkSpace: The aspect of the current workspace in
19960bbfda8aSnia          the map window.
19970bbfda8aSnia
19980bbfda8aSnia        * MapWindowDefaultWorkSpace:  Specify the aspect of the non-current
19990bbfda8aSnia          workspaces in the map window.
20000bbfda8aSnia
20010bbfda8aSnia        * MapWindowBackground:
20020bbfda8aSnia        * MapWindowForeground:  Specify the aspect of the small  windows in
20030bbfda8aSnia          the map window on a per-client basis.
20040bbfda8aSnia
20050bbfda8aSnia        * f.setbuttonsstate: You can guess.
20060bbfda8aSnia
20070bbfda8aSnia        * f.setmapstate: You can guess.
20080bbfda8aSnia
20090bbfda8aSnia        * f.togglestate: You can guess.
20100bbfda8aSnia
20110bbfda8aSnia1. AutoRaise with RaiseDelay.  Thanks to Johan Vromans <<jv@mh.nl>> who
20120bbfda8aSnia    gave me this patch.  I think Warren Jessop <<whj@cs.washington.edu>>
20130bbfda8aSnia    wrote it for twm.
20140bbfda8aSnia
20150bbfda8aSnia
20160bbfda8aSnia
20170bbfda8aSnia## 1.3  (1992-09-16)
20180bbfda8aSnia
20190bbfda8aSnia1. Many bugs fixed:
20200bbfda8aSnia
20210bbfda8aSnia    * Partial geometry in the WorkSpaceManagerGeometry statement no
20220bbfda8aSnia        longer cause ctwm to core dump.
20230bbfda8aSnia
20240bbfda8aSnia    * The occupy window name now is "Occupy Window" instead of "Occupy WIndow"
20250bbfda8aSnia        a typo on the uppercase I in window.
20260bbfda8aSnia
20270bbfda8aSnia    * Several types problems that make good compilers to issue warnings.
20280bbfda8aSnia
20290bbfda8aSnia    * The icons of the WorkSpaceManager and Occupy Window windows now
20300bbfda8aSnia        behave correctly with ButtonPress.
20310bbfda8aSnia
20320bbfda8aSnia    * UnknownIcon can now have Xpm icons specified.
20330bbfda8aSnia
20340bbfda8aSnia    * f.showiconmgr no longer map empty icon managers.
20350bbfda8aSnia
20360bbfda8aSnia    * The ctwm process is smaller (even smaller than twm).
20370bbfda8aSnia
20380bbfda8aSnia1. Add the Occupy command in .ctwmrc, you can now specify at startup
20390bbfda8aSnia    which window occupy which workspace.  Example:
20400bbfda8aSnia
20410bbfda8aSnia        Occupy {
20420bbfda8aSnia                      "xload"  {"all"}
20430bbfda8aSnia            Window    "xterm"  {"here" "there" "elsewhere"}
20440bbfda8aSnia                      "xv"     {"images"}
20450bbfda8aSnia            WorkSpace "images" {"xloadimage"}
20460bbfda8aSnia        }
20470bbfda8aSnia
20480bbfda8aSnia
20490bbfda8aSnia
20500bbfda8aSnia## 1.2  (date unknown)
20510bbfda8aSnia
20520bbfda8aSnia1. You can now directly edit workspace names in their buttons. only
20530bbfda8aSnia    printable characters, delete and backspace keys are honored.
20540bbfda8aSnia
20550bbfda8aSnia1. Ctwm now handle shaped colored icons in XPM format. This added the
20560bbfda8aSnia    variable XPMIconDirectory, and slightly modified the syntax of the
20570bbfda8aSnia    Icons command. The XPM icon file names should be prefixed by the
20580bbfda8aSnia    character '@' to distinguished them from the ordinary bitmap files.
20590bbfda8aSnia
20600bbfda8aSnia    Example:
20610bbfda8aSnia
20620bbfda8aSnia        XPMIconDirectory  "/usr/lib/X11/X11/XPM"
20630bbfda8aSnia
20640bbfda8aSnia        Icons {
20650bbfda8aSnia            "Axe"    "@xedit.xpm"
20660bbfda8aSnia            "xterm"  "@xterm.xpm"
20670bbfda8aSnia            "xrn"    "@xrn.xpm"
20680bbfda8aSnia            "HPterm" "@hpterm.xpm"
20690bbfda8aSnia            "XAlarm" "@datebook.xpm"
20700bbfda8aSnia            "Xman"   "@xman.xpm"
20710bbfda8aSnia        }
20720bbfda8aSnia
20730bbfda8aSnia    These above xpm pixmap are given.
20740bbfda8aSnia
20750bbfda8aSnia1. Many bugs fixed:
20760bbfda8aSnia
20770bbfda8aSnia    * Icon regions now works.
20780bbfda8aSnia    * The absence of ShowIconManager is taken into account.
20790bbfda8aSnia    * The `-iconic` flag is honored.
20800bbfda8aSnia    * The `-xrm 'ctwm.workspace'` works as expected.
20810bbfda8aSnia    * I think that f.warpto[to|ring] works correctly i.e warps.  Also to
20820bbfda8aSnia        the correct workspace if the destination window doesn't occupy
20830bbfda8aSnia        the current workspace.
20840bbfda8aSnia    * A few minor bugs fixed.
20850bbfda8aSnia
20860bbfda8aSnia
20870bbfda8aSnia
20880bbfda8aSnia## 1.1  (1992-06-24 or 26)
20890bbfda8aSnia
20900bbfda8aSnia1. Correction of a few bugs
20910bbfda8aSnia
20920bbfda8aSnia1. Add the OpaqueResize flag: similar to OpaqueMove, but redraw the
20930bbfda8aSnia    window you are resizing at each motion event. Extremely resource
20940bbfda8aSnia    consuming, but beautiful with fast server/client/network.
20950bbfda8aSnia
20960bbfda8aSnia1. Now if you don't specify any background/foreground/pixmap indication
20970bbfda8aSnia    for the root window, ctwm leave it alone so you can have your own
20980bbfda8aSnia    root background pixmap.
20990bbfda8aSnia
21000bbfda8aSnia1. You can now specify on the command line a list of workspaces in which a
21010bbfda8aSnia    new client opens.  The syntax is:
21020bbfda8aSnia
21030bbfda8aSnia        whatever_client -xrm 'ctwm.workspace: name1 name2 ... namen'
21040bbfda8aSnia
21050bbfda8aSnia        or
21060bbfda8aSnia
21070bbfda8aSnia        whatever_client -xrm 'ctwm.workspace: all'
21080bbfda8aSnia
21090bbfda8aSnia    where 'name1', 'name2', ..., 'namen' are names of workspaces and
21100bbfda8aSnia    'all' refers to all workspaces.  Example:
21110bbfda8aSnia
21120bbfda8aSnia        xload -xrm 'ctwm.workspace: all'
21130bbfda8aSnia
21140bbfda8aSnia1. Add the  OccupyAll command in .ctwmrc, you can now specify at startup
21150bbfda8aSnia    a list of windows that occupy all the workspaces.  Example:
21160bbfda8aSnia
21170bbfda8aSnia        OccupyAll {
21180bbfda8aSnia            "xload"
21190bbfda8aSnia            "xconsole"
21200bbfda8aSnia            "xbiff"
21210bbfda8aSnia        }
21220bbfda8aSnia
21230bbfda8aSnia1. Add the f.gotoworkspace function. It goes the workspace specified by
21240bbfda8aSnia    its name.  Example:
21250bbfda8aSnia
21260bbfda8aSnia        "F1"      =    : root           : f.gotoworkspace "cognac"
21270bbfda8aSnia
21280bbfda8aSnia
21290bbfda8aSnia
21300bbfda8aSnia## 1.0  (after 1992-04-22)
21310bbfda8aSnia
21320bbfda8aSnia
21330bbfda8aSnia
21340bbfda8aSnia
21350bbfda8aSnia
21360bbfda8aSnia{>>
21370bbfda8aSnia vim:expandtab:ft=markdown:formatoptions-=q:formatoptions+=2
21380bbfda8aSnia<<}
2139