of minor bugfixes done following 4.0.2, and a fix for crashes in OTP
triggered by fullscreen windows with transients. See CHANGES in the
tarball or at http://www.ctwm.org/CHANGES.html for details.
From Rhialto (maintainer) in PR pkg/53584
4.0.2 (2018-08-25)
Backward-Incompatible Changes And Removed Features
- The UseThreeDIconBorders config var has been removed. It came in
silently and undocumented in 3.4 and has never done anything.
- The attempts to use DNS lookups for setting the HOSTNAME m4 variable
have been removed; it is now just a duplicate of CLIENTHOST.
New Features
- The EWMH _NET_WM_NAME property is now supported, and used for the
window name in place of the ICCCM WM_NAME when set. By default, we
also accept UTF8_STRING encoded WM_NAME as a result of this change;
see below for var to restore historical strictness.
- The EWMH _NET_WM_ICON_NAME property is now supported, and used for
the icon name in place of the ICCCM WM_ICON_NAME when set. Similar
comments as above apply to the encodings.
- Support has been added for CTWM_WM_NAME and CTWM_WM_ICON_NAME
properties, which will override any window/icon names otherwise
specified. This may be useful for applications that set unhelpful
names themselves, or for manually adjusting labelling. These
properties can be set from the command line via xprop; as an
example, xprop -f CTWM_WM_NAME 8u -set CTWM_WM_NAME "awesome
windowsauce". See xprop(1) manual for details; the s, t, and u field
type specifiers will all work.
- When no icon name is set for a window, we've always used the window
name for the icon name as well. But that only happened the first
time the window name is set; after that, the icon name is stuck at
the first name. It now updates along with the window name, if no
icon name is set.
- All icon manager windows will now have the TwmIconManager class set
on them, so they can be addressed en mass by other config like
NoTitle by that class name.
New Config Options
- Added DontNameDecorations config option to disable setting names on
the X windows we create for window decoration (added in 4.0.0).
These have been reported to confuse xwit, and might do the same for
other tools that don't expect to find them on non-end-app windows.
Reported by Frank Steiner.
- Added StrictWinNameEncoding config option to enable historical
behavior, where we're reject invalid property encoding for window
naming properties (like a UTF8_STRING encoded WM_NAME).
Bugfixes
- Fix up broken parsing of IconifyStyle "sweep". Bug was introduced in
4.0.0.
- When multiple X Screens are used, building the temporary file for m4
definitions could fail with an error from mkstemp(). Reported by
Manfred Knick.
- When multiple X Screens are used, the OTP code didn't recognize the
difference, and kept everything in one list. This caused the
internal consistency checks to trip when it didn't find all the
windows it expected. Reported by Terran Melconian.
- When ReverseCurrentWorkspace is set, mapping windows not on the
current workspace (e.g., via restarting ctwm, or creating new
windows with the desktop set via EWMH properties) could segfault.
Reported by Sean McAllister.
- Fix some edge cases where we'd fight other apps' focus handling.
When an application moved focus itself to an unrelated (in X terms)
window, our processing would often race and re-move the focus to the
root ourselves. This was visible with e.g. sub-windows in Firefox
for context menu and urlbar dropdown, which would flash on and then
disappear.
- When creating a new transient window of an existing full-screen
window, the OTP stacking may cause it to be stuck below the main
window due to the special handling of full-screen focused windows in
EWMH. It should now be forced to the top.
- Building ctwm since 4.0.0 in certain locales could misorder
functions in the lookup table, leading to troubles parsing the
config file. You'd get some loud "INTERNAL ERROR" lines from ctwm
when running it if this were the case. Now fixed. Reported by
Richard Levitte.
4.0.1 (2017-06-05)
User Visible Changes
Fix a bug where fullscreen windows could sometimes wind up incorrectly stacked due to a focus-handling issue. This would lead to ctwm aborting with an assertion failure in the OTP code, like Assertion failed: (PRI(owl) >= priority), function OtpCheckConsistencyVS.
Fix an edge case (probably only triggerable via manual work with EWMH messages) where a window could wind up resized down to nothing.
Internals
Systems with the ctfconvert/ctfmerge tools available will now use them to include CTF info in the compiled binary. This allows more detailed inspection of the running process via DTrace (e.g., the layout of the structs).
The initial rumblings of a Developer's Manual are now in doc/devman/. This isn't tied into the main build, and there's no real reason it ever will be. Things of interest to users should wind up in the main manual; this should only have things of interest to people developing ctwm.
4.0.0 (2017-05-24)
Build System Change
The old imake build system has been replaced by a new structure using cmake. This makes cmake a requirement to build ctwm. See the README.md file for how to run it.
A fallback minimal build system is available in the minibuild/ directory for environments that can't use the main one. This is likely to need some manual adjustment on many systems, and the main build is strongly preferred. But it should suffice to get a runnable binary if all else fails.
Platform Support
Support for many non-current platforms has been dropped. In particular, remnants of special-case VMS support have been removed. Many old and now dead Unix variants have been similarly desupported. Generally, platforms without support for C99 and mid-2000's POSIX are increasingly less likely to work.
Backward-Incompatible Changes And Removed Features
Argument parsing has been rewritten to use getopt_long(). All -long options are now --long instead. -version, -info, -cfgchk, and -display are still accepted if they're the first option given, to make it easier for scripts to simultaneously support before/after versions; this shim will be removed in a later version.
Support for the SDSC imconv library, and the IMCONV options related to it, has been removed. The last release is almost 20 years old, and doesn't support any remotely recent platforms.
The USE_SIGNALS code to use signal-driven animations has been removed. It's been non-default since 3.2 (more than 20 years ago), and not documented anywhere but in the code and a comment in this file.
The USE_GNOME option and code for GNOME1 support has been removed.
The old-style title button action specifications (without an = in them) deprecated since 3.8 are no longer supported. Just replacing the ":" with "= :" should suffice to make it work right in 3.8+. If you need to share configs with older versions, you'll have to conditionalize the syntax with m4 or some other preprocessing.
The f.cut (and ^ alias for it), f.cutfile, and f.file functions have been removed. These functions for messing with the clipboard were never visibly documented, and came into the manpage in 3.0 already commented-out and saying they were obsolete.
The f.source function has been removed. It's never done anything (except beep) as far back as 1.1 and has never been documented.
The f.movemenu function has been removed. It was added silently in 2.1, has never done anything, and has never been documented.
The NoVersion config parameter has been removed. It's been undocumented, obsoleted, and done absolutely nothing since 1.1.
Support for non-flex versions of lex(1) is deprecated, and will take some manual work to build. Note that release tarballs include prebuild lexers, so this probably only matters to people building from a development tree. (And if you are, and really need AT&T or some other lex to work, talk to us!)
Support for building with internal regex implementation has been disabled; we now require regex support from libc. It is still possible to enable by manually editing files, but this will be removed in the future. If you have to mess with this, please bring it up on the mailing list so we can figure out a long-term solution.
Parsing of the ctwm.workspaces X resource (i.e., setting -xrm "ctwm.workspaces: something" on program command-lines) since 3.0 has collapsed doubled backslashes (\\) into a single (\). However, there were no other escapes, so this didn't gain anything. Using a single will work with both variants, unless you need multiple backslashes in a row in your workspace names.
The IconRegion and WindowRegion config params both take a vgrav hgrav pair of parameters to control layout. Previous versions would accept a hgrav vgrav ordering in the parsing, and would mostly work by odd quirks of the code. The parsing has been made stricter, so only the documented vgrav hgrav ordering is accepted now.
User Visible Changes
The default install locations have been changed. See the README for details about where things are installed and how to change them.
Several default settings have been changed. ctwm now defaults to acting as though RestartPreviousState, NoGrabServer, DecorateTransients, NoBackingStore, RandomPlacement, OpaqueMove, OpaqueResize, SortIconManager, and StartInMapState have been set. Those settings that didn't previously have an inverse (to get the behavior previously seen when they weren't specified) have such added; see below.
Added various config parameters as inverses of existing params. New params (with existing param they invert in parens):
BackingStore (NoBackingStore)
GrabServer (NoGrabServer)
StartInButtonState (StartInMapState)
NoSortIconManager (SortIconManager)
NoRestartPreviousState (RestartPreviousState)
NoDecorateTransients (DecorateTransients)
Added DontShowWelcomeWindow config option to not show welcome splashscreen image.
Selected a number of cleanups from Stefan Monnier <monnier%IRO.UMontreal.CA@localhost>, including rate-limiting of animations using a new _XA_WM_END_OF_ANIMATION message. Font height is estimated based on used characters only. Added some similar changes, improved the prevention of placing windows off-screen, the f.rescuewindows function for emergencies, a hack-fix for f.adoptwindow. More virtual screen tweaks/fixes.
Added the remaining OnTopPriority changes from Stefan Monnier <monnier%IRO.UMontreal.CA@localhost>: AutoPopup, AutoPriority, OnTopPriority, PrioritySwitching, f.changepriority, f.priorityswitching, f.setpriority, f.switchpriority, f.tinylower, f.tinyraise. Currently consistency checking code is enabled, which will terminate with an assertion failure if something unexpected happens. Smoothed out various inconsistencies that this check discovered when virtual screens are used.
Basic support for EWMH (Extended Window Manager Hints) added and enabled by default. EWMHIgnore {} config option allows selectively disabling bits. [Olaf "Rhialto" Seibert, Matthew Fuller]
Icon manager windows are no longer included in the window ring (that had confusing effects on the focus sequence).
Added --dumpcfg command-line option to print out the compiled-in fallback config file.
The Occupy {} specification now accepts "ws:" as a prefix for workspaces. This may break things if you have workspaces with names that differ only by that prefix (e.g., you have workspaces "abc" and "ws:abc", and your Occupy {} declarations affects both.
If ctwm is built with rplay support, sounds may now be configured with the RplaySounds {} parameter in the config file in place of the ~/.ctwm-sounds file. If so, ctwm will give a warning if .ctwm-sounds exists; support for the external file will be removed in a future version. Also the SoundHost config parameter is replaced by RplaySoundHost; the old name is still accepted, but will be removed in a future version.
Added MWMIgnore {} config option to allow selectively disabling honoring of some Motif WM hints.
Warping to a window now explicitly sets focus on that window. This would generally (but not always, in the presence of odd X server behavior) have already happened for users with focus following mouse, but now occurs for ClickToFocus users as well. [Alexander Klein]
Several bugs relating to the Occupy window were fixed. Iconifying the Occupy window no longer loses it and leaves you unable to pull it up again. Minor undersizing in some cases fixed.
Windows which fail to use the WM_HINTS property to tell us things like whether they want us to give them focus are now explicitly given focus anyway. This should fix focus problems with some apps (Chromium is a common example).
Added ForceFocus {} config option to forcibly give focus to all (or specified) windows, whether they request it or not. Previously the code did this unconditionally (except when no WM_HINTS were provided; x-ref previous), but this causes problems with at least some programs that tell us they don't want focus, and mean it (some Java GUI apps are common examples).
OpaqueMoveThreshold values >= 200 (the default) are now treated as infinite, and so will always cause opaque moving.
Internals
A new code style has been chosen and the entire codebase reformatted into it. Configs for Artistic Style to generate the proper output are in the source tree.
The full_name element of the TwmWindow structure has been removed. Consumers should just use the name element instead
Problems found with existing distfiles:
distfiles/fvwm-1.24r.tar.gz
Otherwise, existing SHA1 digests verified and found to be the same on
the machine holding the existing distfiles (morden). All existing
SHA1 digests retained for now as an audit trail.
Based on maintainer update request per PR pkg/48820.
From CHANGES:
Changes from version 3.8.1 to 3.8.2
2014-??-??
-----------------------------------
1 - Various code cleanups.
Cleanup re: raising and warping to windows (previous location of
pointer in windows), SaveWorkspaceFocus. A few extra NULL
pointer checks.
Logical hasfocusvisible cleanup.
Rename TwmWindow.list to iconmanagerlist, and various smaller
cleanups.
Eliminated TwmWindow TwmRoot from struct ScreenInfo. Mostly a
mechanical change.
I found some cases where the dummy TwmWindow was apparently
mistakenly included in a loop. Replaced .next with TwmWindow
*FirstWindow and .cmaps witn Colormaps RootColormaps. Other
members were not used.
2 - Fix a bug where insufficient validation of the size hints
resulted in a division by zero when considering aspect ratio.
3 - Lots of minor compiler warnings and build fixes, a few of which
were real current or latent bugs. Leave warnings enabled by
default. A few of the build system adjustments may break very
old systems (e.g., those with original AT&T yacc).
4 - Fix incorrect inclusion of $DESTDIR in some paths.
5 - Update for new website and mailing list at ctwm.org.
6 - Look at _MOTIF_WM_HINTS for titlebar-less or border-less
windows.
Changelog:
Changes from version 3.8 to 3.8.1
---------------------------------
1 - Fix bug causing [de]iconified status of windows to not be
maintained across workspaces.
[Matthew Fuller]
2 - Quite a bunch of compiler warnings.
[Matthew Fuller]
3 - Make sure we fully initialize our WorkSpaceWindow structure so
we don't try to dereference uninitialized pointers later on.
[Matthew Fuller]
4 - Increased the number of supported mouse buttons again, having
just heard of a mouse with 9 possible buttons...
[Richard Levitte]
5 - Fix a bug in the warping "next" function, where if there is a
single window and the cursor is not on it, invoking 'f.warpring
"next"' does nothing.
[Martin Blais]
6 - Introduce a new feature called "SaveWorkspaceFocus", which when
enabled, makes ctwm remember which window has the focus within
each virtual workspace. As you switch workspaces, the cursor is
automatically warped to the window previous in focus in the
workspace. This significantly reduces the amount of mouse use.
[Martin Blais]
7 - From Matthias Kretschmer <kretschm@cs.uni-bonn.de>:
f.fill patch.
Without the patch, you might get windows which are increased by
two times the border width more than it should be. Additionally
if you place a window with no/not much size contrainst like
firefox in the upper left corner and perform f.fill "top" or
f.fill "left" the size of the window will increase by two times
the border width in width and height without changing the
top-left coordinate without the patch. Of course in such a
situation the size should not change at all...
[via Olaf Seibert]
libXext/buildlink3.mk, now that it is included there.
Leave the places where its API version is set or variables from it
are used directly (about 3 packages).
alternative from mk/jpeg.buildlink3.mk
This allows selection of an alternative jpeg library (namely the x86 MMX,
SSE, SSE2 accelerated libjpeg-turbo) via JPEG_DEFAULT=libjpeg-turbo, and
follows the current standard model for alternatives (fam, motif, fuse etc).
The mechanical edits were applied via the following script:
#!/bin/sh
for d in */*; do
[ -d "$d" ] || continue
for i in "$d/"Makefile* "$d/"*.mk; do
case "$i" in *.orig|*"*"*) continue;; esac
out="$d/x"
sed -e 's;graphics/jpeg/buildlink3\.mk;mk/jpeg.buildlink3.mk;g' \
-e 's;BUILDLINK_PREFIX\.jpeg;JPEGBASE;g' \
< "$i" > "$out"
if cmp -s "$i" "$out"; then
rm -f "$out"
else
echo "Edited $i"
mv -f "$i" "$i.orig" && mv "$out" "$i"
fi
done
done
Patch provided by maintainer, Rhialto in PR 35637.
Changes from version 3.7 to 3.8
-------------------------------
1 - Global cleanup
There were some variables shadowing others, things not being
safely initialized, that sort of thing.
[Richard Levitte]
2 - Fixed several memory leaks found by
"Nadav Har'El" <nyh@math.technion.ac.il>.
[Olaf "Rhialto" Seibert]
3 - Merged in the f.movetitlebar command. By default this is bound to
alt-left-click in the titlebar.
[Olaf "Rhialto" Seibert]
4 - Fixed the following issues:
Poking at the code, it looks like InitVirtualScreens() is called
before the configuration file is parsed which would explain what
I see since there's no attempt to create them after the config
file read.
Moving the call after the config parsing causes things to work.
I've run into a few other issues that I fixed with the attached
patch:
- shadow menus on the right screen open the shadow on
the left screen
- shadow menus on the left screen open on top of the
window
- windows on the right screen disappear after startup
[Todd Kover]
5 - Adjustments to ctwm.man:
I noticed a couple of small errors.
One is that the window list arguments for the opaque
keywords are now optional, are listed with square brackets
in the man page. The other is that the two Threshold
keywords are shown in the man page as requiring curly-
brackets, but they are not required or accepted in
configuration files.
[Ross Combs]
6 - improve algoritm to deal with mismatched geometry of virtual
screens
- allow windows to be dragged from one virtual screen to another and
have them switch workspaces appropriately
- handle restarts properly with virtual screens, including preserving
where windows were placed within workspaces regardless of which
virtual screen a window was on; preserve across restarts
[Todd Kover]
7 - WMapCreateCurrentBackGround() and WMapCreateDefaultBackGround()
would skip remaining virtual screens if not all parameters are present.
- small type errors. [Olaf "Rhialto" Seibert].
8 - There were some directives in the config file that wanted to set some
setting for all virtual screens. However since that list is (now) only
set up after parsing the config file, they failed to work. Moreover,
these settings were basically meant to be global to all virtual
screens, so a better place for them is somewhere in *Scr. They all
related to the Workspace Manager, so I moved them from struct
WorkSpaceWindow to struct WorkSpaceMgr.
The affected directives are StartInMapState, WMgrVertButtonIndent,
WMgrHorizButtonIndent, MapWindowCurrentWorkSpace,
MapWindowDefaultWorkSpace. The window and icon_name, even though not
user-settable, were also moved.
This is basically change #7 above done right.
[Olaf "Rhialto" Seibert]
9 - Re-introduced TwmWindow.oldvs, used to avoid calling
XReparentWindow() when possibe (it messed up the stacking order
of windows). However, maybe the use of .vs should be rethought a
bit: in Vanish() it is now set to NULL with the old value kept
in .oldvs. However the window is still a child of the same vs.
Maybe it is better not to set it to NULL and then, when *really*
changing the virtual screen, .vs can be used instead of .oldvs.
This whole "virtual screen" thing is unexplained in the manual,
which even uses it as a synonym for "workspace" already in the
introduction paragraph. (There also does not seem to be a way
now to test virtual screens in captive windows) I suspect that
all this causes lots of confusion, and when cleared up, can
simplify the code a lot.
I also fixed up the horrible indentation in the functions
where I changed something.
[Olaf "Rhialto" Seibert]
10 - Fixed interaction between "inner" and "outer" workspace
selection with "captive" windows. This was because the Gnome
"_WIN_WORKSPACE" property is used in 2 conflicting ways: for
client windows it indicates which workspace they are in, for
root windows it indicates which workspace they show. Captive
windows are both. Also, the initially selected inner workspace
is now the first, not the same as the outer workspace (this had
a different cause).
[Olaf "Rhialto" Seibert]
11 - Introduce Scr->XineramaRoot to store the root window that
encompasses all virtual screen rootwindows. This further reduces
any need to use RealRoot and/or CaptiveRoot.
Add a schematic drawing that clarifies the relation between the
various root-type windows.
[Olaf "Rhialto" Seibert]
12 - Get rid of all non-locale code and make I18N the silent default
(doesn't have to be mentioned any more).
THIS WILL BREAK CTWM ON OLDER (PRE-LOCALE) ENVIRONMENTS.
I strongly recommend an upgrade to "post-locale" standards.
[Richard Levitte]
13 - Enhance RandomPlacement with a displacement argument, so the
pseudo-radomness can be of displacements other than +30+30.
Here's an example for a pretty funky displacement:
RandomPlacement "on" "-30-100"
[Richard Levitte]
14 - Extend the Info window with the geometry seen from the lower
right corner as well.
[Richard Levitte]
15 - Extend the pointer button specification for title buttons
to take modifiers.
As part of this change, the following title pointer button
specification is deprecated:
Button {j} : {function}
in favor of the following, for consistency:
Button {j} = {function}
The old way still works, but is considered bad form and will
be removed in ctwm 4.0.
[Richard Levitte]
16 - Fix position of buttons in Occupy window, to make them centered.
(and spread the remaining space evenly in 4).
[Olaf "Rhialto" Seibert]
17 - "TwmWindow.group" was once apparently set to 0 when a window had
no group leader but this was changed to pointing to its own
window. This resulted however in many places checking for both
conditions, and several checking only for 0 which could not
occur anymore. Changed it back to 0 (so we can now distinguish
again windows that really indicate themselves as group leader,
if we wish) and this gave rise to some simplifications.
Also, there were various loops through all TwmWindows looking
for a group leader (or a transientfor), I replaced them with
GetTwmWindow() which uses the Xlib function XFindContext() which
uses a hash table lookup. This should be more efficient.
When you change the occupation of a group member window, it is
now applied to the group leader (which in turn affects all
members).
I tried this with ExMH, the only program that uses a real group
leader that I could find. Iconifying the leader unmaps the
members. What should "squeezing" do? ExMH also has an icon
window (see ICCCM 4.1.9, 3rd option) which behaves weirdly; this
may be a bug in ExMH (see exmh-2.7.2/exmh.BUGS) even though fvwm
somehow handles it better.
[Olaf "Rhialto" Seibert]
18 - When Squeezing a window group leader, unmap the member windows,
just like happens with iconification.
[Olaf "Rhialto" Seibert]
19 - Simplifications c.q. de-duplications of code regarding the
WorkSpaceManager and Occupation windows. This includes coding
the layout of these windows only once instead of twice (at
initialisation and when resizing). If it's wrong now at least it
should be consistent.
When changing occupation via functions like
f.movetonextworkspace, also move complete window groups (just
like when you do it via the Occupation window).
Also fixed changing the occupation of the Occupation window.
Documented (so far) undocumented possibility to edit the labels
of workspaces on the fly (what use this is, I'm not sure).
Removed some unused variables.
[Olaf "Rhialto" Seibert]
20 - Get rid of the USE_SESSION and X11R6 macros and make them the
silent default. Also cleaned out a few references to the macro
X11R4, which hasn't been used for ages.
THIS WILL BREAK CTWM ON OLDER (PRE-X11R6) ENVIRONMENTS.
I strongly recommend an upgrade to a newer X11 release.
[Richard Levitte]
21 - Modified the random placement so a negative X displacement has
the first "random" window start near the right edge instead of
the right and a negative Y displacement has the first "random"
window start near the bottom edge instead of the top.
[Richard Levitte]
or USE_X11BASE set, but don't include mk/x11.buildlink3.mk directly or
via buildlink3.mks
- introduce BUILDLINK_PREFIX.libXpm as alias for BUILDLINK_PREFIX.xpm
in the !modular case
- fix some cases where the check for libX11 couldn't work at all by using
C++ for compilation without including the proper headers
Verified using a full X11_TYPE=xorg bulk build without additional
breakage. Discussed with salo@, wiz@ and send to packages@ for feedback.
packages with the modular Xorg equivalent. Those are falling back
to the old location by default, so this commmit doesn't change
dependencies.
graphics/xpm ==> x11/libXpm
fonts/Xft2 ==> x11/libXft
x11/Xfixes ==> x11/libXfixes
x11/xcursor ==> x11/libXcursor
x11/Xrender ==> x11/libXrender
x11/Xrandr ==> libXrandr
Rhialto is the new MAINTAINER. Thank you!
Enable pkgviews.
Installs some example configurations. (Should CONF_FILES also be used?)
Now depend on jpeg too.
Remove patch-aa, patch-ab and patch-ad.
According to CHANGES file, there are 50 changes.
(I see it includes some bug fixes from pkgsrc users.)
Changes:
1 - Fix line numbers for errors when using m4 preprocessor. Send thanks
to Josh Wilmes.
2 - Fix the way menu entries are selected with the keyboard. Now
when you type a letter, the pointer moves to the next entry
whose first letter is this letter, but does not activate it.
The new keyword IgnoreCaseInMenuSelection, can be used to
ignore case for this delection.
3 - New keyword : DontSave, Takes a window list as argument. All listed
windows won't have their characteristics saved for the session manager.
Patch from Matthias Baake
4 - Also from Matthias Baake. I let him speak :
With the new keywords BorderLeft, BorderRight, BorderBottom and BorderTop
(each of them is optional with a default value of 0 and takes a
nonnegative integer as argument) you can declare a border "off limits" for
f.move etc.. These borders act the same way as the real borders of the
screen when moving windows; you can use f.forcemove to override them.
5 - Sloppy Focus added with keyword "SloppyFocus" in configuration file
(DINH V. Hoa).
6 - the keyword "ClickToFocus" has been correctly implemented (DINH V. Hoa).
7 - the keyword "IgnoreModifier" has been added,
to use this feature, you have to add a line
"IgnoreModifier { lock m2 }" in the configuration file.
All bindings (buttons and keys) will ignore the modifiers
you specified. It is useful when you use caps locks or
num locks. You don't need IgnoreLockModifier any more with this option.
(DINH V. Hoa).
8 - New keyword : WindowBox : creates a new window called a box, where
all the client windows that match the windows list are opened in,
instead of the roor window. This is useful to group small windows
in the same box (xload for instance) :
WindowBox "xloadbox" "320x100+0-0" {
"xload"
}
9 - New function : f.fittocontent. Can be used only with window boxes.
The result is to have the box have the minimal size that contains
all its children windows.
10 - New keyword : WindowGeometries. Used to give a default geometry to some
clients :
WindowGeometries {
"Mozilla*" "1000x800+10+10"
"jpilot*" "800x600-0-0"
}
11 - New keyword : IconMenuDontShow. Don't show the name of these windows
in the TwmIcons menu.
And, as usual, a few bug fixes here and there.
Update from version 3.5 to 3.5.2.
from the CHANGES file:
Changes from version 3.5 to 3.5.1
1 - f.initsize : resets a window to its initial size given by the
WM_NORMAL_HINTS hints.
2 - f.ring : Selects a window and adds it to the WarpRing, or removes it if
it was already in the ring. This command makes f.warpring much more
useful, by making its configuration dynamic (thanks to Philip Kizer
<pckizer@tamu.edu>).
3 - f.jumpleft, f.jumpright, f.jumpup, f.jumpdown : takes one integer
argument (the step). These function are designed to be bound to keys,
they move the current window (step * {X,Y}MoveGrid) pixels in the
corresponding direction. stopping when the window encounters another
window (ala f.pack).
Changes from version 3.5.1 to 3.5.2
1 - f.moveresize : Takes one string argument which is a geometry with the
standard X geometry syntax (e.g. 200x300+150-0). Sets the current
window to the specified geometry. The width and height are to be given
in pixel, no base size or resize increment are used.
2 - AutoLower et f.autolower : from Kai Grossjohann
(Kai.Grossjohann@CS.Uni-Dortmund.DE). Same as autoraise but with lower.
3 - WindowRingExclude : Takes a window list as argument. All listed windows
will be excluded from the WarpRing.
4 - A new menu : 'TwmIcons' same as 'TwmWindows', but shows only iconified
windows. I did this when I got bored of having icons. Now I have no
icons and no icon managers. I use this menu to deiconify windows.
When I was young, I liked to have brightly colored icons, but now that
I am getting old(er), I prefer a bare desktop.