./wm/ctwm, Window manager with support for multiple virtual screens and EWMH

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]

Branch: CURRENT, Version: 4.0.2, Package name: ctwm-4.0.2, Maintainer: rhialto

CTWM is an extension to twm, that support multiple virtual screens,
and a lot of other goodies.

You can use and manage up to 32 virtual screens called workspaces.
You swap from one workspace to another by clicking on a button in an
optional panel of buttons (the workspace manager) or by invoking a function.

You can custom each workspace by choosing different colors, names
and pixmaps for the buttons and background root windows.

Main features are:
- Optional 3D window titles and border (ala Motif).
- Shaped, colored icons.
- Multiple icons for clients based on the icon name.
- Windows can belong to several workspaces.
- A map of your workspaces to move quickly windows between
different workspaces.
- Animations: icons, root backgrounds and buttons can be animated.
- Pinnable and sticky menus.
- etc...

Required to run:
[graphics/jpeg] [x11/libXpm]

Required to build:
[pkgtools/x11-links] [pkgtools/cwrappers] [x11/xorgproto]

Master sites:

SHA1: e5768bf6c242441aff9a96290840d4e2647cb4ed
RMD160: 6de49077a321162223ca80bde9074f91ed951a7f
Filesize: 656.844 KB

Version history: (Expand)

CVS history: (Expand)

   2018-09-22 09:00:38 by Maya Rashish | Files touched by this commit (2) | Package updated
Log message:
ctwm: update to 4.0.2

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


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

-   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

-   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.
   2018-07-14 17:03:43 by Maya Rashish | Files touched by this commit (3) | Package updated
Log message:
ctwm: update to 4.0.1, from Rhialto (maintainer) in PR pkg/53448

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.
    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 \ 
    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.
    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 \ 
    The full_name element of the TwmWindow structure has been removed. Consumers \ 
should just use the name element instead
   2015-11-03 00:42:56 by Alistair G. Crooks | Files touched by this commit (90)
Log message:
Add SHA512 digests for distfiles for wm category

Problems found with existing distfiles:

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.
   2014-10-09 16:07:17 by Thomas Klausner | Files touched by this commit (1163)
Log message:
Remove pkgviews: don't set PKG_INSTALLATION_TYPES in Makefiles.
   2014-07-18 12:40:48 by OBATA Akio | Files touched by this commit (4) | Package updated
Log message:
Update ctwm to 3.8.2.
Based on maintainer update request per PR pkg/48820.

    Changes from version 3.8.1 to 3.8.2

    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
	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
   2013-08-15 22:26:51 by Roland Illig | Files touched by this commit (7)
Log message:
Fixed pkglint warnings.
   2013-06-09 17:26:45 by Ryo ONODERA | Files touched by this commit (3) | Package updated
Log message:
Update to 3.8.1

    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]
   2012-10-23 12:24:24 by Thomas Klausner | Files touched by this commit (215)
Log message:
Remove xextproto/buildlink3.mk in most cases where it occurs with
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).