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