~ctwm/ctwm/trunk

712.1.2 by Matthew Fuller
Convert README from multimarkdown to asciidoc.
1
= CTWM
308.1.1 by Matthew Fuller
Rewrite README into multimarkdown. Relatively few changes.
2
712.1.2 by Matthew Fuller
Convert README from multimarkdown to asciidoc.
3
== Intro
308.1.1 by Matthew Fuller
Rewrite README into multimarkdown. Relatively few changes.
4
5
ctwm is an extension to twm, originally written by Claude Lecommandeur
286 by Matthew Fuller
Expand these tabs and set a modeline to keep doing it.
6
that support multiple virtual screens, and a lot of other goodies.
62 by Richard Levitte
Rework the README.
7
308.1.1 by Matthew Fuller
Rewrite README into multimarkdown. Relatively few changes.
8
You can use and manage up to 32 virtual screens called workspaces.  You
9
swap from one workspace to another by clicking on a button in an
62 by Richard Levitte
Rework the README.
10
optionnal panel of buttons (the workspace manager) or by invoking a
11
function.
12
308.1.1 by Matthew Fuller
Rewrite README into multimarkdown. Relatively few changes.
13
You can customize each workspace by choosing different colors, names and
62 by Richard Levitte
Rework the README.
14
pixmaps for the buttons and background root windows.
15
308.1.1 by Matthew Fuller
Rewrite README into multimarkdown. Relatively few changes.
16
Major features include:
62 by Richard Levitte
Rework the README.
17
308.1.1 by Matthew Fuller
Rewrite README into multimarkdown. Relatively few changes.
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
62 by Richard Levitte
Rework the README.
23
   different workspaces.
308.1.1 by Matthew Fuller
Rewrite README into multimarkdown. Relatively few changes.
24
* Animations: icons, root backgrounds and buttons can be animated.
25
* Pinnable and sticky menus.
26
* etc...
62 by Richard Levitte
Rework the README.
27
584.1.14 by Matthew Fuller
We're a long way from "slightly modified twm sources".
28
The sources files were once the twm ones only workmgr.[ch] added (written
29
from scratch by Claude Lecommandeur) and minor modifications to some twm
30
files.  Since then much more extensive changes and reorganization have
31
been done, so the codebase is now significantly different from plain twm.
62 by Richard Levitte
Rework the README.
32
275 by Matthew Fuller
Don't suggest people send a not [sic] to Richard, just point
33
If you find bugs in ctwm, or just want to tell us how much you like it,
34
please send a report to the mailing list.
35
308.1.1 by Matthew Fuller
Rewrite README into multimarkdown. Relatively few changes.
36
There is a manual page, which always needs more work (any volunteers?).
408.1.4 by Matthew Fuller
Add suffixes to a couple xrefs where it makes sense. Don't chase
37
Many useful information bits are only in the CHANGES.md file, so please
38
read it.
308.1.1 by Matthew Fuller
Rewrite README into multimarkdown. Relatively few changes.
39
40
712.1.2 by Matthew Fuller
Convert README from multimarkdown to asciidoc.
41
== Configuration
308.1.1 by Matthew Fuller
Rewrite README into multimarkdown. Relatively few changes.
42
43
ctwm is build using CMake, which does its best to root around in your
294.1.45 by Matthew Fuller
Update README to describe how to use cmake for the build.
44
system to find the pieces the build needs.  Occasionally though you might
45
have to give it some help, or change the defaults of what features are
46
expected.
47
48
In the common case, the included Makefile will do the necessary
49
invocations, and you won't need to worry about it; just run a normal
308.1.1 by Matthew Fuller
Rewrite README into multimarkdown. Relatively few changes.
50
`make ; make install` invocation.  If you need to make alterations
294.1.45 by Matthew Fuller
Update README to describe how to use cmake for the build.
51
though, you may have to invoke cmake manually and set various params on
52
the command line (cmake also has various GUI configurators, not covered
53
here).
54
399.1.18 by Matthew Fuller
Actually, this is probably better phrasing.
55
The following parameters control configuration/installation locations:
399.1.14 by Matthew Fuller
Document the override params for install locations.
56
712.1.2 by Matthew Fuller
Convert README from multimarkdown to asciidoc.
57
CMAKE_INSTALL_PREFIX::
58
        Where paths are based.  This is a standard cmake var.  Referred
584.1.15 by Matthew Fuller
Clarify naming.
59
        to as `$PREFIX` below.
399.1.14 by Matthew Fuller
Document the override params for install locations.
60
712.1.2 by Matthew Fuller
Convert README from multimarkdown to asciidoc.
61
ETCDIR::
62
        Where ctwm will look for a `system.ctwmrc` to fall back to if it
399.1.14 by Matthew Fuller
Document the override params for install locations.
63
        doesn't find a per-user config.  Nothing is installed here by
64
        default.
