From: lecom@SLHP1.EPFL.CH ("", Claude Lecommandeur)
Newsgroups: comp.windows.x.announce
Subject: announcing ctwm-2.0
Date: 12 Oct 92 21:09:14 GMT
Distribution: inet
Organization: Ecole Polytechnique Federale de Lausanne


    The new ctwm (2.0) is arrived. It is on :

export.lcs.mit.edu:/contrib/ctwm-2.0.tar.Z

The README file :

-------------------------------------------------------------------------------

                                   CTWM
                                   ----


    CTWM is not yet another window manager for X/Window, it is just a
little variation of twm.

    It adds the hability to use and manage up to  32 virtual screens.
You swap from one to another by clicking on a button in a panel.
    You can  custom each  screens by  choosing  different colors  and
bitmaps for the buttons and background root windows.

    The sources files  are just the twm ones plus two : workmgr.[ch].
workmgr.[ch]  were built from scratch,  but the twm ones are slightly
modified.  I tried to  minimize  the  modifications,  and it is  even
possible  (but not sure)  that certain  future twm  patches could  be
applied to ctwm sources files. But don't rely on this.

    I certainly introduced many bugs with these modifications. So, be
tolerant.

    If you are happy with ctwm,  or find severe bugs,  send me a note
to :

            lecom@sic.epfl.ch


    Installation :

funny prompt> xmkmf
funny prompt> make

   If you don't have xpm, fetch it from export.lcs.mit.edu or comment
out the #define XPM in Imakefile.

-------------------------------------------------------------------------------


The CHANGES file :

-------------------------------------------------------------------------------


    Changes from version 1.0 to 1.1
    -------------------------------


    1 - Correction of a few bugs

    2 - Add the OpaqueResize flag : similar to OpaqueMove, but redraw the window
	you are resizing at each motion event. Extremely resource consuming, but
	beautiful with fast server/client/network.

    3 - Now if you don't specify any background/foreground/pixmap indication for
	the  root window,  ctwm leave it  alone so you  can have  your own  root
        background pixmap.

    4 - You can now specify  on the command line a list of workspaces in which a
        new client opens. The syntaxe is :

          whatever_client -xrm 'ctwm.workspace: name1 name2 ... namen'
   or     whatever_client -xrm 'ctwm.workspace: all'

   where 'name1', 'name2', ..., 'namen' are names of workspaces and 'all' refers
to all workspaces.

    example : 

	xload -xrm 'ctwm.workspace : all'

    5 - Add the  OccupyAll command in  .ctwmrc, you can now specify at startup a
	list of windows that occupy all the workspaces.

    example :

OccupyAll {
    "xload"
    "xconsole"
    "xbiff"
}

    6 - Add the f.gotoworkspace function. It goes the workspace specified by its
	name.

    example :

"F1"      =    : root           : f.gotoworkspace "cognac"


    Changes from version 1.1 to 1.2
    -------------------------------


    1 - you  can  now  directly  edit  workspace names  in their  buttons.  only
	printable characters, delete and backspace keys are honored.

    2 - Ctwm  now handle  shaped colored  icons in  XPM  format. This  added the
	variable XPMIconDirectory, and slightly modified the syntax of the Icons
	command. The XPM icon file names should be prefixed by the character '@'
	to distinguished them from the ordinary bitmap files.

Example :

XPMIconDirectory  "/usr/lib/X11/X11/XPM"

