Hi All,

This is ctwm 3.0 for linux. You need my Xpm DLL if you want to
run the binary supplied. (look in pub/Linux/libs on sunsite.unc.edu)

Have fun.
P.S. Full Motif emulation provided (well nearly i.e. lots of 3D effects)

Mitch
<[email protected]>

---------------------------------------------------------------------
                                  CTWM
                                  ----


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

   It adds the  ability 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 bugs, send me a note to :

           [email protected]


   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. Also, if you don't have/want to use
the IMCONV package  (from the San Diego Supercomputer Center) comment
out the #define IMCONV line in Imakefile.

   There is a man,  but not quite complete  (any volunteer ?).  Many
useful informations are only in the CHANGES file, so, read it.

   There is a  mailing list :  [email protected],  subscribe  at :
[email protected].
---------------------------------------------------------------------


  The CHANGES file :


---------------------------------------------------------------------
   Changes from version 2.2 to 3.0
   -------------------------------

   1 - A few bugs fixes.

   2 - A 3D presentation of menus, titles and IconManagers can be selected with :
       UseThreeDMenus, UseThreeDTitles and UseThreeDIconManagers. If
       UseThreeDTitles is set the default values for TitleButtonBorderWidth,
       FramePadding, TitlePadding, ButtonIndent are set to 0 pixels. I am not
       that proud of the appearance of 3D titles but 3D menus look nice. If
       UseThreeDTitles is set the flag SunkFocusWindowTitle tells ctwm to sunk
       the title of the window that the focus. 3D features look ugly on
       monochrome displays, but I have no such display for testing purpose. If a
       monochrome display owner can have a look, he is welcome. The contrast
       of the clear and dark shadows can be tuned via the ClearShadowContrast
       and DarkShadowContrast parameters. These parameters are percentages.
       The formulas used are :

               clear.{RGB} = (65535 - color.{RGB}) * (ClearShadowContrast / 100),
               dark.{RGB}  = color.{RGB} * ((100 - DarkShadowContrast) / 100),

       If you choose UseThreeDIconManagers, icon titles are also 3D. By defaults
       new colors are allocated for shadows, but you can specify BeNiceToColormap
       to inform ctwm to use stipple instead of new colors, the effect is
       less beautiful, but acceptable.


   3 - A new keyword : NoIconTitle with an optionnal window list.

   4 - A new keyword : TransientOnTop with an integer parameter. This
       paramater is a percentage and tells ctwm to put transient (and
       non-group leader) windows always on top of their leader only if
       their surface is smaller than this fraction of the surface of
       their leader.

   5 - OpaqueMove and OpaqueResize now accept an optionnal list of windows
       as parameter. They also have their NoOpaqueMove and NoOpaqueResize
       counterpart with the same syntax.

   6 - Two new keywords : OpaqueMoveThreshold and OpaqueResizeThreshold
       with one integer parameter. The parameter represent a percentage of
       the screen surface. If Opaque{Move,Resize} is active for a window,
       (via point 4) the opaque {move, resize} is done only if the window
       surface is smaller than this percentage of the screen. The default
       is large enough.

   7 - Startup is optionally piped into m4 before ctwm parse it, ypu can
       now have a common startup file for ctwm, tvtwm, etc ... It can be
       disabled at compile time by undefining USEM4 in Imakefile. It can
       be disabled at execution time by using the -n option. Take care if
       you have backquotes (`) in your .ctwmrc file. This character is
       special to m4. In that case, put something like :

changequote(``,'')

       at the beginning of your .ctwmrc.

   8 - The startup looks nicer (I think). If you use XPM and the file
       welcome.xpm is present in your PixmapDirectory, it is displayed
       while the startup is in progress. Unfortunately, the PixmapDirectory
       is known only after the .ctwmrc is loaded, and this loading is
       a large part of the startup time. So you can define the environnement
       variable CTWM_WELCOME_FILE to point to an XPM file, in which case
       it will be displayed very quickly.

   9 - A new function : f.separator, valid only in menus. The effect is to
       add a line separator between the previous and the following entry.
       The name selector part in the menu is not used. f.separator works
       only with conventionnal menus, not with 3D menus.

  10 - Thanks to [email protected], the man page is integrated with the original
       twm one, and is of a much better quality.

  11 - While moving a window, the position is displayed in a similar way as
       the size when resizing.

  12 - The info window now display the compile time options of the current
       version of ctwm.

  13 - A default IconRegion is now appended at the end of the user provided
       list to help the (numerous) people which do not configure them correctly.

  14 - You can now specify xpm pixmap title buttons and TitleHighlight.
       There is 5 built-in scalable pixmap for buttons, :xpm:menu, :xpm:dot,
       :xpm:resize, :xpm:zoom and :xpm:bar.

  15 - Ctwm now restarts when receiving signal SIGHUP, so to restart it from
       a shell, use : kill -1 the_ctwm_pid

  16 - 2 New keywords : WMgrVertButtonIndent and WMgrHorizButtonIndent with
       1 parameter, specifying the vertical and horizontal space beetween
       buttons in the workspace manager.

  17 - Some more xpm files given. Among them several backgrounds.

  18 - Ctwm set the property WM_WORKSPACELIST (type STRING) on the root
       window, this property contains the null separated list of all the
       workspaces. Now the WM_OCCUPATION property on each window is a null
       separated list instead of a space separated list, it was wrong since
       workspace names can contain spaces. So, the first time you will start
       the this version, your windows will show up anywhere.

  19 - A new library libctwm.a and an include file ctwm.h are given. The
       library contains functions for an external program to have some
       control over ctwm. The functions are :

       Bool    CtwmIsRunning                   ();
       char    **CtwmWorkspaces                ();
       char    *CtwmCurrentWorkspace           ();
       int     CtwmChangeWorkspace             ();
       char    **CtwmCurrentOccupation         ();
       int     CtwmSetOccupation               ();
       int     CtwmAddToCurrentWorkspace       ();

       There is no documentation. A program demolib.c is given to help.

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


 Claude.

--


                   Claude Lecommandeur
                   Service Informatique Central
                   Ecole Polytechnique Federale de Lausanne
                   1015 LAUSANNE (SWITZERLAND)
                   E-Mail : [email protected]
                   Tel : (41 21) 693-22-97