1# CTWM Change History 2 3 4## 4.1.0 (2023-03-26) 5 6### Backward-Incompatible Changes And Removed Features 7 81. Support for `VirtualScreens` has been removed. This was an early 9 attempt to allow some manual configuration of multiple monitors, but 10 carried with it a lot of caveats and strange behaviors. The current 11 automatic RANDR and manual `MonitorLayout` features are a replacement 12 for anywhere this ever really worked. 13 141. `ctwm`'s captive mode support has been removed. This includes the 15 `--window` and `--name` command line arguments, and the 16 `f.adoptwindow` and `f.hypermove` functions. Be sure to remove any 17 references to those functions from your config file. 18 191. Support for `WindowBox` has been removed, along with the 20 `f.fittocontent` function related to it. 21 221. The minimum cmake version has been bumped to 3.6. This is available 23 in standard packages back to CentOS 6, and we appear to have actually 24 been using syntax requiring 3.5 for a while unknowingly anyway. 25 26### New Features 27 281. Support for understanding multi-monitor layouts as something other 29 than a single giant rectangle added. The RANDR X extension is used 30 for determining how your monitors are laid out. The various 31 `f.\*zoom` functions now zoom on the monitor the window is currently 32 on, and new `f.x\*zoom` functions are added to zoom across your entire 33 display. Various internal geometries can be specified 34 RANDR-output-relative; see doc of _e.g._ `IconManagers`. Contributed 35 by Maxime Soulé <<btik-ctwm@scoubidou.com>>. 36 371. Added `MonitorLayout {}` config var for overriding the layout of 38 multiple monitors. In normal cases with multiple monitors and a 39 modern X server, this is unnecessary. It's useful if the X server 40 doesn't support RANDR (_e.g._, older servers), or if the info it 41 provides is wrong (_e.g._, multi-display simulation with Xephyr), or 42 if you just prefer to specify things differently than they would 43 otherwise be (_e.g._, treat an ultra-wide display as 2 separate 44 monitors). 45 461. The EWMH `_NET_FRAME_EXTENTS` property is now set on windows when we 47 take control of them. This should fix clients mispositioning other 48 windows on top of themselves; visible with Firefox's form autofilling 49 and context menus. Contributed by Maxime Soulé 50 <<btik-ctwm@scoubidou.com>>. 51 52### Bugfixes 53 541. When restarting ctwm, the icon managers for the current workspace will 55 now initially show up, rather than those for first WS. 56 571. When restarting ctwm, the stacking order of windows is now preserved. 58 591. Running `--cfgchk` without an available X server will now work. Some 60 errors may only be discovered when it can talk to X (things relating 61 to colors are a likely suspect). Checking configs for multi-Screen 62 setups will now properly check all of them as well. 63 641. Fix display of combined modifiers in TwmKeys menu. Contributed by 65 Maxime Soulé <<btik-ctwm@scoubidou.com>>. 66 671. Fix window icon name spilling out into the border of icon manager 68 entries. Contributed by Carl Svensson <<ctwm@datagubbe.se>>. 69 701. Fix minor mis-sizing and postitioning of squeezed titlebar when window 71 is squeezed away. Contributed by Maxime Soulé 72 <<btik-ctwm@scoubidou.com>>. 73 741. Fix window placement when `DontMoveOff` is enabled without 3D borders. 75 Contributed by Maxime Soulé <<btik-ctwm@scoubidou.com>>. 76 771. When window titles overflow the available space, always treat them as 78 left-justified, to avoid bad behavior of other justifications and 79 provide the best available behavior. Found by Carl Svensson 80 <<ctwm@datagubbe.se>>. 81 82 83 84## 4.0.3 (2019-07-21) 85 86### Bugfixes 87 881. Perform various manipulations and overrides of `WM_HINTS` property 89 when it gets reset during runtime, like we do when initially adopting 90 the window. The most visible effect of this was in windows that don't 91 give a focus hint (which we override to give focus), but then reset 92 `WM_HINTS` later and still don't give us a hint, where we wound up not 93 re-overriding previously. Reported for `xvile` by Wayne Cuddy. 94 951. The font height estimation changes in 4.0.0 were not applied correctly 96 when UseThreeDMenus was set, leading to some odd vertical misalignment 97 of the text with some fonts. Reported by Wayne Cuddy. 98 991. A failure in OTP consistency checks caused by the handling of 100 transients of fullscreen windows has been fixed. This manifested as 101 failures in OtpCheckConsistencyVS() assertions. 102 103 104 105## 4.0.2 (2018-08-25) 106 107### Backward-Incompatible Changes And Removed Features 108 1091. The `UseThreeDIconBorders` config var has been removed. It came in 110 silently and undocumented in 3.4 and has never done anything. 111 1121. The attempts to use DNS lookups for setting the `HOSTNAME` `m4` variable 113 have been removed; it is now just a duplicate of `CLIENTHOST`. 114 115### New Features 116 1171. The EWMH `_NET_WM_NAME` property is now supported, and used for the 118 window name in place of the ICCCM `WM_NAME` when set. By default, we 119 also accept `UTF8_STRING` encoded `WM_NAME` as a result of this 120 change; see below for var to restore historical strictness. 121 1221. The EWMH `_NET_WM_ICON_NAME` property is now supported, and used for 123 the icon name in place of the ICCCM `WM_ICON_NAME` when set. Similar 124 comments as above apply to the encodings. 125 1261. Support has been added for `CTWM_WM_NAME` and `CTWM_WM_ICON_NAME` 127 properties, which will override any window/icon names otherwise 128 specified. This may be useful for applications that set unhelpful 129 names themselves, or for manually adjusting labelling. These 130 properties can be set from the command line via `xprop`; as an 131 example, `xprop -f CTWM_WM_NAME 8u -set CTWM_WM_NAME "awesome 132 windowsauce"`. See `xprop(1)` manual for details; the `s`, `t`, and 133 `u` field type specifiers will all work. 134 1351. When no icon name is set for a window, we've always used the window 136 name for the icon name as well. But that only happened the first time 137 the window name is set; after that, the icon name is stuck at the 138 first name. It now updates along with the window name, if no icon 139 name is set. 140 1411. All icon manager windows will now have the `TwmIconManager` class set 142 on them, so they can be addressed en mass by other config like 143 `NoTitle` by that class name. 144 145### New Config Options 146 1471. Added `DontNameDecorations` config option to disable setting names on 148 the X windows we create for window decoration (added in 4.0.0). These 149 have been reported to confuse `xwit`, and might do the same for other 150 tools that don't expect to find them on non-end-app windows. Reported 151 by Frank Steiner. 152 1531. Added `StrictWinNameEncoding` config option to enable historical 154 behavior, where we're reject invalid property encoding for window 155 naming properties (like a `UTF8_STRING` encoded `WM_NAME`). 156 157### Bugfixes 158 1591. Fix up broken parsing of `IconifyStyle "sweep"`. Bug was introduced 160 in 4.0.0. 161 1621. When multiple X Screens are used, building the temporary file for m4 163 definitions could fail with an error from `mkstemp()`. Reported by 164 Manfred Knick. 165 1661. When multiple X Screens are used, the OTP code didn't recognize the 167 difference, and kept everything in one list. This caused the internal 168 consistency checks to trip when it didn't find all the windows it 169 expected. Reported by Terran Melconian. 170 1711. When `ReverseCurrentWorkspace` is set, mapping windows not on the 172 current workspace (e.g., via restarting ctwm, or creating new windows 173 with the desktop set via EWMH properties) could segfault. Reported by 174 Sean McAllister. 175 1761. Fix some edge cases where we'd fight other apps' focus handling. When 177 an application moved focus itself to an unrelated (in X terms) window, 178 our processing would often race and re-move the focus to the root 179 ourselves. This was visible with e.g. sub-windows in Firefox for 180 context menu and urlbar dropdown, which would flash on and then 181 disappear. 182 1831. When creating a new transient window of an existing full-screen 184 window, the OTP stacking may cause it to be stuck below the main 185 window due to the special handling of full-screen focused windows in 186 EWMH. It should now be forced to the top. 187 1881. Building ctwm since 4.0.0 in certain locales could misorder functions 189 in the lookup table, leading to troubles parsing the config file. 190 You'd get some loud "INTERNAL ERROR" lines from ctwm when running it 191 if this were the case. Now fixed. Reported by Richard Levitte. 192 193 194 195## 4.0.1 (2017-06-05) 196 197### User Visible Changes 198 1991. Fix a bug where fullscreen windows could sometimes wind up incorrectly 200 stacked due to a focus-handling issue. This would lead to ctwm 201 aborting with an assertion failure in the OTP code, like `Assertion 202 failed: (PRI(owl) >= priority), function OtpCheckConsistencyVS`. 203 2041. Fix an edge case (probably only triggerable via manual work with EWMH 205 messages) where a window could wind up resized down to nothing. 206 207### Internals 208 2091. Systems with the ctfconvert/ctfmerge tools available will now use them 210 to include CTF info in the compiled binary. This allows more detailed 211 inspection of the running process via DTrace (e.g., the layout of the 212 structs). 213 2141. The initial rumblings of a Developer's Manual are now in 215 `doc/devman/`. This isn't tied into the main build, and there's no 216 real reason it ever will be. Things of interest to _users_ should 217 wind up in the main manual; this should only have things of interest 218 to people _developing_ ctwm. 219 220 221 222## 4.0.0 (2017-05-24) 223 224### Build System Change 225 226The old `imake` build system has been replaced by a new structure using 227`cmake`. This makes [cmake](https://cmake.org/) a requirement to build 228ctwm. See the `README.md` file for how to run it. 229 230A fallback minimal build system is available in the `minibuild/` 231directory for environments that can't use the main one. This is likely 232to need some manual adjustment on many systems, and the main build is 233strongly preferred. But it should suffice to get a runnable binary if 234all else fails. 235 236### Platform Support 237 238Support for many non-current platforms has been dropped. In particular, 239remnants of special-case VMS support have been removed. Many old and now 240dead Unix variants have been similarly desupported. Generally, platforms 241without support for C99 and mid-2000's POSIX are increasingly less likely 242to work. 243 244### Backward-Incompatible Changes And Removed Features 245 2461. Argument parsing has been rewritten to use `getopt_long()`. All 247 `-long` options are now `--long` instead. `-version`, `-info`, 248 `-cfgchk`, and `-display` are still accepted if they're the first 249 option given, to make it easier for scripts to simultaneously support 250 before/after versions; this shim will be removed in a later version. 251 2521. Support for the SDSC imconv library, and the IMCONV options related to 253 it, has been removed. The last release is almost 20 years old, and 254 doesn't support any remotely recent platforms. 255 2561. The USE_SIGNALS code to use signal-driven animations has been removed. 257 It's been non-default since 3.2 (more than 20 years ago), and not 258 documented anywhere but in the code and a comment in this file. 259 2601. The USE_GNOME option and code for GNOME1 support has been removed. 261 2621. The old-style title button action specifications (without an `=` in 263 them) deprecated since 3.8 are no longer supported. Just replacing 264 the "`:`" with "`= :`" should suffice to make it work right in 3.8+. 265 If you need to share configs with older versions, you'll have to 266 conditionalize the syntax with m4 or some other preprocessing. 267 2681. The `f.cut` (and `^` alias for it), `f.cutfile`, and `f.file` 269 functions have been removed. These functions for messing with the 270 clipboard were never visibly documented, and came into the manpage in 271 3.0 already commented-out and saying they were obsolete. 272 2731. The `f.source` function has been removed. It's never done anything 274 (except beep) as far back as 1.1 and has never been documented. 275 2761. The `f.movemenu` function has been removed. It was added silently in 277 2.1, has never done anything, and has never been documented. 278 2791. The `NoVersion` config parameter has been removed. It's been 280 undocumented, obsoleted, and done absolutely nothing since 1.1. 281 2821. Support for non-flex versions of lex(1) is deprecated, and will take 283 some manual work to build. Note that release tarballs include 284 prebuild lexers, so this probably only matters to people building from 285 a development tree. (And if you are, and really need AT&T or some 286 other lex to work, talk to us!) 287 2881. Support for building with internal regex implementation has been 289 disabled; we now require regex support from libc. It is still 290 possible to enable by manually editing files, but this will be removed 291 in the future. If you have to mess with this, please bring it up on 292 the mailing list so we can figure out a long-term solution. 293 2941. Parsing of the `ctwm.workspaces` X resource (i.e., setting `-xrm 295 "ctwm.workspaces: something"` on program command-lines) since 3.0 has 296 collapsed doubled backslashes (`\\`) into a single (`\`). However, 297 there were no other escapes, so this didn't gain anything. Using a 298 single will work with both variants, unless you need multiple 299 backslashes in a row in your workspace names. 300 3011. The `IconRegion` and `WindowRegion` config params both take a `vgrav 302 hgrav` pair of parameters to control layout. Previous versions would 303 accept a `hgrav vgrav` ordering in the parsing, and would mostly work 304 by odd quirks of the code. The parsing has been made stricter, so 305 only the documented `vgrav hgrav` ordering is accepted now. 306 307### User Visible Changes 308 3091. The default install locations have been changed. See the README for 310 details about where things are installed and how to change them. 311 3121. Several default settings have been changed. ctwm now defaults to 313 acting as though `RestartPreviousState`, `NoGrabServer`, 314 `DecorateTransients`, `NoBackingStore`, `RandomPlacement`, 315 `OpaqueMove`, `OpaqueResize`, `SortIconManager`, and `StartInMapState` 316 have been set. Those settings that didn't previously have an inverse 317 (to get the behavior previously seen when they weren't specified) have 318 such added; see below. 319 3201. Added various config parameters as inverses of existing params. New 321 params (with existing param they invert in parens): 322 * `BackingStore` (`NoBackingStore`) 323 * `GrabServer` (`NoGrabServer`) 324 * `StartInButtonState` (`StartInMapState`) 325 * `NoSortIconManager` (`SortIconManager`) 326 * `NoRestartPreviousState` (`RestartPreviousState`) 327 * `NoDecorateTransients` (`DecorateTransients`) 328 3291. Added `DontShowWelcomeWindow` config option to not show welcome 330 splashscreen image. 331 3321. Selected a number of cleanups from Stefan Monnier 333 <<monnier@IRO.UMontreal.CA>>, including rate-limiting of animations 334 using a new `_XA_WM_END_OF_ANIMATION` message. Font height is 335 estimated based on used characters only. Added some similar changes, 336 improved the prevention of placing windows off-screen, the 337 `f.rescuewindows` function for emergencies, a hack-fix for 338 `f.adoptwindow`. More virtual screen tweaks/fixes. 339 3401. Added the remaining OnTopPriority changes from Stefan Monnier 341 <<monnier@IRO.UMontreal.CA>>: `AutoPopup`, `AutoPriority`, 342 `OnTopPriority`, `PrioritySwitching`, `f.changepriority`, 343 `f.priorityswitching`, `f.setpriority`, `f.switchpriority`, 344 `f.tinylower`, `f.tinyraise`. Currently consistency checking code is 345 enabled, which will terminate with an assertion failure if something 346 unexpected happens. Smoothed out various inconsistencies that this 347 check discovered when virtual screens are used. 348 3491. Basic support for EWMH (Extended Window Manager Hints) added and 350 enabled by default. `EWMHIgnore {}` config option allows selectively 351 disabling bits. 352 [Olaf "Rhialto" Seibert, Matthew Fuller] 353 3541. Icon manager windows are no longer included in the window ring 355 (that had confusing effects on the focus sequence). 356 3571. Added `--dumpcfg` command-line option to print out the compiled-in 358 fallback config file. 359 3601. The `Occupy {}` specification now accepts "ws:" as a prefix for 361 workspaces. This may break things if you have workspaces with names 362 that differ only by that prefix (e.g., you have workspaces "abc" and 363 "ws:abc", and your `Occupy {}` declarations affects both. 364 3651. If ctwm is built with rplay support, sounds may now be configured with 366 the RplaySounds {} parameter in the config file in place of the 367 `~/.ctwm-sounds` file. If so, ctwm will give a warning if 368 `.ctwm-sounds` exists; support for the external file will be removed 369 in a future version. Also the `SoundHost` config parameter is 370 replaced by `RplaySoundHost`; the old name is still accepted, but 371 will be removed in a future version. 372 3731. Added `MWMIgnore {}` config option to allow selectively disabling 374 honoring of some Motif WM hints. 375 3761. Warping to a window now explicitly sets focus on that window. This 377 would generally (but not always, in the presence of odd X server 378 behavior) have already happened for users with focus following mouse, 379 but now occurs for `ClickToFocus` users as well. 380 [Alexander Klein] 381 3821. Several bugs relating to the Occupy window were fixed. Iconifying the 383 Occupy window no longer loses it and leaves you unable to pull it up 384 again. Minor undersizing in some cases fixed. 385 3861. Windows which fail to use the `WM_HINTS` property to tell us things like 387 whether they want us to give them focus are now explicitly given 388 focus anyway. This should fix focus problems with some apps 389 (Chromium is a common example). 390 3911. Added `ForceFocus {}` config option to forcibly give focus to all (or 392 specified) windows, whether they request it or not. Previously the 393 code did this unconditionally (except when no `WM_HINTS` were 394 provided; x-ref previous), but this causes problems with at least 395 some programs that tell us they don't want focus, and mean it 396 (some Java GUI apps are common examples). 397 3981. `OpaqueMoveThreshold` values >= 200 (the default) are now treated as 399 infinite, and so will always cause opaque moving. 400 401### Internals 402 4031. A new code style has been chosen and the entire codebase reformatted 404 into it. Configs for 405 [Artistic Style](http://astyle.sourceforge.net/) 406 to generate the proper output are in the source tree. 407 4081. The `full_name` element of the TwmWindow structure has been removed. 409 Consumers should just use the `name` element instead. 410 411 412 413## 3.8.2 (2014-05-18) 414 4151. Various code cleanups. 416 417 * Cleanup re: raising and warping to windows (previous location of 418 pointer in windows), SaveWorkspaceFocus. A few extra NULL pointer 419 checks. 420 421 * Logical hasfocusvisible cleanup. 422 423 * Rename TwmWindow.list to iconmanagerlist, and various smaller 424 cleanups. 425 426 * Eliminated TwmWindow TwmRoot from struct ScreenInfo. Mostly a 427 mechanical change. I found some cases where the dummy TwmWindow 428 was apparently mistakenly included in a loop. Replaced `.next` 429 with `TwmWindow *FirstWindow` and `.cmaps` with `Colormaps 430 RootColormaps`. Other members were not used. 431 4321. Fix a bug where insufficient validation of the size hints 433 resulted in a division by zero when considering aspect ratio. 434 4351. Lots of minor compiler warnings and build fixes, a few of which 436 were real current or latent bugs. Leave warnings enabled by 437 default. A few of the build system adjustments may break very 438 old systems (e.g., those with original AT&T `yacc`). 439 4401. Fix incorrect inclusion of `$DESTDIR` in some paths. 441 4421. Update for new website and mailing list at <http://www.ctwm.org>. 443 4441. Look at `_MOTIF_WM_HINTS` for titlebar-less or border-less 445 windows. 446 447 448 449## 3.8.1 (2012-01-05) 450 4511. Fix bug causing [de]iconified status of windows to not be 452 maintained across workspaces. 453 [Matthew Fuller] 454 4551. Quiet a bunch of compiler warnings. 456 [Matthew Fuller] 457 4581. Make sure we fully initialize our WorkSpaceWindow structure so 459 we don't try to dereference uninitialized pointers later on. 460 [Matthew Fuller] 461 4621. Increased the number of supported mouse buttons again, having 463 just heard of a mouse with 9 possible buttons... 464 [Richard Levitte] 465 4661. Fix a bug in the warping "next" function, where if there is a 467 single window and the cursor is not on it, invoking `f.warpring 468 "next"` does nothing. 469 [Martin Blais] 470 4711. Introduce a new feature called "SaveWorkspaceFocus", which when 472 enabled, makes ctwm remember which window has the focus within 473 each virtual workspace. As you switch workspaces, the cursor is 474 automatically warped to the window previous in focus in the 475 workspace. This significantly reduces the amount of mouse use. 476 [Martin Blais] 477 4781. f.fill patch from Matthias Kretschmer <<kretschm@cs.uni-bonn.de>>. 479 Without the patch, you might get windows which are increased by 480 two times the border width more than it should be. Additionally 481 if you place a window with no/not much size contrainst like 482 firefox in the upper left corner and perform `f.fill "top"` or 483 `f.fill "left"` the size of the window will increase by two times 484 the border width in width and height without changing the 485 top-left coordinate without the patch. Of course in such a 486 situation the size should not change at all... 487 [via Olaf Seibert] 488 489 490 491## 3.8 (2007-02-16) 492 4931. Global cleanup. There were some variables shadowing others, things 494 not being safely initialized, that sort of thing. 495 [Richard Levitte] 496 4971. Fixed several memory leaks found by 498 "Nadav Har'El" <<nyh@math.technion.ac.il>>. 499 [Olaf "Rhialto" Seibert] 500 5011. Merged in the `f.movetitlebar` command. By default this is bound to 502 alt-left-click in the titlebar. 503 [Olaf "Rhialto" Seibert] 504 5051. Fixed the following issue: 506 507 * Poking at the code, it looks like InitVirtualScreens() is called 508 before the configuration file is parsed which would explain what I 509 see since there's no attempt to create them after the config file 510 read. Moving the call after the config parsing causes things to 511 work. 512 513 * I've run into a few other issues that I fixed with the attached 514 patch: 515 * shadow menus on the right screen open the shadow on the left 516 screen 517 * shadow menus on the left screen open on top of the window 518 * windows on the right screen disappear after startup 519 520 [Todd Kover] 521 5221. Adjustments to ctwm.man. I noticed a couple of small errors. [Ross 523 Combs] 524 525 * One is that the window list arguments for the opaque keywords are 526 now optional, are listed with square brackets in the man page. 527 528 * The other is that the two Threshold keywords are shown in the man 529 page as requiring curly-brackets, but they are not required or 530 accepted in configuration files. 531 5321. Improve algoritm to deal with mismatched geometry of virtual 533 screens 534 535 * allow windows to be dragged from one virtual screen to another and 536 have them switch workspaces appropriately 537 538 * handle restarts properly with virtual screens, including preserving 539 where windows were placed within workspaces regardless of which 540 virtual screen a window was on; preserve across restarts 541 542 [Todd Kover] 543 5441. `WMapCreateCurrentBackGround()` and `WMapCreateDefaultBackGround()` 545 would skip remaining virtual screens if not all parameters are 546 present. Small type errors. 547 [Olaf "Rhialto" Seibert] 548 5491. There were some directives in the config file that wanted to set some 550 setting for all virtual screens. However since that list is (now) only 551 set up after parsing the config file, they failed to work. Moreover, 552 these settings were basically meant to be global to all virtual 553 screens, so a better place for them is somewhere in `*Scr`. They all 554 related to the Workspace Manager, so I moved them from `struct 555 WorkSpaceWindow` to `struct WorkSpaceMgr`. 556 557 The affected directives are StartInMapState, WMgrVertButtonIndent, 558 WMgrHorizButtonIndent, MapWindowCurrentWorkSpace, 559 MapWindowDefaultWorkSpace. The window and icon_name, even though not 560 user-settable, were also moved. 561 562 This is basically the previous change above done right. 563 [Olaf "Rhialto" Seibert] 564 5651. Re-introduced `TwmWindow.oldvs`, used to avoid calling 566 `XReparentWindow()` when possibe (it messed up the stacking order of 567 windows). However, maybe the use of `.vs` should be rethought a bit: 568 in `Vanish()` it is now set to `NULL` with the old value kept in 569 `.oldvs`. However the window is still a child of the same vs. Maybe 570 it is better not to set it to `NULL` and then, when *really* changing 571 the virtual screen, `.vs` can be used instead of `.oldvs`. 572 573 This whole "virtual screen" thing is unexplained in the manual, which 574 even uses it as a synonym for "workspace" already in the introduction 575 paragraph. (There also does not seem to be a way now to test virtual 576 screens in captive windows) I suspect that all this causes lots of 577 confusion, and when cleared up, can simplify the code a lot. 578 579 I also fixed up the horrible indentation in the functions 580 where I changed something. 581 [Olaf "Rhialto" Seibert] 582 5831. Fixed interaction between "inner" and "outer" workspace 584 selection with "captive" windows. This was because the Gnome 585 `_WIN_WORKSPACE` property is used in 2 conflicting ways: for 586 client windows it indicates which workspace they are in, for 587 root windows it indicates which workspace they show. Captive 588 windows are both. Also, the initially selected inner workspace 589 is now the first, not the same as the outer workspace (this had 590 a different cause). 591 [Olaf "Rhialto" Seibert] 592 5931. Introduce `Scr->XineramaRoot` to store the root window that 594 encompasses all virtual screen rootwindows. This further reduces any 595 need to use RealRoot and/or CaptiveRoot. Add a schematic drawing 596 that clarifies the relation between the various root-type windows. 597 [Olaf "Rhialto" Seibert] 598 5991. Get rid of all non-locale code and make I18N the silent default 600 (doesn't have to be mentioned any more). **THIS WILL BREAK CTWM ON 601 OLDER (PRE-LOCALE) ENVIRONMENTS**. I strongly recommend an upgrade 602 to "post-locale" standards. 603 [Richard Levitte] 604 6051. Enhance RandomPlacement with a displacement argument, so the 606 pseudo-radomness can be of displacements other than +30+30. Here's 607 an example for a pretty funky displacement: 608 609 RandomPlacement "on" "-30-100" 610 611 [Richard Levitte] 612 6131. Extend the Info window with the geometry seen from the lower 614 right corner as well. 615 [Richard Levitte] 616 6171. Extend the pointer button specification for title buttons to take 618 modifiers. As part of this change, the following title pointer 619 button specification is deprecated: 620 621 Button {j} : {function} 622 623 in favor of the following, for consistency: 624 625 Button {j} = {function} 626 627 The old way still works, but is considered bad form and will 628 be removed in a future version ("ctwm 4.0"). 629 [Richard Levitte] 630 6311. Fix position of buttons in Occupy window, to make them centered. (and 632 spread the remaining space evenly in 4). 633 [Olaf "Rhialto" Seibert] 634 6351. `TwmWindow.group` was once apparently set to 0 when a window had no 636 group leader but this was changed to pointing to its own window. 637 This resulted however in many places checking for both conditions, 638 and several checking only for 0 which could not occur anymore. 639 Changed it back to 0 (so we can now distinguish again windows that 640 really indicate themselves as group leader, if we wish) and this gave 641 rise to some simplifications. 642 643 Also, there were various loops through all TwmWindows looking for a 644 group leader (or a `transientfor`), I replaced them with 645 `GetTwmWindow()` which uses the Xlib function `XFindContext()` which 646 uses a hash table lookup. This should be more efficient. 647 648 When you change the occupation of a group member window, it is now 649 applied to the group leader (which in turn affects all members). 650 651 I tried this with ExMH, the only program that uses a real group 652 leader that I could find. Iconifying the leader unmaps the members. 653 What should "squeezing" do? ExMH also has an icon window (see ICCCM 654 4.1.9, 3rd option) which behaves weirdly; this may be a bug in ExMH 655 (see exmh-2.7.2/exmh.BUGS) even though fvwm somehow handles it 656 better. 657 [Olaf "Rhialto" Seibert] 658 6591. When Squeezing a window group leader, unmap the member windows, just 660 like happens with iconification. 661 [Olaf "Rhialto" Seibert] 662 6631. Simplifications c.q. de-duplications of code regarding the 664 WorkSpaceManager and Occupation windows. This includes coding the 665 layout of these windows only once instead of twice (at initialisation 666 and when resizing). If it's wrong now at least it should be 667 consistent. 668 669 When changing occupation via functions like f.movetonextworkspace, 670 also move complete window groups (just like when you do it via the 671 Occupation window). Also fixed changing the occupation of the 672 Occupation window. Documented (so far) undocumented possibility to 673 edit the labels of workspaces on the fly (what use this is, I'm not 674 sure). Removed some unused variables. 675 [Olaf "Rhialto" Seibert] 676 6771. Get rid of the `USE_SESSION` and `X11R6` macros and make them the 678 silent default. Also cleaned out a few references to the macro 679 `X11R4`, which hasn't been used for ages. **THIS WILL BREAK CTWM ON 680 OLDER (PRE-X11R6) ENVIRONMENTS**. I strongly recommend an upgrade to a 681 newer X11 release. 682 [Richard Levitte] 683 6841. Modified the random placement so a negative X displacement has the 685 first "random" window start near the right edge instead of the right 686 and a negative Y displacement has the first "random" window start 687 near the bottom edge instead of the top. 688 [Richard Levitte] 689 690 691 692## 3.7 (2005-07-19) 693 6941. Workspace context (bkctwmws.patch) 695 696 Makes it possible to bind keys specific to the workspace manager 697 (by Björn Knutsson). Use the event context "workspace" for this. 698 6991. New keyword : AlwaysSqueezeToGravity 700 701 If it is enabled, window squeezing always follows window gravity 702 (instead of northward when the window has a title). 703 (by Rudolph T. Maceyko). 704 7051. TwmKeys and TwmVisible menus (dlctwmmenu.patch) 706 707 Adds TwmKeys (rootmenu listing all keybindings) and TWM Visible (rootmenu 708 showing only deiconified windows) (by Dan Lilliehorn). 709 7101. Preliminary GNOME compliance (see README.gnome and TODO.gnome) 711 (by Nathan Dushman). 712 7131. IconifyStyle : "normal" "mosaic" "zoomin" "zoomout" "sweep" 714 715 A few "fancy" graphical effects when you iconify windows, just for fun. 716 7171. JPEG images support : You can now use jpeg image files wherever you 718 can use images. Use the `jpeg:imagename` syntax. 719 7201. `f.showbackground` 721 722 Since we can now use fancy jpeg image for root backgrounds, this function 723 unmaps all windows in the current workspace. This is a toggle function, 724 if all windows are unmapped, they are all remapped. Better bind this 725 function in the root context. 726 7271. Preliminary support for Xinerama extention. You can define "virtual" 728 screens (it's better if they correspond to you actual screens). The 729 thing is that you can see several workspaces at the sams time, one per 730 virtual screen. Of course, you cannot view the same workspace (or the 731 same window) in 2 vscreens at the same time. The syntax is: 732 733 VirtualScreens { 734 "1280x1024+0+0" 735 "1600x1200+1280+0" 736 } 737 738 for 2 screens, the first one (on the left) is 1280x1024, the second one 739 (on the right) is 1600x1200. 740 741 This is preliminary, because this has not been extensively tested. I did 742 this because I have now 2 screens, but I was unable to get them working 743 properly, so I use only one. 744 7451. **[ At this point, Claude has stopped working on CTWM, and the project 746 is now in the hands of Richard Levitte <<richard@levitte.org>>. ]** 747 7481. Changed Imakefile to support a distribution target. 749 7501. Changed `:xpm:cross` to become a bit larger and have a slightly more 751 3D appearance, and is visible even in very dark configurations. 752 7531. Make AlwaysSqueezeToGravity to work for all windows (if no window 754 list is given). 755 7561. New keyword: `NoImagesInWorkSpaceManager` 757 758 If it's enabled, background images aren't displayed in the workspace 759 map. 760 761 This was contributed by Thomas Linden. 762 7631. New command line option: `-cfgchk` 764 765 If used, CTWM will only parse the configuration file and indicate 766 if it found errors or not. 767 768 This was contributed by Matthew D. Fuller. 769 7701. `DontMoveOff` patch (by Björn Knutsson) 771 772 Change the behavior of `DontMoveOff` / `MoveOffResistance` so that 773 when you attempt to move a window off screen, it will not move at all 774 until it's been moved `MoveOffResistance` pixels (as before), but at 775 this time it will no longer "snap", but instead it will start moving 776 off screen. This means that you still have the old behavior of 777 DontMoveOff, but now with the ability to move a window off screen 778 less that `MoveOffResistance` pixels. 779 7801. Random placement and DontMoveOff patch (by Björn Knutsson, changed) 781 782 When random placement was used, DontMoveOff wasn't honored. 783 This behavior has now changed so a window will be kept within 784 the screen when at all possible. When the window is too 785 large, it's top or left edge (or both) will be placed in 786 coordinate 0. 787 This change differs a little bit from Björns contribution by 788 not using rand() at all. 789 7901. `f.warpring` patch (by Björn Knutsson) 791 792 If `IconManagerFocus` is set, there's no reason why the icon 793 manager should get enter and leave events. This fixes some 794 disturbing in the warpring that would otherwise happen. 795 7961. `f.movetoprevworkspace`, 797 `f.movetonextworkspace`, 798 `f.movetoprevworkspaceandfollow`, 799 `f.movetonextworkspaceandfollow` patch (by Daniel Holmström) 800 801 Makes it possible to move a window to the previous or next 802 workspace and, if you like, go to that workspace and focus 803 the moved window. 804 8051. `f.fill` "vertical" patch (by Daniel Holmström) 806 807 Expands the window vertically without overlapping any other window, 808 much like `{ f.fill "top" f.fill "bottom" }` but with the exception 809 that it doesn't expand over window borders. It also sets the windows 810 "zoomed" to `F_FULLZOOM`, so one can toggle between this size, 811 original and maximized. 812 8131. `RESIZEKEEPSFOCUS` bugfix patch (by Daniel Holmström) 814 815 If a window is maximized with `togglemaximize` and then restored it 816 might loose focus if the cursor is outside the restored window. This 817 hack puts the cursor at the left-top corner of the window. 818 8191. `f.zoom` bugfix patch (by Daniel Holmström) 820 821 `f.zoom` now doesn't move the window up (as it sometimes did before) 822 8231. `IgnoreTransient` patch (by Peter Berg Larsen) 824 825 New keyword with list of windows for which to ignore transients. 826 8271. Workspace switch peformance optimization (by MC) 828 829 Stops ctwm from redrawing windows that occupy all workspaces when 830 switching from one workspace to another. 831 8321. GTK "group leader" bugfix (by Olaf 'Rhialto' Seibert) 833 834 Makes ctwm aware of the mysterious GTK group leader windows. 835 8361. Resize cursor with non-3D-borders bugfix (by Olaf 'Rhialto' Seibert) 837 838 BorderResizeCursors now works also for top and left borders when 839 non-3D-borders are used. 840 8411. Memory leak bugfix (by Simon Burge) 842 843 `GetWMPropertyString` in `util.c` no longer leaks memory. 844 8451. Warpring bugfix (by Takahashi Youichirou) 846 847 Solves these two problems when warping the pointer to the 848 next/previous mapped window: 849 850 * Sometimes the pointer moved right too much and ended up outside the 851 title bar. 852 853 * When the active window was closed and the pointer ended up on the 854 root window, the pointer wouldn't warp until moved with the mouse. 855 8561. NoWarpToMenuTitle patch (by Julian Coleman) 857 858 Fixes the sometimes annoying feature that the cursor is warped to the 859 menu title if the menu won't fit on the screen below the current 860 pointer position. 861 862 This patch introduces a new keyword `NoWarpToMenuTitle` keyword to 863 turn this off. 864 8651. `Scr->workSpaceMgr.windowFont` font init bugfix (by Martin Stjernholm) 866 867 `The Scr->workSpaceMgr.windowFont` in workmgr.c is now initialized. 868 8691. Full GNU regex patch (by Claude Lecommandeur) 870 871 It is now possible to use full GNU regex for window or class names by 872 defining `USE_GNU_REGEX` in Imakefile. It is disabled in the default 873 Imakefile. 874 8751. DontToggleWorkSpaceManagerState patch (by Dan 'dl' Lilliehorn) 876 877 New keyword to turn off the feature toggling the workspace manager 878 state to/from map/button state when you press ctrl and the workspace 879 manager window is in focus. 880 8811. TWMAllIcons patch (by Dan 'dl' Lilliehorn) 882 883 Adds the TWMAllIcons menu, listing all iconified windows on all 884 workspaces. 885 8861. `f.changesize` patch (by Dan 'dl' Lilliehorn) 887 888 Adds the function `f.changesize` which allows you to change the size 889 of the focused window via menus and keybindings. 890 891 Examples: 892 893 "Down" = c|s: all : f.changesize "bottom +10" 894 "F1" = c|s: all : f.changesize "640x480" 895 8961. When crashing, ctwm now refers to ctwm-bugs@free.lp.se instead of 897 Claude.Lecommandeur@epfl.ch. 898 **NOTE: This is historical information: neither of these addresses 899 are the current contact.** 900 9011. Changed all the code to use ANSI C prototypes instead of the old 902 K&R style. 903 [Richard Levitte] 904 9051. Only use the DefaultFunction if no function was found. 906 [Richard Levitte] 907 9081. Correct DontMoveOff 909 910 The DontMoveOff checks when calculating random placement wasn't 911 satisfactory. It ended up placing all windows that were small enough 912 to fit in a random place at +50+50 with no exception. The behavior 913 has now been changed to only apply to very large windows (almost as 914 large as or larger than the screen). At the same time, the 915 RandomPlacement algorithm and the DonMoveOff checks have been tweaked 916 to keep the title height in mind, so centering and coordinates 917 correspond to the realities of the rest of CTWM. 918 [Richard Levitte] 919 9201. Correct resizing from menu 921 922 Choosing resize from the menu when not having 3D borders moved 923 the target window down and right by a border width. This was 924 an error in window position calculations. 925 [Richard Levitte] 926 9271. Enhanced info window 928 929 Added the outer geometry. Added the 3D border width. 930 [Richard Levitte] 931 9321. Restart on subsequent SIGHUPs 933 934 Reworked the code that catches a SIGHUP and has ctwm restart as 935 a result. The restarting code has moved from Restart() to the new 936 DoRestart(). Restart() now only sets a flag, and CtwmNextEvent() 937 has been changed to react to that flag and call DoRestart(). From 938 now on, CtwmNextEvent() is always used to get the next event, even 939 when no animations are going on. 940 [Richard Levitte] 941 9421. A number of VMS-related changes 943 944 DEC/HP PC is a bit picky, the X11 environment is a little bit 945 different, and there were some sign/unsigned conflicts and one 946 too large symbol (the VMS linker truncates anything beyond the 947 31 first characters of any symbol name), so some tweaks were 948 needed to get CTWM to build cleanly on VMS. 949 [Richard Levitte] 950 9511. Allow gcc users to build with paranoia 952 953 To make it easier to find possible problems, the Imakefile macro 954 GCC_PEDANTIC can be defined in Imakefile.local. 955 [Richard Levitte] 956 9571. Allow spaces in sound files. 958 959 The .ctwm-sounds file parser would clip sound files at the first 960 spaces. That won't do for sound libraries where file names may 961 have spaces in them. The parser now accepts spaces in file names, 962 and will trim spaces from the beginning and the end of both file 963 names and event tokens, allowing for a slightly more flexible 964 format. 965 [Richard Levitte] 966 9671. ctwm.spec 968 969 Added a specification file for RPM building. 970 [Richard Levitte] 971 9721. More info for m4 973 974 The m4 subprocess now gets the variable PIXMAP_DIRECTORY, which 975 is defined to the directory where the pixmaps are installed, and 976 the new flags IMCONV, GNOME, SOUNDS, SESSION and I18N. 977 [Richard Levitte] 978 9791. Document sounds 980 981 The sounds system is now documented in the man page. 982 [Richard Levitte] 983 9841. Build RPMs 985 986 Added the target "rpm" to build an RPM directly from a distribution 987 tarball. 988 [Richard Levitte] 989 9901. Make life easier for package builders 991 992 Added the possibility to configure where some libraries can be found 993 through the use of `USER_*` make variables in Imakefile.local. Added 994 a lot more commentary in Imakefile.local-template. 995 [Richard Levitte] 996 9971. Make it easier to configure on VMS 998 999 Moved all the configuration definitions to descrip.local-template, 1000 and instruct the users to copy that file to descrip.local and make 1001 all needed changes there. 1002 [Richard Levitte] 1003 10041. Changed all relevant occurences of levitte@lp.se to 1005 richard@levitte.org. 1006 [Richard Levitte] 1007 1008 1009 1010## 3.6 (2002-08-08 or earlier) 1011 10121. Fix line numbers for errors when using m4 preprocessor. Send thanks 1013 to Josh Wilmes <<josh@hitchhiker.org>>. 1014 10151. Fix the way menu entries are selected with the keyboard. Now 1016 when you type a letter, the pointer moves to the next entry 1017 whose first letter is this letter, but does not activate it. 1018 The new keyword IgnoreCaseInMenuSelection, can be used to 1019 ignore case for this delection. 1020 10211. New keyword: DontSave. Takes a window list as argument. All listed 1022 windows won't have their characteristics saved for the session manager. 1023 Patch from Matthias Baake <<Matthias.Baake@gmx.de>> 1024 10251. Also from Matthias Baake <<Matthias.Baake@gmx.de>>: 1026 With the new keywords BorderLeft, BorderRight, BorderBottom and 1027 BorderTop (each of them is optional with a default value of 0 and 1028 takes a nonnegative integer as argument) you can declare a border 1029 "off limits" for f.move etc.. These borders act the same way as the 1030 real borders of the screen when moving windows; you can use 1031 f.forcemove to override them. 1032 10331. Sloppy Focus added with keyword "SloppyFocus" in configuration file 1034 (DINH V. Hoa <<dinh@enserb.fr>>). 1035 10361. The keyword "ClickToFocus" has been correctly implemented 1037 (DINH V. Hoa <<dinh@enserb.fr>>). 1038 10391. The keyword "IgnoreModifier" has been added, to use this feature, you 1040 have to add a line `IgnoreModifier { lock m2 }` in the configuration 1041 file. All bindings (buttons and keys) will ignore the modifiers you 1042 specified. It is useful when you use caps locks or num locks. You 1043 don't need IgnoreLockModifier any more with this option. (DINH V. 1044 Hoa <<dinh@enserb.fr>>). 1045 10461. New keyword: WindowBox. Creates a new window called a box, where 1047 all the client windows that match the windows list are opened in, 1048 instead of the roor window. This is useful to group small windows 1049 in the same box (xload for instance) : 1050 1051 WindowBox "xloadbox" "320x100+0-0" { 1052 "xload" 1053 } 1054 10551. New function: f.fittocontent. Can be used only with window boxes. 1056 The result is to have the box have the minimal size that contains 1057 all its children windows. 1058 10591. New keyword: WindowGeometries. Used to give a default geometry to some 1060 clients: 1061 1062 WindowGeometries { 1063 "Mozilla*" "1000x800+10+10" 1064 "jpilot*" "800x600-0-0" 1065 } 1066 10671. New keyword: IconMenuDontShow. Don't show the name of these windows 1068 in the TwmIcons menu. 1069 10701. And, as usual, a few bug fixes here and there. 1071 1072 1073 1074## 3.5.2 (1999-09-10 or earlier) 1075 10761. `f.moveresize`: Takes one string argument which is a geometry with the 1077 standard X geometry syntax (e.g. `200x300+150-0`). Sets the current 1078 window to the specified geometry. The width and height are to be given 1079 in pixel, no base size or resize increment are used. 1080 10811. AutoLower et `f.autolower`: from Kai Großjohann 1082 (Kai.Grossjohann@CS.Uni-Dortmund.DE). Same as autoraise but with lower. 1083 10841. `WindowRingExclude`: Takes a window list as argument. All listed windows 1085 will be excluded from the WarpRing. 1086 10871. A new menu: "TwmIcons" same as "TwmWindows", but shows only iconified 1088 windows. I did this when I got bored of having icons. Now I have no 1089 icons and no icon managers. I use this menu to deiconify windows. 1090 When I was young, I liked to have brightly colored icons, but now that 1091 I am getting old(er), I prefer a bare desktop. 1092 1093 1094 1095## 3.5.1 (1999-05-02 or earlier) 1096 10971. `f.initsize`: resets a window to its initial size given by the 1098 `WM_NORMAL_HINTS` hints. 1099 11001. `f.ring`: Selects a window and adds it to the WarpRing, or removes it if 1101 it was already in the ring. This command makes f.warpring much more 1102 useful, by making its configuration dynamic (thanks to Philip Kizer 1103 <<pckizer@tamu.edu>>). 1104 11051. f.jumpleft, f.jumpright, f.jumpup, f.jumpdown : takes one integer 1106 argument (the step). These function are designed to be bound to keys, 1107 they move the current window (step * {X,Y}MoveGrid) pixels in the 1108 corresponding direction. stopping when the window encounters another 1109 window (ala f.pack). 1110 1111 1112 1113## 3.5 (1997-11-27 or earlier) 1114 11151. `f.pack [direction]`. 1116 Where direction is one of: "right", "left", "top" or "bottom". 1117 The current window is moved in the specified direction until it reaches 1118 an obstacle (either another window, or the screen border). The pointer 1119 follows the window. Examples: 1120 1121 "Right" = m : window : f.pack "right" 1122 "Left" = m : window : f.pack "left" 1123 "Up" = m : window : f.pack "top" 1124 "Down" = m : window : f.pack "bottom" 1125 11261. `f.fill [direction]`. 1127 Where direction is either : "right", "left", "top" or "bottom". 1128 The current window is resized in the specified direction until it 1129 reaches an obstacle (either another window, or the screen border). 1130 1131 "Right" = s|m : window : f.fill "right" 1132 "Left" = s|m : window : f.fill "left" 1133 "Up" = s|m : window : f.fill "top" 1134 "Down" = s|m : window : f.fill "bottom" 1135 11361. `f.savegeometry`. 1137 The geometry of the current window is saved. The next call to 1138 `f.restoregeometry` will restore this window to this geometry. 1139 11401. `f.restoregeometry` 1141 Restore the current window geometry to what was saved in the last 1142 call to `f.savegeometry`. 1143 11441. ShortAllWindowsMenus 1145 Don't show WorkSpaceManager and IconManagers in the TwmWindows and 1146 TwmAllWindows menus. 1147 11481. f.toggleworkspacemgr 1149 Toggle the presence of the WorkSpaceManager. If it is mapped, it will 1150 be unmapped and vice verça. 1151 11521. OpenWindowTimeout number 1153 number is an integer representing a number of second. When a window 1154 tries to open on an unattended display, it will be automatically 1155 mapped after this number of seconds. 1156 11571. `DontSetInactive { win-list }` 1158 These windows won't be set to InactiveState when they become invisible 1159 due to a change workspace. This has been added because some ill-behaved 1160 clients (Frame5) don't like this. 1161 11621. `UnmapByMovingFarAway { win-list }` 1163 These windows will be moved out of the screen instead of being 1164 unmapped when they become invisible due to a change workspace. This has 1165 been added because some ill-behaved clients (Frame5) don't like to be 1166 unmapped. Use this if the previous doesn't work. 1167 11681. `AutoSqueeze { win-list }` 1169 These windows will be auto-squeezed. i.e. automatically unsqueezed 1170 when they get focus, and squeezed when they loose it. Useful for the 1171 workspace manager. (Note, it is not possible to AutoSqueeze icon 1172 managers). 1173 11741. `StartSqueezed { win-list }` 1175 These windows will first show up squeezed. 1176 11771. RaiseWhenAutoUnSqueeze 1178 Windows are raised when auto-unsqueezed. 1179 11801. Now if the string "$currentworkspace" is present inside the string 1181 argument of f.exec, it will be substituated with the current workspace 1182 name. So it is possible to do something like : 1183 1184 f.exec "someclient -xrm ctwm.workspace:$currentworkspace &" 1185 1186 and the client will popus up in the workspace where the command was 1187 started even if you go elsewhere before it actually shows up. 1188 11891. Fixes for the VMS version. From Richard Levitte - VMS Whacker 1190 <<levitte@lp.se>>. 1191 11921. Better I18N. From Toshiya Yasukawa <<t-yasuka@dd.iij4u.or.jp>>. (Define 1193 I18N in Imakefile to activate it). 1194 11951. Better Session Management interface. Patches from Matthew McNeill 1196 <<M.R.McNeill@durham.ac.uk>>. 1197 11981. new flag : `-name`, useful only for captive Ctwm. Sets the name of the 1199 captive root window. Useful too for next point. If no name is 1200 specified ctwm-n is used, where n is a number automatically 1201 generated. 1202 12031. Two new client resources are now handled by Ctwm : 1204 1205 * `ctwm.redirect: <captive_ctwm_name>` 1206 1207 The new client window is open in the captive Ctwm with name 1208 `<captive_ctwm_name>`. 1209 1210 * `ctwm.rootWindow: <window_id>` 1211 1212 The new client window is reparented into `<window_id>` (whaa!!!). 1213 It is up to you to find any usefullness to this. 1214 12151. If the string "$redirect" is present inside the string 1216 argument of f.exec, it will be substituated with a redirection 1217 to the current captive Ctwm if any (or nothing if in a main Ctwm). 1218 So it is possible to do something like : 1219 1220 f.exec "someclient $redirect &" 1221 1222 and the client will popus up in the right captive Ctwm. 1223 12241. New function f.hypermove. With it, you can drag and drop a window 1225 between 2 captives Ctwm (or between a captive and the root Ctwm). 1226 12271. 2 new m4 variables defined in your startup file: 1228 1229 * TWM_CAPTIVE 1230 : value "Yes" if Ctwm is captive, "No" else. 1231 1232 * TWM_CAPTIVE_NAME 1233 : The name of the captive Ctwm, if captive. 1234 12351. `RaiseOnClick`: if present a window will be raised on top of others 1236 when clicked on, and the ButtonPress event will be correctly 1237 forwarded to the client that owns this window (if it asked to). 1238 1239 RaiseOnClickButton <n> : <Button number to use for RaiseOnClick> 1240 12411. `IgnoreLockModifier`: if present, all bindings (buttons and keys) will 1242 ignore the LockMask. Useful if you often use caps lock, and don't 1243 want to define twice all your bindings. 1244 12451. AutoFocusToTransients 1246 Transient windows get focus automatically when created. Useful with 1247 programs that have keyboard shortcuts that pop up windows. (patch 1248 from Kai Grossjohann <<grossjohann@charly.cs.uni-dortmund.de>>). 1249 12501. PackNewWindows 1251 Use f.movepack algorithm instead of f.move when opening a new window. 1252 1253 1254 1255## 3.4 (1996-09-14 or earlier) 1256 12571. 2 new keywords: XMoveGrid and YMoveGrid with an integer parameter. 1258 Constrains window moves so that its x and y coordinates are multiple 1259 of the specified values. Useful to align windows easily. 1260 12611. New function: f.deleteordestroy. First tries to delete the window 1262 (send it `WM_DELETE_WINDOW` message), or kills it, if the client 1263 doesn't accept such message. 1264 12651. New function : f.squeeze. It squeezes a window to a null vertical 1266 size. Works only for windows with either a title, or a 3D border 1267 (in order to have something left on the screen). If the window is 1268 already squeezed, it is unsqueezed. 1269 12701. New built-in title button: `:xpm:vbar` (a vertical bar). 1271 12721. CenterFeedbackWindow : The moving and resizing information window 1273 is centered in the middle of the screen instead of the top left 1274 corner. 1275 12761. 2 New options: 1277 1278 * -version 1279 : Ctwm just prints its version number and exits. 1280 * -info 1281 : Ctwm prints its detailed version and compile time options. 1282 12831. WarpToDefaultMenuEntry (Useful only with StayUpMenus) : When using 1284 StayUpMenus, and a menu does stays up, the pointer is warped to 1285 the default entry of the menu. Try it. Can emulate double click. 1286 For example : 1287 1288 Button2 = : icon : f.menu "iconmenu" 1289 menu "iconmenu" { 1290 "Actions" f.title 1291 "" f.separator 1292 "*Restore" f.iconify 1293 "Move" f.move 1294 "Squeeze" f.squeeze 1295 "Occupy ..." f.occupy 1296 "Occupy All" f.occupyall 1297 "" f.separator 1298 "Delete" f.deleteordestroy 1299 } 1300 1301 will result in DoubleButton2 on an icon uniconifies it. 1302 13031. When you popup a menu that is constrained by the border of the screen 1304 the pointer is warped to the first entry. (Avoid exiting ctwm when you 1305 just want to refresh the screen). 1306 13071. When compiled with `X11R6` defined, ctwm supports ICE session 1308 management. (the code has been stolen directly from the X11R6 twm, 1309 it has not been thoroughly tested, humm... actually, not tested at 1310 all). 1311 13121. SchrinkIconTitles: A la Motif schrinking of icon titles, and expansion 1313 when mouse is inside icon. 1314 (Yes, it's misspelt. Yes, the misspelling is accepted.) 1315 13161. AutoRaiseIcons: Icons are raised when the cursor enters it. Useful 1317 with SchrinkIconTitles. 1318 1319 13201. XPM files for title bars or buttons may include the following symbolic 1321 colors. These symbolic colors allow the possiblity of using the same 1322 3d XPM file with different colors for different titlebars. 1323 1324 Background 1325 : The main color to be used by the title bar 1326 1327 HiShadow 1328 : The color to be used as the highlight 1329 1330 LoShadow 1331 : The color to be used as the dark shadow. 1332 1333 Using these colors, I have built some 3d XPM files for various 1334 titlebars while still keeping the ability to change titlebar colors. 1335 [Matt Wormley <<mwormley@airship.ardfa.calpoly.edu>>] 1336 13371. Added a keyword to the .ctwmrc file: "UseSunkTitlePixmap". This 1338 makes it so the shadows are inversed for title pixmaps when focus is 1339 lost. This is similar to having the SunkFocusWindowTitle, but it 1340 makes your 3d XPM sink instead of just the whole bar. 1341 [Matt Wormley <<mwormley@airship.ardfa.calpoly.edu>>] 1342 13431. Added 3 new builtin 3d buttons for "Iconify", "Resize" and "Box". They 1344 are available with the :xpm: identifier in the .ctwmrc file. 1345 [Matt Wormley <<mwormley@airship.ardfa.calpoly.edu>>] 1346 13471. Added another keyword to the .ctwmrc file: "WorkSpaceFont". This 1348 allows you to specify the font to use in the workspace manager. 1349 [Matt Wormley <<mwormley@airship.ardfa.calpoly.edu>>] 1350 13511. 8 new xpm pixmaps for buttons, title highlite, etc... : 1352 3dcircle.xpm 3ddimple.xpm 3ddot.xpm 3dfeet.xpm 3dleopard.xpm 3dpie.xpm 1353 3dpyramid.xpm 3dslant.xpm 1354 [Matt Wormley <<mwormley@airship.ardfa.calpoly.edu>>] 1355 13561. 2 new functions : f.forwmapiconmgr and f.backmapiconmgr, similar to 1357 f.forwiconmgr and f.backiconmgr but only stops on mapped windows. 1358 [Scott Bolte <<scottb@cirque.moneng.mei.com>>] 1359 13601. Last minute: PixmapDirectory now accept a colon separated list of 1361 directories. 1362 13631. If you use m4, ctwm now defines `TWM_VERSION` which is the version in 1364 the form of floating point (e.g. 3.4). 1365 13661. I forgot to tell that IconRegion has now 3 more optionnal parameters 1367 iconjust, iconregjust and iconregalign. That can be used to give 1368 special values to IconJustification, IconRegionJustification and 1369 IconRegionAlignement for this IconRegion. The new syntax is : 1370 1371 IconRegion geomstring vgrav hgrav gridwidth gridheight \ 1372 [iconjust] [iconregjust] [iconregalign] [{ win-list }] 1373 1374 1375 1376## 3.3 (pre-1995-02-11 or 1995-05-04) 1377 13781. Better 3D borders with SqueezeTitle. 1379 13801. New keywords : BorderShadowDepth, TitleButtonShadowDepth, 1381 TitleShadowDepth, MenuShadowDepth and IconManagerShadowDepth. You can 1382 modify the depth of the 3D shadow of all the objects. 1383 13841. f.altcontext. a new context named "alter" is introduced. The next key 1385 or button event after a call to f.altcontext will be interpreted using 1386 the alternate context. To define bindings in the alternate context, use 1387 the keyword alter in the context field of the binding command. 1388 13891. f.altkeymap. Up to 5 alternate modifiers (a1 to a5). The next key 1390 or button event after a call to f.altkeymap will be interpreted with 1391 this alternate modifies set. To define bindings with an alternate 1392 modifier, use the keyword 'a' followed by the number of the modifier in 1393 the modifier field of the binding command. Only the root, window, icon 1394 and iconmgr context are allowed when an alternate modified is used. 1395 13961. Default menu entry : If a menu entry name begins with a "\*" (star), 1397 this star won't be displayed and the corresponding entry will be the 1398 default entry for this menu. When a menu has a default entry and is used 1399 as a pull-right in another menu, this default entry action will be executed 1400 automatically when this submenu is selected without being displayed. 1401 It's hard to explain, but easy to understand. 1402 14031. New keywords: 1404 1405 `ReallyMoveInWorkspaceManager` 1406 : tells ctwm to move the actual window when the user is moving the 1407 small windows in the WorkSpaceMap window. 1408 1409 `AlwaysShowWindowWhenMovingFromWorkspaceManager` 1410 : tells ctwm to always map the actual window during the move, 1411 regardless of whether it crosses the current workspace or not. The 1412 Shift key toggles this behaviour. 1413 14141. 4 new functions: 1415 1416 * f.rightworkspace 1417 * f.leftworkspace 1418 * f.upworkspace 1419 * f.downworkspace 1420 1421 Do what you expect. 1422 14231. The function f.raiseicons (from Rickard Westman <<ricwe@ida.liu.se>>). 1424 Raises all icons. 1425 14261. A new keyword: IconRegionAlignement. Like IconRegionJustification 1427 but align vertically. The parameter is "top", "center", "bottom" or 1428 "border". 1429 14301. f.addtoworkspace, f.removefromworkspace and f.toggleoccupation. (idea 1431 from Kai Grossjohann <<grossjoh@linus.informatik.uni-dortmund.de>>). They 1432 take one argument that is a workspace name. When applied to a window, 1433 they add to, remove from, or toggle the occupation of this window in 1434 this workspace. 1435 14361. AlwaysOnTop (from Stefan Monnier <<monnier@di.epfl.ch>>). Accept a list 1437 of windows as argument. Ctwm will do it's best to keep these windows 1438 on top of the screen. Not perfect. 1439 14401. Some moving stuff. 1441 1442 f.movepack 1443 : is like f.move, but it tries to avoid overlapping of windows on the 1444 screen. When the moving window begin to overlap with another 1445 window, the move is stopped. If you go too far over the other 1446 window (more than MovePackResistance pixels), the move is resumed 1447 and the moving window can overlap with the other window. Useful to 1448 pack windows closely. 1449 1450 f.movepush 1451 : Instead of stopping the move, tries to push the other window to 1452 avoid overlap. f.movepush is here mainly because I found it 1453 amusing to do it. Is is not very useful. 1454 14551. `TitleJustification`: Takes one string argument : "left", "center", or 1456 "right". Tells ctwm how to justify the window titles. 1457 14581. `UseThreeDWMap`: Tells ctwm to use 3D decorations for the small windows 1459 in the workspace map. 1460 14611. `ReverseCurrentWorkspace`: Tells ctwm to reverse the background and 1462 foreground colors in the small windows in the workspace map for the 1463 current workspace. 1464 14651. `DontWarpCursorInWMap`: Tells ctwm not to warp the cursor to the 1466 corresponding actual window when you click in a small window in the 1467 workspace map. 1468 14691. If there is neither MapWindowBackground, nor MapWindowForeground in the 1470 config file,the window title colors are used for the small windows in the 1471 workspace map. 1472 1473 1474 1475## 3.2 (1994-11-13 or earlier) 1476 14771. I have considerably reworked the focus handling. So I have probably 1478 introduced some problems. 1479 14801. New keyword: `NoIconManagerFocus`. Tells ctwm not to set focus on windows 1481 when the pointer is in an IconManager. 1482 14831. new option: `-W`. Tells ctwm not to display any welcome when starting. 1484 To be used on slow machines. 1485 14861. New keyword: `StayUpMenus`. Tells ctwm to use stayup menus. These 1487 menus will stay on the screen when ButtonUp, if either the menu has 1488 not yet been entered by the pointer, or the current item is a 1489 f.title. 1490 14911. Now ctwm tries to use welcome.xwd instead of welcome.xpm if it exists. 1492 On my machine the ctwm process size went from 2.3MB to 1MB when changing 1493 this. Xpm is very greedy. 1494 14951. New keyword: `IconRegionJustification`. Tells ctwm how to justify 1496 icons inside their place in the IconRegion. This keyword needs a 1497 string value. The acceptable values are : "left", "center", "right" 1498 and "border". If "border" is given, the justification will be "left" 1499 if the icon region gravity is "west" and "right" if the icon region 1500 gravity is "east". (clever, isn't it) 1501 15021. If you specify the `-f filename` option, ctwm will first try to load 1503 filename.scrnum, where scrnum is the screen number. If it fails, it 1504 will try to load filename as usual. 1505 15061. TitleButtons can now have different bindings for buttons with the 1507 following syntax : 1508 1509 LeftTitleButton ":xpm:menu" { 1510 Button1 : f.menu "WindowMenu" 1511 Button2 : f.zoom 1512 Button3 : f.hzoom 1513 } 1514 1515 The old syntax is of course accepted. 1516 Patch from Stefan Monnier <<Stefan_Monnier@NIAGARA.NECTAR.CS.CMU.EDU>>. 1517 15181. A lot of new animated title buttons : `%xpm:menu-up`, `%xpm:menu-down`, 1519 `%xpm:resize-out-top`, `%xpm:resize-in-top`, `%xpm:resize-out-bot`, 1520 `%xpm:resize-in-bot`, `%xpm:maze-out`, `%xpm:maze-in`, `%xpm:zoom-out`, 1521 `%xpm:zoom-in` and `%xpm:zoom-inout`. From Stefan Monnier 1522 <<Stefan_Monnier@NIAGARA.NECTAR.CS.CMU.EDU>>. 1523 15241. 2 new builtin menus: TwmAllWindows and TwmWorkspaces. Guess what they 1525 do. 1526 15271. You can now bind menus to keys. When a menu is visible, you can 1528 navigate in it with the arrow keys. "Down" or space goes down, "Up" 1529 goes up, "Left" pops down the menu, and "Right" activates the current 1530 entry. The first letter of an entry name activates this entry (the first 1531 one if several entries match). If the first letter is ~ then 1532 Meta-the-second-letter activates it, if this first letter is ^ then 1533 Control-the-second-letter activates it, and if this first letter is space, 1534 then the second letter activates it. 1535 15361. Support for VMS. Patch from Peter Chang <<peterc@v2.ph.man.ac.uk>>. 1537 Completely untested. If you have problems to build on VMS ask 1538 Peter Chang. 1539 15401. New keyword: `MoveOffResistance`. Idea borrowed to fvwm. If you set 1541 MoveOffResistance to a positive (n) value, dontmoveoff will only 1542 prevent you from going off the edge if you're within n pixels off the 1543 edge. If you go further, dontmoveoff gives up and lets you go as far 1544 as you wish. f.forcemove still allows you to totally ignore 1545 dontmoveoff. A negative value puts you back into "never moveoff" mode 1546 (it's the default). 1547 15481. The files `background[1-7].xpm` and `background9.xpm` have been 1549 removed from the distribution. Someone tells me that they are 1550 copyrighted. I tried to contact him in order to join his copyright, 1551 but his mail address is invalid. <<desktop-textures@avernus.com>>. 1552 Most of these backgrounds and much more can be obtained in the AIcons 1553 package on ftp.x.org. Particularly in cl-bgnd/Textures: bg_blu.gif, 1554 concrete.gif, marble1.gif, sharks.gif bg_grn.gif, granite_dark.gif, 1555 marble2.gif, snails.gif, coarse.gif, granite_light.gif and pool.gif. 1556 15571. New keyword: `BorderResizeCursors` with no parameter. If used ctwm 1558 will put nice cursors when the cursor in on the window borders. To 1559 be used when you have bound a button to f.resize in the frame 1560 context. 1561 15621. The xpm files are now installed in `$(TWMDIR)/images` instead of 1563 `$(TWMDIR)`. 1564 15651. Due to the many problems I had with signals being slightly different 1566 on different systems, I rewrote the animation handling without using 1567 signals anymore. I hope it is more portable. The old code is still 1568 available if you define USE_SIGNALS. 1569 1570 1571 1572## 3.1 (1994-01-28) 1573 15741. Ctwm is moving. You can now have animated images for icons, root 1575 backgrounds, title buttons and focus window title image. This adds 1576 one new keyword: `AnimationSpeed`, and 4 new function: 1577 `f.startanimation`, `f.stopanimation`, `f.speedupanimation` and 1578 `f.slowdownanimation`. An image name is considered an animation if it 1579 contains the percent (%) character. In which case ctwm replaces this 1580 character by numbers starting a 1, and will play an animation with 1581 all these images. There is only 2 examples : ball%.xpm suitable for 1582 icons, and supman%.xbm suitable for title highlight. Another example 1583 (much more beautiful) can be found in the Mosaic distribution. There 1584 is also one built-in animation for title buttons : `%xpm:resize`, for 1585 example : 1586 1587 RightTitleButton "%xpm:resize" = f.resize 1588 15891. Add the WMgrButtonShadowDepth keyword to control the depth of the 1590 shadow of the workspace manager buttons. 1591 15921. The RandomPlacement command has now an optionnal parameter: 1593 "on", "off", "all" or "unmapped". 1594 15951. Three new keywords : ChangeWorkspaceFunction, IconifyFunction and 1596 DeIconifyFunction, the argument is the name of a function that is 1597 executed whenever the corresponding event occurs. Useful for sounds : 1598 1599 ChangeWorkspaceFunction !"cat /users/lecom/sounds/bom.au 2>/dev/null 1>/dev/audio &" 1600 16011. A new keyword : IconJustification with 1 argument, either: "left", 1602 "center" or "right". Tells ctwm how to justify the icon image on the 1603 icon title (if any). 1604 16051. flex is now supported. 1606 16071. The IconRegion keyword now support an optionnal winlist argument. 1608 Thanks to Mike Hoswell <<hoswell@ncar.ucar.edu>> for adding this. 1609 16101. f.separator now works (does something) with 3D menus. 1611 16121. The format xwd is now accepted for images (icons, background, ...). You 1613 have to prefix the image file name with xwd: to use this format. 1614 If the first character of an image file name is |, the filename is 1615 supposed to be a command that output a xwd image, and it is executed. 1616 For example, to use a gif file, use : 1617 1618 "|(giftoppm | pnmtoxwd) < /users/lecom/images/2010.gif" 1619 16201. A new keyword: MaxIconTitleWidth with an integer argument. If an icon 1621 title is larger than this integer, it is truncated. 1622 16231. A sound extension is supported. To use it you have to define 1624 `USE_SOUND` in the Imakefile (not defined by default). In order to 1625 use this option you need the rplay package. The documentation for 1626 this extension is in sounds.doc. Warning: this extension is not 1627 mine, and I don't use it, so don't expect a good support if you have 1628 problems with it. 1629 16301. A new keyword : NoBorder with a window list argument. These windows 1631 won't have borders. Thanks to J.P. Albers van der Linden 1632 <<albers@pasichva.serigate.philips.nl>> for this patch. 1633 16341. Ctwm has a new option selectable with the flag `-w`, if used, ctwm 1635 will not take over the whole screen(s), instead it will create a new 1636 window and manage it. The `-w` has an optional argument which is a 1637 window id of an existing window, if specified, ctwm will try to 1638 manage this window. This is totally useless, but I like it. The 1639 `f.adoptwindow` function can be used to capture an existing window 1640 into such a captive ctwm. A possible use of such mode can be to test 1641 new configuration file without restarting ctwm. 1642 16431. Now the welcome file can be of any type understood by ctwm. So it must 1644 be prefixed with its type. The default is `xpm:welcome.xpm` if the 1645 XPM option is compiled in, else it is `xwd:welcome.xwd`. You use for 1646 example: 1647 1648 setenv CTWM_WELCOME_FILE "|(giftoppm | pnmtoxwd) < ~/images/2010.gif" 1649 16501. You can now have 3D window borders with the keyword: UseThreeDBorders. 1651 In which case the 3D border width is given with: ThreeDBorderWidth. 1652 The default value is 6. The color is BorderColor for the window that 1653 has focus and BorderTileBackground for all others windows. Note: The 1654 3D borders do not merge very well with squeezed titles, as the top 1655 edge of the window where the title is missing does not get a 3d 1656 border. 1657 16581. Now, WindowRing can be specified without argument, in this case all 1659 the windows are in the ring. (Alec Wolman 1660 <<wolman@blue.cs.washington.edu>>) 1661 16621. New keyword: WarpRingOnScreen, if present, tells ctwm that f.warpring 1663 should warp pointer only to windows visible in the current workspace. 1664 1665 1666 1667## 3.0 (1993-07-21) 1668 16691. A few bugs fixes. 1670 16711. A 3D presentation of menus, titles and IconManagers can be selected 1672 with UseThreeDMenus, UseThreeDTitles and UseThreeDIconManagers. If 1673 UseThreeDTitles is set the default values for TitleButtonBorderWidth, 1674 FramePadding, TitlePadding, ButtonIndent are set to 0 pixels. I am 1675 not that proud of the appearance of 3D titles but 3D menus look nice. 1676 If UseThreeDTitles is set the flag SunkFocusWindowTitle tells ctwm to 1677 sunk the title of the window that the focus. 3D features look ugly on 1678 monochrome displays, but I have no such display for testing purpose. 1679 If a monochrome display owner can have a look, he is welcome. The 1680 contrast of the clear and dark shadows can be tuned via the 1681 ClearShadowContrast and DarkShadowContrast parameters. These 1682 parameters are percentages. The formulas used are : 1683 1684 clear.{RGB} = (65535 - color.{RGB}) * (ClearShadowContrast / 100) 1685 dark.{RGB} = color.{RGB} * ((100 - DarkShadowContrast) / 100) 1686 1687 If you choose UseThreeDIconManagers, icon titles are also 3D. By 1688 defaults new colors are allocated for shadows, but you can specify 1689 BeNiceToColormap to inform ctwm to use stipple instead of new colors, 1690 the effect is less beautiful, but acceptable. 1691 1692 16931. A new keyword: NoIconTitle with an optionnal window list. 1694 16951. A new keyword: TransientOnTop with an integer parameter. This 1696 paramater is a percentage and tells ctwm to put transient (and 1697 non-group leader) windows always on top of their leader only if their 1698 surface is smaller than this fraction of the surface of their leader. 1699 17001. OpaqueMove and OpaqueResize now accept an optionnal list of windows 1701 as parameter. They also have their NoOpaqueMove and NoOpaqueResize 1702 counterpart with the same syntax. 1703 17041. Two new keywords: OpaqueMoveThreshold and OpaqueResizeThreshold with 1705 one integer parameter. The parameter represent a percentage of the 1706 screen surface. If Opaque{Move,Resize} is active for a window, (via 1707 point 4) the opaque {move, resize} is done only if the window surface 1708 is smaller than this percentage of the screen. The default is large 1709 enough. 1710 17111. Startup is optionally piped into `m4` before ctwm parse it, ypu can 1712 now have a common startup file for ctwm, tvtwm, etc ... It can be 1713 disabled at compile time by undefining USEM4 in Imakefile. It can be 1714 disabled at execution time by using the `-n` option. Take care if you 1715 have backquotes (`) in your .ctwmrc file. This character is special 1716 to m4. In that case, put something like : 1717 1718 changequote(,) 1719 changequote(``,'') 1720 1721 at the beginning of your .ctwmrc. 1722 17231. The startup looks nicer (I think). If you use XPM and the file 1724 welcome.xpm is present in your PixmapDirectory, it is displayed while 1725 the startup is in progress. Unfortunately, the PixmapDirectory is 1726 known only after the .ctwmrc is loaded, and this loading is a large 1727 part of the startup time. So you can define the environnement 1728 variable `CTWM_WELCOME_FILE` to point to an XPM file, in which case 1729 it will be displayed very quickly. 1730 17311. A new function: f.separator, valid only in menus. The effect is to add 1732 a line separator between the previous and the following entry. The 1733 name selector part in the menu is not used. f.separator works only 1734 with conventionnal menus, not with 3D menus. 1735 17361. Thanks to <<bret@essex.ac.uk>>, the man page is integrated with the 1737 original twm one, and is of a much better quality. 1738 17391. While moving a window, the position is displayed in a similar way as 1740 the size when resizing. 1741 17421. The info window now display the compile time options of the current 1743 version of ctwm. 1744 17451. You can now specify xpm pixmap title buttons and TitleHighlight. 1746 There is 5 built-in scalable pixmap for buttons, `:xpm:menu`, 1747 `:xpm:dot`, `:xpm:resize`, `:xpm:zoom` and `:xpm:bar`. 1748 17491. Ctwm now restarts when receiving signal SIGHUP, so to restart it from 1750 a shell, use `kill -1 the_ctwm_pid`. 1751 17521. 2 New keywords: WMgrVertButtonIndent and WMgrHorizButtonIndent with 1 1753 parameter, specifying the vertical and horizontal space beetween 1754 buttons in the workspace manager. 1755 17561. Some more xpm files given. Among them several backgrounds. 1757 17581. Ctwm set the property `WM_WORKSPACELIST` (type STRING) on the root 1759 window, this property contains the null separated list of all the 1760 workspaces. Now the `WM_OCCUPATION` property on each window is a null 1761 separated list instead of a space separated list, it was wrong since 1762 workspace names can contain spaces. So, the first time you will start 1763 the this version, your windows will show up anywhere. 1764 17651. A new library libctwm.a and an include file ctwm.h are given. The 1766 library contains functions for an external program to have some 1767 control over ctwm. The functions are: 1768 1769 Bool CtwmIsRunning (); 1770 char **CtwmWorkspaces (); 1771 char *CtwmCurrentWorkspace (); 1772 int CtwmChangeWorkspace (); 1773 char **CtwmCurrentOccupation (); 1774 int CtwmSetOccupation (); 1775 int CtwmAddToCurrentWorkspace (); 1776 1777 There is no documentation. A program demolib.c is given to help. 1778 1779 1780 1781## 2.2 (1993-02-05) 1782 17831. Bugs: 1784 1785 * Redraw small windows when icon name changes. 1786 * Kill window from the title bar menu 1787 * Partial geometry on Workspace manager can core dump. 1788 * AutoRaise and tiny windows in the Workspace Map. 1789 17901. Transient windows and non group leader windows are now always on the 1791 top of their leader. 1792 17931. When an icon name changes, the icon itself changes automatically 1794 according the Icons list in your .ctwmrc. This is very useful for 1795 clients that have several states. For example xrn or some X mail 1796 readers can have two differents icons for new mail (news) / no new 1797 mail (news). 1798 17991. A new keyword: TransientHasOccupation has been added for people 1800 annoyed by the fact that since ctwm-2.1, transient-for non 1801 group-leader windows have the same occupation that their leader. If 1802 you specify this, these windows have their own occupation. 1803 18041. A new keyword: AutoOccupy. If specified, the occupation of a client is 1805 changed automatically when it's name or icon name changes, according 1806 to the Occupy list in your .ctwmrc. For example a mail reader can 1807 popup instantly in the current workspace when mail arrives. 1808 18091. A new keyword: DontPaintRootWindow. If specified, the root window is 1810 not painted, whatever you told in the Workspaces specification. This 1811 is useful to have pixmaps in the Workspace Map but not on the root 1812 window. 1813 18141. You can use XPM pixmaps for your background root window. Use 1815 xpm:filename instead of @filename. The latter is still accepted. Of 1816 course if your XPM file has transparent parts, there are not 1817 transparent on the root window, i.e. you dont see the electron gun 1818 through it. 1819 18201. XPMIconDirectory is replaced by PixmapDirectory. (XPMIconDirectory is 1821 still accepted). 1822 18231. You can now use colored root background pixmap and icons in many 1824 formats. Ctwm use the imconv library from the San Diego 1825 Supercomputer Center. To use these formats, specify: "im:filename" 1826 for the pixmap name. 1827 1828 * The following format are supported : 1829 1830 bmp 1831 : Microsoft Windows bitmap image file 1832 1833 cur 1834 : Microsoft Windows cursor image file 1835 1836 eps 1837 : Adobe Encapsulated PostScript file 1838 1839 gif 1840 : Compuserve Graphics image file 1841 1842 hdf 1843 : Hierarchical Data File 1844 1845 ico 1846 : Microsoft Windows icon image file 1847 1848 icon 1849 : Sun Icon and Cursor file 1850 1851 iff 1852 : Sun TAAC Image File Format 1853 1854 mpnt 1855 : Apple Macintosh MacPaint file 1856 1857 pbm 1858 : PBM Portable Bit Map file 1859 1860 pcx 1861 : ZSoft IBM PC Paintbrush file 1862 1863 pgm 1864 : PBM Portable Gray Map file 1865 1866 pic 1867 : PIXAR picture file 1868 1869 pict 1870 : Apple Macintosh QuickDraw/PICT file 1871 1872 pix 1873 : Alias image file 1874 1875 ppm 1876 : PBM Portable Pixel Map file 1877 1878 pnm 1879 : PBM Portable aNy Map file 1880 1881 ps 1882 : Adobe PostScript file 1883 1884 ras 1885 : Sun Rasterfile 1886 1887 rgb 1888 : SGI RGB image file 1889 1890 rla 1891 : Wavefront raster image file 1892 1893 rle 1894 : Utah Run length encoded image file 1895 1896 synu 1897 : SDSC Synu image file 1898 1899 tga 1900 : Truevision Targa image file 1901 1902 tiff 1903 : Tagged image file 1904 1905 viff 1906 : Khoros Visualization image file 1907 1908 x 1909 : AVS X image file 1910 1911 xbm 1912 : X11 bitmap file 1913 1914 xwd 1915 : X Window System window dump image file 1916 1917 * You can find the imconv package at `ftp.sdsc.edu`. in the directory 1918 `/pub/sdsc/graphics/imtools`. 1919 1920 * If `(width > screenwidth / 2) || (height > screenheight / 2)` the 1921 image is centered else it is tiled. 1922 1923 * If you don't have the libim library or don't want to use it, 1924 undefine IMCONV in Imakefile. 1925 1926 But take care : 1927 1928 * It is very memory consuming (on the server side). 1929 * It is very color cells consuming. 1930 * The ctwm executable is much larger executable. 1931 * Startup is much much slower (but not the workspace swap). 1932 * It works only for 8 planes pixmaps and 8 planes screens. If there 1933 is an imconv specialist somewhere that can generelize this, he is 1934 welcome. 1935 19361. Two new functions : f.nextworkspace, f.prevworkspace. 1937 19381. Xpm examples files are now automatically installed in `$(TWMDIR)` 1939 19401. An example of .ctwmrc is given, showing some aspect of ctwm 1941 (example.ctwmrc). It is not a complete .ctwmrc, only the ctwm 1942 aspects are shown. 1943 19441. A new file PROBLEMS has been added that lists some problems you 1945 can have while using ctwm and some solutions. 1946 1947Is there any good pixmap designer out there, that i can add beautiful 1948icons and background to the distribution. Don't use too many colors, 1949try to use the same few already used in the example icons. 1950 1951 1952 1953## 2.1 (1992-12-22) 1954 19551. Cleanup code to make gcc happy. 1956 19571. Bugs fixed 1958 1959 * IconMaskHint honored. 1960 1961 * Workaround a bug on HP7xx/8.07 servers for RaiseLower in Map 1962 window. The stacking order in the MapWindow was not correct on 1963 those servers. Use 1964 1965 EXTRA_DEFINES = -DBUGGY_HP700_SERVER 1966 1967 in your Imakefile if you plan to use this server. It doesn't 1968 break on others servers. 1969 1970 * No longer core dump if MapWindowCurrentWorkSpace or 1971 MapWindowDefaultWorkSpace are specified before WorkSpaces in 1972 .ctwmrc 1973 1974 * Small windows handling in the WorkspaceMap window works even if the 1975 Workspace Manager window has a title (that was not the case with 1976 ctwm-2.0). 1977 1978 * ForceIcon works for Xpm icons. 1979 1980 * Occupation of "transient for" window is correct. 1981 1982 * RestartPreviousState necessary to keep previous window occupation 1983 on restart. 1984 1985 * If a window dies while Occupy Window is mapped, the Occupy Window 1986 is correctly unmapped. 1987 19881. Ctwm now maintains the `WM_CURRENTWORKSPACE` property on the root 1989 window and `WM_OCCUPATION` on every windows. They mean what you 1990 think. These properties are string properties and are in clear text 1991 instead of an obscure mask. If an external application changes these 1992 properties ctwm respond with the correct actions, changing the 1993 current workspace or the occupation of a window. I give a small 1994 example (gtw.c). An application can manage its occupation and it is 1995 even possible to write an external workspace manager. It is of course 1996 not ICCCM compliant because ICCCM says nothing on multiple 1997 workspaces. The special names "all" and "current" can be used. And 1998 you can specify relative occupations if the workspace names list 1999 begin with a "+" or "-" (ex: "+current" adds a window to the current 2000 workspace). 2001 20021. 3 new functions: 2003 2004 `f.pin` 2005 : Pin/Unpin a menu on the screen. Only usable inside a root menu. 2006 2007 `f.vanish` 2008 : Remove a window from the current workspace. Works only if the 2009 window occupies at least one other workspace. 2010 2011 `f.warphere "win-name"` 2012 : Adds the window whose name matches win-name to the current 2013 workspace and warps the pointer to it. 2014 20151. And a new keyword: `NoShowOccupyAll`. Tells ctwm not to show 2016 OccupyAll windows in the WorkSpaceMap window. 2017 20181. All window names can now be specified as (shell-like) regular expressions. 2019 2020 2021 2022## 2.0 (date unknown) 2023 20241. A few bugs fixed: 2025 2026 * Resize at window creation with button2 works. 2027 2028 * Some others i don't remember. 2029 20301. Better support of monochrome displays: video inverse instead of 3d 2031 buttons. 2032 20331. WorkSpaceManager and Occupy Window are now resizable. Don't forget to 2034 verify you have a powerful server before resizing the workspace 2035 manager with OpaqueResize set. 2036 20371. X11R4 support with Imakefile.X11R4 (i didn't try so tell me). 2038 20391. The visibility of the workspace manager is now consistant with the 2040 visibility of the icon managers. This mean that by default the 2041 workspace manager is *NOT* visible at startup. Use the 2042 ShowWorkSpaceManager to make it visible at startup. 2043 20441. Two new functions: f.showworkspacemgr and f.hideworkspacemgr have been 2045 added. They do what you imagine. 2046 20471. And now, the cherry on the cake. The workspace manager has now 2 2048 states, the button state (the usual one) and the map state (the new 2049 one). In the map state the buttons are replaced by windows 2050 displaying a synthetic view of the corresponding workspaces. All 2051 the non-iconified windows of the workspace are shown as small windows 2052 with the icon name written in it. It looks like the virtual 2053 screen of [t]vtwm, but, of course, much nicer. 2054 2055 * In this state, you can modify directly the occupation of your 2056 windows by manipulating these little windows. 2057 2058 * Button1 move a window from a workspace to another. 2059 * Button2 copy a window from a workspace to another. 2060 * Button3 remove a window from a workspace. 2061 2062 * Clicking in the "root" of these windows warps you to the 2063 corresponding workspace. Clicking and releasing Button1 or 2064 Button2 quickly in a small window go to the corresponding 2065 workspace and warps the pointer to the corresponding window. 2066 2067 * The Control-Key (Press and Release) in workspace manager toggles 2068 the buttons and map state. 2069 2070 * Four variables and Three functions manipulates this: 2071 2072 * StartInMapState: The map state is selected at startup, default is 2073 buttons state. 2074 2075 * MapWindowCurrentWorkSpace: The aspect of the current workspace in 2076 the map window. 2077 2078 * MapWindowDefaultWorkSpace: Specify the aspect of the non-current 2079 workspaces in the map window. 2080 2081 * MapWindowBackground: 2082 * MapWindowForeground: Specify the aspect of the small windows in 2083 the map window on a per-client basis. 2084 2085 * f.setbuttonsstate: You can guess. 2086 2087 * f.setmapstate: You can guess. 2088 2089 * f.togglestate: You can guess. 2090 20911. AutoRaise with RaiseDelay. Thanks to Johan Vromans <<jv@mh.nl>> who 2092 gave me this patch. I think Warren Jessop <<whj@cs.washington.edu>> 2093 wrote it for twm. 2094 2095 2096 2097## 1.3 (1992-09-16) 2098 20991. Many bugs fixed: 2100 2101 * Partial geometry in the WorkSpaceManagerGeometry statement no 2102 longer cause ctwm to core dump. 2103 2104 * The occupy window name now is "Occupy Window" instead of "Occupy WIndow" 2105 a typo on the uppercase I in window. 2106 2107 * Several types problems that make good compilers to issue warnings. 2108 2109 * The icons of the WorkSpaceManager and Occupy Window windows now 2110 behave correctly with ButtonPress. 2111 2112 * UnknownIcon can now have Xpm icons specified. 2113 2114 * f.showiconmgr no longer map empty icon managers. 2115 2116 * The ctwm process is smaller (even smaller than twm). 2117 21181. Add the Occupy command in .ctwmrc, you can now specify at startup 2119 which window occupy which workspace. Example: 2120 2121 Occupy { 2122 "xload" {"all"} 2123 Window "xterm" {"here" "there" "elsewhere"} 2124 "xv" {"images"} 2125 WorkSpace "images" {"xloadimage"} 2126 } 2127 2128 2129 2130## 1.2 (date unknown) 2131 21321. You can now directly edit workspace names in their buttons. only 2133 printable characters, delete and backspace keys are honored. 2134 21351. Ctwm now handle shaped colored icons in XPM format. This added the 2136 variable XPMIconDirectory, and slightly modified the syntax of the 2137 Icons command. The XPM icon file names should be prefixed by the 2138 character '@' to distinguished them from the ordinary bitmap files. 2139 2140 Example: 2141 2142 XPMIconDirectory "/usr/lib/X11/X11/XPM" 2143 2144 Icons { 2145 "Axe" "@xedit.xpm" 2146 "xterm" "@xterm.xpm" 2147 "xrn" "@xrn.xpm" 2148 "HPterm" "@hpterm.xpm" 2149 "XAlarm" "@datebook.xpm" 2150 "Xman" "@xman.xpm" 2151 } 2152 2153 These above xpm pixmap are given. 2154 21551. Many bugs fixed: 2156 2157 * Icon regions now works. 2158 * The absence of ShowIconManager is taken into account. 2159 * The `-iconic` flag is honored. 2160 * The `-xrm 'ctwm.workspace'` works as expected. 2161 * I think that f.warpto[to|ring] works correctly i.e warps. Also to 2162 the correct workspace if the destination window doesn't occupy 2163 the current workspace. 2164 * A few minor bugs fixed. 2165 2166 2167 2168## 1.1 (1992-06-24 or 26) 2169 21701. Correction of a few bugs 2171 21721. Add the OpaqueResize flag: similar to OpaqueMove, but redraw the 2173 window you are resizing at each motion event. Extremely resource 2174 consuming, but beautiful with fast server/client/network. 2175 21761. Now if you don't specify any background/foreground/pixmap indication 2177 for the root window, ctwm leave it alone so you can have your own 2178 root background pixmap. 2179 21801. You can now specify on the command line a list of workspaces in which a 2181 new client opens. The syntax is: 2182 2183 whatever_client -xrm 'ctwm.workspace: name1 name2 ... namen' 2184 2185 or 2186 2187 whatever_client -xrm 'ctwm.workspace: all' 2188 2189 where 'name1', 'name2', ..., 'namen' are names of workspaces and 2190 'all' refers to all workspaces. Example: 2191 2192 xload -xrm 'ctwm.workspace: all' 2193 21941. Add the OccupyAll command in .ctwmrc, you can now specify at startup 2195 a list of windows that occupy all the workspaces. Example: 2196 2197 OccupyAll { 2198 "xload" 2199 "xconsole" 2200 "xbiff" 2201 } 2202 22031. Add the f.gotoworkspace function. It goes the workspace specified by 2204 its name. Example: 2205 2206 "F1" = : root : f.gotoworkspace "cognac" 2207 2208 2209 2210## 1.0 (after 1992-04-22) 2211 2212 2213 2214 2215 2216{>> 2217 vim:expandtab:ft=markdown:formatoptions-=q:formatoptions+=2 2218<<} 2219