Releases: LifeCANvs/LCvs-system_io_ui-CTWM
Release list
ctwm-4.1.0
ctwm release 4.1.0
"CTWM has historically supported (to some extent at least) a gigantic list of platforms.
But most of them are now defunct, and have been for many years.
As of 4.0.0, we're no longer worrying much about breaking older systems.
If you're using CTWM on something significantly different from a reasonably modern Unix-like system, there's a fair chance it'll break at some point. "
4.1.0 (2023-03-26)
Backward-Incompatible Changes And Removed Features
-
Support for
VirtualScreenshas been removed. This was an early
attempt to allow some manual configuration of multiple monitors, but
carried with it a lot of caveats and strange behaviors. The current
automatic RANDR and manualMonitorLayoutfeatures are a replacement
for anywhere this ever really worked. -
ctwm's captive mode support has been removed. This includes the
--windowand--namecommand line arguments, and the
f.adoptwindowandf.hypermovefunctions. Be sure to remove any
references to those functions from your config file. -
Support for
WindowBoxhas been removed, along with the
f.fittocontentfunction related to it. -
The minimum cmake version has been bumped to 3.6. This is available
in standard packages back to CentOS 6, and we appear to have actually
been using syntax requiring 3.5 for a while unknowingly anyway.
New Features
-
Support for understanding multi-monitor layouts as something other
than a single giant rectangle added. The RANDR X extension is used
for determining how your monitors are laid out. The various
f.\*zoomfunctions now zoom on the monitor the window is currently
on, and newf.x\*zoomfunctions are added to zoom across your entire
display. Various internal geometries can be specified
RANDR-output-relative; see doc of e.g.IconManagers. Contributed
by Maxime Soulé <btik-ctwm@scoubidou.com>. -
Added
MonitorLayout {}config var for overriding the layout of
multiple monitors. In normal cases with multiple monitors and a
modern X server, this is unnecessary. It's useful if the X server
doesn't support RANDR (e.g., older servers), or if the info it
provides is wrong (e.g., multi-display simulation with Xephyr), or
if you just prefer to specify things differently than they would
otherwise be (e.g., treat an ultra-wide display as 2 separate
monitors). -
The EWMH
_NET_FRAME_EXTENTSproperty is now set on windows when we
take control of them. This should fix clients mispositioning other
windows on top of themselves; visible with Firefox's form autofilling
and context menus. Contributed by Maxime Soulé
<btik-ctwm@scoubidou.com>.
Bugfixes
-
When restarting ctwm, the icon managers for the current workspace will
now initially show up, rather than those for first WS. -
When restarting ctwm, the stacking order of windows is now preserved.
-
Running
--cfgchkwithout an available X server will now work. Some
errors may only be discovered when it can talk to X (things relating
to colors are a likely suspect). Checking configs for multi-Screen
setups will now properly check all of them as well. -
Fix display of combined modifiers in TwmKeys menu. Contributed by
Maxime Soulé <btik-ctwm@scoubidou.com>. -
Fix window icon name spilling out into the border of icon manager
entries. Contributed by Carl Svensson <ctwm@datagubbe.se>. -
Fix minor mis-sizing and postitioning of squeezed titlebar when window
is squeezed away. Contributed by Maxime Soulé
<btik-ctwm@scoubidou.com>. -
Fix window placement when
DontMoveOffis enabled without 3D borders.
Contributed by Maxime Soulé <btik-ctwm@scoubidou.com>. -
When window titles overflow the available space, always treat them as
left-justified, to avoid bad behavior of other justifications and
provide the best available behavior. Found by Carl Svensson
<ctwm@datagubbe.se>.
ctwm-4.0.3
ctwm release 4.0.3
from https://www.ctwm.org/download.html
4.0.3 (2019-07-21)
Bugfixes
-
Perform various manipulations and overrides of
WM_HINTSproperty
when it gets reset during runtime, like we do when initially adopting
the window. The most visible effect of this was in windows that don't
give a focus hint (which we override to give focus), but then reset
WM_HINTSlater and still don't give us a hint, where we wound up not
re-overriding previously. Reported forxvileby Wayne Cuddy. -
The font height estimation changes in 4.0.0 were not applied correctly
when UseThreeDMenus was set, leading to some odd vertical misalignment
of the text with some fonts. Reported by Wayne Cuddy. -
A failure in OTP consistency checks caused by the handling of
transients of fullscreen windows has been fixed. This manifested as
failures in OtpCheckConsistencyVS() assertions.
4.0.2 (2018-08-25)
Backward-Incompatible Changes And Removed Features
-
The
UseThreeDIconBordersconfig 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
HOSTNAMEm4variable
have been removed; it is now just a duplicate ofCLIENTHOST.
New Features
-
The EWMH
_NET_WM_NAMEproperty is now supported, and used for the
window name in place of the ICCCMWM_NAMEwhen set. By default, we
also acceptUTF8_STRINGencodedWM_NAMEas a result of this
change; see below for var to restore historical strictness. -
The EWMH
_NET_WM_ICON_NAMEproperty is now supported, and used for
the icon name in place of the ICCCMWM_ICON_NAMEwhen set. Similar
comments as above apply to the encodings. -
Support has been added for
CTWM_WM_NAMEandCTWM_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 viaxprop; as an
example,xprop -f CTWM_WM_NAME 8u -set CTWM_WM_NAME "awesome windowsauce". Seexprop(1)manual for details; thes,t, and
ufield 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
TwmIconManagerclass set
on them, so they can be addressed en mass by other config like
NoTitleby that class name.
New Config Options
-
Added
DontNameDecorationsconfig option to disable setting names on
the X windows we create for window decoration (added in 4.0.0). These
have been reported to confusexwit, 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
StrictWinNameEncodingconfig option to enable historical
behavior, where we're reject invalid property encoding for window
naming properties (like aUTF8_STRINGencodedWM_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 frommkstemp(). 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
ReverseCurrentWorkspaceis 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, likeAssertion 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
-longoptions are now--longinstead.-version,-info,
-cfgchk, and-displayare 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, andf.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.sourcefunction has been removed. It's never done anything
(except beep) as far back as 1.1 and has never been documented. -
The
f.movemenufunction has been removed. It was added silently in
2.1, has never done anything, and has never been documented. -
The
NoVersionconfig 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.workspacesX 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
...
ctwm-3.8.2
ctwm release 3.8.2
from https://www.ctwm.org/download.html
3.8.2 (2014-05-18)
-
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
withTwmWindow *FirstWindowand.cmapswithColormaps RootColormaps. Other members were not used.
-
-
Fix a bug where insufficient validation of the size hints
resulted in a division by zero when considering aspect ratio. -
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&Tyacc). -
Fix incorrect inclusion of
$DESTDIRin some paths. -
Update for new website and mailing list at http://www.ctwm.org.
-
Look at
_MOTIF_WM_HINTSfor titlebar-less or border-less
windows.
3.8.1 (2012-01-05)
-
Fix bug causing [de]iconified status of windows to not be
maintained across workspaces.
[Matthew Fuller] -
Quiet a bunch of compiler warnings.
[Matthew Fuller] -
Make sure we fully initialize our WorkSpaceWindow structure so
we don't try to dereference uninitialized pointers later on.
[Matthew Fuller] -
Increased the number of supported mouse buttons again, having
just heard of a mouse with 9 possible buttons...
[Richard Levitte] -
Fix a bug in the warping "next" function, where if there is a
single window and the cursor is not on it, invokingf.warpring "next"does nothing.
[Martin Blais] -
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] -
f.fill patch from Matthias Kretschmer <kretschm@cs.uni-bonn.de>.
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 performf.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]
3.8 (2007-02-16)
-
Global cleanup. There were some variables shadowing others, things
not being safely initialized, that sort of thing.
[Richard Levitte] -
Fixed several memory leaks found by
"Nadav Har'El" <nyh@math.technion.ac.il>.
[Olaf "Rhialto" Seibert] -
Merged in the
f.movetitlebarcommand. By default this is bound to
alt-left-click in the titlebar.
[Olaf "Rhialto" Seibert] -
Fixed the following issue:
-
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
- shadow menus on the right screen open the shadow on the left
[Todd Kover]
-
-
Adjustments to ctwm.man. I noticed a couple of small errors. [Ross
Combs]-
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.
-
-
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]
-
-
WMapCreateCurrentBackGround()andWMapCreateDefaultBackGround()
would skip remaining virtual screens if not all parameters are
present. Small type errors.
[Olaf "Rhialto" Seibert] -
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 fromstruct WorkSpaceWindowtostruct 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 the previous change above done right.
[Olaf "Rhialto" Seibert] -
Re-introduced
TwmWindow.oldvs, used to avoid calling
XReparentWindow()when possibe (it messed up the stacking order of
windows). However, maybe the use of.vsshould be rethought a bit:
inVanish()it is now set toNULLwith 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 toNULLand then, when really changing
the virtual screen,.vscan 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] -
Fixed interaction between "inner" and "outer" workspace
selection with "captive" windows. This was because the Gnome
_WIN_WORKSPACEproperty 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] -
Introduce
Scr->XineramaRootto 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] -
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] -
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]
-
Extend the Info window with the geometry seen from the lower
right corner as well.
[Richard Levitte] -
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 a future version ("ctwm 4.0").
[Richard Levitte] -
Fix position of buttons in Occupy window, to make them centered. (and
spread the remaining space evenly in 4).
[Olaf "Rhialto" Seibert] -
TwmWindow.groupwas 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 atransientfor), I replaced them with
GetTwmWindow()which uses the Xlib functionXFindContext()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...