315 lines
12 KiB
Plaintext
315 lines
12 KiB
Plaintext
______ ____ __
|
|
/ ___\ \ / / \/ |
|
|
| | _ \ \ /\ / /| |\/| |
|
|
| |_| | \ V V / | | | |
|
|
\____| \_/\_/ |_| |_|
|
|
___ _ _ _ _ _ ____ _ _
|
|
|_ _|_ __ ___| |_ __ _| | | __ _| |_(_) ___ _ __ / ___|_ _(_) __| | ___
|
|
| || '_ \/ __| __/ _` | | |/ _` | __| |/ _ \| '_ \ | | _| | | | |/ _` |/ _ \
|
|
| || | | \__ \ || (_| | | | (_| | |_| | (_) | | | | | |_| | |_| | | (_| | __/
|
|
|___|_| |_|___/\__\__,_|_|_|\__,_|\__|_|\___/|_| |_| \____|\__,_|_|\__,_|\___|
|
|
|
|
==============================================================================
|
|
|
|
WHAT IS GWM?
|
|
============
|
|
|
|
The GWM (Generic Window Manager) is an extensible Window Manager for
|
|
the X Window System Version 11. It is based upon a WOOL (Window Object
|
|
Oriented Langage) kernel, which is an interpreted dialect of Lisp with
|
|
specific window management primitives. The user builds a window
|
|
manager by writing WOOL files to describe objects on the screen,
|
|
including a Finite State Machine triggering WOOL actions on response
|
|
to X events (e.g. mouse buttons) on that object. These objects can be
|
|
used as decorations around X applications windows, as pop-up menus or
|
|
as independent windows.
|
|
|
|
GWM should be able to emulate efficiently other window managers, and play
|
|
the same role for window managers as EMACS does for text editors.
|
|
|
|
WHERE IS GWM?
|
|
=============
|
|
|
|
All new "official" gwm releases can be found by ftp on:
|
|
Europe: koala.inria.fr:/pub/gwm/
|
|
USA: ftp.x.org:/contrib/window_managers/
|
|
and all the ftp.x.org mirrors (find them by a "archie GettingR6")
|
|
|
|
There is a web page: http://www.inria.fr/koala/gwm
|
|
|
|
UNPACKING a new distribution:
|
|
=============================
|
|
|
|
Unpack the distrib in a GWMDIR directory created for the compilation process
|
|
The installation of gwm will look like:
|
|
|
|
GWMDIR
|
|
|
|
|
gwm ---shadows----- sun4 -- linux -- dec ...
|
|
| (symb. links)
|
|
C source files +----+----+
|
|
| | |
|
|
doc Make data
|
|
|
|
The files will be then compiled in brother directories of "gwm" (sons of
|
|
GWMDIR) in a stand-alone installation (using the Makefile.noXtree makefile), or
|
|
directly in the "gwm" directory itself in case of an installation by imake.
|
|
|
|
The Make directory will contain all your configuration options, that you will
|
|
be able to re-use between different gwm releases.
|
|
|
|
INSTALLATION:
|
|
=============
|
|
|
|
************************************ WARNING *********************************
|
|
GWM sends me an udp packet with just the value of "gethostname" for
|
|
my private statistics on startup. You can disable this feature by (re)compiling
|
|
with -DNO_GWM_LOG or -DNO_KOALA_SPY, or you can also set the shell
|
|
environments NO_GWM_LOG or NO_KOALA_SPY to disable this feature without
|
|
recompilation.
|
|
******************************************************************************
|
|
|
|
Files of interest:
|
|
|
|
INSTALL Documentation on the compilation flags for many architectures
|
|
PROBLEMS Answer to common compilation problems
|
|
doc/KNOWN_BUGS known bugs for this version
|
|
doc/TO_BE_DONE lists the planned enhancements
|
|
CHANGES summary of the user-visible changes
|
|
revision.c the detailled internal change log
|
|
|
|
NOTE: some contributed software that can/must be installed by hand are in the
|
|
contrib/ directory, including emacs modes, and way to interact with gwm from
|
|
emacs or the shell. among them are:
|
|
|
|
rxterm/ scripts to remote launch X commands on other machines
|
|
command_menus/ some menus to launch unix commands
|
|
emacs-mode/ emacs mode to run intarctively wool code on a live gwm
|
|
gwm-buffer/ same for epoch
|
|
gwmchat/ C program for typing commands to gwm (obsolete?)
|
|
gwmsend/ C prog to send commands to gwm
|
|
gwmsh/ C prog to to run intarctively wool code on a live gwm
|
|
lisp-modes/ emacs lisp modes to edit wool code
|
|
widgets/ package to add GWM scrollbars and menus to epoch
|
|
|
|
|
|
The "data/" directory contains bitmaps, and wool (gwm built-in lisp) profiles.
|
|
installing gwm is putting the executable "gwm" somewhere in your path, and
|
|
copying somewhere the data/ contents (without forgetting the 2 files beginning
|
|
by .) and make GWMPATH point on it, if not defined already at compile time.
|
|
|
|
Contrib/rxterm contains the "rxterm" shell script used to spawn remote xterms. If
|
|
you do not have such a script already installed, you should install this script
|
|
and also make "rx" and "rxload" commands as links to it. (it is NOT installed
|
|
automatically to preserve existing ones)
|
|
|
|
|
|
____ _ _ _ _
|
|
/ ___|___ _ __ ___ _ __ (_) | __ _| |_(_) ___ _ __
|
|
| | / _ \| '_ ` _ \| '_ \| | |/ _` | __| |/ _ \| '_ \
|
|
| |__| (_) | | | | | | |_) | | | (_| | |_| | (_) | | | |
|
|
\____\___/|_| |_| |_| .__/|_|_|\__,_|\__|_|\___/|_| |_|
|
|
|_|
|
|
|
|
COMPILING:
|
|
==========
|
|
|
|
Then you can either compile gwm via "imake" or in a stand-alone way.
|
|
|
|
WITH IMAKE:
|
|
|
|
The Imakefile is provided. You should know how to use imake to build
|
|
the Gwm Makefile, by either:
|
|
|
|
ximake TOP
|
|
if your X source tree is in directory TOP, or:
|
|
xmkmf
|
|
if your X source tree has been fully installed
|
|
|
|
then do a "make Makefiles" to build all the subdirectory
|
|
Makefiles, then do a "make" which will build the "gwm" binary,
|
|
and then do a "make install" and "make install.man" which will
|
|
install the gwm binary, the data files in the "data/"
|
|
subdirectory and the manual page.
|
|
|
|
If it fails, you may edit the Imakefile to add compilation flags to
|
|
suit your machine. (see make.TEMPLATE for the description of these
|
|
flags). If you have to modify the provided Imakefile to compile on
|
|
your machine, PLEASE mail me the changes!
|
|
|
|
NOTE: the installation of the "data" subdir works only with the X11R6,
|
|
X11R5 and X11R4 users will have to replace XCOMM strings in Imakefiles
|
|
by #, with X11R3, you will have to do it by hand. (do a
|
|
"cp data/.*gwm data/* GWMDIR" where GWMDIR can be found in the
|
|
Imakefile.
|
|
|
|
|
|
WITHOUT IMAKE:
|
|
|
|
To compile or install gwm, you must, in the "gwm" directory you just
|
|
created, do a:
|
|
|
|
cp Makefile.noXtree Makefile
|
|
|
|
and for each type of machine on which you decide to install it:
|
|
|
|
decide which name you will give to this type of machine ("dpx1000",
|
|
"sun", "vax"). Suppose it is "dpx" in the following. Don't try to name
|
|
it "gwm" however!
|
|
|
|
type: "make DIR=../dpx sdir" (or make DIR=dpx dir if you don't have
|
|
symbolic links on your system)
|
|
|
|
This will build a directory "../dpx", link all source files in it,
|
|
copy the Make.TEMPLATE file to "Make.dpx" in the ../dpx
|
|
directory, and make a link to this newly created file in "Make"
|
|
subdirectory. If you want to create the target directory on another
|
|
filesystem, you can use symbolic links to do so, Just say "make
|
|
DIR=path sdir" where "path" is the complete pathname of the target
|
|
directory, for instance "/usr/maalea/local/src/GWM/dpx"
|
|
|
|
go into it ("cd ../dpx"), and edit the "Make.dpx" file to adapt it
|
|
to your local installation.
|
|
|
|
Then, type "make" and a "gwm" executable should be built.
|
|
In case of errors, a simple "make" should resume the
|
|
compilation process after the first "make" command has been issued.
|
|
If you have the message "Make: Don't know how to make .dir. Stop.",
|
|
that means that you have forgotten to do "cd ../dpx".
|
|
|
|
VERY IMPORTANT: if you encounter compilation problems, please mail me
|
|
the problems and the patches you had to apply to make it compile
|
|
on your system, so that I can include them in future releases!
|
|
|
|
If everything is OK, type "make install", it should copy the
|
|
executable and the whole ./data subdirectory. If you want to install
|
|
it by hand, just copy gwm into your path, and the whole contents of
|
|
the data directory (which can be shared between machines) into the gwm
|
|
built-in path. (the built-in path is printed by gwm by: gwm -?)
|
|
|
|
Then, you can delete the working directory. The only thing you need
|
|
to keep is the "Make" directory, which contains all the things you may
|
|
have defined or adapted for your configuration.
|
|
A link to the "Make.machine" in the "Make" subdirectory was
|
|
|
|
|
|
REPORTING BUGS:
|
|
===============
|
|
|
|
See the file doc/BUG_REPORT to mail back bugs to me. nothing formal here, just
|
|
to be sure you dont forget to send the context of the bug...
|
|
|
|
PS: I maintain a mailing list about gwm: gwm-talk@sophia.inria.fr
|
|
(all mail sent to these address will be redispatched to all members)
|
|
mail requests to be added to these lists to: gwm-talk-requests@sophia.inria.fr
|
|
or gwm@sophia.inria.fr.
|
|
|
|
New updates are announced on the comp.windows.x newsgroup, and on the
|
|
"gwm-talk" list.
|
|
|
|
If you don't have ftp, use the mail<->ftp gateways ftpmail@decwrl.dec.com or
|
|
bitftp@pucc.princeton.edu. (send a message with the word HELP in it to these
|
|
adresses).
|
|
|
|
|
|
Here is the list of the various flags you may set up for compiling GWM:
|
|
======================================================================
|
|
|
|
X version: (default is X11R6)
|
|
---------
|
|
-DX11R1 For compiling with vanilla X11R1 library
|
|
-DX11R2 For compiling with vanilla X11R2 library
|
|
-DX11R3 For compiling with vanilla X11R3 library
|
|
(for now the previous defines are equivalent)
|
|
-DX11R4 For compiling with vanilla X11R4 library
|
|
-DX11R5 For compiling with vanilla X11R5 library
|
|
-DX11R6 For compiling with vanilla X11R6 library
|
|
(for now the previous defines are equivalent)
|
|
|
|
Recommended flags: (you should leave them in DEFINES= )
|
|
-----------------
|
|
-DSECURE turns on sanity checks on many functions, should be defined.
|
|
-DUSE_STANDARD_MALLOC Otherwise my malloc is used, but on modern systems it is
|
|
not needed anymore
|
|
-DUSER_DEBUG Enable user-level debugging functions (trace)
|
|
|
|
OS variants:
|
|
-----------
|
|
Autodetected: sparc, apollo, linux
|
|
|
|
-DSYSV for System V R3 or previous systems (BSD 4.x is default)
|
|
-DSVR4 for System V R4 systems (solaris, irix). Do not define SYSV.
|
|
-DPAGE_SIZE=int for Virtual Memory page size (for SYSV only!) in
|
|
bytes. (defaults to 8192).
|
|
-DPTR_TYPE=int What is the (int, long...) type which is the same size
|
|
as any pointer on your machine? (int is default)
|
|
-DCARD32=long What is the numerical type 32 bit long? defaults to long
|
|
-DIBM_RT For compiling on an IBM PC/RT with AIX
|
|
-Dsm90 for BULL's sps7, dpx
|
|
-DNO_GETPAGESIZE if you dont have getpagesize()
|
|
-DSYSV_TIME if you cannot use BSD ftime function
|
|
-DSYSV_STRINGS if you include <string.h> instead of <strings.h>
|
|
-DSYSV_UTSNAME if you don't have gethostname()
|
|
-DSYSV_SIGNALS if you dont have wait3()
|
|
-DNO_BCOPY if you dont have bcopy and friends
|
|
-DHAS_STRCHR if strchr already exists
|
|
-DNO_MALLOC_DECLARE if your includes already declares char *malloc()
|
|
-DVOID_SIGNALS if signal handlers return a void * (default an int)
|
|
-DVOID_MALLOC if your malloc returns a void * (default a char *)
|
|
-DNO_STRUCTURE_OFFSETS if your compiler cannot compute struct offset on types,
|
|
only on instances (apollo)
|
|
|
|
Workarounds for bugs:
|
|
--------------------
|
|
-DSTUPID if your compiler chokes on complicated expressions (vax)
|
|
-DDOUBLE_ALIGN for machines where structure fields MUST be aligned
|
|
on double float boundaries! (GOULD's powernodes, solaris 2.x)
|
|
-DDO_NOT_REDEFINE_MALLOC if you are compiling with the
|
|
standard DEC WINDOWS Xlib, or some very GCC-specific systems
|
|
where malloc is built-in the compiler (some linuxes?)
|
|
|
|
Debugging-only flags:
|
|
--------------------
|
|
-DTRACE=n Enable tracing at default level n (mofifiable with -T option)
|
|
-DDEBUG Enable debugging via assertions, include routines for DBX,
|
|
Replace some macros by function calls, Synchronize X calls.
|
|
Range checks mallocs.
|
|
-DMLEAK Enable malloc's leaks tracing (very slow)
|
|
-DDO_BUS_ERROR Force a bus error on error for debugging via (yeech!) adb
|
|
-DMONITOR Include flags for profiling information (use -pg Cflags)
|
|
|
|
|
|
Exemples:
|
|
========
|
|
DEFINES= -DSECURE -DUSE_STANDARD_MALLOC -DUSER_DEBUG +these_additional_flags...
|
|
|
|
BSD machines, suns with SUNOS 4.x: none
|
|
Suns with Solaris (aka SUNOS 5.x): -DSVR4
|
|
and: LIBS = -lXext -lX11 -lsocket -lnsl
|
|
NOTE: some suns seems to require -DUSE_STANDARD_MALLOC, otherwise you get
|
|
a bus error in color-make at runtime.
|
|
|
|
vax: -DSTUPID
|
|
|
|
sm90: -DSTUPID -DSYSV
|
|
|
|
dpx: -DSYSV
|
|
|
|
Hp9000 -DSYSV +Ns2000 +Nd2000
|
|
|
|
IBM RS6000/AIX: -DSYSV -DDO_NOT_DECLARE_STRCHR -DNEED_SELECT_H
|
|
|
|
IBM/RT: -DSYSV -DIBM_RT -Nn3000
|
|
|
|
SGI Irix 5.3: -DSVR4 -DNO_STRUCTURE_OFFSETS
|
|
|
|
Unixware: -DSVR4 -DDO_NOT_REDEFINE_MALLOC
|
|
|
|
linux: no flags, should auto-compile (some linuxes need -DDO_NOT_USE_SBRK to prevent crash)
|
|
|
|
FreeBSD: no flags, should auto-compile (detects __FreeBSD__)
|
|
|
|
decstations 5100 (mips): -DSECURE -DSTATS -DUSER_DEBUG -DSIMPLE_LHS -G 0 -DVOID_MALLOC -DHAS_STRCHR -DNO_STRUCTURE_OFFSETS -I/usr/include/X11/extensions
|
|
|
|
alpha: -DLONG_ALIGN -DNO_STRUCTURE_OFFSETS
|