Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[xsrc/trunk]: xsrc/external/mit/ctwm/dist Merge ctwm-4-0-3



details:   https://anonhg.NetBSD.org/xsrc/rev/3dd2bb5684a0
branches:  trunk
changeset: 10665:3dd2bb5684a0
user:      nia <nia%NetBSD.org@localhost>
date:      Sun Apr 11 10:11:57 2021 +0000

description:
Merge ctwm-4-0-3

# CTWM Change History

## 4.0.3  (2019-07-21)

### Bugfixes

1. Perform various manipulations and overrides of `WM_HINTS` property
   when it gets reset during runtime, like we do when initially adopting
   the window.  The most visible effect of this was in windows that don't
   give a focus hint (which we override to give focus), but then reset
   `WM_HINTS` later and still don't give us a hint, where we wound up not
   re-overriding previously.  Reported for `xvile` by Wayne Cuddy.

1. The font height estimation changes in 4.0.0 were not applied correctly
   when UseThreeDMenus was set, leading to some odd vertical misalignment
   of the text with some fonts.  Reported by Wayne Cuddy.

1. A failure in OTP consistency checks caused by the handling of
   transients of fullscreen windows has been fixed.  This manifested as
   failures in OtpCheckConsistencyVS() assertions.



## 4.0.2  (2018-08-25)

### Backward-Incompatible Changes And Removed Features

1. The `UseThreeDIconBorders` config var has been removed.  It came in
   silently and undocumented in 3.4 and has never done anything.

1. The attempts to use DNS lookups for setting the `HOSTNAME` `m4` variable
   have been removed; it is now just a duplicate of `CLIENTHOST`.

### New Features

1. The EWMH `_NET_WM_NAME` property is now supported, and used for the
   window name in place of the ICCCM `WM_NAME` when set.  By default, we
   also accept `UTF8_STRING` encoded `WM_NAME` as a result of this
   change; see below for var to restore historical strictness.

1. The EWMH `_NET_WM_ICON_NAME` property is now supported, and used for
   the icon name in place of the ICCCM `WM_ICON_NAME` when set.  Similar
   comments as above apply to the encodings.

1. Support has been added for `CTWM_WM_NAME` and `CTWM_WM_ICON_NAME`
   properties, which will override any window/icon names otherwise
   specified.  This may be useful for applications that set unhelpful
   names themselves, or for manually adjusting labelling.  These
   properties can be set from the command line via `xprop`; as an
   example, `xprop -f CTWM_WM_NAME 8u -set CTWM_WM_NAME "awesome
   windowsauce"`.  See `xprop(1)` manual for details; the `s`, `t`, and
   `u` field type specifiers will all work.

1. When no icon name is set for a window, we've always used the window
   name for the icon name as well.  But that only happened the first time
   the window name is set; after that, the icon name is stuck at the
   first name.  It now updates along with the window name, if no icon
   name is set.

1. All icon manager windows will now have the `TwmIconManager` class set
   on them, so they can be addressed en mass by other config like
   `NoTitle` by that class name.

### New Config Options

1. Added `DontNameDecorations` config option to disable setting names on
   the X windows we create for window decoration (added in 4.0.0).  These
   have been reported to confuse `xwit`, and might do the same for other
   tools that don't expect to find them on non-end-app windows.  Reported
   by Frank Steiner.

1. Added `StrictWinNameEncoding` config option to enable historical
   behavior, where we're reject invalid property encoding for window
   naming properties (like a `UTF8_STRING` encoded `WM_NAME`).

### Bugfixes

1. Fix up broken parsing of `IconifyStyle "sweep"`.  Bug was introduced
   in 4.0.0.

1. When multiple X Screens are used, building the temporary file for m4
   definitions could fail with an error from `mkstemp()`.  Reported by
   Manfred Knick.

1. When multiple X Screens are used, the OTP code didn't recognize the
   difference, and kept everything in one list.  This caused the internal
   consistency checks to trip when it didn't find all the windows it
   expected.  Reported by Terran Melconian.

1. When `ReverseCurrentWorkspace` is set, mapping windows not on the
   current workspace (e.g., via restarting ctwm, or creating new windows
   with the desktop set via EWMH properties) could segfault.  Reported by
   Sean McAllister.

