Skip to content

Releases: LifeCANvs/LCvs-system_io_ui-CTWM

ctwm-4.1.0

Choose a tag to compare

@LifeCANvs LifeCANvs released this 12 Jun 09:58
ba96d23

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

  1. Support for VirtualScreens has 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 manual MonitorLayout features are a replacement
    for anywhere this ever really worked.

  2. ctwm's captive mode support has been removed. This includes the
    --window and --name command line arguments, and the
    f.adoptwindow and f.hypermove functions. Be sure to remove any
    references to those functions from your config file.

  3. Support for WindowBox has been removed, along with the
    f.fittocontent function related to it.

  4. 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

  1. 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.\*zoom functions now zoom on the monitor the window is currently
    on, and new f.x\*zoom functions 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>.

  2. 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).

  3. The EWMH _NET_FRAME_EXTENTS property 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

  1. When restarting ctwm, the icon managers for the current workspace will
    now initially show up, rather than those for first WS.

  2. When restarting ctwm, the stacking order of windows is now preserved.

  3. Running --cfgchk without 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.

  4. Fix display of combined modifiers in TwmKeys menu. Contributed by
    Maxime Soulé <btik-ctwm@scoubidou.com>.

  5. Fix window icon name spilling out into the border of icon manager
    entries. Contributed by Carl Svensson <ctwm@datagubbe.se>.

  6. Fix minor mis-sizing and postitioning of squeezed titlebar when window
    is squeezed away. Contributed by Maxime Soulé
    <btik-ctwm@scoubidou.com>.

  7. Fix window placement when DontMoveOff is enabled without 3D borders.
    Contributed by Maxime Soulé <btik-ctwm@scoubidou.com>.

  8. 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

Choose a tag to compare

@LifeCANvs LifeCANvs released this 12 Jun 10:04
ba96d23

ctwm release 4.0.3

from https://www.ctwm.org/download.html

4.0.3 (2019-07-21)

Bugfixes

  1. Perform various manipulations and overrides of WM_HINTS property
    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_HINTS later and still don't give us a hint, where we wound up not
    re-overriding previously. Reported for xvile by Wayne Cuddy.

  2. 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.

  3. 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

  1. The UseThreeDIconBorders config var has been removed. It came in
    silently and undocumented in 3.4 and has never done anything.

  2. 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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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

  1. 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.

  2. 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

  1. Fix up broken parsing of IconifyStyle "sweep". Bug was introduced
    in 4.0.0.

  2. When multiple X Screens are used, building the temporary file for m4
    definitions could fail with an error from mkstemp(). Reported by
    Manfred Knick.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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

  1. 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.

  2. Fix an edge case (probably only triggerable via manual work with EWMH
    messages) where a window could wind up resized down to nothing.

Internals

  1. 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).

  2. 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

  1. 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.

  2. 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.

  3. 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.

  4. The USE_GNOME option and code for GNOME1 support has been removed.

  5. 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.

  6. 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.

  7. 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.

  8. The f.movemenu function has been removed. It was added silently in
    2.1, has never done anything, and has never been documented.

  9. The NoVersion config parameter has been removed. It's been
    undocumented, obsoleted, and done absolutely nothing since 1.1.

  10. 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!)

  11. 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.

  12. 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
    ...

Read more

ctwm-3.8.2

Choose a tag to compare

@LifeCANvs LifeCANvs released this 12 Jun 10:14
ba96d23

ctwm release 3.8.2

from https://www.ctwm.org/download.html

3.8.2 (2014-05-18)

  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 with 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 http://www.ctwm.org.

  6. Look at _MOTIF_WM_HINTS for titlebar-less or border-less
    windows.

3.8.1 (2012-01-05)

  1. Fix bug causing [de]iconified status of windows to not be
    maintained across workspaces.
    [Matthew Fuller]

  2. Quiet 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. 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 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]

3.8 (2007-02-16)

  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 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

    [Todd Kover]

  5. 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.

  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 the previous change 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 a future version ("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...

Read more