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