47
49
otherwise be (_e.g._, treat an ultra-wide display as 2 separate
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>>.
58
1. When restarting ctwm, the icon managers for the current workspace will
56
<btik-ctwm@scoubidou.com>.
60
* When restarting ctwm, the icon managers for the current workspace will
59
61
now initially show up, rather than those for first WS.
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.
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.
68
1. Fix display of combined modifiers in TwmKeys menu. Contributed by
69
Maxime Soulé <<btik-ctwm@scoubidou.com>>.
71
1. Fix window icon name spilling out into the border of icon manager
72
entries. Contributed by Carl Svensson <<ctwm@datagubbe.se>>.
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>.
73
* Fix window icon name spilling out into the border of icon manager
74
entries. Contributed by Carl Svensson <ctwm@datagubbe.se>.
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>>.
78
1. Fix window placement when `DontMoveOff` is enabled without 3D borders.
79
Contributed by Maxime Soulé <<btik-ctwm@scoubidou.com>>.
81
1. When window titles overflow the available space, always treat them as
78
<btik-ctwm@scoubidou.com>.
80
* Fix window placement when `DontMoveOff` is enabled without 3D borders.
81
Contributed by Maxime Soulé <btik-ctwm@scoubidou.com>.
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>>.
92
1. Perform various manipulations and overrides of `WM_HINTS` property
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.
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.
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.
109
## 4.0.2 (2018-08-25)
111
### Backward-Incompatible Changes And Removed Features
113
1. The `UseThreeDIconBorders` config var has been removed. It came in
111
== 4.0.2 (2018-08-25)
113
=== Backward-Incompatible Changes And Removed Features
115
* The `UseThreeDIconBorders` config var has been removed. It came in
114
116
silently and undocumented in 3.4 and has never done anything.
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`.
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.
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.
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.
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
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.
149
### New Config Options
151
=== New Config Options
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.
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`).
163
1. Fix up broken parsing of `IconifyStyle "sweep"`. Bug was introduced
165
* Fix up broken parsing of `IconifyStyle "sweep"`. Bug was introduced
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
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.
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
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
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.
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.
199
## 4.0.1 (2017-06-05)
201
### User Visible Changes
203
1. Fix a bug where fullscreen windows could sometimes wind up incorrectly
201
== 4.0.1 (2017-06-05)
203
=== User Visible Changes
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`.
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.
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
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
245
247
without support for C99 and mid-2000's POSIX are increasingly less likely
248
### Backward-Incompatible Changes And Removed Features
250
=== Backward-Incompatible Changes And Removed Features
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.
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.
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.
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.
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.
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.
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.
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.
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.
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!)
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.
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.
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.
311
### User Visible Changes
313
=== User Visible Changes
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.
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`
374
376
replaced by `RplaySoundHost`; the old name is still accepted, but
375
377
will be removed in a future version.
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.
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]
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.
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).
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).
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.
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.
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.
417
## 3.8.2 (2014-05-18)
419
1. Various code cleanups.
421
* Cleanup re: raising and warping to windows (previous location of
419
== 3.8.2 (2014-05-18)
421
* Various code cleanups.
423
** Cleanup re: raising and warping to windows (previous location of
422
424
pointer in windows), SaveWorkspaceFocus. A few extra NULL pointer
425
* Logical hasfocusvisible cleanup.
427
** Logical hasfocusvisible cleanup.
427
* Rename TwmWindow.list to iconmanagerlist, and various smaller
429
** Rename TwmWindow.list to iconmanagerlist, and various smaller
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.
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.
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`).
444
1. Fix incorrect inclusion of `$DESTDIR` in some paths.
446
1. Update for new website and mailing list at <http://www.ctwm.org>.
448
1. Look at `_MOTIF_WM_HINTS` for titlebar-less or border-less
446
* Fix incorrect inclusion of `$DESTDIR` in some paths.
448
* Update for new website and mailing list at <https://www.ctwm.org>.
450
* Look at `_MOTIF_WM_HINTS` for titlebar-less or border-less
453
## 3.8.1 (2012-01-05)
455
== 3.8.1 (2012-01-05)
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.
459
1. Quiet a bunch of compiler warnings.
461
* Quiet a bunch of compiler warnings.
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.
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]
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.
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.
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
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]
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]
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]
509
1. Fixed the following issue:
511
* Fixed the following issue:
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
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
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
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
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
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.
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.
536
1. Improve algoritm to deal with mismatched geometry of virtual
540
* Improve algoritm to deal with mismatched geometry of virtual
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
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
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]
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`.
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.
566
574
This is basically the previous change above done right.
567
575
[Olaf "Rhialto" Seibert]
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`.
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.
583
593
I also fixed up the horrible indentation in the functions
584
594
where I changed something.
585
595
[Olaf "Rhialto" Seibert]
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
791
821
This change differs a little bit from Björns contribution by
792
822
not using rand() at all.
794
1. `f.warpring` patch (by Björn Knutsson)
824
* `f.warpring` patch (by Björn Knutsson)
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.
800
1. `f.movetoprevworkspace`,
831
* `f.movetoprevworkspace`,
801
832
`f.movetonextworkspace`,
802
833
`f.movetoprevworkspaceandfollow`,
803
834
`f.movetonextworkspaceandfollow` patch (by Daniel Holmström)
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.
809
1. `f.fill` "vertical" patch (by Daniel Holmström)
841
* `f.fill` "vertical" patch (by Daniel Holmström)
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.
817
1. `RESIZEKEEPSFOCUS` bugfix patch (by Daniel Holmström)
850
* `RESIZEKEEPSFOCUS` bugfix patch (by Daniel Holmström)
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.
823
1. `f.zoom` bugfix patch (by Daniel Holmström)
857
* `f.zoom` bugfix patch (by Daniel Holmström)
825
860
`f.zoom` now doesn't move the window up (as it sometimes did before)
827
1. `IgnoreTransient` patch (by Peter Berg Larsen)
862
* `IgnoreTransient` patch (by Peter Berg Larsen)
829
865
New keyword with list of windows for which to ignore transients.
831
1. Workspace switch peformance optimization (by MC)
867
* Workspace switch peformance optimization (by MC)
833
870
Stops ctwm from redrawing windows that occupy all workspaces when
834
871
switching from one workspace to another.
836
1. GTK "group leader" bugfix (by Olaf 'Rhialto' Seibert)
873
* GTK "group leader" bugfix (by Olaf 'Rhialto' Seibert)
838
876
Makes ctwm aware of the mysterious GTK group leader windows.
840
1. Resize cursor with non-3D-borders bugfix (by Olaf 'Rhialto' Seibert)
878
* Resize cursor with non-3D-borders bugfix (by Olaf 'Rhialto' Seibert)
842
881
BorderResizeCursors now works also for top and left borders when
843
882
non-3D-borders are used.
845
1. Memory leak bugfix (by Simon Burge)
884
* Memory leak bugfix (by Simon Burge)
847
887
`GetWMPropertyString` in `util.c` no longer leaks memory.
849
1. Warpring bugfix (by Takahashi Youichirou)
889
* Warpring bugfix (by Takahashi Youichirou)
851
892
Solves these two problems when warping the pointer to the
852
893
next/previous mapped window:
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
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.
860
1. NoWarpToMenuTitle patch (by Julian Coleman)
901
* NoWarpToMenuTitle patch (by Julian Coleman)
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.
866
909
This patch introduces a new keyword `NoWarpToMenuTitle` keyword to
869
1. `Scr->workSpaceMgr.windowFont` font init bugfix (by Martin Stjernholm)
871
`The Scr->workSpaceMgr.windowFont` in workmgr.c is now initialized.
873
1. Full GNU regex patch (by Claude Lecommandeur)
912
* `Scr\->workSpaceMgr.windowFont` font init bugfix (by Martin Stjernholm)
915
`The Scr\->workSpaceMgr.windowFont` in workmgr.c is now initialized.
917
* Full GNU regex patch (by Claude Lecommandeur)
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
879
1. DontToggleWorkSpaceManagerState patch (by Dan 'dl' Lilliehorn)
924
* DontToggleWorkSpaceManagerState patch (by Dan 'dl' Lilliehorn)
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.
885
1. TWMAllIcons patch (by Dan 'dl' Lilliehorn)
931
* TWMAllIcons patch (by Dan 'dl' Lilliehorn)
887
934
Adds the TWMAllIcons menu, listing all iconified windows on all
890
1. `f.changesize` patch (by Dan 'dl' Lilliehorn)
937
* `f.changesize` patch (by Dan 'dl' Lilliehorn)
892
940
Adds the function `f.changesize` which allows you to change the size
893
941
of the focused window via menus and keybindings.
897
"Down" = c|s: all : f.changesize "bottom +10"
898
"F1" = c|s: all : f.changesize "640x480"
900
1. When crashing, ctwm now refers to ctwm-bugs@free.lp.se instead of
901
Claude.Lecommandeur@epfl.ch.
946
"Down" = c|s: all : f.changesize "bottom +10"
947
"F1" = c|s: all : f.changesize "640x480"
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.**
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
907
956
[Richard Levitte]
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]
912
1. Correct DontMoveOff
961
* Correct DontMoveOff
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
1117
## 3.5 (1997-11-27 or earlier)
1179
== 3.5 (1997-11-27 or earlier)
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:
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"
1130
1. `f.fill [direction]`.
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"
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).
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"
1140
1. `f.savegeometry`.
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"
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.
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`.
1148
1. ShortAllWindowsMenus
1210
* ShortAllWindowsMenus
1149
1211
Don't show WorkSpaceManager and IconManagers in the TwmWindows and
1150
1212
TwmAllWindows menus.
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.
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.
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.
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.
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
1178
1. `StartSqueezed { win-list }`
1240
* `StartSqueezed { win-list }`
1179
1241
These windows will first show up squeezed.
1181
1. RaiseWhenAutoUnSqueeze
1243
* RaiseWhenAutoUnSqueeze
1182
1244
Windows are raised when auto-unsqueezed.
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 :
1188
f.exec "someclient -xrm ctwm.workspace:$currentworkspace &"
1250
f.exec "someclient -xrm ctwm.workspace:$currentworkspace &"
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.
1193
1. Fixes for the VMS version. From Richard Levitte - VMS Whacker
1256
* Fixes for the VMS version. From Richard Levitte - VMS Whacker
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).
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>.
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
1207
1. Two new client resources are now handled by Ctwm :
1209
* `ctwm.redirect: <captive_ctwm_name>`
1211
The new client window is open in the captive Ctwm with name
1212
`<captive_ctwm_name>`.
1214
* `ctwm.rootWindow: <window_id>`
1216
The new client window is reparented into `<window_id>` (whaa!!!).
1217
It is up to you to find any usefullness to this.
1219
1. If the string "$redirect" is present inside the string
1270
* Two new client resources are now handled by Ctwm :
1272
`ctwm.redirect: <captive_ctwm_name>`::
1273
The new client window is open in the captive Ctwm with name
1274
`<captive_ctwm_name>`.
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.
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 :
1224
f.exec "someclient $redirect &"
1285
f.exec "someclient $redirect &"
1226
1288
and the client will popus up in the right captive Ctwm.
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).
1231
1. 2 new m4 variables defined in your startup file:
1234
: value "Yes" if Ctwm is captive, "No" else.
1237
: The name of the captive Ctwm, if captive.
1239
1. `RaiseOnClick`: if present a window will be raised on top of others
1293
* 2 new m4 variables defined in your startup file:
1296
value "Yes" if Ctwm is captive, "No" else.
1298
`TWM_CAPTIVE_NAME`::
1299
The name of the captive Ctwm, if captive.
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).
1243
RaiseOnClickButton <n> : <Button number to use for RaiseOnClick>
1305
RaiseOnClickButton <n> : <Button number to use for RaiseOnClick>
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.
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>).
1255
1317
Use f.movepack algorithm instead of f.move when opening a new window.
1259
## 3.4 (1996-09-14 or earlier)
1321
== 3.4 (1996-09-14 or earlier)
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.
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.
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.
1274
1. New built-in title button: `:xpm:vbar` (a vertical bar).
1336
* New built-in title button: `:xpm:vbar` (a vertical bar).
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
1283
1345
: Ctwm just prints its version number and exits.
1285
1347
: Ctwm prints its detailed version and compile time options.
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.
1292
Button2 = : icon : f.menu "iconmenu"
1296
"*Restore" f.iconify
1299
"Occupy ..." f.occupy
1300
"Occupy All" f.occupyall
1302
"Delete" f.deleteordestroy
1354
Button2 = : icon : f.menu "iconmenu"
1358
"*Restore" f.iconify
1361
"Occupy ..." f.occupy
1362
"Occupy All" f.occupyall
1364
"Delete" f.deleteordestroy
1305
1368
will result in DoubleButton2 on an icon uniconifies it.
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).
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
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.)
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.
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.
1329
: The main color to be used by the title bar
1332
: The color to be used as the highlight
1335
: The color to be used as the dark shadow.
1390
Background:: The main color to be used by the title bar
1392
HiShadow:: The color to be used as the highlight
1394
LoShadow:: The color to be used as the dark shadow.
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>]
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>]
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>]
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>]
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>]
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>]
1364
1. Last minute: PixmapDirectory now accept a colon separated list of
1424
* Last minute: PixmapDirectory now accept a colon separated list of
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).
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 :
1375
IconRegion geomstring vgrav hgrav gridwidth gridheight \
1376
[iconjust] [iconregjust] [iconregalign] [{ win-list }]
1380
## 3.3 (pre-1995-02-11 or 1995-05-04)
1382
1. Better 3D borders with SqueezeTitle.
1384
1. New keywords : BorderShadowDepth, TitleButtonShadowDepth,
1435
IconRegion geomstring vgrav hgrav gridwidth gridheight \
1436
[iconjust] [iconregjust] [iconregalign] [{ win-list }]
1440
== 3.3 (pre-1995-02-11 or 1995-05-04)
1442
* Better 3D borders with SqueezeTitle.
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.
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.
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.
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.
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.
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.
1425
1488
Do what you expect.
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.
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
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.
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.
1444
1. Some moving stuff.
1507
* Some moving stuff.
1447
: is like f.move, but it tries to avoid overlapping of windows on the
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.
1455
: Instead of stopping the move, tries to push the other window to
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.
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.
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.
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.
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
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
1479
## 3.2 (1994-11-13 or earlier)
1542
== 3.2 (1994-11-13 or earlier)
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.
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.
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.
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
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.
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)
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.
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 :
1513
LeftTitleButton ":xpm:menu" {
1514
Button1 : f.menu "WindowMenu"
1576
LeftTitleButton ":xpm:menu" {
1577
Button1 : f.menu "WindowMenu"
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>.
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>.
1528
1. 2 new builtin menus: TwmAllWindows and TwmWorkspaces. Guess what they
1592
* 2 new builtin menus: TwmAllWindows and TwmWorkspaces. Guess what they
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
1732
1798
variable `CTWM_WELCOME_FILE` to point to an XPM file, in which case
1733
1799
it will be displayed very quickly.
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.
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.
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.
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.
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`.
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`.
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.
1760
1. Some more xpm files given. Among them several backgrounds.
1826
* Some more xpm files given. Among them several backgrounds.
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.
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:
1773
Bool CtwmIsRunning ();
1774
char **CtwmWorkspaces ();
1775
char *CtwmCurrentWorkspace ();
1776
int CtwmChangeWorkspace ();
1777
char **CtwmCurrentOccupation ();
1778
int CtwmSetOccupation ();
1779
int CtwmAddToCurrentWorkspace ();
1839
Bool CtwmIsRunning ();
1840
char **CtwmWorkspaces ();
1841
char *CtwmCurrentWorkspace ();
1842
int CtwmChangeWorkspace ();
1843
char **CtwmCurrentOccupation ();
1844
int CtwmSetOccupation ();
1845
int CtwmAddToCurrentWorkspace ();
1781
1848
There is no documentation. A program demolib.c is given to help.
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.
1794
1. Transient windows and non group leader windows are now always on the
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.
1861
* Transient windows and non group leader windows are now always on the
1795
1862
top of their leader.
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
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.
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.
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
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
1824
1. XPMIconDirectory is replaced by PixmapDirectory. (XPMIconDirectory is
1891
* XPMIconDirectory is replaced by PixmapDirectory. (XPMIconDirectory is
1825
1892
still accepted).
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.
1832
* The following format are supported :
1835
: Microsoft Windows bitmap image file
1838
: Microsoft Windows cursor image file
1841
: Adobe Encapsulated PostScript file
1844
: Compuserve Graphics image file
1847
: Hierarchical Data File
1850
: Microsoft Windows icon image file
1853
: Sun Icon and Cursor file
1856
: Sun TAAC Image File Format
1859
: Apple Macintosh MacPaint file
1862
: PBM Portable Bit Map file
1865
: ZSoft IBM PC Paintbrush file
1868
: PBM Portable Gray Map file
1871
: PIXAR picture file
1874
: Apple Macintosh QuickDraw/PICT file
1880
: PBM Portable Pixel Map file
1883
: PBM Portable aNy Map file
1886
: Adobe PostScript file
1892
: SGI RGB image file
1895
: Wavefront raster image file
1898
: Utah Run length encoded image file
1901
: SDSC Synu image file
1904
: Truevision Targa image file
1910
: Khoros Visualization image file
1919
: X Window System window dump image file
1921
* You can find the imconv package at `ftp.sdsc.edu`. in the directory
1899
** The following format are supported:
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
1931
** You can find the imconv package at `ftp.sdsc.edu`. in the directory
1922
1932
`/pub/sdsc/graphics/imtools`.
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.
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.
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
1940
1. Two new functions : f.nextworkspace, f.prevworkspace.
1942
1. Xpm examples files are now automatically installed in `$(TWMDIR)`
1944
1. An example of .ctwmrc is given, showing some aspect of ctwm
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
1950
* Two new functions : f.nextworkspace, f.prevworkspace.
1952
* Xpm examples files are now automatically installed in `$(TWMDIR)`
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.
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.
1951
1961
Is there any good pixmap designer out there, that i can add beautiful