Commits

Anonymous committed 5abb527

* lisp/xwem-main.el (xwem-version): [new] version variable added.

* man/*.texi (Initial): Initial import of docs for xwem.

* Makefile (EXPLICIT_DOCS): [new]

  • Participants
  • Parent commits de3b49b

Comments (0)

Files changed (19)

+2004-03-16  Zajcev Evgeny  <zevlg@yandex.ru>
+
+	* lisp/xwem-main.el (xwem-version): [new] version variable added.
+
+	* man/*.texi (Initial): Initial import of docs for xwem.
+	
+	* Makefile (EXPLICIT_DOCS): [new]
+
 2004-03-15  Norbert Koch  <viteno@xemacs.org>
 
 	* Makefile (VERSION): XEmacs package 1.03 released.
 
 PRELOADS = -eval '(progn (push "./lisp" load-path) (push "./lisp/addons" load-path) (push (concat (package-name-to-directory "xlib") "/ext") load-path))' -l lisp/auto-autoloads.el
 
+EXPLICIT_DOCS = man/xwem.texi
+
 include ../../XEmacs.rules

File lisp/xwem-main.el

 (eval-when-compile
   (require 'cl))			;last, intersection etc
 
+;;;###autoload
+(defconst xwem-version "xwem(xemacs-package):  $Revision$")
+
 (defgroup xwem nil
   "XWEM window manager."
   :prefix "xwem-"

File man/addons.texi

+@node Addons, Logging, Hooking, Top
+@comment  node-name,  next,  previous,  up
+@chapter Addons
+@cindex Addons
+
+XWEM have some usefull packages in its distribution.
+
+@itemize @bullet
+
+@item
+@code{xwem-clswi.el}
+Buqis like client switching.
+
+@item
+@code{xwem-diagram.el}
+Diagram drawer for XWEM.
+@itemize @minus
+@item
+Bars diagrams.
+@item
+Circle digrams.
+@item
+Plain digrams.
+@item
+3D digrams.
+@end itemize
+
+@item
+@code{xwem-edmacro.el}
+Addon to edit keyboard macros.
+
+@item
+@code{xwem-framei.el}
+Frame indicator.
+
+@item
+@code{xwem-gamma.el}
+Interactive gamma corrector.
+
+@item
+@code{xwem-holer.el}
+Create holes in Frames.
+
+@item
+@code{xwem-osd.el}
+On Screen Display for XWEM.
+
+@item
+@code{xwem-register.el}
+Registers for XWEM.
+
+@item
+@code{xwem-rooter.el}
+Handle Clients on root window.
+
+@item
+@code{xwem-time.el}
+@code{display-time} like dockapp.
+
+@item
+@code{xwem-worklog.el}
+Keep track on what you are doing.
+
+@item
+@code{xwem-xfig.el}
+XFIG format.
+
+@end itemize
+
+
+TODO: more packages description, tutorial on how to write XWEM packages.

File man/client.texi

+@node Client, XWEM Minibuffer, Window, Primitives
+@section Client
+@cindex client
+
+@dfn{Client} is normal X11 application already managed by XWEM. All XWEM
+Clients manages according to XWEM Manage Database(@pxref{Manage
+Database}). Default behaviour is to enlarge each XWEM Client which have
+no override redirect flag ot XWEM Window used to hold that Client.
+
+
+@menu
+* Client Basics::               What is Client.
+* Client Properties::           Describes what properties have each Client.
+* Current Client::              There is always some Client is active.
+* Clients Lists::               How does Clients organizes lists.
+* Client Hooks::                How you can control Clients.
+* Operating on Clients::        What you can do with Clients.
+@end menu
+
+@node Client Basics, Client Properties, Client, Client
+@comment  node-name,  next,  previous,  up
+@subsection Client Basics
+@cindex basics
+
+TODO: describe what is XWEM Client.
+
+@defun xwem-cl-p client
+Returns non-@code{nil} if @var{client} is Client.
+@end defun
+
+@node Client Properties, Current Client, Client Basics, Client
+@comment  node-name,  next,  previous,  up
+@subsection Client Properties
+@cindex properties
+
+Each Client in XWEM have some properties associated with it.
+
+@defun xwem-client-name cl &optional clist
+Return unique name for Client @var{cl} using @var{clist} as list of
+Clients.
+@end defun
+
+@node Current Client, Clients Lists, Client Properties, Client
+@comment  node-name,  next,  previous,  up
+@subsection Current Client
+
+@dfn{Current Client} is client in selected Window.
+
+TODO: describe things related to special XEmacs frames.
+
+@defun xwem-cl-selected
+Return selected Client.
+@end defun
+
+@node Clients Lists, Client Hooks, Current Client, Client
+@comment  node-name,  next,  previous,  up
+@subsection Clients Lists
+@cindex lists
+
+TODO: describe client lists.
+
+@defvar xwem-clients
+List of all Clients.
+@end defvar
+
+@node Client Hooks, Operating on Clients, Clients Lists, Client
+@comment  node-name,  next,  previous,  up
+@subsection Client Hooks
+@cindex hooks
+
+TODO: genaral overview of hooks used in Client processing.
+
+@defvar xwem-cl-setup-hooks
+List of hooks which is called after XWEM Client is managed. Functions in
+that list should accept one argument - XWEM Client.
+@end defvar
+
+@defvar xwem-cl-manage-hook
+Functions to call when Client managed.  They are passed with one
+argument - @code{cl}.
+@end defvar
+
+@defvar xwem-cl-demanage-hook
+Functions to call when Cliend demanages.  Called with with one argument
+- @code{cl}.
+@end defvar
+
+@node Operating on Clients, , Client Hooks, Client
+@comment  node-name,  next,  previous,  up
+@subsection Operating on Clients
+@cindex operating
+
+Here is some usefull functions you can use to operate on Clients.
+
+@defun xwem-find-client xwin-or-id
+Find Client by X window @var{xwin-or-id}.
+@end defun
+
+@defun xwem-remove-client cl
+Remove @var{cl} from Clients list @code{xwem-clients}.
+@end defun
+
+TODO: write me

File man/frame.texi

+@node Frame, Window, Primitives, Primitives
+@section Frame
+@cindex Frame
+
+@dfn{Frame} is general thing that used to hold XWEM
+windows(@pxref{Window}).  Usually Frame have something like titlebar
+which is used to display information related to manager state, such as
+names for XWEM Clients(@pxref{Client}) or user defined information.
+
+TODO: add some info about Frames properties, such as GCs list, root
+window, selected window, etc.
+
+@defun xwem-frame-p frame
+Returns non-@code{nil} if @var{frame} is XWEM Frame.
+@end defun
+
+@menu
+* Basic Frames::                Basic description for Frames.
+* Creating Frames::             Creating Frames.
+* Frame Properties::            Controlling frame's size, position, etc.
+* Frame Title::                 Using frame title to display information.
+* Deleting Frames::             How to delete frames.
+* Frames Operations::           What you can do with Frames.
+* Embedded Frames::             Frame may be normal XWEM client.
+* Frames variables and functions::  
+@end menu
+
+@node Basic Frames, Creating Frames, Frame, Frame
+@comment  node-name,  next,  previous,  up
+@subsection Basic Frames
+@cindex Basic Frames
+
+TODO: write me
+
+@node Creating Frames, Frame Properties, Basic Frames, Frame
+@comment  node-name,  next,  previous,  up
+@subsection Creating Frames
+@cindex Creating Frames
+
+Here is describe functions which is used to create frames.  Also describe
+default bindings to create frames.  Describe side by side splits.
+
+TODO: write me
+
+@node Frame Properties, Frame Title, Creating Frames, Frame
+@comment  node-name,  next,  previous,  up
+@subsection Frame Properties
+@cindex Frame Properties
+
+Each XWEM Frame have properties list, which is altered when creating
+Frame.
+
+Here should be description of Frame's properties, default values, etc.
+
+TODO: write me
+
+@node Frame Title, Deleting Frames, Frame Properties, Frame
+@comment  node-name,  next,  previous,  up
+@subsection Frame Title
+@cindex Frame Title
+
+Description of Frame tabber.
+
+TODO: write me
+
+@node Deleting Frames, Frames Operations, Frame Title, Frame
+@comment  node-name,  next,  previous,  up
+@subsection Deleting Frames
+@cindex Deleting Frames
+
+You may easily delete any of XWEM Frame.  All clients that have Frame as
+parent window will be reparented to root window.
+
+Here is should be description for default keybindings for frame deletion
+and functions description.
+
+TODO: write me
+
+@node Frames Operations, Embedded Frames, Deleting Frames, Frame
+@comment  node-name,  next,  previous,  up
+@subsection Frames Operations
+@cindex Frames Operations
+
+Here is description about what you can do with Frame.  Switching,
+linkage switching, etc.
+
+TODO: write me
+
+@node Embedded Frames, Frames variables and functions, Frames Operations, Frame
+@comment  node-name,  next,  previous,  up
+@subsection Embedded Frames
+@cindex Embedded Frames
+
+@dfn{Embedded Frame} is Frame and CL at the same time.
+
+Here is description on how to create embedded frames, how to unembed
+them and so on.
+
+TODO: write me
+
+@node Frames variables and functions, , Embedded Frames, Frame
+@comment  node-name,  next,  previous,  up
+@subsection Frames variables and functions
+
+@defvar xwem-frame-background
+This is symbol specifies background color used in XWEM Frame. This color
+should be in @code{xwem-gc-syscolors} or in @code{xwem-gc-bonus-colors}.
+@example
+xwem-frame-backgroud
+@result{} "gray60"
+@end example
+@end defvar
+
+@defvar xwem-frame-cursor-shape
+This specifies shape of cursor when pointer is over XWEM Frame. It is
+value of one of @code{X-XC-}@dots{} variable.
+
+@example
+(eq xwem-frame-cursor-shape 'X-XC-left_ptr)
+@result{} t
+@end example
+@end defvar
+
+@defvar xwem-frame-cursor-foreground-color
+Specifies cursor's foreground color when pointer is over XWEM Frame.
+
+@example
+xwem-frame-cursor-foreground-color
+@result{} "#002800"
+@end example
+@end defvar
+
+@defvar xwem-frame-cursor-background-color
+Cursor's background color when pointer over XWEM Frame.
+@end defvar
+
+@defvar xwem-frame-defprops
+Plist which is used to define default properties for newly created XWEM
+Frames.  Keys in this plist is symbols, you can use one of:
+
+@code{title-height} - Height in pixels to be used for title bar.
+
+@code{inner-border-width} - Width in pixels of XWEM Frame's inner border.
+
+@code{otter-border-width} - Width in pixels of XWEM Frame's otter border.
+
+@code{title-thickness} - Used for 3D view of title bar.
+
+@example
+xwem-frame-defprops
+@result{}
+(inner-border-width 0
+ otter-border-width 0
+ title-height 17
+ title-thickness 2)
+@end example
+@end defvar
+
+@defvar xwem-face-frame-selected-win-selected
+Face used to outline selected Window in selected Frame.
+@end defvar
+
+@defvar xwem-face-frame-selected-win-nonselected
+Face used to outline non-selected Window in selected Frame.
+@end defvar
+
+@defvar xwem-face-frame-nonselected-win-selected
+Face to outline selected Window in non-selected Frame.
+@end defvar
+
+@defvar xwem-face-frame-nonselected-win-nonselected
+Face to outline non-selected Window in non-selected Frame.
+@end defvar
+
+@defvar xwem-face-win-delimeter
+Face to draw Window delimeter.
+@end defvar
+
+@defvar xwem-face-win-delimeter-shadow
+Face to draw shadow of Window delimeter.
+@end defvar
+
+@defvar xwem-frame-rolling-switch
+Non-nil mean that @code{xwem-frame-next} and @code{xwem-frame-previous}
+commands will always switch, even if there no next or previous Frame.
+@end defvar
+
+@defvar xwem-frame-switch-hook
+Hooks to be called when Frame switching occurs
+(i.e. @code{xwem-current-frame} changes).  Function will receive two
+arguments @var{old-frame} and @var{new-frame}.
+@end defvar
+
+@defvar xwem-frame-keymap
+Keymap used in Frames.
+@end defvar
+
+@defvar xwem-frames-list
+List of all Frames.
+@end defvar
+
+@defvar xwem-current-frame
+Refers to currently selected Frame.
+@end defvar
+
+@c Functions begins here
+@defun xwem-frame-p frame
+Return non-@code{nil} if @var{frame} is valid XWEM Frame.
+
+@example
+(xwem-frame-p t)
+@result{} nil
+@end example
+@end defun
+
+@defun xwem-frame-alive-p frame
+Return non-@code{nil} if @var{frame} is alive frame, i.e. in
+@code{xwem-frames-list}.
+@end defun
+
+@defun xwem-frame-mapped-p frame
+Return non-@code{nil} if @var{frame} is mapped, i.e. its contents shown.
+@end defun
+
+@defun xwem-frame-map frame
+Map @var{frame}, i.e show it contents.
+@end defun
+
+@defun xwem-frame-selected
+Return currently selected Frame.
+@end defun
+
+@defun xwem-frame-selected-p frame
+Return non-@code{nil} if @var{frame} is selected Frame.
+@end defun
+
+@defun xwem-frame-select frame &optional dnr-hooks
+Make @var{frame} to be selected.  Runs @code{xwem-frame-switch-hooks} if
+@var{frame} is not already selected and @var{dnr-hooks} non-@code{nil}.
+@end defun
+
+@defun xwem-frame-select-defhook old-frame new-frame
+Default hook that present in @code{xwem-frame-switch-hooks}.
+@end defun
+
+TODO: describe other functions ..
+
+@defun xwem-init-frames
+Initialise all stuff needed to manipulate with XWEM Frames.
+@end defun
+
+@defun xwem-make-frame props
+Creates new Frame with merged @code{xwem-frame-defprops} and @var{props}
+together properties.
+@end defun
+
+@defun xwem-find-frame xwin
+Find Frame by X Window @var{xwin}
+@end defun
+
+@defun xwem-frame-find how arg
+Find Frame according to @var{how} and @var{arg}.  @var{how} can be one
+of @code{xwin}, @code{win} or @code{cl}.  @var{arg} is X Window, XWEM
+Window or XWEM Client respectively.
+@end defun
+
+@defun xwem-frame-num frame
+Return index position of @var{frame} in @code{xwem-frame-list}.
+@end defun
+
+@defun xwem-frame-draw frame fully
+Draw @var{frame}.  If @var{fully} is non-@code{nil} then
+@code{XClearArea} Frame's X window before drawing.
+@end defun
+
+@defun xwem-frame-redraw frame
+Outlines Windows inside @var{frame}.
+@end defun
+
+@c Commands
+@defun xwem-frame-switch-nth n
+Switch to @var{n} XWEM Frame in @code{xwem-frame-list}.
+@end defun
+
+@defun xwem-frame-del-win &optional frame window
+Removes XWEM @var{window} from XWEM @var{frame}.
+@end defun
+
+@defun xwem-frame-del-others &optional frame window
+Removes all XWEM Windows from XWEM @var{frame} other then @var{window}.
+@end defun
+
+@defun xwem-frame-split-horiz &optional frame
+Splits XWEM @var{frame} horizontally.
+@end defun
+
+@defun xwem-frame-split-vert &optional frame
+Splits XWEM @var{frame} vertically.
+@end defun
+
+@defun xwem-frame-win-enlarge-hor n
+Enlarges @code{xwem-win-selected} in @code{xwem-frame-selected} by n
+pixels horizontally.
+@end defun
+
+@defun xwem-frame-win-enlarge-ver n
+Enlarges @code{xwem-win-selected} in @code{xwem-frame-selected} by n
+pixels vertically.
+@end defun
+
+@defun xwem-frame-goto direction &optional frame
+Go to next XWEM Window in @var{frame} in @var{direction}.
+@end defun

File man/help.texi

+@node Help, , System Tray, Subsystems
+@comment  node-name,  next,  previous,  up
+@section Help
+@cindex help
+
+Help subsysem in XWEM is much like XEmacs help subsystem.
+
+TODO: write me

File man/hooking.texi

+@node Hooking, Addons, Subsystems, Top
+@chapter Hooking
+@cindex hooking
+
+XWEM supports multiple hooks across its routines.  Here is some basic
+hooks that you can use to alter XWEM behaviour.
+
+TODO: write me

File man/logging.texi

+@node Logging, Licenses, Addons, Top
+@chapter Logging
+@cindex logging
+
+XWEM support some logging facilities.  Add next to your @code{~/.xwem/xwemrc.el}:
+
+@lisp
+(setq xwem-debug t)
+@end lisp
+
+If you want more debugging stuff, you can use @code{xmond} utility.
+
+TODO: write me

File man/manda.texi

+@node Manage Database, System Tray, Text Specifications, Subsystems
+@section Manage Database
+@cindex manage
+
+@dfn{Manage Database} is list of some information about certain X11
+applications.  It contain info about how to deal with that X11
+application, how it should managed, demanaged, iconified, refited, etc.
+
+TODO: write me

File man/minibuf.texi

+@node XWEM Minibuffer, , Client, Primitives
+@section XWEM Minibuffer
+@cindex minibuffer
+
+@dfn{XWEM minibuffer} is global minibuffer(usually value of
+@var{default-minibuffer-frame}) used as minibuffer by all XEmacs frames.
+
+TODO: write me
+

File man/overview.texi

+@node Overview, Getting Started, Top, Top
+@comment  node-name,  next,  previous,  up
+@chapter Overview
+@cindex overview
+
+XWEM is full-featured, self-documented, extensible window manager, that
+works under XEmacs control.  XWEM does job other window managers do and
+provides many features that other window managers not.  XWEM mostly
+keyboard driven, but can handle mouse as well.
+
+If you are looking for very powerful tool to control X applications or
+want to modify wm behaviour as you want, XWEM is for you.
+
+TODO: write me

File man/primitives.texi

+@page
+@node Primitives, Subsystems, Getting Started, Top
+@chapter Primitives
+@cindex primitives
+
+Here is introduction to XWEM primitives, such as Frame, Window, Client,
+minibuffer, specials, etc.
+
+@menu
+* Frame::		Much like Emacs frame.
+* Window::		Much like Emacs window.
+* Client::		Something that in XWEM window.
+* XWEM Minibuffer::	Global minibuffer for Emacs frames.
+@end menu
+
+@include frame.texi
+@include win.texi
+@include client.texi
+@include minibuf.texi

File man/start.texi

+@node Getting Started, Primitives, Overview, Top
+@comment  node-name,  next,  previous,  up
+@chapter Getting Started
+@cindex starting
+
+You must provide some effort in way to make XWEM usable. Configuring
+XWEM splits to three tasks:
+
+@menu
+* Configuring X::	How to configure X server.
+* Configuring Emacs::	What you need in ~/.emacs to run XWEM.
+* Configuring XWEM::	How to configure XWEM.
+@end menu
+
+@node Configuring X, Configuring Emacs, Getting Started, Getting Started
+@comment  node-name,  next,  previous,  up
+@section Configuring X
+@cindex configuring
+
+First off all we need to configure keyboard to obtain control over XWEM.
+XWEM expects that there is Hyper key setuped on your keyboard and that
+Hyper key acts as modifier(i.e. in X's modifiers list).  Hyper key for
+XWEM is like Meta key for XEmacs.  All default commands in XWEM uses
+Hyper.  But it is not necessary to use Hyper key, but recommended.  You
+can control which modifier to use by @code{xwem-hyper-modifier} variable
+which default value is @code{hyper}.
+
+There is two ways to configure Hyper key.  One is using XKB X extension
+and the other(easier) is using xmodmap application.  Find a key(keycode)
+to which you want bind Hyper, using @code{xev}@footnote{xev utility
+ships with X distribution and used to report X events and its
+description to user.} utility.  Consider it is value 109.
+
+@example
+$ xmodmap -e "keycode 109 = Hyper_R"
+$ xmodmap -e "add mod3 = Hyper_R"
+@end example
+
+or add following to your @code{~/.Xmodmap}(or whatever):
+
+@example
+keycode 109 = Hyper_R
+add mod3 = Hyper_R
+@end example
+
+after that @code{xev} should report that keycode 109 have corresponded
+Hyper_R keysym.
+
+Now it is time to modify a little your @code{~/.xinitrc}.  Who will be
+your window manager?  Of course your guess about XEmacs is correct.  So
+instead of running for example afterstep or fvwm you need to run XEmacs.
+Part of your @code{~/.xinitrc} should looks like:
+
+@example
+# exec afterstep
+exec xemacs
+@end example
+
+You should run @code{xinit}, or @code{startx} with -tcp-listen option,
+otherwise xlib will not be able to connect to X server.
+
+@node Configuring Emacs, Configuring XWEM, Configuring X, Getting Started
+@comment  node-name,  next,  previous,  up
+@section Configuring Emacs
+@cindex configuring
+
+Now we are almost ready to run XWEM.  Add something like
+@example
+(add-to-list 'load-path (expand-file-name "/path/to/xwem"))
+(require 'xwem-load)
+(xwem-init)
+@end example
+at the end of your @code{~/.emacs}
+
+TODO: write how you need to configure emacs, i.e. what to need to add in
+@code{~/.emacs}.
+
+@node Configuring XWEM, , Configuring Emacs, Getting Started
+@comment  node-name,  next,  previous,  up
+@section Configuring XWEM
+@cindex configuring
+
+You can configure any of XWEM's subroutines using
+@code{~/.xwem/xwemrc.el} file.  It will be evaluated at the top of
+@var{xwem-init} function.
+
+Here is example of what you can do:
+
+@example
+(setq X-use-queryfont t)		; speeds up things
+
+;; We can recreate emacs frame, so there is no problems in deleting
+;; last frame.
+(setq allow-deletion-of-last-visible-frame t)
+
+(setq special-display-frame-plist
+      (plist-put special-display-frame-plist 'height 50))
+
+(defadvice kill-buffer (before delete-dedicated-frame activate)
+  "Work around dedicated frame problem."
+  (let ((frame (buffer-dedicated-frame
+                (get-buffer (or (ad-get-arg 0) (current-buffer))))))
+    (when (framep frame)
+      (delete-frame frame))))
+
+;; Icons
+;(setq xwem-icons-dir "~/prog/emacs/xwem/icons")
+(pushnew '([".*freebsd.*" "xterm" "XTerm"] . "mini-daemon.xpm")
+   xwem-icons-alist)
+(pushnew '([".*xwem.*" "emacs" "Emacs"] . "mini-xwem.xpm")
+   xwem-icons-alist)
+
+;;; Customize XWEM variables
+(setq xwem-minibuffer-active-border-color "cyan2"
+      xwem-default-focus-mode 'follow-mouse
+      xwem-edmacro-can-edit-nonmacro t
+      )
+
+(define-abbrev-table 'xwem-launcher-abbrev-table
+  '(("gterm" "xterm -fg green -hc green4" nil 0)
+    ("gfterm" "xterm -fg green -hc green4 -fn fixed" nil 0)
+    ("aqterm" "xterm -fg aquamarine -hc aquamarine4" nil 0)
+    ("aqfterm" "xterm -fg aqua -hc aqua4 -fn fixed" nil 0)
+    ("gsterm" "xterm -fg darkseagreen1 -hc darkseagreen4" nil 0)
+    ("gsfterm"
+     "xterm -fg darkseagreen1 -hc darkseagreen4 -fn fixed" nil 0)
+    ("oterm" "xterm -fg OliveDrab1 -hc OliveDrab4" nil 0)
+    ("ofterm" "xterm -fg OliveDrab1 -hc OliveDrab4 -fn fixed" nil 0)
+    ("orterm" "xterm -fg orange -hc orange4" nil 0)
+    ("orfterm" "xterm -fg orange -hc orange4 -fn fixed" nil 0)
+    ))
+  
+;; Add sounds, beeping type
+(xwem-sound-load-default t)
+
+;;; Addons
+
+;; Buqis like client switcher
+(xwem-clswi-enable)
+
+;; `display-time' like stuff in system tray
+;(add-hook 'xwem-after-init-hook 'xwem-time)
+
+;; H-6, H-x /, H-x j bindings
+(require 'xwem-register)
+(xwem-register-install-bindings)
+
+;; Nice frame indicator
+(autoload 'xwem-framei-init "xwem-framei")
+(add-hook 'xwem-after-init-hook 'xwem-framei-init)
+
+;; Making holer in frames
+(require 'xwem-holer)
+(define-key xwem-global-map (xwem-kbd "H-x h") 'xwem-holer-prefix)
+
+;; Nice rooter addon
+(require 'xwem-rooter)
+(xwem-rooter-add-client 'xwem-xclock-onroot "^xclock$")
+(xwem-rooter-add-client 'xwem-gkrellm-onroot "^gkrellm$")
+
+;; Worklog
+(require 'xwem-worklog)
+(define-key xwem-global-map (xwem-kbd "H-w") 'xwem-worklog-prefix)
+
+;; Fast frame switcher
+(defun my-xwem-switch-frame (key)
+  "To be used by H-C-<digit> bindings."
+  (interactive (list (event-key xwem-last-event)))
+  (xwem-frame-switch-nth (- (char-to-int key) 48)))
+
+(define-key xwem-global-map (xwem-kbd "H-C-0") 'my-xwem-switch-frame)
+(define-key xwem-global-map (xwem-kbd "H-C-1") 'my-xwem-switch-frame)
+(define-key xwem-global-map (xwem-kbd "H-C-2") 'my-xwem-switch-frame)
+(define-key xwem-global-map (xwem-kbd "H-C-3") 'my-xwem-switch-frame)
+(define-key xwem-global-map (xwem-kbd "H-C-4") 'my-xwem-switch-frame)
+(define-key xwem-global-map (xwem-kbd "H-C-5") 'my-xwem-switch-frame)
+(define-key xwem-global-map (xwem-kbd "H-C-6") 'my-xwem-switch-frame)
+(define-key xwem-global-map (xwem-kbd "H-C-7") 'my-xwem-switch-frame)
+(define-key xwem-global-map (xwem-kbd "H-C-8") 'my-xwem-switch-frame)
+(define-key xwem-global-map (xwem-kbd "H-C-9") 'my-xwem-switch-frame)
+
+@end example
+
+TODO: write me

File man/subsystems.texi

+@page
+@node Subsystems, Hooking, Primitives, Top
+@chapter XWEM Subsystems
+@cindex subsystem
+
+There many subsystems in XWEM. Such as keyboard operations, pointer
+operations, text and graphical contexts operations, manage database
+operations and so on.
+
+TODO: write me
+
+@menu
+* Keyboard::		Keyboard support.
+* Mouse::		Mouse support.
+* Text Specifications::	Various texts support.
+* Manage Database::	How various X11 clients are managed.
+* System Tray::		Make your xwem minibuffer to be a dockapp holder.
+* Help::		XWEM is self documented.
+@end menu
+
+@node Keyboard, Mouse, Subsystems, Subsystems
+@section Keyboard
+@cindex keyboard
+
+Keyboard support in XWEM is much like how XEmacs deals with keyboard
+i.e. keymap notation used to interpret key sequences to commands
+relation.
+
+@menu
+* Keymaps::		Keymaps used by XWEM.
+* Keymap Operations::	What you can do with XWEM keymaps.
+* Smart Modifiers::	Special modifiers mode support.
+@end menu
+
+@node Keymaps, Keymap Operations, Keyboard, Keyboard
+@comment  node-name,  next,  previous,  up
+@subsection Keymaps
+@cindex keymap
+
+Keymaps used in XWEM is:
+
+@defvar xwem-global-map
+This is global XWEM keymap.
+@end defvar
+
+@defvar xwem-help-map
+Keymap for help commands.
+@end defvar
+
+@defvar xwem-hyp-x-map
+This keymap is for Hyper-X commands.
+@end defvar
+
+@defvar xwem-hyp-x-4-map
+Keymap for Hyper-X-4 commands.
+@end defvar
+
+@defvar xwem-hyp-x-5-map
+Keymap for Hyper-X-5 commands.
+@end defvar
+
+@defvar xwem-hyp-x-7-map
+Keymap for Hyper-X-7 commands.
+@end defvar
+
+@defvar xwem-launcher-map
+Keymap for XWEM launcher.
+@end defvar
+
+@defvar xwem-launcher-other-win-map
+Keymap for launcher commands in other Window.
+@end defvar
+
+@defvar xwem-launcher-other-frame-map
+Keymap for launcher commands in other Frame.
+@end defvar
+
+@defvar xwem-user-macros-map
+Keymap for user's keyboard macros.
+@end defvar
+
+@defvar xwem-hyp-resize-map
+Keymap for Window resize commands.
+@end defvar
+
+
+@node Keymap Operations, Smart Modifiers, Keymaps, Keyboard
+@comment  node-name,  next,  previous,  up
+@subsection Keymap Operations
+@cindex keymap
+
+TODO: write me
+
+@node Smart Modifiers, , Keymap Operations, Keyboard
+@subsection Smart Modifiers
+@cindex modifiers
+
+@dfn{Smart modifier} is key which can act as modifier when it is used in
+combination with some other key and as normal key when it is just
+clicked i.e. pressed and released.
+
+To use smart modifiers you must set @code{(setq xwem-use-smart-modifiers
+t)}, default is @code{nil}. And add items to
+@code{xwem-key-smart-modifiers}. Item is vector in form
+@code{[Modifier-keysym Key-Keysym nil nil]}. Second and third elements
+is used internally and it is no need to fill them.
+
+Example:
+@example
+(add-to-list 'xwem-key-smart-modifiers (vector XK-Control-R XK-Space nil
+nil))
+        @result{} add right control to active grabs and send space key
+        when it is clicked.
+@end example
+
+@node Mouse, Text Specifications, Keyboard, Subsystems
+@section Mouse
+@cindex mouse
+@cindex strokes
+
+When I was planning to write XWEM I thought that mouse support will be
+minimal, but when I played a little with X11 stuff I realized where
+mouse may be used to get really useful functionality. Main mouse feature
+over keyboard is that you can generate multiple movement or button
+press/release events in a moment. It can be used to interact with
+Strokes.
+
+@dfn{Stroke} is some mouse motion which yields some command.
+
+TODO: xwem strokes description.
+
+TODO: popup menus description.
+
+@include textspec.texi
+@include manda.texi
+@include tray.texi
+@include help.texi

File man/textspec.texi

+@node Text Specifications, Manage Database, Mouse, Subsystems
+@section Text
+@cindex text font
+
+@dfn{Text Specification} is list of conses in form @code{(lala-text . GC)}.
+
+TODO: write me

File man/tray.texi

+@node System Tray, Help, Manage Database, Subsystems
+@comment  node-name,  next,  previous,  up
+@section System Tray
+@cindex tray
+@cindex XEMBED
+
+@dfn{System Tray} is some area in your screen, that used to hold some X
+applications called dock applications or dockapps in short.  XWEM's
+system tray uses @ref{XWEM Minibuffer} as that area, so you does not
+lost it.  It is morden to implement system tray using XEMBED protocol,
+which describes how dockapps and tray window should communicate.  XWEM's
+system tray uses extended version of XEMBED protocol, which allow any
+dockapp to run Emacs Lisp!
+
+@defvar xwem-tray-enabled
+Non-@code{nil} mean that System tray will be used by XWEM.
+@end defvar
+
+@defvar xwem-tray-max-docks
+Maximum number of dockapps to be used in system tray.  If value is to
+much, than system tray may eat too much space in XWEM's minibuffer and
+you will not be able to comfortable interact with it. Default value is
+6.
+@end defvar
+
+@defvar xwem-tray-minib-position
+Symbol that may be @code{'right} or @code{'left} specifies position in
+XWEM's minibuffer where first dockapp appears.
+@end defvar
+
+@defvar xwem-tray-minib-posoffset
+Offset in pixels from XWEM's minibuffer edge.
+@end defvar
+
+@defvar xwem-tray-minib-docoffset
+Offset in pixels between two dockapps.
+@end defvar
+
+@defvar xwem-tray-cursor-shape
+Shape of cursor when pointer is over one of dockapp, see @code{X-XC-XXX}
+constants values. Default is value of @code{X-XC-right_ptr}.
+@end defvar
+
+@defvar xwem-tray-cursor-foreground-color
+Specifies foreground color of cursor, when pointer is over one of
+dockapp.
+@end defvar
+
+@defvar xwem-tray-cursor-background-color
+Cursor's background color, when pointer over System tray.
+@end defvar
+
+@defvar xwem-tray-config
+This is a list of vectors and each vector is in form @code{[type
+value]}. Type is one of @code{XWEM-TRAY-DOCK} or
+@code{XWEM-TRAY-DELIM}. If type is @code{XWEM-TRAY-DOCK} than value is
+string and it specifies program and program's arguments you need to
+launch and put in system tray. If type is @code{XWEM-TRAY-DELIM} than
+value is integer, which specifies offset in pixels to be inserted in
+system tray.
+@example
+xwem-tray-config
+@result{}
+([XWEM-TRAY-DOCK "/path/to/xwem-minitime -f 004400 -b bbbbbb"]
+ [XWEM-TRAY-DOCK "/path/to/xwem-miniapm"]
+ [XWEM-TRAY-DELIM 10]
+ [XWEM-TRAY-DOCK "path/to/xwem-minilaunch
+                  -l /path/to/icons/xterm.xpm xterm"]
+ [XWEM-TRAY-DOCK "/path/to/xwem-minilaunch
+                  -l /path/to/icons/xterm_big.xpm
+                  xterm -fn 10x20"]
+ [XWEM-TRAY-DOCK "/path/to/xwem-minilaunch
+                  -e \"(make-frame)\"
+                  /path/to/icons/xemacs.xpm emacs"]
+ [XWEM-TRAY-DOCK "/path/to/xwem-minilaunch
+                  -l /path/to/icons/netscape.xpm
+                  netscape"])
+@end example
+@end defvar
+
+@defun xwem-tray-run-config &optional config
+This function takes @var{config} in format described above, and executes
+it.  See example of its usage.
+@example
+(add-hook 'xwem-after-init-hooks 'xwem-tray-run-config)
+@end example
+@end defun

File man/win.texi

+@node Window, Client, Frame, Primitives
+@section Window
+@cindex window
+
+In this chapter we will discuss thing related to XWEM's Windows.
+
+@menu
+* Basic Windows::               Basic information on Windows.
+* Splitting Windows::           Splitting Window into two.
+* Deleting Windows::            How you should delete Windows.
+* Selecting Windows::           Selected Window.
+* Cycling Windows::             Moving around Windows.
+* Resizing Windows::            Changing size of Windows.
+* Window Configurations::       Saving and restoring layout of Windows.
+* Drawing Windows::             How Windows stuff are drawed.
+* Window Expectances::          Window can wait for a particular client.
+@end menu
+
+@node Basic Windows, Splitting Windows, Window, Window
+@comment  node-name,  next,  previous,  up
+@subsection Basic Windows
+@cindex basics
+
+@dfn{Window} is subpart of Frame(@pxref{Frame}) that holds Clients
+(@pxref{Client}).  Each Frame always contain at least one Window, but
+you con divide it vertically or horizontally to obtain new Windows.
+Windows never overlaps.  There is always selected Window in each Frame,
+but it is not guaranties that Client in selected Window will have input
+focus.
+
+@defun xwem-init-win
+Initilizes all stuff we will need.
+@end defun
+
+@defvar xwem-win-default-properties
+Plist of default properties for newly created Windows.  Keys in list is
+one of symbol:
+@itemize
+@item @code{dead} Window referenced but not workable.
+@item @code{deleted} Deleted Windows have this non-@code{nil}.
+@item @code{frame} Reference to XWEM Frame.
+@item @code{next} Next window in windows double linked list.
+@item @code{prev} Previous window in windows double linked list.
+@item @code{hchild} Horizontal child.
+@item @code{vchild} Vertical child.
+@item @code{client} Link to XWEM Client that is in XWEM Window or @code{nil}.
+@item @code{expectances} Expectances plist for XWEM Window.
+@end itemize
+@end defvar
+
+@defun xwem-win-p win
+Return non-@code{nil} if @var{win} is Window.
+@end defun
+
+@node Splitting Windows, Deleting Windows, Basic Windows, Window
+@comment  node-name,  next,  previous,  up
+@subsection Splitting Windows
+@cindex splitting
+
+Functions described here is used in way to split XWEM's window or get
+information about split.
+
+@defvar xwem-win-min-width
+Minimal width in pixels that XWEM Window may have after spliting.
+
+@example
+xwem-win-min-width
+@result{} 40
+@end example
+@end defvar
+
+@defvar xwem-win-min-height
+Minimal height in pixels that XWEM Window may have after spliting.
+
+@example
+xwem-win-min-height
+@result{} 40
+@end example
+@end defvar
+
+@defun xwem-win-split &optional window how new-size
+Splits XWEM @var{window}, @var{how} is one of @code{vertical} or
+@code{horizontal}(default is @code{horizontal}).  @var{new-size} is size
+in pixels which should have @var{window} after split.
+@end defun
+
+@defun xwem-win-only-one-p &optional window
+Returns non-@code{nil} if @var{window} is only one in XWEM Windows chain.
+@end defun
+
+@node Deleting Windows, Selecting Windows, Splitting Windows, Window
+@comment  node-name,  next,  previous,  up
+@subsection Deleting Windows
+@cindex deleting
+
+@defun xwem-window-delete &optional window
+Deletes XWEM @var{window}. If ommited than @code{xwem-win-selected} will
+be used.
+@end defun
+
+@defun xwem-window-delete-others &optional window
+Deletes all XWEM Windows other then @var{window}.
+@end defun
+
+@defun xwem-win-delete-subwindows window
+Mark all child of XWEM @var{window} as deleted.
+@end defun
+
+@defun xwem-win-mark-deleted window
+@end defun
+
+@node Selecting Windows, Cycling Windows, Deleting Windows, Window
+@comment  node-name,  next,  previous,  up
+@subsection Selecting Windows
+@cindex selecting
+
+Select a window means that client currently in than window receives
+input focus.
+
+@defvar xwem-win-switch-hook
+Hooks that will be runned when selected window changes.  Functions in
+should accept two arguments - @code{old-win} and @code{new-win}.
+
+@example
+xwem-win-switch-hook
+@result{} (xwem-win-focus xwem-win-title)
+@end example
+@end defvar
+
+@defun xwem-win-selected
+Returns selected XWEM Window.
+@end defun
+
+@defun xwem-win-selected-p window
+Return non-@code{nil} if @var{window} is selected.
+@end defun
+
+@defun xwem-window-select window
+Select @var{window} as current XWEM Window. Runs @code{xwem-win-switch-hooks}.
+@end defun
+
+@node Cycling Windows, Resizing Windows, Selecting Windows, Window
+@comment  node-name,  next,  previous,  up
+@subsection Cycling Windows
+@cindex cycling
+
+@defun xwem-win-make-list-by-next window
+Creates list of XWEM Windows using @code{next} property.
+@end defun
+
+@defun xwem-win-new props
+Creates new XWEM Window using properties obtained after merging
+@code{xwem-window-defprops} and @var{props} together.
+@end defun
+
+@defun xwem-win-replace oldw neww
+Replace @var{oldw} XWEM Window with contents of @var{neww} XWEM Window.
+@end defun
+
+@defun xwem-win-make-parent window
+Creates dummy parent XWEM Window for @var{window}.
+@end defun
+
+@defun xwem-window-next &optional window
+Returns next XWEM Window after @var{window} in canonical ordering.
+@end defun
+
+@defun xwem-window-next-vertical &optional window
+Returns XWEM Window which is vertically after @var{window}.
+@end defun
+
+@defun xwem-window-prev &optional window
+Returns previous XWEM Window before @var{window} in canonical ordering
+of XWEM Windows.
+@end defun
+
+@defun xwem-win-map fn &optional window
+Apply @var{fn} function to @var{window} and each child of it. @var{fn}
+will be called with an XWEM Window as argument.
+@end defun
+
+@defun xwem-win-count &optional window
+Count childs in @var{window}.
+@end defun
+
+@defun xwem-window-list &optional frame
+nil
+@end defun
+
+Here is somelike windmove package.
+
+@defun xwem-winmove-left &optional arg
+Move to the left.
+TODO: describe @var{arg}.
+@end defun
+
+@defun xwem-winmove-right &optional arg
+Move to the right.
+TODO: describe @var{arg}.
+@end defun
+
+@defun xwem-winmove-up &optional arg
+Move to the up.
+TODO: describe @var{arg}.
+@end defun
+
+@defun xwem-winmove-down &optional arg
+Move to the down.
+TODO: describe @var{arg}.
+@end defun
+
+TODO: write me
+
+@node Resizing Windows, Window Configurations, Cycling Windows, Window
+@comment  node-name,  next,  previous,  up
+@subsection Resizing Windows
+@cindex resizing
+
+Here functions that operations on window's sizes.
+
+@defun xwem-window-set-pixsize window nsize nodelete is-height
+Sets size of @var{window} to @var{nsize} in pixels.
+If @var{is-height} is non-@code{nil} then nsize is new @var{window}
+height.
+@end defun
+
+@defun xwem-window-change-size window delta height-p
+Changes XWEM @var{window} size to old-size plus
+@var{delta}. @var{height-p} is non-@code{nil} if height changes.
+@end defun
+
+TODO: add shrink and enlarge
+
+@node Window Configurations, Drawing Windows, Resizing Windows, Window
+@comment  node-name,  next,  previous,  up
+@subsection Window Configurations
+@cindex window configurations
+
+@defun xwem-window-configuration &optional frame
+Return current Windows configuration for @var{frame}.  You can restore
+it than using @code{xwem-set-window-configuration}.
+@end defun
+
+@defun xwem-set-window-configuration win-config
+Restore window configuration @var{win-config}, returned by
+@code{xwem-window-configuration}.
+@end defun
+
+@node Drawing Windows, Window Expectances, Window Configurations, Window
+@comment  node-name,  next,  previous,  up
+@subsection Drawing Windows
+@cindex drawing
+
+@defvar xwem-win-delim-width
+XWEM Window delimeter width in pixels, including shadow.
+@end defvar
+
+@defvar xwem-win-delim-shadow-thicksness
+When drawing 3D shadows for XWEM Window delimeters, this variable used.
+@end defvar
+
+@defun xwem-win-draw-delims window
+Draws delimeters in XWEM @var{window}.
+@end defun
+
+@node Window Expectances, , Drawing Windows, Window
+@comment  node-name,  next,  previous,  up
+@subsection Window Expectances
+@cindex expectances
+
+@dfn{Expectances} is thing describes which clients cirtain XWEM Window
+wait to manage.
+
+TODO: write me
+

File man/xwem.texi

+\input texinfo @c xwem.texi   -*-TeXinfo-*-
+@c $Id$
+@c Copyright (C) 2003 Free Software Foundation
+@c %**start of header
+@setfilename xwem.info
+@settitle XEmacs Window Manager
+@finalout
+@c @setchapternewpage odd
+@c %**end of header
+@set EDITION 1.0
+@set VERSION 0.0.1
+@set UPDATED May 25, 2003
+
+@dircategory Lisp
+@direntry
+* XWEM: (xwem).		XEMacs Window Manager.
+@end direntry
+
+@ifinfo
+This manual for XWEM project version @value{VERSION}.
+
+The manual was last updated @value{UPDATED}.
+@end ifinfo
+
+@titlepage
+@title XWEM
+@subtitle X Emacs Window Manager
+@subtitle Edition @value{EDITION}, for XWEM version @value{VERSION}
+@author Zajcev Evgeny
+@author Alex Ott
+@end titlepage
+Copyright @copyright{} 2003 Free Software Foundation
+
+This file is part of XWEM.
+
+XWEM is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2 of the License, or (at your
+option) any later version.
+
+XWEM is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License along
+with this program; if not, write to the Free Software Foundation, Inc.,
+59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+@contents
+
+@node Top, Overview, , (dir)
+
+This manual is part of XWEM project.  This documentatin is very poor, so
+you better look at .el files for technical stuff.
+
+TODO: write me
+
+@menu
+* Overview::		An introduction.
+* Getting Started::	Launching XWEM for the first time.
+* Primitives::		XWEM primitives.
+* Subsystems::		What is needed by Window Manager.
+* Hooking::		Hooks in XWEM.
+* Addons::		XWEM have some usefull packages(addons).
+* Logging::		Logs facilities in XWEM.
+* Licenses::		What you can't do with XWEM sources.
+* Index::		This file index.
+
+@detailmenu
+ --- The Detailed Node Listing ---
+
+Getting Started
+
+* Configuring X::	How to configure X server.
+* Configuring Emacs::	What you need in ~/.emacs to run XWEM.
+* Configuring XWEM::	How to configure XWEM.
+
+Primitives
+
+* Frame::		Much like Emacs frame.
+* Window::		Much like Emacs window.
+* Client::		Something that in XWEM window.
+* XWEM Minibuffer::	Global minibuffer for Emacs frames.
+
+XWEM Subsystems
+
+* Keyboard::		Keyboard support.
+* Mouse::		Mouse support.
+* Text Specifications::	Various texts support.
+* Manage Database::	How various X11 clients are managed.
+* System Tray::		Support for dock applications.
+* Help::		XWEM is self documented.
+
+Keyboard
+
+* Keymaps::		Keymaps used by XWEM.
+* Keymap Operations::	What you can do with XWEM keymaps.
+* Smart Modifiers::	Special modifiers mode support.
+
+@end detailmenu
+@end menu
+
+@c Overview of XWEM
+@include overview.texi
+@c Getting Started chapter
+@include start.texi
+@c XWEM's Primitives chapter
+@include primitives.texi
+@c XWEM's Subsystems overview chapter
+@include subsystems.texi
+@c Hooks used in XWEM chapter
+@include hooking.texi
+@c XWEM have various usefull packages
+@include addons.texi
+@c How to obtain logs about what XWEM and Xlib do
+@include logging.texi
+
+@node Licenses, Index, Logging, Top
+@chapter Licenses
+@cindex license
+
+I think there is must be GPL text.
+
+@node Index, , Licenses, Top
+@unnumbered Index
+
+@printindex cp
+@bye