~ctwm/ctwm/trunk

« back to all changes in this revision

Viewing changes to CHANGES.adoc

  • Committer: Matthew Fuller
  • Date: 2024-01-14 00:08:17 UTC
  • mfrom: (712.1.4 dev)
  • Revision ID: fullermd@over-yonder.net-20240114000817-bbhni6weyulcmqun
Rewrite README and CHANGES into asciidoc.

Previously these were in multimarkdown.  While we went straight to
asciidoc for the manual, these files require much less careful
formatting, so markdown seemed more appropriate.  However, they still
wanted things like definition lists and some other minor stuff that plain
markdown doesn't pull off so well, so the multimarkdown dialect was
chosen.

However, mmd has proven a little fragile over the years.  And the
markdown world is so wildly fragmented, and everyone looks at a .md file
and says "Oh, that must be processable by my own particular incompatible
local dialect", which means anywhere other than our Makefile trying to
render the files wound up squirrely anyway.

The README is pretty trivially and cleanly asciidoc-able.  CHANGES is
somewhat less so.  We wind up with a lot more noise in it from the
heavier markup of asciidoc, so it doesn't read quite as well as plain
text anymore.  It's probably not too hard to simplify it down to the
common subset of markdown.  But that would leave it as the _only_ bit of
processed markdown in the tree anymore, so I went ahead and adoc-ified it
just to be more consistent.  So now all our built docs are asciidoc.

    (n.b. there are a few README.md's in other places through the tree
    that aren't touched, but they're very much ".txt that happens to look
    md-ish and may process as that", so what the heck.  We have no code
    for or intention of actually building them into any output formats.)

Show diffs side-by-side

added added

removed removed

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