1. Fix some edge cases where we'd fight other apps' focus handling.  When
   an application moved focus itself to an unrelated (in X terms) window,
   our processing would often race and re-move the focus to the root
   ourselves.  This was visible with e.g. sub-windows in Firefox for
   context menu and urlbar dropdown, which would flash on and then
   disappear.

1. When creating a new transient window of an existing full-screen
   window, the OTP stacking may cause it to be stuck below the main
   window due to the special handling of full-screen focused windows in
   EWMH.  It should now be forced to the top.

1. Building ctwm since 4.0.0 in certain locales could misorder functions
   in the lookup table, leading to troubles parsing the config file.
   You'd get some loud "INTERNAL ERROR" lines from ctwm when running it
   if this were the case.  Now fixed.  Reported by Richard Levitte.



## 4.0.1  (2017-06-05)

### User Visible Changes

1. Fix a bug where fullscreen windows could sometimes wind up incorrectly
   stacked due to a focus-handling issue.  This would lead to ctwm
   aborting with an assertion failure in the OTP code, like `Assertion
   failed: (PRI(owl) >= priority), function OtpCheckConsistencyVS`.

1. Fix an edge case (probably only triggerable via manual work with EWMH
   messages) where a window could wind up resized down to nothing.

### Internals

1. Systems with the ctfconvert/ctfmerge tools available will now use them
   to include CTF info in the compiled binary.  This allows more detailed
   inspection of the running process via DTrace (e.g., the layout of the
   structs).

1. The initial rumblings of a Developer's Manual are now in
   `doc/devman/`.  This isn't tied into the main build, and there's no
   real reason it ever will be.  Things of interest to _users_ should
   wind up in the main manual; this should only have things of interest
   to people _developing_ ctwm.



## 4.0.0  (2017-05-24)

### Build System Change

