README.md revision 0bbfda8a
1# CTWM 2 3## Intro 4 5ctwm is an extension to twm, originally written by Claude Lecommandeur 6that support multiple virtual screens, and a lot of other goodies. 7 8You can use and manage up to 32 virtual screens called workspaces. You 9swap from one workspace to another by clicking on a button in an 10optionnal panel of buttons (the workspace manager) or by invoking a 11function. 12 13You can customize each workspace by choosing different colors, names and 14pixmaps for the buttons and background root windows. 15 16Major features include: 17 18* Optional 3D window titles and border (ala Motif). 19* Shaped, colored icons. 20* Multiple icons for clients based on the icon name. 21* Windows can belong to several workspaces. 22* A map of your workspaces to move quickly windows between 23 different workspaces. 24* Animations: icons, root backgrounds and buttons can be animated. 25* Pinnable and sticky menus. 26* etc... 27 28The sources files were once the twm ones only workmgr.[ch] added (written 29from scratch by Claude Lecommandeur) and minor modifications to some twm 30files. Since then much more extensive changes and reorganization have 31been done, so the codebase is now significantly different from plain twm. 32 33If you find bugs in ctwm, or just want to tell us how much you like it, 34please send a report to the mailing list. 35 36There is a manual page, which always needs more work (any volunteers?). 37Many useful information bits are only in the CHANGES.md file, so please 38read it. 39 40 41## Configuration 42 43ctwm is build using CMake, which does its best to root around in your 44system to find the pieces the build needs. Occasionally though you might 45have to give it some help, or change the defaults of what features are 46expected. 47 48In the common case, the included Makefile will do the necessary 49invocations, and you won't need to worry about it; just run a normal 50`make ; make install` invocation. If you need to make alterations 51though, you may have to invoke cmake manually and set various params on 52the command line (cmake also has various GUI configurators, not covered 53here). 54 55The following parameters control configuration/installation locations: 56 57CMAKE_INSTALL_PREFIX 58: Where paths are based. This is a standard cmake var. Referred 59 to as `$PREFIX` below. 60 61ETCDIR 62: Where ctwm will look for a `system.ctwmrc` to fall back to if it 63 doesn't find a per-user config. Nothing is installed here by 64 default. 65 (default: `$PREFIX/etc`) 66 67BINDIR 68: Where the ctwm binary is installed. 69 (default: `$PREFIX/bin`) 70 71DATADIR 72: Where run-time data like image pixmaps are installed. 73 (default: `$PREFIX/share/ctwm`) 74 75MANDIR 76: Base directory under which manpage dirs like `man1` and `man2` 77 live. 78 (default: `$PREFIX/share/man` or `$PREFIX/man`, whichever is 79 found first) 80 81DOCDIR 82: Where non-manpage docs are installed. 83 (default: `$PREFIX/share/doc/ctwm`) 84 85EXAMPLEDIR 86: Where various example files get installed. These include the 87 system.ctwmrc that is compiled into ctwm as a fallback. 88 (default: `$PREFIX/share/examples/ctwm`) 89 90 91The following parameters control the features/external libs that are 92available. The defaults can be changed by passing parameters like 93`-DUSE_XYZ=OFF` to the cmake command line. 94 95USE_M4 96: Enables use of m4(1) for preprocessing config files at runtime. 97 If your m4 is called something other than `m4` or `gm4`, you may 98 need to also set M4_CMD to point at it. 99 (**ON** by default) 100 101USE_XPM 102: Enables the use of XPM images. Disable if libxpm isn't present, 103 which is just barely possible on very old systems. 104 (**ON** by default) 105 106USE_JPEG 107: Enables the use of jpeg images via libjpeg. Disable if libjpeg 108 isn't present. 109 (**ON** by default) 110 111USE_EWMH 112: Enables EWMH support. 113 (**ON** by default) 114 115USE_RPLAY 116: Build with sound support via librplay. `USE_SOUND` is a still 117 valid but deprecated alias for this, and will give a warning. 118 (**OFF** by default) 119 120 121Additional vars you might need to set: 122 123M4_CMD 124: Name of m4 program, if it's not `m4` or `gm4`, or full path to it 125 if it's not in your `$PATH`. 126 127 128## Building 129 130In the simple case, the defaults should work. Most modern or semi-modern 131systems should fall into this. 132 133 funny prompt> make 134 135If you need to add special config, you'll have to pass extra bits to 136cmake via an invocation like 137 138 funny prompt> make CMAKE_EXTRAS="-DUSE_XPM=OFF -DM4_CMD=superm4" 139 140Though in more complicated cases it may be simpler to just invoke cmake 141directly: 142 143 funny prompt> ( cd build ; cmake -DUSE_XPM=OFF -DM4_CMD=superm4 .. ) 144 funny prompt> make 145 146### Required Libs 147 148ctwm requires various X11 libraries to be present. That list will 149generally include libX11, libXext, libXmu, libXt, libSM, and libICE. 150Depending on your configuration, you may require extra libs as discussed 151above (libXpm and libjpeg are included in the default config). If you're 152on a system that separates header files etc. from the shared lib itself 153(many Linux dists do), you'll probably need -devel or similarly named 154packages installed for each of them as well. 155 156 157 158## Installation 159 160 funny prompt> make install 161 162### Packaging 163 164The CMake build system includes sufficient info for CPack to be used to 165build RPM (and presumably, though not tested, DEB) packages. As a quick 166example of usage: 167 168 funny prompt> make 169 funny prompt> (cd build && cpack -G RPM) 170 171 172## Dev and Support 173 174### Mailing list 175 176There is a mailing list for discussions: <ctwm@ctwm.org>. Subscribe by 177sending a mail with the subject "subscribe ctwm" to 178<minimalist@ctwm.org>. 179 180### Repository 181 182ctwm development uses bazaar (see <http://bazaar.canonical.com/>) for 183version control. The code is available on launchpad as `lp:ctwm`. See 184<https://launchpad.net/ctwm> for more details. 185 186 187## Further information 188 189Additional information can be found from the project webpage, at 190<https://www.ctwm.org/>. 191 192 193{>> 194 vim:expandtab:ft=markdown: 195<<} 196