65
        (default: `$PREFIX/etc`)
66
712.1.2 by Matthew Fuller
Convert README from multimarkdown to asciidoc.
67
BINDIR::
68
        Where the ctwm binary is installed.
399.1.14 by Matthew Fuller
Document the override params for install locations.
69
        (default: `$PREFIX/bin`)
70
712.1.2 by Matthew Fuller
Convert README from multimarkdown to asciidoc.
71
DATADIR::
72
        Where run-time data like image pixmaps are installed.
399.1.14 by Matthew Fuller
Document the override params for install locations.
73
        (default: `$PREFIX/share/ctwm`)
74
712.1.2 by Matthew Fuller
Convert README from multimarkdown to asciidoc.
75
MANDIR::
76
        Base directory under which manpage dirs like `man1` and `man2`
399.1.14 by Matthew Fuller
Document the override params for install locations.
77
        live.
584.1.16 by Matthew Fuller
Improve wording.
78
        (default: `$PREFIX/share/man` or `$PREFIX/man`, whichever is
79
        found first)
399.1.14 by Matthew Fuller
Document the override params for install locations.
80
712.1.2 by Matthew Fuller
Convert README from multimarkdown to asciidoc.
81
DOCDIR::
82
        Where non-manpage docs are installed.
399.1.14 by Matthew Fuller
Document the override params for install locations.
83
        (default: `$PREFIX/share/doc/ctwm`)
84
712.1.2 by Matthew Fuller
Convert README from multimarkdown to asciidoc.
85
EXAMPLEDIR::
86
        Where various example files get installed.  These include the
399.1.14 by Matthew Fuller
Document the override params for install locations.
87
        system.ctwmrc that is compiled into ctwm as a fallback.
88
        (default: `$PREFIX/share/examples/ctwm`)
89
90
294.1.45 by Matthew Fuller
Update README to describe how to use cmake for the build.
91
The following parameters control the features/external libs that are
92
available.  The defaults can be changed by passing parameters like
308.1.1 by Matthew Fuller
Rewrite README into multimarkdown. Relatively few changes.
93
`-DUSE_XYZ=OFF` to the cmake command line.
94
712.1.2 by Matthew Fuller
Convert README from multimarkdown to asciidoc.
95
USE_M4::
96
        Enables use of m4(1) for preprocessing config files at runtime.
308.1.1 by Matthew Fuller
Rewrite README into multimarkdown. Relatively few changes.
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
712.1.2 by Matthew Fuller
Convert README from multimarkdown to asciidoc.
101
USE_XPM::
102
        Enables the use of XPM images.  Disable if libxpm isn't present,
308.1.1 by Matthew Fuller
Rewrite README into multimarkdown. Relatively few changes.
103
        which is just barely possible on very old systems.
104
        (**ON** by default)
105
712.1.2 by Matthew Fuller
Convert README from multimarkdown to asciidoc.
106
USE_JPEG::
107
        Enables the use of jpeg images via libjpeg.  Disable if libjpeg
308.1.1 by Matthew Fuller
Rewrite README into multimarkdown. Relatively few changes.
108
        isn't present.
109
        (**ON** by default)
110
712.1.2 by Matthew Fuller
Convert README from multimarkdown to asciidoc.
111
USE_EWMH::
112
        Enables EWMH support.
365 by Matthew Fuller
Document USE_EWMH param.
113
        (**ON** by default)
114
712.1.2 by Matthew Fuller
Convert README from multimarkdown to asciidoc.
115
USE_RPLAY::
116
        Build with sound support via librplay.  `USE_SOUND` is a still