Icons {
    "Axe"    "@xedit.xpm"
    "xterm"  "@xterm.xpm"
    "xrn"    "@xrn.xpm"
    "HPterm" "@hpterm.xpm"
    "XAlarm" "@datebook.xpm"
    "Xman"   "@xman.xpm"
}

  These above xpm pixmap are given.


    3 - Many bugs fixed :

	- Icon regions now works.
	- the absence of ShowIconManager is taken into account.
	- The -iconic flag is honored.
	- The -xrm 'ctwm.workspace' works as expected.
	- I think that f.warpto[to|ring] works correctly i.e warps.
	  also to the correct workspace if the destination window
	  doesn't occupy the current workspace.
	- A few minor bugs fixed.


    Changes from version 1.2 to 1.3
    -------------------------------


    1 - Many bugs fixed :

	- Partial geometry in the  WorkSpaceManagerGeometry  statement no longer
	  cause ctwm to core dump.

	- The occupy window name now is "Occupy Window" instead of "Occupy WIndow"
	  a typo on the uppercase I in window.

	- Several types problems that make good compilers to issue warnings.

	- The  icons of the WorkSpaceManager and Occupy Window windows now behave
	  correctly with ButtonPress.

	- UnknownIcon can now have Xpm icons specified.

	- f.showiconmgr no longer map empty icon managers.

	- The ctwm process is smaller (even smaller than twm).


    2 - Add the Occupy command in .ctwmrc, you can now specify at startup
        which window occupy which workspace.

    example :

Occupy {
              "xload"  {"all"}
    Window    "xterm"  {"here" "there" "elsewhere"}
              "xv"     {"images"}
    WorkSpace "images" {"xloadimage"}
}


    Changes from version 1.3 to 2.0
    -------------------------------

    1 - A few bugs fixed :

	- Resize at window creation with button2 works.

	- Some others i don't remember.

    2 - Better  support of  monochrome  displays  :  video inverse instead of 3d
	buttons.

    3 - WorkSpaceManager  and  Occupy Window are now resizable.  Don't forget to
	verify you have a powerful server before resizing the  workspace manager
	with OpaqueResize set.

    4 - X11R4 support with Imakefile.X11R4 (i didn't try so tell me).

    5 - The  visibility  of the workspace  manager  is now  consistant  with the
	visibility of the icon managers. This mean that by default the workspace
	manager is  *NOT*  visible at startup.  Use the  ShowWorkSpaceManager to
	make it visible at startup.

    6 - Two new functions :  f.showworkspacemgr and f.hideworkspacemgr have been
	added. They do what you imagine.

    7 - And now, the cherry on the cake. The workspace manager has now 2 states,
	the button state (the usual one) and the map state (the new one). In the
	map state  the buttons  are replaced  by windows displaying  a synthetic
	view of the  corresponding workspaces.  All the non-iconified windows of
	the workspace are shown as small windows with the  icon name  written in
	it.  It looks like  the virtual screen of  [t]vtwm, but, of course, much
	nicer.

	In this state, you can modify directly the occupation of your windows by
	manipulating these little windows.

	   - Button1 move a window from a workspace to another.
	   - Button2 copy a window from a workspace to another.
	   - Button3 remove a window from a workspace.

	Clicking in the  "root" of these windows warps you  to the corresponding
	workspace.  Clicking and releasing Button1 or Button2 quickly in a small
	window  go to the corresponding  workspace and warps  the pointer to the
	corresponding window.

	The Control-Key  (Press and Release)  in workspace  manager toggles  the
	buttons and map state.

	Four variables and Three functions manipulates this :

	    - StartInMapState : The map state is selected at startup, default is
	      buttons state.

	    - MapWindowCurrentWorkSpace : The aspect of the current workspace in
	      the map window.

	    - MapWindowDefaultWorkSpace :  Specify the aspect of the non-current
	      workspaces in the map window.

	    - MapWindowBackground :
	    - MapWindowForeground :  Specify the aspect of the small  windows in
	      the map window on a per-client basis.

	    - f.setbuttonsstate : You can guess.

	    - f.setmapstate : You can guess.

	    - f.togglestate : You can guess.


    8 - AutoRaise with RaiseDelay. Thanks to Johan Vromans (jv@mh.nl) who gave me
	this patch.  I think  Warren Jessop  (whj@cs.washington.edu) wrote it for
	twm.
-------------------------------------------------------------------------------

Have fun.

  Claude.

-- 


                    Claude Lecommandeur
                    Service Informatique Central
                    Ecole Polytechnique Federale de Lausanne
                    1015 LAUSANNE (SWITZERLAND)
                    E-Mail : lecom@sic.epfl.ch
                    Tel : (41 21) 693-22-97