The old `imake` build system has been replaced by a new structure using
`cmake`.  This makes [cmake](https://cmake.org/) a requirement to build
ctwm.  See the `README.md` file for how to run it.

A fallback minimal build system is available in the `minibuild/`
directory for environments that can't use the main one.  This is likely
to need some manual adjustment on many systems, and the main build is
strongly preferred.  But it should suffice to get a runnable binary if
all else fails.

### Platform Support

Support for many non-current platforms has been dropped.  In particular,
remnants of special-case VMS support have been removed.  Many old and now
dead Unix variants have been similarly desupported.  Generally, platforms
without support for C99 and mid-2000's POSIX are increasingly less likely
to work.

### Backward-Incompatible Changes And Removed Features

1. Argument parsing has been rewritten to use `getopt_long()`.  All
   `-long` options are now `--long` instead.  `-version`, `-info`,
   `-cfgchk`, and `-display` are still accepted if they're the first
   option given, to make it easier for scripts to simultaneously support
   before/after versions; this shim will be removed in a later version.

1. Support for the SDSC imconv library, and the IMCONV options related to
    it, has been removed.  The last release is almost 20 years old, and
    doesn't support any remotely recent platforms.

1. The USE_SIGNALS code to use signal-driven animations has been removed.
    It's been non-default since 3.2 (more than 20 years ago), and not
    documented anywhere but in the code and a comment in this file.

1. The USE_GNOME option and code for GNOME1 support has been removed.

1. The old-style title button action specifications (without an `=` in
   them) deprecated since 3.8 are no longer supported.  Just replacing
   the "`:`" with "`= :`" should suffice to make it work right in 3.8+.
   If you need to share configs with older versions, you'll have to
   conditionalize the syntax with m4 or some other preprocessing.

1. The `f.cut` (and `^` alias for it), `f.cutfile`, and `f.file`
   functions have been removed.  These functions for messing with the
   clipboard were never visibly documented, and came into the manpage in
   3.0 already commented-out and saying they were obsolete.

1. The `f.source` function has been removed.  It's never done anything
   (except beep) as far back as 1.1 and has never been documented.

1. The `f.movemenu` function has been removed.  It was added silently in
   2.1, has never done anything, and has never been documented.

1. The `NoVersion` config parameter has been removed.  It's been
   undocumented, obsoleted, and done absolutely nothing since 1.1.

1. Support for non-flex versions of lex(1) is deprecated, and will take
   some manual work to build.  Note that release tarballs include
   prebuild lexers, so this probably only matters to people building from
   a development tree.  (And if you are, and really need AT&T or some
   other lex to work, talk to us!)

1. Support for building with internal regex implementation has been
   disabled; we now require regex support from libc.  It is still
   possible to enable by manually editing files, but this will be removed
   in the future.  If you have to mess with this, please bring it up on
   the mailing list so we can figure out a long-term solution.

1. Parsing of the `ctwm.workspaces` X resource (i.e., setting `-xrm
   "ctwm.workspaces: something"` on program command-lines) since 3.0 has
   collapsed doubled backslashes (`\\`) into a single (`\`).  However,
   there were no other escapes, so this didn't gain anything.  Using a
   single will work with both variants, unless you need multiple
   backslashes in a row in your workspace names.

1. The `IconRegion` and `WindowRegion` config params both take a `vgrav
   hgrav` pair of parameters to control layout.  Previous versions would
   accept a `hgrav vgrav` ordering in the parsing, and would mostly work
   by odd quirks of the code.  The parsing has been made stricter, so
   only the documented `vgrav hgrav` ordering is accepted now.

### User Visible Changes

1. The default install locations have been changed.  See the README for
    details about where things are installed and how to change them.

1. Several default settings have been changed.  ctwm now defaults to
   acting as though `RestartPreviousState`, `NoGrabServer`,
   `DecorateTransients`, `NoBackingStore`, `RandomPlacement`,
   `OpaqueMove`, `OpaqueResize`, `SortIconManager`, and `StartInMapState`
   have been set.  Those settings that didn't previously have an inverse
   (to get the behavior previously seen when they weren't specified) have
   such added; see below.

1. Added various config parameters as inverses of existing params.  New
   params (with existing param they invert in parens):
    * `BackingStore` (`NoBackingStore`)
    * `GrabServer` (`NoGrabServer`)
    * `StartInButtonState` (`StartInMapState`)
    * `NoSortIconManager` (`SortIconManager`)
    * `NoRestartPreviousState` (`RestartPreviousState`)
    * `NoDecorateTransients` (`DecorateTransients`)

1. Added `DontShowWelcomeWindow` config option to not show welcome
    splashscreen image.

1. Selected a number of cleanups from Stefan Monnier
    <<monnier%IRO.UMontreal.CA@localhost>>, including rate-limiting of animations
    using a new `_XA_WM_END_OF_ANIMATION` message.  Font height is
    estimated based on used characters only.  Added some similar changes,
    improved the prevention of placing windows off-screen, the
    `f.rescuewindows` function for emergencies, a hack-fix for
    `f.adoptwindow`. More virtual screen tweaks/fixes.

1. Added the remaining OnTopPriority changes from Stefan Monnier
    <<monnier%IRO.UMontreal.CA@localhost>>: `AutoPopup`, `AutoPriority`,
    `OnTopPriority`, `PrioritySwitching`, `f.changepriority`,
    `f.priorityswitching`, `f.setpriority`, `f.switchpriority`,
    `f.tinylower`, `f.tinyraise`.  Currently consistency checking code is
    enabled, which will terminate with an assertion failure if something
    unexpected happens. Smoothed out various inconsistencies that this
    check discovered when virtual screens are used.

1. Basic support for EWMH (Extended Window Manager Hints) added and
    enabled by default.  `EWMHIgnore {}` config option allows selectively
    disabling bits.
    [Olaf "Rhialto" Seibert, Matthew Fuller]

1. Icon manager windows are no longer included in the window ring
    (that had confusing effects on the focus sequence).

1. Added `--dumpcfg` command-line option to print out the compiled-in
    fallback config file.

1. The `Occupy {}` specification now accepts "ws:" as a prefix for
    workspaces.  This may break things if you have workspaces with names
    that differ only by that prefix (e.g., you have workspaces "abc" and
    "ws:abc", and your `Occupy {}` declarations affects both.

1. If ctwm is built with rplay support, sounds may now be configured with
    the RplaySounds {} parameter in the config file in place of the
    `~/.ctwm-sounds` file.  If so, ctwm will give a warning if
    `.ctwm-sounds` exists; support for the external file will be removed
    in a future version.  Also the `SoundHost` config parameter is
    replaced by `RplaySoundHost`; the old name is still accepted, but
    will be removed in a future version.

1. Added `MWMIgnore {}` config option to allow selectively disabling
    honoring of some Motif WM hints.

1. Warping to a window now explicitly sets focus on that window.  This
    would generally (but not always, in the presence of odd X server
    behavior) have already happened for users with focus following mouse,
    but now occurs for `ClickToFocus` users as well.
    [Alexander Klein]

1. Several bugs relating to the Occupy window were fixed.  Iconifying the
    Occupy window no longer loses it and leaves you unable to pull it up
    again.  Minor undersizing in some cases fixed.

1. Windows which fail to use the `WM_HINTS` property to tell us things like
    whether they want us to give them focus are now explicitly given
    focus anyway.  This should fix focus problems with some apps
    (Chromium is a common example).

1. Added `ForceFocus {}` config option to forcibly give focus to all (or
    specified) windows, whether they request it or not.  Previously the
    code did this unconditionally (except when no `WM_HINTS` were
    provided; x-ref previous), but this causes problems with at least
    some programs that tell us they don't want focus, and mean it
    (some Java GUI apps are common examples).

1. `OpaqueMoveThreshold` values >= 200 (the default) are now treated as
    infinite, and so will always cause opaque moving.

### Internals

1. A new code style has been chosen and the entire codebase reformatted
    into it.  Configs for
    [Artistic Style](http://astyle.sourceforge.net/)
    to generate the proper output are in the source tree.

1. The `full_name` element of the TwmWindow structure has been removed.
    Consumers should just use the `name` element instead.

diffstat:

 external/mit/ctwm/dist/CHANGES                        |  1753 ----
 external/mit/ctwm/dist/Imakefile                      |   236 -
 external/mit/ctwm/dist/Imakefile.local-template       |   119 -
 external/mit/ctwm/dist/PROBLEMS                       |    39 -
 external/mit/ctwm/dist/README                         |   112 -
 external/mit/ctwm/dist/README.VMS                     |   132 -
 external/mit/ctwm/dist/README.gnome                   |    26 -
 external/mit/ctwm/dist/TODO                           |    14 -
 external/mit/ctwm/dist/TODO.gnome                     |    15 -
 external/mit/ctwm/dist/add_window.c                   |  4168 ++++------
 external/mit/ctwm/dist/ctwm.1                         |  3979 ++++++++++
 external/mit/ctwm/dist/ctwm.axp_opt                   |    25 -
 external/mit/ctwm/dist/ctwm.c                         |  1473 ---
 external/mit/ctwm/dist/ctwm.com                       |    41 -
 external/mit/ctwm/dist/ctwm.man                       |  2548 ------
 external/mit/ctwm/dist/ctwm.spec                      |    82 -
 external/mit/ctwm/dist/ctwm.txt                       |  2768 -------
 external/mit/ctwm/dist/ctwm.vax_opt                   |    26 -
 external/mit/ctwm/dist/ctwm_atoms.c                   |    36 +
 external/mit/ctwm/dist/ctwm_atoms.h                   |    39 +
 external/mit/ctwm/dist/ctwm_config.h                  |    45 +
 external/mit/ctwm/dist/demolib.c                      |   127 -
 external/mit/ctwm/dist/descrip.local-template         |   143 -
 external/mit/ctwm/dist/descrip.mms                    |   438 -
 external/mit/ctwm/dist/descrip.submms                 |   221 -
 external/mit/ctwm/dist/event_names_table.h            |    41 +
 external/mit/ctwm/dist/events.c                       |  4408 -----------
 external/mit/ctwm/dist/ewmh_atoms.c                   |    42 +
 external/mit/ctwm/dist/ewmh_atoms.h                   |    45 +
 external/mit/ctwm/dist/example.ctwmrc                 |   186 -
 external/mit/ctwm/dist/functions_deferral.h           |    87 +
 external/mit/ctwm/dist/functions_defs.h               |   146 +
 external/mit/ctwm/dist/functions_dispatch_execution.h |   145 +
 external/mit/ctwm/dist/functions_parse_table.h        |   149 +
 external/mit/ctwm/dist/gendeftwmrc.com                |    36 -
 external/mit/ctwm/dist/gnome.c                        |   151 -
 external/mit/ctwm/dist/gnome.h                        |    16 -
 external/mit/ctwm/dist/gnomewindefs.h                 |    40 -
 external/mit/ctwm/dist/gram.c_VMS                     |  4918 ------------
 external/mit/ctwm/dist/gram.h_VMS                     |   188 -
 external/mit/ctwm/dist/gram.tab.h                     |   307 +-
 external/mit/ctwm/dist/gtw.c                          |    96 -
 external/mit/ctwm/dist/levitte.ctwmrc                 |   348 -
 external/mit/ctwm/dist/lex.c_VMS                      |  1382 ---
 external/mit/ctwm/dist/libctwm.c                      |   239 -
 external/mit/ctwm/dist/link.com                       |     1 -
 external/mit/ctwm/dist/lnm.c                          |   126 -
 external/mit/ctwm/dist/lnm.h                          |    40 -
 external/mit/ctwm/dist/make.com                       |   483 -
 external/mit/ctwm/dist/menus.c                        |  6571 +++-------------
 external/mit/ctwm/dist/mk_tar.sh                      |    45 -
 external/mit/ctwm/dist/parse.c                        |  2583 +-----
 external/mit/ctwm/dist/peterc.ctwmrc                  |   378 -
 external/mit/ctwm/dist/resize.c                       |  1526 ---
 external/mit/ctwm/dist/resize.h                       |    92 -
 external/mit/ctwm/dist/session.c                      |  1642 ++--
 external/mit/ctwm/dist/siconify.bm                    |     8 -
 external/mit/ctwm/dist/sound.doc                      |   104 -
 external/mit/ctwm/dist/system.ctwmrc                  |   181 -
 external/mit/ctwm/dist/system.ctwmrc.gnome            |    24 -
 external/mit/ctwm/dist/twm.h                          |   564 -
 external/mit/ctwm/dist/util.c                         |  4348 +----------
 external/mit/ctwm/dist/version.c                      |   112 +-
 external/mit/ctwm/dist/vms.txt                        |    84 -
 external/mit/ctwm/dist/vms2.txt                       |    75 -
 external/mit/ctwm/dist/vms_cmd_services.c             |   541 -
 external/mit/ctwm/dist/vms_cmd_services.h             |    21 -
 external/mit/ctwm/dist/vscreen.c                      |   509 +-
 external/mit/ctwm/dist/workmgr.c                      |  3641 ---------
 external/mit/ctwm/dist/workmgr.h                      |   229 -
 70 files changed, 10082 insertions(+), 45421 deletions(-)

diffs (truncated from 56980 to 300 lines):

diff -r 5d9a91d2b854 -r 3dd2bb5684a0 external/mit/ctwm/dist/CHANGES
--- a/external/mit/ctwm/dist/CHANGES    Sun Apr 11 08:36:51 2021 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,1753 +0,0 @@
-
-
-    Changes from version 1.0 to 1.1
-    -------------------------------
-
-
-    1 - Correction of a few bugs
-
-    2 - Add the OpaqueResize flag : similar to OpaqueMove, but redraw the window
-       you are resizing at each motion event. Extremely resource consuming, but
-       beautiful with fast server/client/network.
-
-    3 - Now if you don't specify any background/foreground/pixmap indication for
-       the  root window,  ctwm leave it  alone so you  can have  your own  root
-        background pixmap.
-
-    4 - You can now specify  on the command line a list of workspaces in which a
-        new client opens. The syntaxe is :
-
-          whatever_client -xrm 'ctwm.workspace: name1 name2 ... namen'
-   or     whatever_client -xrm 'ctwm.workspace: all'
-
-   where 'name1', 'name2', ..., 'namen' are names of workspaces and 'all' refers
-to all workspaces.
-
-    example : 
-
-       xload -xrm 'ctwm.workspace : all'
-
-    5 - Add the  OccupyAll command in  .ctwmrc, you can now specify at startup a
-       list of windows that occupy all the workspaces.
-
-    example :
-
-OccupyAll {
-    "xload"
-    "xconsole"
-    "xbiff"
-}
-
-    6 - Add the f.gotoworkspace function. It goes the workspace specified by its
-       name.
-
-    example :
-
-"F1"      =    : root           : f.gotoworkspace "cognac"
-
-
-    Changes from version 1.1 to 1.2
-    -------------------------------
-
-
-    1 - you  can  now  directly  edit  workspace names  in their  buttons.  only
-       printable characters, delete and backspace keys are honored.
-
-    2 - Ctwm  now handle  shaped colored  icons in  XPM  format. This  added the
-       variable XPMIconDirectory, and slightly modified the syntax of the Icons
-       command. The XPM icon file names should be prefixed by the character '@'
-       to distinguished them from the ordinary bitmap files.
-
-Example :
-
-XPMIconDirectory  "/usr/lib/X11/X11/XPM"
-
-Icons {
-    "Axe"    "@xedit.xpm"
-    "xterm"  "@xterm.xpm"
-    "xrn"    "@xrn.xpm"
-    "HPterm" "@hpterm.xpm"
-    "XAlarm" "@datebook.xpm"
-    "Xman"   "@xman.xpm"
-}
-
-  These above xpm pixmap are given.
-
-
-    3 - Many bugs fixed :
-
-       - Icon regions now works.
-       - the absence of ShowIconManager is taken into account.
-       - The -iconic flag is honored.
-       - The -xrm 'ctwm.workspace' works as expected.
-       - I think that f.warpto[to|ring] works correctly i.e warps.
-         also to the correct workspace if the destination window
-         doesn't occupy the current workspace.
-       - A few minor bugs fixed.
-
-
-    Changes from version 1.2 to 1.3
-    -------------------------------
-
-
-    1 - Many bugs fixed :
-
-       - Partial geometry in the  WorkSpaceManagerGeometry  statement no longer
-         cause ctwm to core dump.
-
-       - The occupy window name now is "Occupy Window" instead of "Occupy WIndow"
-         a typo on the uppercase I in window.
-
-       - Several types problems that make good compilers to issue warnings.
-
-       - The  icons of the WorkSpaceManager and Occupy Window windows now behave
-         correctly with ButtonPress.
-
-       - UnknownIcon can now have Xpm icons specified.
-
-       - f.showiconmgr no longer map empty icon managers.
-
-       - The ctwm process is smaller (even smaller than twm).
-
-
-    2 - Add the Occupy command in .ctwmrc, you can now specify at startup
-        which window occupy which workspace.
-
-    example :
-
-Occupy {
-              "xload"  {"all"}
-    Window    "xterm"  {"here" "there" "elsewhere"}
-              "xv"     {"images"}
-    WorkSpace "images" {"xloadimage"}
-}
-
-
-    Changes from version 1.3 to 2.0
-    -------------------------------
-
-    1 - A few bugs fixed :
-
-       - Resize at window creation with button2 works.
-
-       - Some others i don't remember.
-
-    2 - Better  support of  monochrome  displays  :  video inverse instead of 3d
-       buttons.
-
-    3 - WorkSpaceManager  and  Occupy Window are now resizable.  Don't forget to
-       verify you have a powerful server before resizing the  workspace manager
-       with OpaqueResize set.
-
-    4 - X11R4 support with Imakefile.X11R4 (i didn't try so tell me).
-
-    5 - The  visibility  of the workspace  manager  is now  consistant  with the
-       visibility of the icon managers. This mean that by default the workspace
-       manager is  *NOT*  visible at startup.  Use the  ShowWorkSpaceManager to
-       make it visible at startup.
-
-    6 - Two new functions :  f.showworkspacemgr and f.hideworkspacemgr have been
-       added. They do what you imagine.
-
-    7 - And now, the cherry on the cake. The workspace manager has now 2 states,
-       the button state (the usual one) and the map state (the new one). In the
-       map state  the buttons  are replaced  by windows displaying  a synthetic
-       view of the  corresponding workspaces.  All the non-iconified windows of
-       the workspace are shown as small windows with the  icon name  written in
-       it.  It looks like  the virtual screen of  [t]vtwm, but, of course, much
-       nicer.
-
-       In this state, you can modify directly the occupation of your windows by
-       manipulating these little windows.
-
-          - Button1 move a window from a workspace to another.
-          - Button2 copy a window from a workspace to another.
-          - Button3 remove a window from a workspace.
-
-       Clicking in the  "root" of these windows warps you  to the corresponding
-       workspace.  Clicking and releasing Button1 or Button2 quickly in a small
-       window  go to the corresponding  workspace and warps  the pointer to the
-       corresponding window.
-
-       The Control-Key  (Press and Release)  in workspace  manager toggles  the
-       buttons and map state.
-
-       Four variables and Three functions manipulates this :
-
-           - StartInMapState : The map state is selected at startup, default is
-             buttons state.
-
-           - MapWindowCurrentWorkSpace : The aspect of the current workspace in
-             the map window.
-
-           - MapWindowDefaultWorkSpace :  Specify the aspect of the non-current
-             workspaces in the map window.
-
-           - MapWindowBackground :
-           - MapWindowForeground :  Specify the aspect of the small  windows in
-             the map window on a per-client basis.
-
-           - f.setbuttonsstate : You can guess.
-
-           - f.setmapstate : You can guess.
-
-           - f.togglestate : You can guess.
-
-
-    8 - AutoRaise with RaiseDelay. Thanks to Johan Vromans (jv%mh.nl@localhost) who gave me
-       this patch.  I think  Warren Jessop  (whj%cs.washington.edu@localhost) wrote it for
-       twm.
-
-
-    Changes from version 2.0 to 2.1
-    -------------------------------
-
-    1 - Cleanup code to make gcc happy.
-
-    2 - Bugs fixed
-
-       - IconMaskHint honored.
-       - Workaround a bug on  HP7xx/8.07  servers for RaiseLower in  Map window.
-         The stacking  order in the MapWindow  was not correct on those servers.
-         use :
-
-         EXTRA_DEFINES = -DBUGGY_HP700_SERVER
-
-         in your Imakefile  if you plan to use this server.  It doesn't break on
-         others servers.
-
-       - No longer core dump if  MapWindowCurrentWorkSpace or  MapWindowDefault-
-         WorkSpace are specified before WorkSpaces in .ctwmrc
-
-       - Small windows  handling in  the WorkspaceMap  window works even  if the
-         Workspace  Manager  window  has a  title  (that  was not  the case with
-         ctwm-2.0).
-
-       - ForceIcon works for Xpm icons.
-
-       - Occupation of "transient for" window is correct.
-
-       - RestartPreviousState  necessary to  keep previous  window occupation on
-         restart.
-
-       - If a window  dies while  Occupy Window is mapped,  the Occupy Window is
-         correctly unmapped.
-
-    3 - Ctwm now maintains the  WM_CURRENTWORKSPACE  property on the root  window
-       and  WM_OCCUPATION  on every  windows.  They mean what  you think.  These
-       properties  are string  properties  and are in  clear text  instead of an
-       obscure mask.  If an external application changes  these properties  ctwm
-       respond with the correct actions,  changing the current  workspace or the
-       occupation of a window.  I give a small example  (gtw.c).  An application
-       can manage its  occupation and it is  even possible to  write an external
-       workspace manager. It is of course not ICCCM compliant because ICCCM says
-       nothing on multiple workspaces. The special names "all" and "current" can
-       be used.  And you can specify relative occupations if the workspace names
-       list begin with a  '+' or '-' (ex:  +current adds a window to the current
-       workspace).
-       
-    4 - 3 new functions :
-
-       - f.pin : Pin/Unpin a menu on the screen. Only usable inside a root menu.
-
-       - f.vanish : Remove  a window from  the current workspace.  Works only if
-                    the window occupies at least one other workspace.
-
-       - f.warphere "win-name" : Adds the window whose name matches  win-name to
-                              the current workspace and warps the pointer to it.
-
-    5 - And a new keyword : NoShowOccupyAll : tells ctwm not  to  show  OccupyAll
-                       windows in the WorkSpaceMap window.
-
-    6 - All window names can now be specified as (shell-like) regular expressions.
-
-
-
-
-    Changes from version 2.1 to 2.2
-    -------------------------------
-
-
-    1 - Bugs :
-
-       - Redraw small windows when icon name changes.
-       - Kill window from the title bar menu
-       - Partial geometry on Workspace manager can core dump.
-       - AutoRaise and tiny windows in the Workspace Map.
-
-    2 - Transient windows and non group leader windows are now always on the top
-       of their leader.
-
-    3 - When an icon name changes, the icon itself changes automatically according
-       the Icons list in your .ctwmrc. This is very useful for clients that have
-       several states. For example xrn or some X mail readers can have two
-       differents icons for new mail (news) / no new mail (news).
-
-    4 - A new keyword : TransientHasOccupation has been added for people annoyed
-       by the fact that since ctwm-2.1, transient-for non group-leader windows
-       have the same occupation that their leader. If you specify this, these
-       windows have their own occupation.
-
-    5 - A new keyword : AutoOccupy. If specified, the occupation of a client is
-       changed automatically when it's name or icon name changes, according to
-       the Occupy list in your .ctwmrc. For example a mail reader can popup
-       instantly in the current workspace when mail arrives.
-
-    6 - A new keyword : DontPaintRootWindow. If specified, the root window is



Home | Main Index | Thread Index | Old Index