463.1.26 by Matthew Fuller
Switch USE_SOUND to USE_RPLAY (while noting that the former is still
117
        valid but deprecated alias for this, and will give a warning.
308.1.1 by Matthew Fuller
Rewrite README into multimarkdown. Relatively few changes.
118
        (**OFF** by default)
119
712.1.2 by Matthew Fuller
Convert README from multimarkdown to asciidoc.
120
USE_XRANDR::
121
        Enables the use of multi-monitors of different sizes via
614.1.124 by Matthew Fuller
Tweak wording.
122
        libXrandr.  Disable if libXrandr isn't present or is older than 1.5.
614.1.11 by Maxime Soulé
Xrandr support can be disabled at compile time (ON by default)
123
        (**ON** by default)
124
294.1.45 by Matthew Fuller
Update README to describe how to use cmake for the build.
125
126
Additional vars you might need to set:
127
712.1.2 by Matthew Fuller
Convert README from multimarkdown to asciidoc.
128
M4_CMD::
129
        Name of m4 program, if it's not `m4` or `gm4`, or full path to it
399.1.15 by Matthew Fuller
Tweak desc of M4_CMD as long as I'm editing this file.
130
        if it's not in your `$PATH`.
308.1.1 by Matthew Fuller
Rewrite README into multimarkdown. Relatively few changes.
131
132
133
## Building
108 by Richard Levitte
Enhance the README with configuration information adapted to the
134
294.1.45 by Matthew Fuller
Update README to describe how to use cmake for the build.
135
In the simple case, the defaults should work.  Most modern or semi-modern
136
systems should fall into this.
137
308.1.1 by Matthew Fuller
Rewrite README into multimarkdown. Relatively few changes.
138
    funny prompt> make
294.1.72 by Matthew Fuller
Expand verbiage about adding extra config bits to cmake a little, to
139
140
If you need to add special config, you'll have to pass extra bits to
141
cmake via an invocation like
142
308.1.1 by Matthew Fuller
Rewrite README into multimarkdown. Relatively few changes.
143
    funny prompt> make CMAKE_EXTRAS="-DUSE_XPM=OFF -DM4_CMD=superm4"
294.1.72 by Matthew Fuller
Expand verbiage about adding extra config bits to cmake a little, to
144
145
Though in more complicated cases it may be simpler to just invoke cmake
146
directly:
147
308.1.1 by Matthew Fuller
Rewrite README into multimarkdown. Relatively few changes.
148
    funny prompt> ( cd build ; cmake -DUSE_XPM=OFF -DM4_CMD=superm4 .. )
149
    funny prompt> make
150
712.1.2 by Matthew Fuller
Convert README from multimarkdown to asciidoc.
151
=== Required Libs
544 by Matthew Fuller
Add a little verbiage about the X libs we need to build and possibly
152
153
ctwm requires various X11 libraries to be present.  That list will
154
generally include libX11, libXext, libXmu, libXt, libSM, and libICE.
155
Depending on your configuration, you may require extra libs as discussed
644.1.2 by Matthew Fuller
Rewrap.
156
above (libXpm, libjpeg, and libXrandr are included in the default
157
config).  If you're on a system that separates header files etc. from the
158
shared lib itself (many Linux dists do), you'll probably need -devel or
159
similarly named packages installed for each of them as well.
544 by Matthew Fuller
Add a little verbiage about the X libs we need to build and possibly
160
308.1.1 by Matthew Fuller
Rewrite README into multimarkdown. Relatively few changes.
161
162
712.1.2 by Matthew Fuller
Convert README from multimarkdown to asciidoc.
163
== Installation
308.1.1 by Matthew Fuller
Rewrite README into multimarkdown. Relatively few changes.
164
165
    funny prompt> make install
166
712.1.2 by Matthew Fuller
Convert README from multimarkdown to asciidoc.
167
=== Packaging
469 by Matthew Fuller
Drop a quick doc to suggest how to use cpack to build RPM's, and
168
169
The CMake build system includes sufficient info for CPack to be used to
170
build RPM (and presumably, though not tested, DEB) packages.  As a quick
171
example of usage:
172
173
    funny prompt> make
174
    funny prompt> (cd build && cpack -G RPM)
175
308.1.1 by Matthew Fuller
Rewrite README into multimarkdown. Relatively few changes.
176
712.1.2 by Matthew Fuller
Convert README from multimarkdown to asciidoc.
177
== Dev and Support
308.1.1 by Matthew Fuller
Rewrite README into multimarkdown. Relatively few changes.
178
712.1.2 by Matthew Fuller
Convert README from multimarkdown to asciidoc.
179
=== Mailing list
308.1.1 by Matthew Fuller
Rewrite README into multimarkdown. Relatively few changes.
180
181
There is a mailing list for discussions: <ctwm@ctwm.org>.  Subscribe by
182
sending a mail with the subject "subscribe ctwm" to
183
<minimalist@ctwm.org>.
184
712.1.2 by Matthew Fuller
Convert README from multimarkdown to asciidoc.
185
=== Repository
308.1.1 by Matthew Fuller
Rewrite README into multimarkdown. Relatively few changes.
186
680 by Matthew Fuller
Swap README ref from bzr to brz.
187
ctwm development uses breezy (see <https://www.breezy-vcs.org/>) for
308.1.1 by Matthew Fuller
Rewrite README into multimarkdown. Relatively few changes.
188
version control.  The code is available on launchpad as `lp:ctwm`.  See
189
<https://launchpad.net/ctwm> for more details.
190
191
712.1.2 by Matthew Fuller
Convert README from multimarkdown to asciidoc.
192
== Further information
308.1.1 by Matthew Fuller
Rewrite README into multimarkdown. Relatively few changes.
193
194
Additional information can be found from the project webpage, at
584.1.17 by Matthew Fuller
https-ize link to project page.
195
<https://www.ctwm.org/>.
308.1.1 by Matthew Fuller
Rewrite README into multimarkdown. Relatively few changes.
196
197
712.1.2 by Matthew Fuller
Convert README from multimarkdown to asciidoc.
198
// vim:expandtab